From 11b4ed41baa5bc16cc1fa7633d4a44e2fcc42c25 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Wed, 28 Oct 2026 21:03:38 -0700 Subject: [PATCH 1/9] refactor(runtime): add the OpenCode V2 remote client and question client The gateway reaches a workspace OpenCode V2 server through the proxy, so it needs the V2 siblings of remote-client and remote-question-client: bearer headers, the permission/form reply routes, interrupt, session reads and the SSE subscription with its heartbeat. The event mapper now carries the inbox id on a subagent notice and maps session.inbox.delivered, so a drain gate can tell a queued notice from one the parent has taken into a turn. A replied form carries its answer for the echo. --- packages/runtime/package.json | 5 + packages/runtime/src/agent/event-v2.test.ts | 29 ++ packages/runtime/src/agent/event-v2.ts | 49 ++- packages/runtime/src/agent/index.ts | 12 + .../src/agent/remote-client-v2.test.ts | 358 +++++++++++++++++ .../runtime/src/agent/remote-client-v2.ts | 365 ++++++++++++++++++ .../agent/remote-question-client-v2.test.ts | 120 ++++++ .../src/agent/remote-question-client-v2.ts | 76 ++++ 8 files changed, 1007 insertions(+), 7 deletions(-) create mode 100644 packages/runtime/src/agent/remote-client-v2.test.ts create mode 100644 packages/runtime/src/agent/remote-client-v2.ts create mode 100644 packages/runtime/src/agent/remote-question-client-v2.test.ts create mode 100644 packages/runtime/src/agent/remote-question-client-v2.ts diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 9709a3629d..3da4a98f27 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -18,6 +18,11 @@ "types": "./src/session/v2.ts", "import": "./src/session/v2.ts", "default": "./src/session/v2.ts" + }, + "./event-v2-fixtures": { + "types": "./src/agent/event-v2.fixtures.ts", + "import": "./src/agent/event-v2.fixtures.ts", + "default": "./src/agent/event-v2.fixtures.ts" } }, "main": "src/index.ts", diff --git a/packages/runtime/src/agent/event-v2.test.ts b/packages/runtime/src/agent/event-v2.test.ts index 52dfbcbd4a..62272e5761 100644 --- a/packages/runtime/src/agent/event-v2.test.ts +++ b/packages/runtime/src/agent/event-v2.test.ts @@ -41,6 +41,7 @@ import { STEP_FAILED_FRAME, STEP_STARTED_FRAME, SUBAGENT_NOTICE_ENQUEUED_FRAME, + SUBAGENT_NOTICE_MESSAGE, TEXT_DELTA_FRAME, TEXT_ENDED_FRAME, TEXT_MESSAGE_ID, @@ -423,6 +424,7 @@ describe('mapV2Event: forms', () => { formId: QUESTION_FORM_ID, sessionId: QUESTION_SESSION_ID, outcome: 'cancelled', + answer: null, }) }) @@ -432,6 +434,7 @@ describe('mapV2Event: forms', () => { formId: 'frm_1', sessionId: 'ses_x', outcome: 'replied', + answer: {q0: 'A'}, }) }) @@ -457,9 +460,35 @@ describe('mapV2Event: subagent notices', () => { kind: 'subagent_notice', sessionId: PARENT_SESSION_ID, notice: {childSessionId: CHILD_SESSION_ID, state: 'completed', agent: 'General', description: 'bg child'}, + inboxId: SUBAGENT_NOTICE_MESSAGE.id, }) }) + it('maps an inbox delivery, captured from a real turn, to the item that entered the model turn', () => { + expect( + mapV2Event({ + type: 'session.inbox.delivered', + data: {sessionID: TEXT_SESSION_ID, inboxID: 'msg_1836d7c84001UcG33UmRHZFsFl'}, + }), + ).toEqual({kind: 'inbox_delivered', sessionId: TEXT_SESSION_ID, inboxId: 'msg_1836d7c84001UcG33UmRHZFsFl'}) + }) + + it('ignores an inbox delivery that names no item', () => { + expect(mapV2Event({type: 'session.inbox.delivered', data: {sessionID: TEXT_SESSION_ID}})).toBeNull() + }) + + it('carries no inbox id for a session.synthetic notice', () => { + expect( + mapV2Event({ + type: 'session.synthetic', + data: { + sessionID: PARENT_SESSION_ID, + metadata: {source: 'subagent', childID: CHILD_SESSION_ID, agent: 'General', state: 'completed'}, + }, + }), + ).toMatchObject({kind: 'subagent_notice', inboxId: null}) + }) + it('maps a session.synthetic event with subagent metadata', () => { const event = mapV2Event({ type: 'session.synthetic', diff --git a/packages/runtime/src/agent/event-v2.ts b/packages/runtime/src/agent/event-v2.ts index b4e5b8eb72..1b63e6a870 100644 --- a/packages/runtime/src/agent/event-v2.ts +++ b/packages/runtime/src/agent/event-v2.ts @@ -151,6 +151,8 @@ export type V2DomainEvent = readonly formId: string readonly sessionId: string readonly outcome: 'cancelled' | 'replied' + /** The answer of a replied form, keyed by field key. `null` for a cancelled form or an unreadable answer. */ + readonly answer: Readonly> | null } | {readonly kind: 'execution_started'; readonly sessionId: string} | {readonly kind: 'execution_succeeded'; readonly sessionId: string} @@ -166,8 +168,20 @@ export type V2DomainEvent = } /** A session changed location. Informational on its own; `mapV2EventStream` upgrades an owned move to `fatal`. */ | {readonly kind: 'session_moved'; readonly sessionId: string; readonly directory: string | null} - /** The parent session `sessionId` received a completion notice for a child. Read from event `metadata`, never text. */ - | {readonly kind: 'subagent_notice'; readonly sessionId: string; readonly notice: SubagentNotice} + /** + * The parent session `sessionId` received a completion notice for a child. Read from event `metadata`, never text. + * `inboxId` is the inbox item that carries it, when the notice arrived as an enqueued item: the item is queued, not + * yet part of a model turn, until a matching `inbox_delivered`. `null` for a `session.synthetic` event, which is the + * message already in the transcript. + */ + | { + readonly kind: 'subagent_notice' + readonly sessionId: string + readonly notice: SubagentNotice + readonly inboxId: string | null + } + /** A queued inbox item of `sessionId` entered a model turn (`session.inbox.delivered`). */ + | {readonly kind: 'inbox_delivered'; readonly sessionId: string; readonly inboxId: string} /** The run must fail. Produced by `mapV2EventStream` for an owned session that moved. */ | { readonly kind: 'fatal' @@ -407,7 +421,14 @@ function mapFormResolved(type: string, data: unknown): V2DomainEvent { const formId = getStringProperty(data, 'id') const sessionId = getStringProperty(data, 'sessionID') if (formId === null || sessionId === null) return malformed(type, data, 'missing form id or sessionID') - return {kind: 'form_resolved', formId, sessionId, outcome: type === 'form.replied' ? 'replied' : 'cancelled'} + const answer = getObjectProperty(data, 'answer') + return { + kind: 'form_resolved', + formId, + sessionId, + outcome: type === 'form.replied' ? 'replied' : 'cancelled', + answer: type === 'form.replied' && isRecord(answer) ? answer : null, + } } function mapExecution(type: string, data: unknown): V2DomainEvent { @@ -447,8 +468,12 @@ function mapSessionError(type: string, data: unknown): V2DomainEvent { : {kind: 'retry_scheduled', sessionId, attempt, at, error} } -function mapNotice(sessionId: string | null, notice: SubagentNotice | null): V2DomainEvent | null { - return sessionId === null || notice === null ? null : {kind: 'subagent_notice', sessionId, notice} +function mapNotice( + sessionId: string | null, + notice: SubagentNotice | null, + inboxId: string | null, +): V2DomainEvent | null { + return sessionId === null || notice === null ? null : {kind: 'subagent_notice', sessionId, notice, inboxId} } /** @@ -528,10 +553,20 @@ export function mapV2Event(frame: unknown): V2DomainEvent | null { } case 'session.inbox.enqueued': - return mapNotice(getStringProperty(data, 'sessionID'), readSubagentNoticeItem(getObjectProperty(data, 'item'))) + return mapNotice( + getStringProperty(data, 'sessionID'), + readSubagentNoticeItem(getObjectProperty(data, 'item')), + getStringProperty(data, 'inboxID'), + ) + + case 'session.inbox.delivered': { + const sessionId = getStringProperty(data, 'sessionID') + const inboxId = getStringProperty(data, 'inboxID') + return sessionId === null || inboxId === null ? null : {kind: 'inbox_delivered', sessionId, inboxId} + } case 'session.synthetic': - return mapNotice(getStringProperty(data, 'sessionID'), readSubagentNotice(data)) + return mapNotice(getStringProperty(data, 'sessionID'), readSubagentNotice(data), null) default: return null diff --git a/packages/runtime/src/agent/index.ts b/packages/runtime/src/agent/index.ts index 0e815f13cd..5fa488f9ee 100644 --- a/packages/runtime/src/agent/index.ts +++ b/packages/runtime/src/agent/index.ts @@ -115,7 +115,19 @@ export { export {buildAgentPrompt, buildTaskSection, getTriggerDirective} from './prompt.js' export type {TriggerDirective} from './prompt.js' export {materializeReferenceFiles} from './reference-files.js' +export {createRemoteOpenCodeV2Client, V2_HEARTBEAT_FRAME} from './remote-client-v2.js' +export type { + RemoteOpenCodeV2Client, + RemoteOpenCodeV2ClientOptions, + V2CallError, + V2FormValue, + V2PermissionDecision, + V2SessionOutcome, + V2SessionSummary, +} from './remote-client-v2.js' export {createRemoteOpenCodeHandle} from './remote-client.js' +export {buildQuestionFormAnswer, createRemoteQuestionClientV2} from './remote-question-client-v2.js' +export type {RemoteQuestionClientV2, RemoteQuestionResponseV2} from './remote-question-client-v2.js' export {createRemoteQuestionClient} from './remote-question-client.js' export type {RemoteQuestionClient, RemoteQuestionResponse} from './remote-question-client.js' export {resolveResponseDelivery} from './response-delivery.js' diff --git a/packages/runtime/src/agent/remote-client-v2.test.ts b/packages/runtime/src/agent/remote-client-v2.test.ts new file mode 100644 index 0000000000..8c620a5ca4 --- /dev/null +++ b/packages/runtime/src/agent/remote-client-v2.test.ts @@ -0,0 +1,358 @@ +import {describe, expect, it, vi} from 'vitest' + +import {createRemoteOpenCodeV2Client, V2_HEARTBEAT_FRAME} from './remote-client-v2.js' + +interface RecordedRequest { + readonly url: string + readonly method: string + readonly headers: Readonly> + readonly body: unknown +} + +function json(status: number, body: unknown): Response { + return new Response(JSON.stringify(body), {status, headers: {'content-type': 'application/json'}}) +} + +/** A fetch double that records every request and answers from `respond`. */ +function makeFetch(respond: (request: RecordedRequest) => Response | Promise): { + readonly fetch: typeof fetch + readonly requests: RecordedRequest[] +} { + const requests: RecordedRequest[] = [] + const impl = async (input: string | URL | Request, init?: RequestInit): Promise => { + const headers: Record = {} + new Headers(init?.headers).forEach((value, key) => { + headers[key] = value + }) + const raw = typeof init?.body === 'string' ? init.body : undefined + const request: RecordedRequest = { + url: String(input), + method: init?.method ?? 'GET', + headers, + body: raw === undefined ? undefined : JSON.parse(raw), + } + requests.push(request) + return respond(request) + } + return {fetch: impl, requests} +} + +function sseResponse(chunks: readonly string[], status = 200): Response { + const encoder = new TextEncoder() + const stream = new ReadableStream({ + start(controller) { + for (const chunk of chunks) controller.enqueue(encoder.encode(chunk)) + controller.close() + }, + }) + return new Response(stream, {status, headers: {'content-type': 'text/event-stream'}}) +} + +const AUTH = {authorization: 'Bearer secret-token'} + +describe('createRemoteOpenCodeV2Client', () => { + it('creates a session at the given location and returns its id', async () => { + // #given + const {fetch, requests} = makeFetch(() => json(200, {data: {id: 'ses_1'}})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://workspace:9200/', headers: AUTH, fetch}) + + // #when + const result = await client.createSession({directory: '/workspace/repo'}) + + // #then + expect(result).toEqual({success: true, data: {id: 'ses_1'}}) + expect(requests).toHaveLength(1) + expect(requests[0]).toMatchObject({ + url: 'http://workspace:9200/api/session', + method: 'POST', + body: {location: {directory: '/workspace/repo'}}, + }) + expect(requests[0]?.headers.authorization).toBe('Bearer secret-token') + }) + + it('reports a 401 as an auth failure and never carries the body', async () => { + // #given — the 401 body is always the same shape and says nothing about why + const {fetch} = makeFetch(() => json(401, {_tag: 'UnauthorizedError', message: 'Authentication required'})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://workspace:9200', headers: AUTH, fetch}) + + // #when + const result = await client.createSession({directory: '/workspace/repo'}) + + // #then + expect(result).toEqual({success: false, error: {kind: 'auth', status: 401}}) + }) + + it('reports other statuses, transport failures and aborts as distinct kinds', async () => { + // #given + const controller = new AbortController() + const statusClient = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(503, {})).fetch, + }) + const networkClient = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: async () => { + throw new TypeError('fetch failed') + }, + }) + const abortedClient = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: async () => { + controller.abort() + throw new DOMException('aborted', 'AbortError') + }, + }) + + // #when / #then + expect(await statusClient.interrupt({sessionId: 's'})).toEqual({success: false, error: {kind: 'http', status: 503}}) + expect(await networkClient.interrupt({sessionId: 's'})).toEqual({ + success: false, + error: {kind: 'network', message: 'fetch failed'}, + }) + expect(await abortedClient.interrupt({sessionId: 's', signal: controller.signal})).toEqual({ + success: false, + error: {kind: 'aborted'}, + }) + }) + + it('reports a success body it cannot read as a parse failure', async () => { + // #given + const client = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {unexpected: true})).fetch, + }) + + // #when / #then + expect(await client.createSession({directory: '/d'})).toEqual({success: false, error: {kind: 'parse'}}) + expect(await client.interrupt({sessionId: 's'})).toEqual({success: false, error: {kind: 'parse'}}) + }) + + it('sends the prompt as top-level text with the directory header', async () => { + // #given + const {fetch, requests} = makeFetch(() => json(200, {data: {}})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch}) + + // #when + const result = await client.prompt({sessionId: 'ses/1', text: 'fix it', directory: '/workspace/repo'}) + + // #then + expect(result.success).toBe(true) + expect(requests[0]).toMatchObject({ + url: 'http://w/api/session/ses%2F1/prompt', + method: 'POST', + body: {text: 'fix it'}, + }) + expect(requests[0]?.headers['x-opencode-directory']).toBe('/workspace/repo') + }) + + it('reads the interrupt reply and never treats a missing flag as a stop', async () => { + // #given + const stopped = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {interrupted: true})).fetch, + }) + const idle = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {interrupted: false})).fetch, + }) + + // #when / #then + expect(await stopped.interrupt({sessionId: 's'})).toEqual({success: true, data: {interrupted: true}}) + expect(await idle.interrupt({sessionId: 's'})).toEqual({success: true, data: {interrupted: false}}) + }) + + it('reads the persisted outcome of a session', async () => { + // #given + const info = {id: 'ses_1', parentID: 'ses_0', location: {directory: '/d'}, outcome: 'interrupted'} + const client = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: info})).fetch, + }) + + // #when + const result = await client.getSession({sessionId: 'ses_1'}) + + // #then + expect(result).toEqual({ + success: true, + data: {id: 'ses_1', parentId: 'ses_0', directory: '/d', outcome: 'interrupted'}, + }) + }) + + it('reads a session with no outcome as null', async () => { + // #given + const client = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: {id: 'ses_1', location: {directory: '/d'}}})).fetch, + }) + + // #when + const result = await client.getSession({sessionId: 'ses_1'}) + + // #then + expect(result).toEqual({success: true, data: {id: 'ses_1', parentId: null, directory: '/d', outcome: null}}) + }) + + it('sends permission replies keyed by request id with the decision', async () => { + // #given + const {fetch, requests} = makeFetch(() => new Response(null, {status: 204})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch}) + + // #when + const once = await client.replyPermission({sessionId: 'ses_1', requestId: 'per_a', decision: 'once'}) + const reject = await client.replyPermission({sessionId: 'ses_1', requestId: 'per_b', decision: 'reject'}) + + // #then — two nested asks inside one execute stay two requests + expect(once.success).toBe(true) + expect(reject.success).toBe(true) + expect(requests.map(request => [request.url, request.body])).toEqual([ + ['http://w/api/session/ses_1/permission/per_a/reply', {decision: 'once'}], + ['http://w/api/session/ses_1/permission/per_b/reply', {decision: 'reject'}], + ]) + }) + + it('answers and cancels forms on the session-scoped routes', async () => { + // #given + const {fetch, requests} = makeFetch(() => new Response(null, {status: 204})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch}) + + // #when + await client.replyForm({sessionId: 'ses_1', formId: 'frm_1', answer: {q0: 'A', q1: ['x', 'y']}}) + await client.cancelForm({sessionId: 'ses_1', formId: 'frm_2', message: 'not supported here'}) + await client.cancelForm({sessionId: 'ses_1', formId: 'frm_3'}) + + // #then + expect(requests.map(request => [request.method, request.url, request.body])).toEqual([ + ['POST', 'http://w/api/session/ses_1/form/frm_1/reply', {answer: {q0: 'A', q1: ['x', 'y']}}], + ['DELETE', 'http://w/api/session/ses_1/form/frm_2?message=not+supported+here', undefined], + ['DELETE', 'http://w/api/session/ses_1/form/frm_3', undefined], + ]) + }) + + it('exposes the active list unwrapped and throws when it cannot read it', async () => { + // #given + const ok = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: {ses_child: {type: 'running'}}})).fetch, + }) + const failing = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch: makeFetch(() => json(500, {})).fetch}) + + // #when / #then + expect(await ok.session.active()).toEqual({ses_child: {type: 'running'}}) + await expect(failing.session.active()).rejects.toThrow('session.active failed: http 500') + }) + + it('lists sessions with the filter and cursor as query parameters', async () => { + // #given + const {fetch, requests} = makeFetch(() => json(200, {data: [{id: 'a'}], cursor: {next: 'c2'}})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch}) + + // #when + const page = await client.session.list({parentID: 'ses_root', directory: '/d', cursor: 'c1', limit: 100}) + + // #then + expect(page).toEqual({data: [{id: 'a'}], cursor: {next: 'c2'}}) + const url = new URL(requests[0]?.url ?? '') + expect(url.pathname).toBe('/api/session') + expect(Object.fromEntries(url.searchParams)).toEqual({ + parentID: 'ses_root', + directory: '/d', + cursor: 'c1', + limit: '100', + }) + }) + + describe('subscribeEvents', () => { + it('yields parsed data frames and a heartbeat marker for comment frames', async () => { + // #given + const {fetch, requests} = makeFetch(() => + sseResponse([ + 'data: {"type":"server.connected","data":{}}\n\n', + ': heartbeat\n\n', + 'data: {"type":"session.text.delta",', + '"data":{"delta":"hi"}}\n\n', + ]), + ) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', headers: AUTH, fetch}) + + // #when + const result = await client.subscribeEvents({directory: '/workspace/repo'}) + + // #then + if (!result.success) throw new Error('expected a stream') + const frames: unknown[] = [] + for await (const frame of result.data) frames.push(frame) + expect(frames).toEqual([ + {type: 'server.connected', data: {}}, + V2_HEARTBEAT_FRAME, + {type: 'session.text.delta', data: {delta: 'hi'}}, + ]) + expect(requests[0]?.url).toBe('http://w/api/event') + expect(requests[0]?.headers['x-opencode-directory']).toBe('/workspace/repo') + expect(requests[0]?.headers.accept).toBe('text/event-stream') + }) + + it('keeps reading after a frame it cannot parse', async () => { + // #given + const client = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => sseResponse(['data: {not json\n\n', 'data: {"type":"x"}\n\n'])).fetch, + }) + + // #when + const result = await client.subscribeEvents({directory: '/d'}) + if (!result.success) throw new Error('expected a stream') + const frames: unknown[] = [] + for await (const frame of result.data) frames.push(frame) + + // #then — the unreadable frame is still a sign of life, and carries no payload + expect(frames).toEqual([{type: 'server.unreadable'}, {type: 'x'}]) + }) + + it('fails a subscription the proxy rejects, as auth', async () => { + // #given + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch: makeFetch(() => json(401, {})).fetch}) + + // #when / #then + expect(await client.subscribeEvents({directory: '/d'})).toEqual({ + success: false, + error: {kind: 'auth', status: 401}, + }) + }) + + it('fails a response that is not an event stream', async () => { + // #given + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch: makeFetch(() => json(200, {})).fetch}) + + // #when / #then + expect(await client.subscribeEvents({directory: '/d'})).toEqual({success: false, error: {kind: 'parse'}}) + }) + + it('ends the iteration when the signal aborts', async () => { + // #given — a stream that never produces a frame + const controller = new AbortController() + const fetchSpy = vi.fn(async (_input: unknown, init?: RequestInit) => { + const body = new ReadableStream({ + start(stream) { + init?.signal?.addEventListener('abort', () => stream.error(new DOMException('aborted', 'AbortError'))) + }, + }) + return new Response(body, {status: 200, headers: {'content-type': 'text/event-stream'}}) + }) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch: fetchSpy}) + const result = await client.subscribeEvents({directory: '/d', signal: controller.signal}) + if (!result.success) throw new Error('expected a stream') + + // #when + const reading = (async () => { + const frames: unknown[] = [] + for await (const frame of result.data) frames.push(frame) + return frames + })() + controller.abort() + + // #then + await expect(reading).resolves.toEqual([]) + }) + }) +}) diff --git a/packages/runtime/src/agent/remote-client-v2.ts b/packages/runtime/src/agent/remote-client-v2.ts new file mode 100644 index 0000000000..bbb600ffe0 --- /dev/null +++ b/packages/runtime/src/agent/remote-client-v2.ts @@ -0,0 +1,365 @@ +import type {Result} from '@bfra.me/es/result' +import type {V2RequestOptions, V2SessionApi, V2SessionListInput, V2SessionListPage} from './ledger-reconcile-v2.js' + +import {err, ok} from '@bfra.me/es/result' +import {getObjectProperty, getStringProperty} from './payload-accessors.js' + +/** + * Client for an OpenCode V2 (v2.2.0) server reached through a proxy that injects the server's own credentials. + * + * This is the V2 sibling of `remote-client.ts`. The gateway does not spawn the server: it holds a bearer token for the + * workspace proxy and sends it on every request. There is no SDK here. The V2 server speaks `/api/*` over plain HTTP, + * so each call is one `fetch` against a route in `packages/protocol/src/groups/{session,permission,event}.ts` at + * `anomalyco/opencode@v2.2.0`: + * + * - `POST /api/session` creates a session (`location` in the body). + * - `POST /api/session/:id/prompt` admits a prompt (`text` at the top level of the body). + * - `POST /api/session/:id/interrupt` interrupts an active execution. `{interrupted: false}` means "nothing active was + * interrupted", which is also what a prompt that is not admitted yet looks like (probe P1), so callers never read + * it as a stop. + * - `GET /api/session/:id` carries `outcome`, the persisted result of the last execution that ended. A `shutdown` + * interrupt does not write it (`packages/core/src/session/projector.ts`, `projectIdle`). + * - `GET /api/session/active` and `GET /api/session` back the ledger adapter (`ledger-reconcile-v2.ts`). + * - `POST /api/session/:id/permission/:requestID/reply` takes `{decision: 'once' | 'always' | 'reject'}`. + * - `POST /api/session/:id/form/:formID/reply` takes `{answer}`; `DELETE /api/session/:id/form/:formID?message=` cancels. + * - `GET /api/event` is the SSE stream for every location on the server; it starts with `server.connected`. + * + * Failures come back as a `V2CallError`. The error never carries a response body, a header or the request URL: a body + * can echo model or user text, and the URL can carry ids that do not belong in a log. + */ + +export type V2CallError = + | {readonly kind: 'auth'; readonly status: number} + | {readonly kind: 'http'; readonly status: number} + | {readonly kind: 'network'; readonly message: string} + | {readonly kind: 'parse'} + | {readonly kind: 'aborted'} + +export type V2PermissionDecision = 'always' | 'once' | 'reject' + +export type V2FormValue = boolean | number | string | readonly string[] + +export type V2SessionOutcome = 'failed' | 'interrupted' | 'succeeded' + +export interface V2SessionSummary { + readonly id: string + readonly parentId: string | null + readonly directory: string | null + /** The persisted outcome of the last execution that ended, or `null` when none has. */ + readonly outcome: V2SessionOutcome | null +} + +/** + * Stand-in frame for an SSE comment line (the server sends `: heartbeat` every 15 s, probe P14). A comment carries no + * event but proves the stream is alive, so the transport surfaces it. The event mapper ignores it. + */ +export const V2_HEARTBEAT_FRAME = {type: 'server.heartbeat'} as const + +/** Stand-in for a data frame whose JSON could not be parsed. It carries nothing from the payload. */ +const V2_UNREADABLE_FRAME = {type: 'server.unreadable'} as const + +export interface RemoteOpenCodeV2ClientOptions { + /** Base URL of the proxy (no trailing path). */ + readonly baseUrl: string + /** Headers merged onto every request, including the bearer token. Never logged. */ + readonly headers?: Readonly> + /** Test seam. Defaults to the global `fetch`. */ + readonly fetch?: typeof fetch +} + +export interface RemoteOpenCodeV2Client { + /** The ledger adapter's view of the session API. `active` and `list` throw when the request fails. */ + readonly session: V2SessionApi + readonly createSession: (input: { + readonly directory: string + readonly signal?: AbortSignal + }) => Promise> + readonly getSession: (input: { + readonly sessionId: string + readonly signal?: AbortSignal + }) => Promise> + readonly prompt: (input: { + readonly sessionId: string + readonly text: string + readonly directory: string + readonly signal?: AbortSignal + }) => Promise> + readonly interrupt: (input: { + readonly sessionId: string + readonly signal?: AbortSignal + }) => Promise> + /** Resolves once the response headers arrive. The first frame the stream yields is `server.connected`. */ + readonly subscribeEvents: (input: { + readonly directory: string + readonly signal?: AbortSignal + }) => Promise, V2CallError>> + readonly replyPermission: (input: { + readonly sessionId: string + readonly requestId: string + readonly decision: V2PermissionDecision + readonly signal?: AbortSignal + }) => Promise> + readonly replyForm: (input: { + readonly sessionId: string + readonly formId: string + readonly answer: Readonly> + readonly signal?: AbortSignal + }) => Promise> + readonly cancelForm: (input: { + readonly sessionId: string + readonly formId: string + readonly message?: string + readonly signal?: AbortSignal + }) => Promise> +} + +interface RequestInput { + readonly method: 'DELETE' | 'GET' | 'POST' + readonly path: string + readonly query?: Readonly> + readonly body?: unknown + readonly directory?: string + readonly signal?: AbortSignal + readonly accept?: string +} + +function describeCallError(error: V2CallError): string { + switch (error.kind) { + case 'auth': + case 'http': + return `${error.kind} ${error.status}` + case 'network': + return `network ${error.message}` + case 'parse': + case 'aborted': + return error.kind + } +} + +function isRecord(value: unknown): value is Readonly> { + return value !== null && typeof value === 'object' && !Array.isArray(value) +} + +function readOutcome(value: unknown): V2SessionOutcome | null { + const outcome = getStringProperty(value, 'outcome') + return outcome === 'succeeded' || outcome === 'failed' || outcome === 'interrupted' ? outcome : null +} + +/** SSE blocks are separated by a blank line; a block of comment lines only is a heartbeat. */ +function readBlock(block: string): unknown { + const lines = block.split('\n') + const dataLines = lines.filter(line => line.startsWith('data:')).map(line => line.slice(5).replace(/^ /, '')) + if (dataLines.length === 0) return lines.every(line => line.startsWith(':')) ? V2_HEARTBEAT_FRAME : null + try { + return JSON.parse(dataLines.join('\n')) + } catch { + return V2_UNREADABLE_FRAME + } +} + +async function* readFrames(response: Response, signal: AbortSignal | undefined): AsyncGenerator { + const body = response.body + if (body === null) return + const reader = body.getReader() + const decoder = new TextDecoder() + let buffer = '' + try { + while (true) { + // The runtime's lib set has no DOM stream types, so the read result is typed here. + const chunk = (await reader.read()) as {readonly done: boolean; readonly value?: Uint8Array} + if (chunk.done) break + buffer += decoder.decode(chunk.value, {stream: true}).replaceAll('\r\n', '\n') + let boundary = buffer.indexOf('\n\n') + while (boundary >= 0) { + const block = buffer.slice(0, boundary) + buffer = buffer.slice(boundary + 2) + const frame = readBlock(block) + if (frame !== null) yield frame + boundary = buffer.indexOf('\n\n') + } + } + } catch (error) { + // An abort the caller asked for ends the stream; any other failure is a lost connection and propagates. + if (signal?.aborted === true) return + throw error + } finally { + reader.cancel().catch(() => undefined) + } +} + +export function createRemoteOpenCodeV2Client(options: RemoteOpenCodeV2ClientOptions): RemoteOpenCodeV2Client { + const baseUrl = options.baseUrl.replace(/\/+$/, '') + const baseHeaders = options.headers ?? {} + const doFetch = options.fetch ?? fetch + + async function send(input: RequestInput): Promise> { + const headers = new Headers(baseHeaders) + if (input.body !== undefined) headers.set('content-type', 'application/json') + if (input.accept !== undefined) headers.set('accept', input.accept) + if (input.directory !== undefined) headers.set('x-opencode-directory', input.directory) + const query = input.query === undefined ? '' : `?${new URLSearchParams(input.query).toString()}` + try { + const response = await doFetch(`${baseUrl}${input.path}${query}`, { + method: input.method, + headers, + ...(input.body === undefined ? {} : {body: JSON.stringify(input.body)}), + ...(input.signal === undefined ? {} : {signal: input.signal}), + }) + if (response.status === 401 || response.status === 403) { + await response.body?.cancel().catch(() => undefined) + return err({kind: 'auth', status: response.status}) + } + if (!response.ok) { + await response.body?.cancel().catch(() => undefined) + return err({kind: 'http', status: response.status}) + } + return ok(response) + } catch (error) { + if (input.signal?.aborted === true) return err({kind: 'aborted'}) + return err({kind: 'network', message: error instanceof Error ? error.message : 'request failed'}) + } + } + + async function sendJson(input: RequestInput): Promise> { + const sent = await send({...input, accept: 'application/json'}) + if (!sent.success) return sent + if (sent.data.status === 204) return ok(null) + try { + return ok(await sent.data.json()) + } catch { + if (input.signal?.aborted === true) return err({kind: 'aborted'}) + return err({kind: 'parse'}) + } + } + + async function sendNoContent(input: RequestInput): Promise> { + const sent = await send(input) + if (!sent.success) return sent + await sent.data.body?.cancel().catch(() => undefined) + return ok(undefined) + } + + async function active(requestOptions?: V2RequestOptions): Promise>> { + const result = await sendJson({ + method: 'GET', + path: '/api/session/active', + ...(requestOptions?.signal === undefined ? {} : {signal: requestOptions.signal}), + }) + if (!result.success) throw new Error(`session.active failed: ${describeCallError(result.error)}`) + const data = getObjectProperty(result.data, 'data') + if (!isRecord(data)) throw new Error('session.active failed: parse') + return data as Readonly> + } + + async function list(input: V2SessionListInput, requestOptions?: V2RequestOptions): Promise { + const query: Record = {} + if (input.parentID !== undefined) query.parentID = input.parentID + if (input.directory !== undefined) query.directory = input.directory + if (input.cursor !== undefined) query.cursor = input.cursor + if (input.limit !== undefined) query.limit = String(input.limit) + const result = await sendJson({ + method: 'GET', + path: '/api/session', + query, + ...(requestOptions?.signal === undefined ? {} : {signal: requestOptions.signal}), + }) + if (!result.success) throw new Error(`session.list failed: ${describeCallError(result.error)}`) + if (!isRecord(result.data) || !Array.isArray(result.data.data)) throw new Error('session.list failed: parse') + return result.data as unknown as V2SessionListPage + } + + return { + session: {active, list}, + + createSession: async ({directory, signal}) => { + const result = await sendJson({ + method: 'POST', + path: '/api/session', + body: {location: {directory}}, + directory, + ...(signal === undefined ? {} : {signal}), + }) + if (!result.success) return result + const id = getStringProperty(getObjectProperty(result.data, 'data'), 'id') + return id === null ? err({kind: 'parse'}) : ok({id}) + }, + + getSession: async ({sessionId, signal}) => { + const result = await sendJson({ + method: 'GET', + path: `/api/session/${encodeURIComponent(sessionId)}`, + ...(signal === undefined ? {} : {signal}), + }) + if (!result.success) return result + const info = getObjectProperty(result.data, 'data') + const id = getStringProperty(info, 'id') + if (id === null) return err({kind: 'parse'}) + return ok({ + id, + parentId: getStringProperty(info, 'parentID'), + directory: getStringProperty(getObjectProperty(info, 'location'), 'directory'), + outcome: readOutcome(info), + }) + }, + + prompt: async ({sessionId, text, directory, signal}) => + sendNoContent({ + method: 'POST', + path: `/api/session/${encodeURIComponent(sessionId)}/prompt`, + body: {text}, + directory, + ...(signal === undefined ? {} : {signal}), + }), + + interrupt: async ({sessionId, signal}) => { + const result = await sendJson({ + method: 'POST', + path: `/api/session/${encodeURIComponent(sessionId)}/interrupt`, + ...(signal === undefined ? {} : {signal}), + }) + if (!result.success) return result + const interrupted = isRecord(result.data) ? result.data.interrupted : undefined + return typeof interrupted === 'boolean' ? ok({interrupted}) : err({kind: 'parse'}) + }, + + subscribeEvents: async ({directory, signal}) => { + const sent = await send({ + method: 'GET', + path: '/api/event', + accept: 'text/event-stream', + directory, + ...(signal === undefined ? {} : {signal}), + }) + if (!sent.success) return sent + if (sent.data.headers.get('content-type')?.toLowerCase().includes('text/event-stream') !== true) { + await sent.data.body?.cancel().catch(() => undefined) + return err({kind: 'parse'}) + } + return ok(readFrames(sent.data, signal)) + }, + + replyPermission: async ({sessionId, requestId, decision, signal}) => + sendNoContent({ + method: 'POST', + path: `/api/session/${encodeURIComponent(sessionId)}/permission/${encodeURIComponent(requestId)}/reply`, + body: {decision}, + ...(signal === undefined ? {} : {signal}), + }), + + replyForm: async ({sessionId, formId, answer, signal}) => + sendNoContent({ + method: 'POST', + path: `/api/session/${encodeURIComponent(sessionId)}/form/${encodeURIComponent(formId)}/reply`, + body: {answer}, + ...(signal === undefined ? {} : {signal}), + }), + + cancelForm: async ({sessionId, formId, message, signal}) => + sendNoContent({ + method: 'DELETE', + path: `/api/session/${encodeURIComponent(sessionId)}/form/${encodeURIComponent(formId)}`, + ...(message === undefined ? {} : {query: {message}}), + ...(signal === undefined ? {} : {signal}), + }), + } +} diff --git a/packages/runtime/src/agent/remote-question-client-v2.test.ts b/packages/runtime/src/agent/remote-question-client-v2.test.ts new file mode 100644 index 0000000000..64c857cae0 --- /dev/null +++ b/packages/runtime/src/agent/remote-question-client-v2.test.ts @@ -0,0 +1,120 @@ +import type {V2FormField} from './event-v2.js' +import type {RemoteOpenCodeV2Client} from './remote-client-v2.js' + +import {describe, expect, it, vi} from 'vitest' + +import {buildQuestionFormAnswer, createRemoteQuestionClientV2} from './remote-question-client-v2.js' + +function field(key: string, type: string): V2FormField { + return {key, type, title: null, description: null, options: []} +} + +describe('buildQuestionFormAnswer', () => { + it('keys a single-choice answer by field key as a plain string', () => { + // #given + const fields = [field('q0', 'string'), field('q1', 'string')] + + // #when + const answer = buildQuestionFormAnswer(fields, [['A'], ['B']]) + + // #then + expect(answer).toEqual({q0: 'A', q1: 'B'}) + }) + + it('keeps every selection of a multiselect field as an array', () => { + // #given + const fields = [field('q0', 'multiselect')] + + // #when + const answer = buildQuestionFormAnswer(fields, [['x', 'y']]) + + // #then + expect(answer).toEqual({q0: ['x', 'y']}) + }) + + it('omits a question that has no answer, so the tool reads it as unanswered', () => { + // #given + const fields = [field('q0', 'string'), field('q1', 'multiselect'), field('q2', 'string')] + + // #when + const answer = buildQuestionFormAnswer(fields, [[], [], ['C']]) + + // #then + expect(answer).toEqual({q2: 'C'}) + }) + + it('ignores answers beyond the form fields', () => { + // #when + const answer = buildQuestionFormAnswer([field('q0', 'string')], [['A'], ['stray']]) + + // #then + expect(answer).toEqual({q0: 'A'}) + }) +}) + +function makeClient(overrides: Partial = {}): RemoteOpenCodeV2Client { + return { + replyForm: vi.fn().mockResolvedValue({success: true, data: undefined}), + cancelForm: vi.fn().mockResolvedValue({success: true, data: undefined}), + ...overrides, + } as unknown as RemoteOpenCodeV2Client +} + +describe('createRemoteQuestionClientV2', () => { + it('answers a form with the built answer and returns no error', async () => { + // #given + const client = makeClient() + const questions = createRemoteQuestionClientV2(client) + + // #when + const response = await questions.answer({ + sessionId: 'ses_1', + formId: 'frm_1', + fields: [field('q0', 'string')], + answers: [['A']], + }) + + // #then + expect(response).toEqual({}) + expect(client.replyForm).toHaveBeenCalledWith({sessionId: 'ses_1', formId: 'frm_1', answer: {q0: 'A'}}) + }) + + it('cancels a form without a message, which ends the asking turn', async () => { + // #given + const client = makeClient() + const questions = createRemoteQuestionClientV2(client) + + // #when + const response = await questions.reject({sessionId: 'ses_1', formId: 'frm_1'}) + + // #then + expect(response).toEqual({}) + expect(client.cancelForm).toHaveBeenCalledWith({sessionId: 'ses_1', formId: 'frm_1'}) + }) + + it('reports a failed call as an error kind, never as text', async () => { + // #given + const client = makeClient({ + replyForm: vi.fn().mockResolvedValue({success: false, error: {kind: 'http', status: 409}}), + }) + const questions = createRemoteQuestionClientV2(client) + + // #when + const response = await questions.answer({sessionId: 's', formId: 'f', fields: [], answers: []}) + + // #then + expect(response).toEqual({error: {kind: 'http', status: 409}}) + }) + + it('forwards the abort signal', async () => { + // #given + const client = makeClient() + const signal = new AbortController().signal + + // #when + await createRemoteQuestionClientV2(client).reject({sessionId: 's', formId: 'f', signal}) + + // #then + expect(client.cancelForm).toHaveBeenCalledWith({sessionId: 's', formId: 'f', signal}) + }) +}) diff --git a/packages/runtime/src/agent/remote-question-client-v2.ts b/packages/runtime/src/agent/remote-question-client-v2.ts new file mode 100644 index 0000000000..ae2275753c --- /dev/null +++ b/packages/runtime/src/agent/remote-question-client-v2.ts @@ -0,0 +1,76 @@ +import type {V2FormField} from './event-v2.js' +import type {RemoteOpenCodeV2Client, V2CallError, V2FormValue} from './remote-client-v2.js' + +/** + * Answers to the model's `question` tool on OpenCode V2 (v2.2.0). + * + * V1 had `POST /question/{id}/reply`. V2 has no question route: the `question` tool asks a form + * (`packages/core/src/tool/plugin/question.ts`) with `metadata.kind === 'question'` and one field per question, keyed + * `q0`, `q1`, ... A `multiselect` field takes an array, any other field a single string. The tool reads a missing key + * as "unanswered". A reply is `POST /api/session/:id/form/:formID/reply`; a cancel is `DELETE` on the same form. A + * cancel without a message dismisses the question and ends the asking step, which is what a V1 reject did. + * + * This is the V2 sibling of `remote-question-client.ts`. The answer mapping lives here because the Action will need + * the same one. + */ + +/** The outcome of a reply or cancel. `error` is a call-error kind, never response text. */ +export interface RemoteQuestionResponseV2 { + readonly error?: V2CallError +} + +export interface RemoteQuestionClientV2 { + readonly answer: (input: { + readonly sessionId: string + readonly formId: string + /** The form's fields, in question order. */ + readonly fields: readonly V2FormField[] + readonly answers: readonly (readonly string[])[] + readonly signal?: AbortSignal + }) => Promise + readonly reject: (input: { + readonly sessionId: string + readonly formId: string + readonly signal?: AbortSignal + }) => Promise +} + +/** + * Turn per-question answer lists into a form answer. Answers pair with fields by position. A question without an + * answer gets no key, and answers past the last field are dropped. + */ +export function buildQuestionFormAnswer( + fields: readonly V2FormField[], + answers: readonly (readonly string[])[], +): Readonly> { + const answer: Record = {} + for (const [index, field] of fields.entries()) { + const values = answers[index] ?? [] + if (values.length === 0) continue + if (field.type === 'multiselect') { + answer[field.key] = [...values] + } else { + const first = values[0] + if (first !== undefined) answer[field.key] = first + } + } + return answer +} + +export function createRemoteQuestionClientV2(client: RemoteOpenCodeV2Client): RemoteQuestionClientV2 { + return { + answer: async ({sessionId, formId, fields, answers, signal}) => { + const result = await client.replyForm({ + sessionId, + formId, + answer: buildQuestionFormAnswer(fields, answers), + ...(signal === undefined ? {} : {signal}), + }) + return result.success ? {} : {error: result.error} + }, + reject: async ({sessionId, formId, signal}) => { + const result = await client.cancelForm({sessionId, formId, ...(signal === undefined ? {} : {signal})}) + return result.success ? {} : {error: result.error} + }, + } +} From 229dce4b276b9c9856d7494ad34771834c16fe7e Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Wed, 28 Oct 2026 21:03:45 -0700 Subject: [PATCH 2/9] refactor(gateway): add the OpenCode V2 run loop Adds the V2 sibling of the gateway run core and its collaborators: root stop and quarantine watch, repo quiescence over the active-list join, the drain gate (notice delivered, root idle in the notice's generation, root not live), owned-session settlement, approval replies keyed by request id, question forms mapped onto the existing question flow, and provider-failure labelling. run.ts and program.ts pick V1 or V2 from the opencodeVersion the workspace reports on /readyz (major >= 2 is V2). A version that is present but unreadable selects neither loop and counts as not ready. V1 behaviour is unchanged. Tests run the real loop against captured v2.2.0 frames. An end-to-end test, gated on FRO_BOT_OPENCODE_V2_BIN, drives one prompt with a Code Mode call and an approval through the real stock server. --- .../src/execute/drain-completion-v2.test.ts | 369 +++++ .../src/execute/drain-completion-v2.ts | 268 ++++ .../gateway/src/execute/opencode-attach-v2.ts | 21 + .../src/execute/opencode-generation.test.ts | 135 ++ .../src/execute/opencode-generation.ts | 90 ++ .../src/execute/permission-reply-v2.test.ts | 76 + .../src/execute/permission-reply-v2.ts | 36 + .../src/execute/provider-failure-v2.ts | 46 + .../src/execute/question-client-v2.test.ts | 106 ++ .../gateway/src/execute/question-client-v2.ts | 92 ++ .../src/execute/repo-quiescence-v2.test.ts | 163 +++ .../gateway/src/execute/repo-quiescence-v2.ts | 109 ++ .../gateway/src/execute/repo-quiescence.ts | 2 +- .../gateway/src/execute/root-stop-v2.test.ts | 286 ++++ packages/gateway/src/execute/root-stop-v2.ts | 224 +++ .../src/execute/run-core-v2.drain.test.ts | 482 +++++++ .../src/execute/run-core-v2.e2e.test.ts | 241 ++++ .../src/execute/run-core-v2.fixture.ts | 472 ++++++ .../src/execute/run-core-v2.forms.test.ts | 493 +++++++ .../execute/run-core-v2.root-abort.test.ts | 333 +++++ .../gateway/src/execute/run-core-v2.test.ts | 714 +++++++++ packages/gateway/src/execute/run-core-v2.ts | 1283 +++++++++++++++++ packages/gateway/src/execute/run-core.ts | 7 +- packages/gateway/src/execute/run.ts | 97 +- .../src/execute/run.v2-selection.test.ts | 134 ++ .../execute/settle-owned-sessions-v2.test.ts | 383 +++++ .../src/execute/settle-owned-sessions-v2.ts | 273 ++++ packages/gateway/src/program.ts | 12 +- .../gateway/src/workspace-api/client.test.ts | 40 + packages/gateway/src/workspace-api/client.ts | 2 + packages/gateway/src/workspace-api/types.ts | 6 + 31 files changed, 6962 insertions(+), 33 deletions(-) create mode 100644 packages/gateway/src/execute/drain-completion-v2.test.ts create mode 100644 packages/gateway/src/execute/drain-completion-v2.ts create mode 100644 packages/gateway/src/execute/opencode-attach-v2.ts create mode 100644 packages/gateway/src/execute/opencode-generation.test.ts create mode 100644 packages/gateway/src/execute/opencode-generation.ts create mode 100644 packages/gateway/src/execute/permission-reply-v2.test.ts create mode 100644 packages/gateway/src/execute/permission-reply-v2.ts create mode 100644 packages/gateway/src/execute/provider-failure-v2.ts create mode 100644 packages/gateway/src/execute/question-client-v2.test.ts create mode 100644 packages/gateway/src/execute/question-client-v2.ts create mode 100644 packages/gateway/src/execute/repo-quiescence-v2.test.ts create mode 100644 packages/gateway/src/execute/repo-quiescence-v2.ts create mode 100644 packages/gateway/src/execute/root-stop-v2.test.ts create mode 100644 packages/gateway/src/execute/root-stop-v2.ts create mode 100644 packages/gateway/src/execute/run-core-v2.drain.test.ts create mode 100644 packages/gateway/src/execute/run-core-v2.e2e.test.ts create mode 100644 packages/gateway/src/execute/run-core-v2.fixture.ts create mode 100644 packages/gateway/src/execute/run-core-v2.forms.test.ts create mode 100644 packages/gateway/src/execute/run-core-v2.root-abort.test.ts create mode 100644 packages/gateway/src/execute/run-core-v2.test.ts create mode 100644 packages/gateway/src/execute/run-core-v2.ts create mode 100644 packages/gateway/src/execute/run.v2-selection.test.ts create mode 100644 packages/gateway/src/execute/settle-owned-sessions-v2.test.ts create mode 100644 packages/gateway/src/execute/settle-owned-sessions-v2.ts diff --git a/packages/gateway/src/execute/drain-completion-v2.test.ts b/packages/gateway/src/execute/drain-completion-v2.test.ts new file mode 100644 index 0000000000..f2dbe9be40 --- /dev/null +++ b/packages/gateway/src/execute/drain-completion-v2.test.ts @@ -0,0 +1,369 @@ +import type {LedgerReconcileAdapter, SubagentNotice} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {DrainRejectCode} from './drain-completion.js' + +import {createOwnershipLedger, err, ok} from '@fro-bot/runtime' +import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest' + +import {createDrainCompletionV2} from './drain-completion-v2.js' + +const ROOT = 'ses_root' +const CHILD = 'ses_child' +const OTHER = 'ses_other' + +function notice(childSessionId: string, state: SubagentNotice['state'] = 'completed'): SubagentNotice { + return {childSessionId, state, agent: 'General', description: 'bg'} +} + +function makeLogger(): GatewayLogger { + return {debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn()} +} + +type Live = readonly string[] | 'fail' | 'hang' + +function setup(options: {readonly live?: readonly Live[]; readonly children?: readonly string[]} = {}) { + const ledger = createOwnershipLedger() + for (const child of options.children ?? [CHILD]) ledger.adopt(child, child) + const readings = options.live ?? [[]] + let call = 0 + const adapter: LedgerReconcileAdapter = { + children: vi.fn(async () => ok([])), + liveSessionIds: vi.fn(async (signal?: AbortSignal) => { + const reading = readings[Math.min(call, readings.length - 1)] ?? [] + call += 1 + if (reading === 'hang') { + return new Promise((_resolve, reject) => { + signal?.addEventListener('abort', () => reject(new Error('aborted')), {once: true}) + }) + } + return reading === 'fail' ? err(new Error('active failed')) : ok(new Set(reading)) + }), + } + const controller = new AbortController() + const onAdmitted = vi.fn() + const reasons: DrainRejectCode[] = [] + const drain = createDrainCompletionV2({ + rootSessionId: ROOT, + ledger, + adapter, + signal: controller.signal, + logger: makeLogger(), + onAdmitted, + onNotAdmitted: code => reasons.push(code), + validationIntervalMs: 1_000, + requestTimeoutMs: 5_000, + }) + return {ledger, adapter, controller, onAdmitted, reasons, drain} +} + +/** The server's own statement that a child ended: the ledger settles and the gate hears the notice. */ +function childEnds(s: ReturnType, child = CHILD, inboxId: string | null = 'msg_notice') { + s.ledger.settle(child) + s.drain.noteNotice(notice(child), inboxId) +} + +/** The turn the notice triggers: it starts, takes the notice in, and ends. */ +function noticeTurn(s: ReturnType, inboxId = 'msg_notice') { + s.drain.noteRootActivity() // execution.started + s.drain.noteInboxDelivered(inboxId) + s.drain.noteRootActivity() // the reply text + s.drain.noteRootIdle() // execution.succeeded +} + +beforeEach(() => { + vi.useFakeTimers() +}) + +afterEach(() => { + vi.useRealTimers() +}) + +describe('createDrainCompletionV2', () => { + it('admits success only after the turn the notice triggered has ended and the root is not live', async () => { + // #given — the root went idle once, the child settled, its notice arrived + const s = setup() + s.drain.noteRootIdle() + s.drain.beginDrain() + childEnds(s) + + // #when — the notice's turn runs and ends + noticeTurn(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('does not treat the first idle after a background child as terminal', async () => { + // #given — the child settled and its notice is queued, but the root has not taken it in yet + const s = setup() + s.drain.noteRootIdle() + s.drain.beginDrain() + + // #when + childEnds(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then — the earlier idle is stale, so nothing is admitted + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('idle-evidence-stale') + }) + + it('does not admit while the notice is queued, even when the root went idle after it', async () => { + // #given — an idle arrives after the notice, but the notice was never delivered into a turn + const s = setup() + s.drain.beginDrain() + childEnds(s) + + // #when + s.drain.noteRootActivity() + s.drain.noteRootIdle() + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + }) + + it('admits once the queued notice is delivered and the root ends the turn that took it in', async () => { + // #given + const s = setup() + s.drain.beginDrain() + childEnds(s) + s.drain.noteRootActivity() + s.drain.noteRootIdle() + await vi.advanceTimersByTimeAsync(10) + expect(s.onAdmitted).not.toHaveBeenCalled() + + // #when — the delivery arrives, then the turn ends + s.drain.noteInboxDelivered('msg_notice') + s.drain.noteRootActivity() + s.drain.noteRootIdle() + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('counts a notice that is already in the transcript as delivered', async () => { + // #given — a session.synthetic notice has no inbox id: it is the message itself + const s = setup() + s.drain.beginDrain() + childEnds(s, CHILD, null) + + // #when + s.drain.noteRootActivity() + s.drain.noteRootIdle() + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('does not admit a settled ledger without the child notice', async () => { + // #given — reconciliation settled the child, but no notice has been seen + const s = setup() + s.drain.noteRootIdle() + s.drain.beginDrain() + s.ledger.settle(CHILD) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('notice-not-observed') + }) + + it("accepts a cancelled notice as the child's terminal word", async () => { + // #given + const s = setup() + s.drain.beginDrain() + s.ledger.settle(CHILD) + s.drain.noteNotice(notice(CHILD, 'cancelled'), 'msg_cancel') + + // #when + noticeTurn(s, 'msg_cancel') + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('does not admit while the ledger still has an unsettled child', async () => { + // #given — one of two children has ended + const s = setup({children: [CHILD, OTHER]}) + s.drain.beginDrain() + childEnds(s, CHILD, 'msg_a') + + // #when + noticeTurn(s, 'msg_a') + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('ledger-not-drained') + }) + + it('does not admit while the root is live in the active list', async () => { + // #given + const s = setup({live: [[ROOT]]}) + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('root-live') + }) + + it('does not admit when the active list cannot be read', async () => { + // #given + const s = setup({live: ['fail']}) + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('root-liveness-unavailable') + }) + + it('does not admit when root activity arrives while the liveness request is in flight', async () => { + // #given — the request answers after the root started a new turn + const s = setup() + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + s.drain.requestValidation() + + // #when — the root starts another turn before the answer lands + s.drain.noteRootActivity() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + }) + + it('does not admit on a liveness reading older than a turn that began and ended while it was in flight', async () => { + // #given — everything else is in place; the reading is requested + const s = setup() + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + s.drain.requestValidation() + + // #when — another full turn runs before the answer lands, leaving fresh idle evidence behind it + noticeTurn(s) + await vi.advanceTimersByTimeAsync(10) + + // #then — the reading predates that turn, so this pass must not admit + expect(s.reasons.at(-1)).toBe('revision-drift') + expect(s.onAdmitted).not.toHaveBeenCalled() + }) + + it('retries a declined validation on its interval until the evidence lands', async () => { + // #given — the root is live at first, then not + const s = setup({live: [[ROOT], []]}) + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + expect(s.onAdmitted).not.toHaveBeenCalled() + + // #when + await vi.advanceTimersByTimeAsync(1_100) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('bounds a liveness request that never answers, so it counts as no evidence', async () => { + // #given + const s = setup({live: ['hang']}) + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(5_100) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('root-liveness-unavailable') + }) + + it('admits at most once and never after dispose', async () => { + // #given + const s = setup() + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('never admits after dispose or once the run signal aborted', async () => { + // #given + const disposed = setup() + disposed.drain.beginDrain() + childEnds(disposed) + noticeTurn(disposed) + disposed.drain.dispose() + const aborted = setup() + aborted.drain.beginDrain() + childEnds(aborted) + noticeTurn(aborted) + aborted.controller.abort() + + // #when + disposed.drain.requestValidation() + aborted.drain.requestValidation() + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(disposed.onAdmitted).not.toHaveBeenCalled() + expect(aborted.onAdmitted).not.toHaveBeenCalled() + }) + + it('ignores a notice for a child the ledger never adopted when judging the ledger', async () => { + // #given — a stranger's notice cannot satisfy this run's children + const s = setup() + s.drain.beginDrain() + s.ledger.settle(CHILD) + s.drain.noteNotice(notice('ses_stranger'), 'msg_x') + + // #when + noticeTurn(s, 'msg_x') + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('notice-not-observed') + }) +}) diff --git a/packages/gateway/src/execute/drain-completion-v2.ts b/packages/gateway/src/execute/drain-completion-v2.ts new file mode 100644 index 0000000000..0208283dca --- /dev/null +++ b/packages/gateway/src/execute/drain-completion-v2.ts @@ -0,0 +1,268 @@ +/** + * Drain-completion gate for a gateway run that adopted background work, on OpenCode V2: the sibling of + * `drain-completion.ts`. + * + * Why it exists is unchanged. A background child finishes, the server queues a notice for the PARENT, and the parent + * runs again to take it in (probe P2: `started, succeeded, started, succeeded` about 0.8 s apart). So the first root + * idle after a dispatch is not terminal, and a settled ledger alone is not completion. + * + * What differs is the evidence. V1 had to reconstruct the root's state from REST message lists. V2 publishes the root's + * executions on the stream (`session.execution.started` / `succeeded`) and says when a queued inbox item enters a turn + * (`session.inbox.delivered`), so the gate keeps that state itself and asks the server one thing: is the root in the + * active list. Success is admitted only when ALL of these hold at one commit point: + * - the ledger reports drain-complete (`unknown` still blocks, exactly as before); + * - every ledger entry's notice was observed. A cancelled child's notice counts: the notice is the server's own + * statement that the child ended, and a notice carries no model-forgeable text here (`readSubagentNotice` reads only + * metadata); + * - every queued notice has been delivered into a root turn; + * - the root idle evidence is current-generation: no root activity (an execution starting, text, a tool) and no new + * notice since the root's last `execution.succeeded`, which is how "idle after the last turn a notice triggered" reads + * on this stream; + * - the active list shows the root is not live; + * - the revision captured before that request still equals the current one. + * + * No notice never admits: the run's hard deadline reports it incomplete. The stream is trusted as the run's own record: + * a stream that is lost fails the run through the barrier, so a stream that is delivering is complete. That is why no + * reply-delivery fence is needed: the follow-up turn's text arrives before its `execution.succeeded`. + * + * Not a state machine framework: a revision counter, an idle stamp, the notices seen, and one validation in flight. + */ + +import type {LedgerReconcileAdapter, OwnershipLedger, SubagentNotice} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {DrainRejectCode} from './drain-completion.js' + +import {toErrorMessage} from '@fro-bot/runtime' +import {DRAIN_REQUEST_TIMEOUT_MS, DRAIN_VALIDATION_INTERVAL_MS} from './drain-completion.js' + +type BoundedResult = {readonly ok: true; readonly value: T} | {readonly ok: false} + +export interface DrainCompletionV2Options { + readonly rootSessionId: string + readonly ledger: OwnershipLedger + /** Global liveness: the V2 reconcile adapter's `liveSessionIds`. */ + readonly adapter: LedgerReconcileAdapter + /** The run's combined signal: deadline, inactivity, cancel. Aborting it ends validation. */ + readonly signal: AbortSignal + readonly logger: GatewayLogger + /** Called at most once, only for an admitted completion. */ + readonly onAdmitted: () => void + /** Called with the code of every declined admission attempt, so the run can show why it has not finished. */ + readonly onNotAdmitted?: (code: DrainRejectCode) => void + readonly validationIntervalMs?: number + readonly requestTimeoutMs?: number +} + +export interface DrainCompletionV2 { + /** Root execution started, text, tool or reasoning activity: invalidates current idle evidence. */ + readonly noteRootActivity: () => void + /** + * A completion notice for one of the root's children. `inboxId` is the inbox item carrying it, or `null` when the + * notice is already a transcript message. Deduped by child and state. Invalidates idle evidence. + */ + readonly noteNotice: (notice: SubagentNotice, inboxId: string | null) => void + /** A queued inbox item entered a root turn. */ + readonly noteInboxDelivered: (inboxId: string) => void + /** The root's execution succeeded: stamps the current revision, unless a notice is still queued. */ + readonly noteRootIdle: () => void + /** The run entered drain: validation passes may now run, retried on the interval. */ + readonly beginDrain: () => void + /** Ask for a validation pass. Never completes anything itself; coalesced to one in flight. */ + readonly requestValidation: () => void + readonly dispose: () => void +} + +interface NoticeRecord { + inboxId: string | null + delivered: boolean +} + +export function createDrainCompletionV2(options: DrainCompletionV2Options): DrainCompletionV2 { + const { + rootSessionId, + ledger, + adapter, + signal, + logger, + onAdmitted, + onNotAdmitted, + validationIntervalMs = DRAIN_VALIDATION_INTERVAL_MS, + requestTimeoutMs = DRAIN_REQUEST_TIMEOUT_MS, + } = options + + let closed = false + // Aborted on dispose so a request still in flight when the run exits stops, and its cap timer is cleared. + const lifecycle = new AbortController() + let draining = false + let inFlight = false + let rerunRequested = false + let retryTimer: ReturnType | undefined + + // Generation counter: bumped by any root activity or notice. Idle evidence stamped with an older revision is stale. + let revision = 0 + let idleRevision: number | null = null + const notices = new Map() + const noticedChildren = new Set() + + function invalidate(): void { + revision += 1 + idleRevision = null + } + + function queuedNotices(): number { + let queued = 0 + for (const record of notices.values()) if (!record.delivered) queued += 1 + return queued + } + + function noteRootActivity(): void { + if (closed) return + invalidate() + } + + function noteNotice(notice: SubagentNotice, inboxId: string | null): void { + if (closed) return + const key = `${notice.childSessionId}:${notice.state}` + const existing = notices.get(key) + if (existing === undefined) { + // A queued item is not in a turn yet; a transcript message already is. + notices.set(key, {inboxId, delivered: inboxId === null}) + invalidate() + } else if (existing.inboxId === null && inboxId !== null && !existing.delivered) { + existing.inboxId = inboxId + } + noticedChildren.add(notice.childSessionId) + requestValidation() + } + + function noteInboxDelivered(inboxId: string): void { + if (closed) return + for (const record of notices.values()) { + if (record.inboxId === inboxId && !record.delivered) { + record.delivered = true + invalidate() + } + } + } + + function noteRootIdle(): void { + if (closed) return + // A queued notice means a turn is still owed: this idle ended a turn that did not take it in. + if (queuedNotices() > 0) return + idleRevision = revision + } + + /** + * Run one request bounded by the run signal, dispose, and a hard cap. Never rejects; a hung, failed, or aborted + * request is `{ok: false}` so the caller treats it as "no evidence", never as success. + * + * The signal is a plain controller fed by listeners that are ALL removed in `finally`, not an `AbortSignal.any` + * composite: a composite stays registered on its parents until garbage collection, so retries would accumulate on + * the long-lived run and lifecycle signals. + */ + async function bounded(request: (requestSignal: AbortSignal) => Promise): Promise> { + if (signal.aborted || lifecycle.signal.aborted) return {ok: false} + const requestController = new AbortController() + const abortRequest = (): void => { + requestController.abort() + } + signal.addEventListener('abort', abortRequest, {once: true}) + lifecycle.signal.addEventListener('abort', abortRequest, {once: true}) + const capTimer = setTimeout(abortRequest, requestTimeoutMs) + const abandoned = new Promise>(resolve => { + requestController.signal.addEventListener('abort', () => resolve({ok: false}), {once: true}) + }) + try { + return await Promise.race([ + request(requestController.signal).then( + (value): BoundedResult => ({ok: true, value}), + (): BoundedResult => ({ok: false}), + ), + abandoned, + ]) + } finally { + clearTimeout(capTimer) + signal.removeEventListener('abort', abortRequest) + lifecycle.signal.removeEventListener('abort', abortRequest) + } + } + + async function rootIsLive(): Promise { + const result = await bounded(async requestSignal => adapter.liveSessionIds(requestSignal)) + if (!result.ok || !result.value.success) return null + return result.value.data.has(rootSessionId) + } + + function reject(reason: DrainRejectCode, context: Record = {}): void { + logger.debug({sessionId: rootSessionId, reason, ...context}, 'run-core: drain completion not admitted') + onNotAdmitted?.(reason) + } + + async function validate(): Promise { + // Captured before the request: renewed root activity while it is in flight invalidates whatever it describes. + const requestedRevision = revision + + const live = await rootIsLive() + if (closed || signal.aborted) return + + if (live === null) return reject('root-liveness-unavailable') + if (live) return reject('root-live') + + const unfenced = ledger + .snapshot() + .map(entry => entry.sessionId) + .filter(id => !noticedChildren.has(id)) + if (unfenced.length > 0) return reject('notice-not-observed', {children: unfenced}) + + // Commit point — nothing awaited between here and `onAdmitted`. + if (revision !== requestedRevision) return reject('revision-drift') + if (idleRevision === null || idleRevision !== revision) return reject('idle-evidence-stale') + if (!ledger.isDrainComplete()) return reject('ledger-not-drained') + + closed = true + onAdmitted() + } + + function requestValidation(): void { + if (closed || !draining || signal.aborted) return + if (inFlight) { + rerunRequested = true + return + } + // Nothing to validate without a drained ledger and current-generation root idle evidence. Each skip still names + // its blocker, so the run's wait reason follows the run instead of staying empty or frozen on an earlier code. + if (!ledger.isDrainComplete()) { + onNotAdmitted?.('ledger-not-drained') + return + } + if (idleRevision === null || idleRevision !== revision) { + onNotAdmitted?.('idle-evidence-stale') + return + } + inFlight = true + rerunRequested = false + validate() + .catch((error: unknown) => { + reject('validation-threw', {detail: toErrorMessage(error)}) + }) + .finally(() => { + inFlight = false + if (rerunRequested) requestValidation() + }) + } + + function beginDrain(): void { + if (closed || draining) return + draining = true + retryTimer = setInterval(requestValidation, validationIntervalMs) + } + + function dispose(): void { + closed = true + lifecycle.abort() + if (retryTimer !== undefined) clearInterval(retryTimer) + retryTimer = undefined + } + + return {noteRootActivity, noteNotice, noteInboxDelivered, noteRootIdle, beginDrain, requestValidation, dispose} +} diff --git a/packages/gateway/src/execute/opencode-attach-v2.ts b/packages/gateway/src/execute/opencode-attach-v2.ts new file mode 100644 index 0000000000..0ca6ef1307 --- /dev/null +++ b/packages/gateway/src/execute/opencode-attach-v2.ts @@ -0,0 +1,21 @@ +/** + * Remote-attach client for an OpenCode V2 workspace: the V2 sibling of `opencode-attach.ts`. + * + * Injects the workspace bearer token as an `Authorization` header on every request, including the SSE `/event` + * subscription. The proxy swaps it for the server's own credentials. + * + * Security invariant: the token is NEVER logged. + */ + +import type {RemoteOpenCodeV2Client} from '@fro-bot/runtime' + +import {createRemoteOpenCodeV2Client} from '@fro-bot/runtime' +import {workspaceAuthHeaders} from './workspace-auth.js' + +/** + * @param baseURL Full base URL of the workspace proxy (e.g. `http://workspace:9200`). + * @param token Bearer secret for the workspace proxy. Never logged. + */ +export function attachOpencodeV2(baseURL: string, token: string): RemoteOpenCodeV2Client { + return createRemoteOpenCodeV2Client({baseUrl: baseURL, headers: workspaceAuthHeaders(token)}) +} diff --git a/packages/gateway/src/execute/opencode-generation.test.ts b/packages/gateway/src/execute/opencode-generation.test.ts new file mode 100644 index 0000000000..56bec1867a --- /dev/null +++ b/packages/gateway/src/execute/opencode-generation.test.ts @@ -0,0 +1,135 @@ +import type {RepoQuiescence} from '../runtime-effect.js' +import type {ReadyzResponse, WorkspaceError} from '../workspace-api/types.js' +import type {RepoQuiescenceChecker} from './repo-quiescence.js' + +import {err, ok} from '@fro-bot/runtime' +import {describe, expect, it, vi} from 'vitest' + +import {createGenerationAwareQuiescenceChecker, selectOpenCodeGeneration} from './opencode-generation.js' + +describe('selectOpenCodeGeneration', () => { + it.each([ + ['2.2.0', 'v2'], + ['v2.2.0', 'v2'], + ['3.0.1', 'v2'], + ['10.4.0', 'v2'], + ['1.19.4', 'v1'], + ['1.19.4+harness.3', 'v1'], + ['0.9.0', 'v1'], + ])('reads %s as %s', (version, generation) => { + // #when + const selected = selectOpenCodeGeneration(version) + + // #then + expect(selected).toEqual({success: true, data: generation}) + }) + + it('reads a workspace that reports no version as V1', () => { + // #when / #then + expect(selectOpenCodeGeneration(undefined)).toEqual({success: true, data: 'v1'}) + }) + + it.each(['', 'latest', 'dev', '2', '-1.0.0', 'x.2.0'])('rejects %j instead of guessing a generation', version => { + // #when / #then + expect(selectOpenCodeGeneration(version)).toEqual({success: false, error: {kind: 'unparseable-version'}}) + }) +}) + +describe('createGenerationAwareQuiescenceChecker', () => { + const CLEAR: RepoQuiescence = { + kind: 'clear', + source: 'opencode-session-status', + directory: '/d', + checkedAt: '2026-01-01T00:00:00.000Z', + } + const context = {repo: 'o/r', signal: new AbortController().signal} + + function make(readyz: () => Promise> | ReturnType>>) { + const v1 = vi.fn().mockResolvedValue(CLEAR) + const v2 = vi.fn().mockResolvedValue(CLEAR) + const warn = vi.fn() + const checker = createGenerationAwareQuiescenceChecker({ + readyz, + v1, + v2, + logger: {debug: vi.fn(), info: vi.fn(), warn, error: vi.fn()}, + }) + return {checker, v1, v2, warn} + } + + it('checks with the V2 sibling when the workspace reports a V2 version', async () => { + // #given + const {checker, v1, v2} = make(async () => ok({ready: true, opencode: 'ready', opencodeVersion: '2.2.0'})) + + // #when + const result = await checker(context) + + // #then + expect(result).toBe(CLEAR) + expect(v2).toHaveBeenCalledWith(context) + expect(v1).not.toHaveBeenCalled() + }) + + it('checks with the V1 checker when the workspace reports no version', async () => { + // #given + const {checker, v1, v2} = make(async () => ok({ready: true, opencode: 'ready'})) + + // #when + await checker(context) + + // #then + expect(v1).toHaveBeenCalledWith(context) + expect(v2).not.toHaveBeenCalled() + }) + + it('still selects from the version when the workspace is not ready', async () => { + // #given — a starting workspace answers 503 with the same fields + const {checker, v2} = make(async () => ok({ready: false, opencode: 'starting', opencodeVersion: '2.2.0'})) + + // #when + await checker(context) + + // #then + expect(v2).toHaveBeenCalled() + }) + + it('reports unknown, and runs no check, when the workspace cannot be asked', async () => { + // #given — guessing a generation could read an empty answer from the wrong API as "clear" + const {checker, v1, v2, warn} = make(async () => err({kind: 'network-error'})) + + // #when + const result = await checker(context) + + // #then + expect(result).toEqual({kind: 'unknown', source: 'unavailable', directory: null, reason: 'generation-unavailable'}) + expect(v1).not.toHaveBeenCalled() + expect(v2).not.toHaveBeenCalled() + expect(warn).toHaveBeenCalled() + }) + + it('reports unknown when the reported version cannot be read', async () => { + // #given + const {checker, v1, v2} = make(async () => ok({ready: true, opencode: 'ready', opencodeVersion: 'latest'})) + + // #when + const result = await checker(context) + + // #then + expect(result).toMatchObject({kind: 'unknown', reason: 'generation-unreadable'}) + expect(v1).not.toHaveBeenCalled() + expect(v2).not.toHaveBeenCalled() + }) + + it('does not hang on a readyz that never answers once the caller aborts', async () => { + // #given + const controller = new AbortController() + const {checker} = make(async () => new Promise(() => undefined)) + + // #when + const pending = checker({repo: 'o/r', signal: controller.signal}) + controller.abort() + + // #then + await expect(pending).resolves.toMatchObject({kind: 'unknown', reason: 'generation-unavailable'}) + }) +}) diff --git a/packages/gateway/src/execute/opencode-generation.ts b/packages/gateway/src/execute/opencode-generation.ts new file mode 100644 index 0000000000..cf00d707ef --- /dev/null +++ b/packages/gateway/src/execute/opencode-generation.ts @@ -0,0 +1,90 @@ +/** + * Which OpenCode generation the workspace runs, and the selection that follows from it. + * + * The workspace reports its OpenCode version on its control API (`GET /readyz`, field `opencodeVersion`). The gateway + * reads it when it attaches and runs the V1 or the V2 loop from the major version: 2 or above is V2. The workspace image + * pin is the only switch. The gateway keeps no second setting that could disagree with it. + * + * A workspace that reports no version predates the report and runs V1. A version that is present but unreadable selects + * nothing: guessing could point the V1 loop at a V2 server, or the other way round. + */ + +import type {Result} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {RepoQuiescence} from '../runtime-effect.js' +import type {ReadyzResponse, WorkspaceError} from '../workspace-api/types.js' +import type {RepoQuiescenceChecker} from './repo-quiescence.js' + +import {err, ok} from '@fro-bot/runtime' + +export type OpenCodeGeneration = 'v1' | 'v2' + +export interface UnparseableVersion { + readonly kind: 'unparseable-version' +} + +/** `2.2.0`, `v2.2.0` and `1.19.4+harness.3` all lead with `major.minor.patch`. */ +const VERSION_PATTERN = /^v?(\d+)\.\d+\.\d+/ + +export function selectOpenCodeGeneration(version: string | undefined): Result { + if (version === undefined) return ok('v1') + const match = VERSION_PATTERN.exec(version) + const major = match?.[1] + if (major === undefined) return err({kind: 'unparseable-version'}) + return ok(Number(major) >= 2 ? 'v2' : 'v1') +} + +export interface GenerationAwareQuiescenceOptions { + readonly readyz: () => Promise> + readonly v1: RepoQuiescenceChecker + readonly v2: RepoQuiescenceChecker + readonly logger: GatewayLogger +} + +function unknown(reason: string): RepoQuiescence { + return {kind: 'unknown', source: 'unavailable', directory: null, reason} +} + +/** + * A quiescence checker that picks the V1 or V2 check from the workspace's reported version on every call. + * + * Quiescence gates lock replacement and recovery, so it fails closed: when the workspace cannot be asked or reports a + * version this code cannot read, the answer is `unknown`, which blocks. The version is read per call rather than cached, + * because the workspace can be redeployed without a gateway restart. + */ +export function createGenerationAwareQuiescenceChecker( + options: GenerationAwareQuiescenceOptions, +): RepoQuiescenceChecker { + const {readyz, v1, v2, logger} = options + + return async context => { + const aborted = new Promise<'aborted'>(resolve => { + if (context.signal.aborted) resolve('aborted') + else context.signal.addEventListener('abort', () => resolve('aborted'), {once: true}) + }) + const answer = await Promise.race([ + readyz().then( + result => ({result}) as const, + () => 'failed' as const, + ), + aborted, + ]) + if (answer === 'aborted' || answer === 'failed' || !answer.result.success) { + logger.warn( + {repo: context.repo}, + 'repo-quiescence: could not read the workspace OpenCode version; treating as unknown', + ) + return unknown('generation-unavailable') + } + + const selected = selectOpenCodeGeneration(answer.result.data.opencodeVersion) + if (!selected.success) { + logger.warn( + {repo: context.repo}, + 'repo-quiescence: the workspace OpenCode version is unreadable; treating as unknown', + ) + return unknown('generation-unreadable') + } + return selected.data === 'v2' ? v2(context) : v1(context) + } +} diff --git a/packages/gateway/src/execute/permission-reply-v2.test.ts b/packages/gateway/src/execute/permission-reply-v2.test.ts new file mode 100644 index 0000000000..c7b1c266b6 --- /dev/null +++ b/packages/gateway/src/execute/permission-reply-v2.test.ts @@ -0,0 +1,76 @@ +import type {RemoteOpenCodeV2Client} from '@fro-bot/runtime' + +import {err, ok} from '@fro-bot/runtime' +import {describe, expect, it, vi} from 'vitest' + +import {createPostReplyFactoryV2} from './permission-reply-v2.js' + +function makeClient(reply: ReturnType): RemoteOpenCodeV2Client { + return {replyPermission: reply} as unknown as RemoteOpenCodeV2Client +} + +describe('createPostReplyFactoryV2', () => { + it.each(['once', 'always', 'reject'] as const)( + 'sends %s keyed by the request id on the asking session', + async decision => { + // #given + const reply = vi.fn().mockResolvedValue(ok(undefined)) + const postReply = createPostReplyFactoryV2(makeClient(reply))('ses_1') + + // #when + const result = await postReply('per_a', '/workspace/repos/o/r', decision) + + // #then + expect(result).toEqual({ok: true}) + const input = reply.mock.calls[0]?.[0] as { + sessionId: string + requestId: string + decision: string + signal: unknown + } + expect(input).toMatchObject({sessionId: 'ses_1', requestId: 'per_a', decision}) + expect(input.signal).toBeInstanceOf(AbortSignal) + }, + ) + + it('keeps two nested approvals from one execute call distinct', async () => { + // #given — one execute call asked twice; the two replies differ + const reply = vi.fn().mockResolvedValue(ok(undefined)) + const postReply = createPostReplyFactoryV2(makeClient(reply))('ses_1') + + // #when + await postReply('per_1', '/d', 'once') + await postReply('per_2', '/d', 'reject') + + // #then + const sent = reply.mock.calls.map(([input]) => input as {requestId: string; decision: string}) + expect(sent.map(input => [input.requestId, input.decision])).toEqual([ + ['per_1', 'once'], + ['per_2', 'reject'], + ]) + }) + + it('reports a failed reply as a short code, never as response text', async () => { + // #given + const reply = vi.fn().mockResolvedValue(err({kind: 'http', status: 404})) + const postReply = createPostReplyFactoryV2(makeClient(reply))('ses_1') + + // #when + const result = await postReply('per_a', '/d', 'once') + + // #then + expect(result).toEqual({ok: false, error: 'http 404'}) + }) + + it('reports a thrown reply without its message', async () => { + // #given + const reply = vi.fn().mockRejectedValue(new Error('secret detail')) + const postReply = createPostReplyFactoryV2(makeClient(reply))('ses_1') + + // #when + const result = await postReply('per_a', '/d', 'once') + + // #then + expect(result).toEqual({ok: false, error: 'threw'}) + }) +}) diff --git a/packages/gateway/src/execute/permission-reply-v2.ts b/packages/gateway/src/execute/permission-reply-v2.ts new file mode 100644 index 0000000000..230524f171 --- /dev/null +++ b/packages/gateway/src/execute/permission-reply-v2.ts @@ -0,0 +1,36 @@ +/** + * The approval reply for a run on OpenCode V2: the V2 side of `postReplyFactory` in `run.ts`. + * + * A permission reply is `POST /api/session/:sessionID/permission/:requestID/reply` with `{decision}`, where decision is + * `once`, `always` or `reject` (`packages/protocol/src/groups/permission.ts` at `anomalyco/opencode@v2.2.0`). It is keyed + * by REQUEST id: two approvals raised from one `execute` call share the call id and differ in request id (probe P5), so + * each Discord decision answers exactly its own request. The approval coordinator and registry above this are unchanged. + * + * Failures collapse to a short code. A response body can echo the command or path being approved. + */ + +import type {RemoteOpenCodeV2Client, V2CallError} from '@fro-bot/runtime' +import type {PostReplyFactory} from './launch-types.js' + +/** Per-call bound; a hung workspace must not pin a settlement. */ +const PERMISSION_REPLY_TIMEOUT_MS = 10_000 + +function describe(error: V2CallError): string { + return error.kind === 'auth' || error.kind === 'http' ? `${error.kind} ${error.status}` : error.kind +} + +export function createPostReplyFactoryV2(client: RemoteOpenCodeV2Client): PostReplyFactory { + return sessionId => async (requestId, _directory, decision) => { + try { + const result = await client.replyPermission({ + sessionId, + requestId, + decision, + signal: AbortSignal.timeout(PERMISSION_REPLY_TIMEOUT_MS), + }) + return result.success ? {ok: true} : {ok: false, error: describe(result.error)} + } catch { + return {ok: false, error: 'threw'} + } + } +} diff --git a/packages/gateway/src/execute/provider-failure-v2.ts b/packages/gateway/src/execute/provider-failure-v2.ts new file mode 100644 index 0000000000..3b0702c495 --- /dev/null +++ b/packages/gateway/src/execute/provider-failure-v2.ts @@ -0,0 +1,46 @@ +/** + * Provider-failure labelling for the OpenCode V2 event loop: the sibling of `provider-failure.ts`. + * + * V2 reports a terminal failure as `session.execution.failed` with a structured error `{type, message, status, + * retryAfterMs}` (`packages/schema/src/session-error.ts`). The shared classifier (`classifyProviderFailure`) takes the + * same typed signal the V1 loop builds, so the V2 error is mapped onto it field by field. Classification reads + * upstream fields but NEVER returns them: every result is a closed, fixed `reason`. The error `type` and `message` are + * provider- or plugin-controlled, so the logged error name is always `unknown`, never the upstream string. + * + * A retry (`session.retry.scheduled`) is never a failure here. V1 stopped on a retry only when the structured + * `action.reason` said the model could never be served. The V2 retry event carries the retried error and no such + * action, and the message of a retried (often 5xx) failure is not evidence the retry is hopeless, so the loop keeps + * waiting and lets the terminal event decide. + */ + +import type {ProviderFailureKind, V2ErrorInfo} from '@fro-bot/runtime' +import type {ProviderFailure, ProviderFailureReason} from './provider-failure.js' + +import {classifyProviderFailure, terminalSignalFromPayload} from '@fro-bot/runtime' + +function toReason(kind: ProviderFailureKind): ProviderFailureReason { + switch (kind) { + case 'auth': + return 'provider auth unavailable' + case 'quota': + return 'provider quota exceeded' + case 'model-not-found': + return 'model not available' + case 'unclassified': + case 'context-overflow': + case 'aborted': + return 'session error' + } +} + +/** Label a V2 execution failure. Total: an unrecognized error still yields a fixed reason. */ +export function failureFromV2Error(error: V2ErrorInfo): ProviderFailure { + const classification = classifyProviderFailure( + terminalSignalFromPayload({ + name: error.type, + message: error.message, + ...(error.status === null ? {} : {status: error.status}), + }), + ) + return {reason: toReason(classification.kind), errorName: 'unknown'} +} diff --git a/packages/gateway/src/execute/question-client-v2.test.ts b/packages/gateway/src/execute/question-client-v2.test.ts new file mode 100644 index 0000000000..348de9ee8a --- /dev/null +++ b/packages/gateway/src/execute/question-client-v2.test.ts @@ -0,0 +1,106 @@ +import type {RemoteOpenCodeV2Client, V2FormField} from '@fro-bot/runtime' + +import {ok} from '@fro-bot/runtime' +import {describe, expect, it, vi} from 'vitest' + +import {createFormDirectoryV2, createQuestionEffectsV2} from './question-client-v2.js' + +const FIELDS: readonly V2FormField[] = [ + {key: 'q0', type: 'string', title: 'Pick', description: 'Pick?', options: []}, + {key: 'q1', type: 'multiselect', title: 'Many', description: 'Many?', options: []}, +] + +function makeEffects() { + const forms = createFormDirectoryV2() + forms.remember('frm_1', {sessionId: 'ses_1', fields: FIELDS}) + const client = { + replyForm: vi.fn().mockResolvedValue(ok(undefined)), + cancelForm: vi.fn().mockResolvedValue(ok(undefined)), + } as unknown as RemoteOpenCodeV2Client + return {effects: createQuestionEffectsV2({client, forms}), client, forms} +} + +describe('createQuestionEffectsV2', () => { + it('replies to the form with answers keyed by field, on the asking session', async () => { + // #given + const {effects, client} = makeEffects() + + // #when + const result = await effects.replyQuestion('frm_1', [['A'], ['x', 'y']]) + + // #then + expect(result).toEqual({ok: true}) + expect(client.replyForm).toHaveBeenCalledWith( + expect.objectContaining({sessionId: 'ses_1', formId: 'frm_1', answer: {q0: 'A', q1: ['x', 'y']}}), + ) + }) + + it('rejects by cancelling the form with no message, which ends the asking step', async () => { + // #given + const {effects, client} = makeEffects() + + // #when + const result = await effects.rejectQuestion('frm_1') + + // #then + expect(result).toEqual({ok: true}) + const input = vi.mocked(client.cancelForm).mock.calls[0]?.[0] + expect(input).toMatchObject({sessionId: 'ses_1', formId: 'frm_1'}) + expect(input?.message).toBeUndefined() + }) + + it('refuses a form the run never forwarded, rather than guessing a session', async () => { + // #given + const {effects, client} = makeEffects() + + // #when + const reply = await effects.replyQuestion('frm_unknown', [['A']]) + const reject = await effects.rejectQuestion('frm_unknown') + + // #then + expect(reply).toEqual({ok: false, error: 'unknown-form'}) + expect(reject).toEqual({ok: false, error: 'unknown-form'}) + expect(client.replyForm).not.toHaveBeenCalled() + expect(client.cancelForm).not.toHaveBeenCalled() + }) + + it('collapses a failed call to a reason code, never response text', async () => { + // #given + const forms = createFormDirectoryV2() + forms.remember('frm_1', {sessionId: 'ses_1', fields: FIELDS}) + const client = { + replyForm: vi.fn().mockResolvedValue({success: false, error: {kind: 'http', status: 409}}), + cancelForm: vi.fn().mockRejectedValue(new Error('secret answer text')), + } as unknown as RemoteOpenCodeV2Client + const effects = createQuestionEffectsV2({client, forms}) + + // #when / #then + expect(await effects.replyQuestion('frm_1', [['A']])).toEqual({ok: false, error: 'sdk-error'}) + expect(await effects.rejectQuestion('frm_1')).toEqual({ok: false, error: 'sdk-threw'}) + }) + + it('bounds every call with a timeout signal', async () => { + // #given + const {effects, client} = makeEffects() + + // #when + await effects.replyQuestion('frm_1', [['A']]) + await effects.rejectQuestion('frm_1') + + // #then + expect(vi.mocked(client.replyForm).mock.calls[0]?.[0].signal).toBeInstanceOf(AbortSignal) + expect(vi.mocked(client.cancelForm).mock.calls[0]?.[0].signal).toBeInstanceOf(AbortSignal) + }) + + it('forgets a form once told to', () => { + // #given + const forms = createFormDirectoryV2() + forms.remember('frm_1', {sessionId: 'ses_1', fields: FIELDS}) + + // #when + forms.forget('frm_1') + + // #then + expect(forms.lookup('frm_1')).toBeUndefined() + }) +}) diff --git a/packages/gateway/src/execute/question-client-v2.ts b/packages/gateway/src/execute/question-client-v2.ts new file mode 100644 index 0000000000..4606066057 --- /dev/null +++ b/packages/gateway/src/execute/question-client-v2.ts @@ -0,0 +1,92 @@ +/** + * Question reply/reject effects for a run on OpenCode V2: the sibling of `question-client.ts`. + * + * V2 has no question route. The model's `question` tool asks a form, so a reply is a form reply and a reject is a form + * cancel, both addressed by session id AND form id. The question registry hands the effects only a request id, which on + * V2 is the form id. The run loop records each question form it forwards in a `FormDirectoryV2`; the effects read the + * session and the field layout back from it. A form the directory does not hold is refused, never guessed at. + * + * Contract, as in V1: the effects never throw and never return response text. Every failure collapses to a short reason + * code, because an error body can echo the question or answer text and must not reach logs. + */ + +import type {RemoteOpenCodeV2Client, RemoteQuestionClientV2, V2FormField} from '@fro-bot/runtime' +import type {QuestionAnswers, QuestionEffectResult, QuestionSideEffects} from '../approvals/question-registry.js' + +import {createRemoteQuestionClientV2} from '@fro-bot/runtime' + +/** Per-call bound; a hung workspace must not pin a settlement. */ +const QUESTION_CALL_TIMEOUT_MS = 10_000 + +export interface FormRecordV2 { + readonly sessionId: string + /** The form's fields in question order. */ + readonly fields: readonly V2FormField[] +} + +/** The open question forms of one run, by form id. */ +export interface FormDirectoryV2 { + readonly remember: (formId: string, record: FormRecordV2) => void + readonly lookup: (formId: string) => FormRecordV2 | undefined + readonly forget: (formId: string) => void +} + +export function createFormDirectoryV2(): FormDirectoryV2 { + const forms = new Map() + return { + remember: (formId, record) => { + forms.set(formId, record) + }, + lookup: formId => forms.get(formId), + forget: formId => { + forms.delete(formId) + }, + } +} + +export interface QuestionEffectsV2Options { + readonly client: RemoteOpenCodeV2Client + readonly forms: FormDirectoryV2 + /** Override for tests; defaults to a question client over `client`. */ + readonly questionClient?: RemoteQuestionClientV2 +} + +export function createQuestionEffectsV2(options: QuestionEffectsV2Options): QuestionSideEffects { + const {forms} = options + const questionClient = options.questionClient ?? createRemoteQuestionClientV2(options.client) + + async function settle( + formId: string, + call: (record: ReturnType & object) => Promise<{readonly error?: unknown}>, + ): Promise { + const record = forms.lookup(formId) + if (record === undefined) return {ok: false, error: 'unknown-form'} + try { + const response = await call(record) + return response.error == null ? {ok: true} : {ok: false, error: 'sdk-error'} + } catch { + return {ok: false, error: 'sdk-threw'} + } + } + + return { + replyQuestion: async (requestID: string, answers: QuestionAnswers) => + settle(requestID, async record => + questionClient.answer({ + sessionId: record.sessionId, + formId: requestID, + fields: record.fields, + answers, + signal: AbortSignal.timeout(QUESTION_CALL_TIMEOUT_MS), + }), + ), + rejectQuestion: async (requestID: string) => + settle(requestID, async record => + questionClient.reject({ + sessionId: record.sessionId, + formId: requestID, + signal: AbortSignal.timeout(QUESTION_CALL_TIMEOUT_MS), + }), + ), + } +} diff --git a/packages/gateway/src/execute/repo-quiescence-v2.test.ts b/packages/gateway/src/execute/repo-quiescence-v2.test.ts new file mode 100644 index 0000000000..0e12e4c55d --- /dev/null +++ b/packages/gateway/src/execute/repo-quiescence-v2.test.ts @@ -0,0 +1,163 @@ +import type {V2SessionApi, V2SessionInfoLike} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' + +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {REPO_QUIESCENCE_TIMEOUT_MS} from './recovery-budget.js' +import {createRepoQuiescenceCheckerV2} from './repo-quiescence-v2.js' + +const DIRECTORY = '/workspace/repos/o/r' + +function makeLogger(): GatewayLogger { + return {debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn()} +} + +interface Options { + readonly active?: Readonly> + readonly sessions?: readonly V2SessionInfoLike[] + readonly active_?: () => Promise>> +} + +function makeChecker(options: Options = {}) { + const list = vi.fn(async (input: {readonly directory?: string}) => ({ + data: (options.sessions ?? []).filter(session => session.location?.directory === input.directory), + })) + const api: V2SessionApi = { + active: options.active_ ?? (async () => options.active ?? {}), + list, + } + const logger = makeLogger() + const checker = createRepoQuiescenceCheckerV2({ + workspaceOpencodeUrl: 'http://workspace:9200', + workspaceOpencodeToken: 'secret', + logger, + createClient: () => ({session: api}), + now: () => new Date('2026-10-28T00:00:00.000Z'), + }) + return {checker, list, logger} +} + +const context = (signal: AbortSignal = new AbortController().signal) => ({repo: 'o/r', signal}) + +afterEach(() => { + vi.useRealTimers() +}) + +describe('createRepoQuiescenceCheckerV2', () => { + it('is clear when nothing is active, and asks the server for nothing else', async () => { + // #given + const {checker, list} = makeChecker() + + // #when + const result = await checker(context()) + + // #then + expect(result).toEqual({ + kind: 'clear', + source: 'opencode-session-status', + directory: DIRECTORY, + checkedAt: '2026-10-28T00:00:00.000Z', + }) + expect(list).not.toHaveBeenCalled() + }) + + it('is busy when an active session lives in the repo directory, a background child included', async () => { + // #given — the parent finished; its child is still running (probe P2, P9) + const {checker, list} = makeChecker({ + active: {ses_child: {type: 'running'}}, + sessions: [ + {id: 'ses_parent', location: {directory: DIRECTORY}}, + {id: 'ses_child', parentID: 'ses_parent', location: {directory: DIRECTORY}}, + ], + }) + + // #when + const result = await checker(context()) + + // #then + expect(result).toMatchObject({kind: 'busy', directory: DIRECTORY, sessionIds: ['ses_child']}) + expect(list).toHaveBeenCalledWith(expect.objectContaining({directory: DIRECTORY}), expect.anything()) + }) + + it('is clear when the active session belongs to another repo', async () => { + // #given + const {checker} = makeChecker({ + active: {ses_other: {type: 'running'}}, + sessions: [{id: 'ses_other', location: {directory: '/workspace/repos/o/elsewhere'}}], + }) + + // #when / #then + expect(await checker(context())).toMatchObject({kind: 'clear'}) + }) + + it('is unknown for a repo slug that names no workspace directory', async () => { + // #given + const {checker} = makeChecker() + + // #when + const result = await checker({repo: '../etc', signal: new AbortController().signal}) + + // #then + expect(result).toEqual({kind: 'unknown', source: 'unavailable', directory: null, reason: 'invalid-repo'}) + }) + + it('is unknown, never clear, when the active list cannot be read', async () => { + // #given + const {checker} = makeChecker({ + active_: async () => { + throw new Error('session.active failed: http 503') + }, + }) + + // #when + const result = await checker(context()) + + // #then + expect(result).toMatchObject({kind: 'unknown', source: 'opencode-session-status', reason: 'status-request-failed'}) + }) + + it('is unknown when the caller aborts', async () => { + // #given + const controller = new AbortController() + const {checker} = makeChecker({active_: async () => new Promise(() => undefined)}) + + // #when + const pending = checker(context(controller.signal)) + controller.abort() + + // #then + await expect(pending).resolves.toMatchObject({kind: 'unknown', reason: 'status-request-aborted'}) + }) + + it('is unknown once its own bound passes, even if the request ignores the signal', async () => { + // #given + vi.useFakeTimers() + const {checker} = makeChecker({active_: async () => new Promise(() => undefined)}) + + // #when + const pending = checker(context()) + await vi.advanceTimersByTimeAsync(REPO_QUIESCENCE_TIMEOUT_MS + 1) + + // #then + await expect(pending).resolves.toMatchObject({kind: 'unknown', reason: 'status-request-timeout'}) + }) + + it('lists the session ids it reports busy with a bound on how many it logs', async () => { + // #given + const ids = Array.from({length: 40}, (_, index) => `ses_${index}`) + const {checker, logger} = makeChecker({ + active: Object.fromEntries(ids.map(id => [id, {type: 'running'}])), + sessions: ids.map(id => ({id, location: {directory: DIRECTORY}})), + }) + + // #when + const result = await checker(context()) + + // #then + expect(result).toMatchObject({kind: 'busy'}) + expect(logger.info).toHaveBeenCalledWith( + expect.objectContaining({busyCount: 40, sessionIds: ids.slice(0, 32)}), + 'repo-quiescence: workspace busy', + ) + }) +}) diff --git a/packages/gateway/src/execute/repo-quiescence-v2.ts b/packages/gateway/src/execute/repo-quiescence-v2.ts new file mode 100644 index 0000000000..786cc13525 --- /dev/null +++ b/packages/gateway/src/execute/repo-quiescence-v2.ts @@ -0,0 +1,109 @@ +/** + * Repo workspace quiescence for an OpenCode V2 workspace: the V2 sibling of `repo-quiescence.ts`. + * + * V1 asked `session.status` for one directory. V2 has no per-directory status, so the busy set is the server's global + * active list joined with `session.list({directory})` (`listBusyV2SessionIdsInDirectory`, probes P2 and P9). The + * contract is the same: only `clear` permits replacing or deleting an expired lease, `busy` and `unknown` both block, + * and every failure (transport, non-2xx, bad shape, timeout, bad repo) resolves to `unknown`. No retries, no cached + * clearance. + * + * The directory match is an exact string against the directory the session was created with, so the join uses the same + * canonical workspace directory the run creates its sessions under (`canonicalWorkspaceDirectory`). The gateway cannot + * `realpath` it: the checkout lives in the workspace's filesystem, not this one. That is why the canonicalizer handed to + * the join is the identity. + */ + +import type {V2SessionApi} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {RepoQuiescence} from '../runtime-effect.js' +import type {RepoQuiescenceChecker} from './repo-quiescence.js' + +import {listBusyV2SessionIdsInDirectory} from '@fro-bot/runtime' +import {attachOpencodeV2} from './opencode-attach-v2.js' +import {REPO_QUIESCENCE_TIMEOUT_MS} from './recovery-budget.js' +import {resolveRepoDirectory} from './repo-quiescence.js' + +const SOURCE = 'opencode-session-status' +const MAX_LOGGED_SESSION_IDS = 32 + +/** The one client surface this check needs; the real V2 client satisfies it. */ +export interface ActiveSessionsClient { + readonly session: V2SessionApi +} + +export interface RepoQuiescenceCheckerV2Options { + readonly workspaceOpencodeUrl: string + readonly workspaceOpencodeToken: string + readonly logger: GatewayLogger + /** Test seam; defaults to the bearer-authenticated workspace attach client. */ + readonly createClient?: (url: string, token: string) => ActiveSessionsClient + readonly now?: () => Date +} + +export function createRepoQuiescenceCheckerV2(options: RepoQuiescenceCheckerV2Options): RepoQuiescenceChecker { + const {logger, now = () => new Date()} = options + const client: ActiveSessionsClient = + options.createClient?.(options.workspaceOpencodeUrl, options.workspaceOpencodeToken) ?? + attachOpencodeV2(options.workspaceOpencodeUrl, options.workspaceOpencodeToken) + + return async ({repo, signal}) => { + const directory = resolveRepoDirectory(repo) + if (directory === null) { + logger.warn({repo}, 'repo-quiescence: invalid repo; treating as unknown') + return {kind: 'unknown', source: 'unavailable', directory: null, reason: 'invalid-repo'} + } + + const unknown = (reason: string, detail: Record = {}): RepoQuiescence => { + logger.warn({repo, directory, reason, ...detail}, 'repo-quiescence: workspace status unknown') + return {kind: 'unknown', source: SOURCE, directory, reason} + } + + const controller = new AbortController() + let timedOut = false + const onAbort = (): void => controller.abort() + if (signal.aborted) controller.abort() + else signal.addEventListener('abort', onAbort, {once: true}) + const timer = setTimeout(() => { + timedOut = true + controller.abort() + }, REPO_QUIESCENCE_TIMEOUT_MS) + + // Raced against the abort so a client that ignores the signal still cannot stall the caller. + const aborted = new Promise<'aborted'>(resolve => { + if (controller.signal.aborted) resolve('aborted') + else controller.signal.addEventListener('abort', () => resolve('aborted'), {once: true}) + }) + + try { + const outcome = await Promise.race([ + listBusyV2SessionIdsInDirectory( + client.session, + directory, + {realpath: async path => path}, + {signal: controller.signal}, + ), + aborted, + ]) + + if (outcome === 'aborted') return unknown(timedOut ? 'status-request-timeout' : 'status-request-aborted') + if (!outcome.success) { + return unknown(controller.signal.aborted ? 'status-request-aborted' : 'status-request-failed', { + errorName: outcome.error.name, + }) + } + + const busyIds = [...outcome.data] + if (busyIds.length > 0) { + logger.info( + {repo, directory, busyCount: busyIds.length, sessionIds: busyIds.slice(0, MAX_LOGGED_SESSION_IDS)}, + 'repo-quiescence: workspace busy', + ) + return {kind: 'busy', source: SOURCE, directory, checkedAt: now().toISOString(), sessionIds: busyIds} + } + return {kind: 'clear', source: SOURCE, directory, checkedAt: now().toISOString()} + } finally { + clearTimeout(timer) + signal.removeEventListener('abort', onAbort) + } + } +} diff --git a/packages/gateway/src/execute/repo-quiescence.ts b/packages/gateway/src/execute/repo-quiescence.ts index 530aa8227f..5dda22449f 100644 --- a/packages/gateway/src/execute/repo-quiescence.ts +++ b/packages/gateway/src/execute/repo-quiescence.ts @@ -70,7 +70,7 @@ type ParsedStatuses = * `null` for anything that is not a valid slug (`parseRepoSlug`) or not a canonical workspace name. `session.status` returns `{}` for any directory without * sessions, so `clear` is only meaningful because this is the directory the run's sessions are created under. */ -function resolveRepoDirectory(repo: string): string | null { +export function resolveRepoDirectory(repo: string): string | null { const parsed = parseRepoSlug(repo) if (parsed.success === false) return null // Validate the RAW names before the workspace helper lowercases them: Unicode case folding maps some non-ASCII diff --git a/packages/gateway/src/execute/root-stop-v2.test.ts b/packages/gateway/src/execute/root-stop-v2.test.ts new file mode 100644 index 0000000000..ff7832de37 --- /dev/null +++ b/packages/gateway/src/execute/root-stop-v2.test.ts @@ -0,0 +1,286 @@ +import type {LedgerReconcileAdapter, V2CallError, V2SessionOutcome} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {RootStopClientV2, StreamTerminal} from './root-stop-v2.js' + +import {err, ok} from '@fro-bot/runtime' +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {interruptSession, probeRootStopV2, startQuarantineRootWatchV2} from './root-stop-v2.js' + +const ROOT = 'ses_root' +const DIRECTORY = '/workspace/repos/o/r' + +function makeLogger(): GatewayLogger { + return {debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn()} +} + +type Live = readonly string[] | 'fail' + +interface Setup { + /** Active-list reading per call (the last entry repeats). */ + readonly live?: readonly Live[] + /** The persisted outcome `getSession` reports; `'fail'` makes the lookup fail. */ + readonly outcome?: V2SessionOutcome | null | 'fail' + readonly interrupt?: () => ReturnType +} + +function makeProbe(setup: Setup = {}) { + const readings = setup.live ?? [[]] + let call = 0 + const adapter: LedgerReconcileAdapter = { + children: vi.fn(async () => ok([])), + liveSessionIds: vi.fn(async () => { + const reading = readings[Math.min(call, readings.length - 1)] ?? [] + call += 1 + return reading === 'fail' ? err(new Error('active failed')) : ok(new Set(reading)) + }), + } + const getSession = vi.fn(async () => { + if (setup.outcome === 'fail') return err({kind: 'http', status: 500} satisfies V2CallError) + return ok({id: ROOT, parentId: null, directory: DIRECTORY, outcome: setup.outcome ?? null}) + }) + const interrupt = vi.fn(setup.interrupt ?? (async () => ok({interrupted: true}))) + const client: RootStopClientV2 = {getSession, interrupt} + return {client, adapter, getSession, interrupt} +} + +function probe(setup: Setup, extra: {terminal?: StreamTerminal | null; followUpPossible?: boolean} = {}) { + const made = makeProbe(setup) + const result = probeRootStopV2({ + client: made.client, + adapter: made.adapter, + rootSessionId: ROOT, + signal: new AbortController().signal, + streamTerminal: () => extra.terminal ?? null, + ...(extra.followUpPossible === undefined ? {} : {followUpPossible: extra.followUpPossible}), + }) + return {result, ...made} +} + +afterEach(() => { + vi.useRealTimers() +}) + +describe('probeRootStopV2', () => { + it.each<[string, StreamTerminal]>([ + ['an interrupt with reason user', 'user'], + ['a terminal success', 'succeeded'], + ['a terminal failure', 'failed'], + ])( + 'confirms the root on %s from the stream when the root is absent from the active list', + async (_label, terminal) => { + // #given / #when + const {result, getSession} = probe({}, {terminal}) + + // #then — the stream was evidence enough; nothing more was asked of the server + await expect(result).resolves.toBe('confirmed') + expect(getSession).not.toHaveBeenCalled() + }, + ) + + it('never accepts an interrupt with reason shutdown, whatever the persisted outcome says', async () => { + // #given — a shutdown interrupt releases nothing and leaves the claim held (probe P11) + const {result} = probe({outcome: 'interrupted'}, {terminal: 'shutdown'}) + + // #then + await expect(result).resolves.toBe('unconfirmed') + }) + + it('is busy while the root is in the active list, whatever else it shows', async () => { + // #given + const {result} = probe({live: [[ROOT]], outcome: 'succeeded'}, {terminal: 'user'}) + + // #then + await expect(result).resolves.toBe('busy') + }) + + it('does not read an interrupt reply of false as a stop', async () => { + // #given — the root is absent, nothing was seen on the stream, and no execution has ended: a root whose prompt is + // not admitted yet looks exactly like this (probe P1) + const {result} = probe({outcome: null}) + + // #then + await expect(result).resolves.toBe('unconfirmed') + }) + + it.each(['succeeded', 'failed', 'interrupted'])( + 'confirms from a persisted outcome of %s when the stream showed nothing', + async outcome => { + // #given — the stream was closed before the end; the server's own record of the last execution is evidence + const {result} = probe({outcome}) + + // #then + await expect(result).resolves.toBe('confirmed') + }, + ) + + it('is unconfirmed when the persisted outcome cannot be read', async () => { + // #given + const {result} = probe({outcome: 'fail'}) + + // #then + await expect(result).resolves.toBe('unconfirmed') + }) + + it('is unconfirmed when the active list cannot be read, before or after the evidence', async () => { + // #then + await expect(probe({live: ['fail']}, {terminal: 'user'}).result).resolves.toBe('unconfirmed') + await expect(probe({live: [[], 'fail']}, {terminal: 'user'}).result).resolves.toBe('unconfirmed') + }) + + it('is busy when a cold root starts between the first reading and the evidence', async () => { + // #given — absent first, listed on the second reading + const {result} = probe({live: [[], [ROOT]]}, {terminal: 'succeeded'}) + + // #then + await expect(result).resolves.toBe('busy') + }) + + it('never confirms while background work can still start a root turn', async () => { + // #given — a finished or cancelled child makes the server prepare a notice turn that is not on the stream yet + const {result, getSession} = probe({outcome: 'succeeded'}, {terminal: 'succeeded', followUpPossible: true}) + + // #then + await expect(result).resolves.toBe('unconfirmed') + expect(getSession).not.toHaveBeenCalled() + }) + + it('is still busy, not unconfirmed, when follow-up is possible and the root is live', async () => { + // #given + const {result} = probe({live: [[ROOT]]}, {followUpPossible: true}) + + // #then + await expect(result).resolves.toBe('busy') + }) +}) + +describe('interruptSession', () => { + it('reports nothing and never throws when the interrupt fails', async () => { + // #given + const logger = makeLogger() + const client = makeProbe({interrupt: async () => err({kind: 'network', message: 'down'})}).client + + // #when / #then + await expect(interruptSession(client, ROOT, new AbortController().signal, logger, 'root')).resolves.toBeUndefined() + expect(logger.warn).toHaveBeenCalledWith( + expect.objectContaining({sessionId: ROOT, role: 'root', error: 'network'}), + expect.stringContaining('interrupt'), + ) + }) + + it('treats an interrupt reply of false as a no-op worth a debug line, not a warning', async () => { + // #given + const logger = makeLogger() + const client = makeProbe({interrupt: async () => ok({interrupted: false})}).client + + // #when + await interruptSession(client, ROOT, new AbortController().signal, logger, 'owned') + + // #then + expect(logger.warn).not.toHaveBeenCalled() + expect(logger.debug).toHaveBeenCalledWith( + expect.objectContaining({sessionId: ROOT, interrupted: false}), + expect.stringContaining('interrupt'), + ) + }) + + it('swallows a thrown interrupt', async () => { + // #given + const logger = makeLogger() + const client = makeProbe({ + interrupt: async () => { + throw new Error('boom') + }, + }).client + + // #when / #then + await expect(interruptSession(client, ROOT, new AbortController().signal, logger, 'root')).resolves.toBeUndefined() + expect(logger.warn).toHaveBeenCalled() + }) +}) + +function startWatch(setup: Setup, extra: {windowMs?: number; followUpPossible?: boolean} = {}) { + vi.useFakeTimers() + const made = makeProbe(setup) + const logger = makeLogger() + const stop = startQuarantineRootWatchV2({ + client: made.client, + adapter: made.adapter, + rootSessionId: ROOT, + streamTerminal: () => null, + logger, + pollIntervalMs: 500, + ...(extra.windowMs === undefined ? {} : {windowMs: extra.windowMs}), + ...(extra.followUpPossible === undefined ? {} : {followUpPossible: extra.followUpPossible}), + }) + return {...made, logger, stop} +} + +describe('startQuarantineRootWatchV2', () => { + it('interrupts the root on every busy observation during the hold', async () => { + // #given — the root keeps showing up live + const watch = startWatch({live: [[ROOT]]}) + + // #when + await vi.advanceTimersByTimeAsync(2_100) + + // #then + expect(watch.interrupt.mock.calls.length).toBeGreaterThanOrEqual(3) + expect(watch.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + watch.stop() + }) + + it('ends at the first confirmation', async () => { + // #given — busy once, then stopped with a persisted outcome + const watch = startWatch({live: [[ROOT], []], outcome: 'interrupted'}) + + // #when + await vi.advanceTimersByTimeAsync(5_000) + + // #then + expect(watch.interrupt).toHaveBeenCalledTimes(1) + expect(watch.logger.info).toHaveBeenCalledWith(expect.anything(), expect.stringContaining('confirmed stopped')) + const probesAfterEnd = watch.adapter.liveSessionIds as ReturnType + const callsAtEnd = probesAfterEnd.mock.calls.length + await vi.advanceTimersByTimeAsync(5_000) + expect(probesAfterEnd.mock.calls.length).toBe(callsAtEnd) + }) + + it('ends when the hold window closes even if the root is never confirmed', async () => { + // #given + const watch = startWatch({outcome: null}, {windowMs: 3_000}) + + // #when + await vi.advanceTimersByTimeAsync(10_000) + + // #then + expect(watch.logger.warn).toHaveBeenCalledWith( + expect.objectContaining({rootSessionId: ROOT}), + expect.stringContaining('hold ended'), + ) + }) + + it('keeps aborting for the whole window while follow-up work is open, since nothing can confirm the root', async () => { + // #given + const watch = startWatch({live: [[ROOT]], outcome: 'succeeded'}, {followUpPossible: true, windowMs: 3_000}) + + // #when + await vi.advanceTimersByTimeAsync(2_900) + + // #then + expect(watch.interrupt.mock.calls.length).toBeGreaterThan(1) + watch.stop() + }) + + it('does not stall on an interrupt that never answers', async () => { + // #given — the first interrupt hangs; the probe keeps seeing the root busy + const watch = startWatch({live: [[ROOT]], interrupt: async () => new Promise(() => undefined)}) + + // #when — past the per-request cap and a few polls + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(watch.interrupt.mock.calls.length).toBeGreaterThan(1) + watch.stop() + }) +}) diff --git a/packages/gateway/src/execute/root-stop-v2.ts b/packages/gateway/src/execute/root-stop-v2.ts new file mode 100644 index 0000000000..c34379041f --- /dev/null +++ b/packages/gateway/src/execute/root-stop-v2.ts @@ -0,0 +1,224 @@ +/** + * Confirming that an interrupted root session has really stopped, on OpenCode V2: the sibling of `root-stop.ts`. + * + * `POST /api/session/:id/interrupt` is a request, and its reply cannot be read as a stop. `{interrupted: false}` is what + * an idle session returns AND what a prompt that is not admitted yet returns (admission takes about 270 ms on a cold + * location, probe P1), and an interrupt sent in that window leaves no trace: the turn then runs to completion. Absence + * from `GET /api/session/active` proves nothing for the same reason, since a root that has not started is absent too. + * + * So a stop is confirmed only by positive evidence that an execution of the root ended, and the root absent from the + * active list on both sides of reading it: + * - on the stream: `session.execution.interrupted` with reason `user`, `session.execution.succeeded`, or + * `session.execution.failed`. An interrupt with reason `shutdown` is never evidence: it leaves the execution claim + * held and resumable (probe P11), which is the opposite of stopped; + * - or, when the stream cannot say (it was closed before the end), the server's own persisted `outcome` of the session. + * A `shutdown` interrupt never writes it (`projectIdle` returns early), so a persisted `interrupted` is a real stop. + * + * That evidence only rules out executions that already happened. While background work is open (`followUpPossible`), + * a finished or cancelled child makes the server start a root turn by itself, and a persisted outcome of the turn + * before says nothing about it. With `followUpPossible` nothing confirms the root: the probe is only ever `busy` or + * `unconfirmed`, the barrier quarantines, and the watch runs for the whole hold, interrupting the root on every busy + * observation. + * + * The liveness reading is taken again after the evidence is read, so a cold root that starts in between reads as busy. + */ + +import type {LedgerReconcileAdapter, RemoteOpenCodeV2Client} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' + +import {toErrorMessage} from '@fro-bot/runtime' +import { + QUARANTINE_HOLD_WINDOW_MS, + ROOT_QUIESCENCE_POLL_INTERVAL_MS, + ROOT_WATCH_REQUEST_TIMEOUT_MS, +} from './root-stop.js' + +/** The two calls this module makes; the real V2 client satisfies it. */ +export type RootStopClientV2 = Pick + +/** How the root's latest execution ended on the stream, as the event loop recorded it. */ +export type StreamTerminal = 'failed' | 'inactivity' | 'shutdown' | 'succeeded' | 'superseded' | 'user' + +/** + * Interrupt one session. Best-effort: a failed request is evidence for the confirmation step, not a reason to abort the + * settle attempt. Never throws. + */ +export async function interruptSession( + client: RootStopClientV2, + sessionId: string, + signal: AbortSignal, + logger: GatewayLogger, + role: 'owned' | 'root', +): Promise { + try { + const result = await client.interrupt({sessionId, signal}) + if (!result.success) { + logger.warn( + {sessionId, role, error: result.error.kind}, + 'settle-owned-sessions: session interrupt returned an error', + ) + return + } + if (!result.data.interrupted) { + // Not a stop and not a failure: nothing active was interrupted. Confirmation never reads it as either. + logger.debug({sessionId, role, interrupted: false}, 'settle-owned-sessions: session interrupt was a no-op') + } + } catch (error) { + logger.warn({sessionId, role, detail: toErrorMessage(error)}, 'settle-owned-sessions: session interrupt threw') + } +} + +export type RootProbe = 'busy' | 'confirmed' | 'unconfirmed' + +export interface ProbeRootStopV2Options { + /** Background work is open, so a root turn the stream has not shown can still start. Makes confirmation impossible. */ + readonly followUpPossible?: boolean + readonly client: RootStopClientV2 + /** Global liveness: the V2 reconcile adapter's `liveSessionIds`. */ + readonly adapter: LedgerReconcileAdapter + readonly rootSessionId: string + readonly signal: AbortSignal + /** How the root's latest execution ended on the stream, or `null` when it has not (or the stream is gone). */ + readonly streamTerminal: () => StreamTerminal | null +} + +/** + * One observation of the root. Live is `busy`: the caller interrupts again. Not live is only `confirmed` with positive + * evidence that an execution ended (see the module doc); without it it is `unconfirmed`. A failed lookup is + * `unconfirmed`. + */ +export async function probeRootStopV2(options: ProbeRootStopV2Options): Promise { + const {client, adapter, rootSessionId, signal, streamTerminal, followUpPossible = false} = options + const live = await adapter.liveSessionIds(signal) + if (!live.success) return 'unconfirmed' + if (live.data.has(rootSessionId)) return 'busy' + if (followUpPossible) return 'unconfirmed' + + const terminal = streamTerminal() + if (terminal === 'shutdown') return 'unconfirmed' + let evidence = terminal === 'user' || terminal === 'succeeded' || terminal === 'failed' + if (!evidence) { + try { + const session = await client.getSession({sessionId: rootSessionId, signal}) + if (!session.success) return 'unconfirmed' + evidence = session.data.outcome !== null + } catch { + return 'unconfirmed' + } + } + if (!evidence) return 'unconfirmed' + + // A cold root can start between the first reading and the evidence. Only a root that is still absent now is stopped. + const after = await adapter.liveSessionIds(signal) + if (!after.success) return 'unconfirmed' + return after.data.has(rootSessionId) ? 'busy' : 'confirmed' +} + +export interface QuarantineRootWatchV2Options extends Omit { + readonly logger: GatewayLogger + readonly runId?: string + readonly windowMs?: number + readonly pollIntervalMs?: number +} + +/** + * Keeps probing a root the barrier could not confirm, for the length of the quarantine hold: every busy observation + * sends another interrupt, so a prompt that started late is stopped instead of running through the hold. Ends at the + * first confirmation or when the window closes (with `followUpPossible` nothing confirms, so it always runs to the end + * of the window). A window timer ends it even if a request hangs, every request is bounded, and the timers are unref'd. + * + * @returns `stop`, which ends the watch early. Safe to call more than once. + */ +export function startQuarantineRootWatchV2(options: QuarantineRootWatchV2Options): () => void { + const { + windowMs = QUARANTINE_HOLD_WINDOW_MS, + pollIntervalMs = ROOT_QUIESCENCE_POLL_INTERVAL_MS, + rootSessionId, + logger: baseLogger, + runId, + } = options + const logger: GatewayLogger = + runId === undefined + ? baseLogger + : { + debug: (context, message) => baseLogger.debug({runId, ...context}, message), + info: (context, message) => baseLogger.info({runId, ...context}, message), + warn: (context, message) => baseLogger.warn({runId, ...context}, message), + error: (context, message) => baseLogger.error({runId, ...context}, message), + } + const controller = new AbortController() + let timer: ReturnType | undefined + let windowTimer: ReturnType | undefined + let ended = false + let interrupts = 0 + + function end(): void { + if (ended) return + ended = true + if (timer !== undefined) clearTimeout(timer) + if (windowTimer !== undefined) clearTimeout(windowTimer) + timer = undefined + controller.abort() + } + + windowTimer = setTimeout(() => { + if (ended) return + logger.warn({rootSessionId, interrupts}, 'root-watch: quarantine hold ended without confirming the root stopped') + end() + }, windowMs) + windowTimer.unref() + + /** One request bounded by its own cap; a hung request resolves `fallback` instead of stalling the watch. */ + async function bounded(work: (signal: AbortSignal) => Promise, fallback: T): Promise { + const requestController = new AbortController() + const forward = (): void => requestController.abort() + controller.signal.addEventListener('abort', forward, {once: true}) + let capTimer: ReturnType | undefined + const capped = new Promise(resolve => { + capTimer = setTimeout(() => { + requestController.abort() + resolve(fallback) + }, ROOT_WATCH_REQUEST_TIMEOUT_MS) + capTimer.unref() + }) + try { + return await Promise.race([work(requestController.signal).catch(() => fallback), capped]) + } finally { + if (capTimer !== undefined) clearTimeout(capTimer) + controller.signal.removeEventListener('abort', forward) + } + } + + async function tick(): Promise { + timer = undefined + if (ended) return + const probe = await bounded(async signal => probeRootStopV2({...options, signal}), 'unconfirmed') + if (ended) return + if (probe === 'confirmed') { + logger.info({rootSessionId, interrupts}, 'root-watch: the root is confirmed stopped; ending the watch') + end() + return + } + if (probe === 'busy') { + interrupts += 1 + logger.warn( + {rootSessionId, interrupts}, + 'root-watch: the root is running during the quarantine hold — interrupting it again', + ) + await bounded(async signal => interruptSession(options.client, rootSessionId, signal, logger, 'root'), undefined) + if (ended) return + } + timer = setTimeout(() => { + // eslint-disable-next-line no-void + void tick() + }, pollIntervalMs) + timer.unref() + } + + timer = setTimeout(() => { + // eslint-disable-next-line no-void + void tick() + }, pollIntervalMs) + timer.unref() + return end +} diff --git a/packages/gateway/src/execute/run-core-v2.drain.test.ts b/packages/gateway/src/execute/run-core-v2.drain.test.ts new file mode 100644 index 0000000000..21c2c8de59 --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.drain.test.ts @@ -0,0 +1,482 @@ +/** + * A run that dispatched background work does not complete on the root's first success: the server runs the parent again + * to take each child's notice in (probe P2). It completes only when every child is terminal and the root is idle after + * the last turn a notice triggered. Drives the real loop and the real drain gate against the captured frames. + */ + +import type {OwnershipLedger} from '@fro-bot/runtime' + +import {createOwnershipLedger} from '@fro-bot/runtime' +import {SUBAGENT_FOREGROUND_SUCCESS_FRAME} from '@fro-bot/runtime/event-v2-fixtures' +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {LIVE_RECONCILE_TIMEOUT_MS} from './live-reconcile.js' +import { + CHILD, + failure, + frames, + onSession, + OTHER_CHILD, + ROOT, + startRun, + STRANGER, + succeeded, +} from './run-core-v2.fixture.js' +import {getWaitReason} from './wait-reason-registry.js' + +function states(ledger: OwnershipLedger): Record { + return Object.fromEntries(ledger.snapshot().map(entry => [entry.sessionId, entry.state])) +} + +/** Root dispatches `child` in the background and finishes its first turn. */ +async function dispatchAndIdle(run: ReturnType, child = CHILD): Promise { + run.emit( + frames.started(), + frames.toolStarted('subagent', 'call_dispatch'), + frames.toolCalled('call_dispatch', {description: 'bg child', prompt: 'work', background: true}), + frames.dispatch(child), + frames.delta('Dispatched.'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) +} + +/** The server enqueues the child's notice, runs the parent to take it in, and the parent answers. */ +function noticeTurn(run: ReturnType, child = CHILD, state = 'completed', inbox = 'msg_notice'): void { + run.emit( + frames.notice(child, state, inbox), + frames.started(), + frames.delivered(inbox), + frames.delta('The child finished.', ROOT, 0, 'msg_followup'), + frames.succeeded(), + ) +} + +afterEach(() => { + vi.useRealTimers() +}) + +describe('runOpenCodeCoreV2: adopting background work', () => { + it('adopts the child of a successful background dispatch and registers it with the coordinator', async () => { + // #given + const ledger = createOwnershipLedger() + const onOwnershipChange = vi.fn() + const run = startRun({ownershipLedger: ledger, onOwnershipChange, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + + // #when + await dispatchAndIdle(run) + + // #then + expect(states(ledger)).toEqual({[CHILD]: 'outstanding'}) + expect(run.coordinator.addOwnedSession).toHaveBeenCalledWith(CHILD) + expect(onOwnershipChange).toHaveBeenCalledWith({rootSessionId: ROOT, ownedSessionIds: [CHILD]}) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('does not adopt a foreground subagent call, whose result text claims a completion', async () => { + // #given — the captured foreground result has completed metadata and a text a child could forge + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.toolStarted('subagent', 'call_16_0'), + onSession(SUBAGENT_FOREGROUND_SUCCESS_FRAME, ROOT), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then — nothing was adopted, so the root's success completes the run + expect(ledger.snapshot()).toEqual([]) + expect(succeeded(run)).toBe(true) + }) + + it('does not adopt a failed subagent call that kept its running progress metadata', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.toolStarted('subagent', 'call_x'), + { + type: 'session.tool.failed', + data: { + sessionID: ROOT, + assistantMessageID: 'msg_tool', + id: 'call_x', + error: {type: 'tool.execution', message: 'Failed to prompt subagent'}, + metadata: {sessionID: CHILD, status: 'running'}, + executed: false, + }, + }, + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(ledger.snapshot()).toEqual([]) + expect(succeeded(run)).toBe(true) + }) +}) + +describe('runOpenCodeCoreV2: draining', () => { + it("does not treat the root's first success as terminal while a child is outstanding", async () => { + // #given + const ledger = createOwnershipLedger() + const onBusy = vi.fn() + const run = startRun({ownershipLedger: ledger, onBusy, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + + // #when + await dispatchAndIdle(run) + await vi.advanceTimersByTimeAsync(5_000) + + // #then — still running, and not busy: the run is waiting, not working + expect(run.outcome()).toBeUndefined() + expect(onBusy).toHaveBeenLastCalledWith(false) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('completes after the turn the notice triggered, with one reply carrying the follow-up text', async () => { + // #given — the child ends after the root went idle; nothing is active any more + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + expect(run.outcome()).toBeUndefined() + + // #when + noticeTurn(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then — one reply, the follow-up after the dispatch text, and the child settled by its notice + expect(succeeded(run)).toBe(true) + expect(run.sink.text()).toContain('Dispatched.') + expect(run.sink.text()).toContain('The child finished.') + expect(run.sink.text().indexOf('The child finished.')).toBeGreaterThan(run.sink.text().indexOf('Dispatched.')) + expect(states(ledger)).toEqual({[CHILD]: 'settled'}) + expect(run.interrupt).not.toHaveBeenCalled() + }) + + it("completes on a cancelled child's notice as it does on a completed one", async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + noticeTurn(run, CHILD, 'cancelled', 'msg_cancel') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(succeeded(run)).toBe(true) + expect(states(ledger)).toEqual({[CHILD]: 'settled'}) + }) + + it('does not complete on a notice alone: the parent must run the turn that takes it in', async () => { + // #given — the notice is queued, the parent has not run again + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.notice(CHILD)) + await vi.advanceTimersByTimeAsync(5_000) + + // #then + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('waits for every child: one notice of two does not complete the run', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [OTHER_CHILD], children: [CHILD, OTHER_CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run, CHILD) + run.emit(frames.toolStarted('subagent', 'call_dispatch_2'), frames.dispatch(OTHER_CHILD, ROOT, 'call_dispatch_2')) + await vi.advanceTimersByTimeAsync(10) + + // #when — only the first child ends + noticeTurn(run, CHILD, 'completed', 'msg_a') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(run.outcome()).toBeUndefined() + expect(states(ledger)).toEqual({[CHILD]: 'settled', [OTHER_CHILD]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('ignores a notice about a child it never adopted', async () => { + // #given — this run's own child is still running + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when — a notice for somebody else's child, then the turn it triggers + noticeTurn(run, STRANGER, 'completed', 'msg_x') + await vi.advanceTimersByTimeAsync(2_000) + + // #then — this run's own child is still outstanding + expect(run.outcome()).toBeUndefined() + expect(states(ledger)).toEqual({[CHILD]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('ignores a notice delivered to a session this run does not own', async () => { + // #given — the child is still running + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.notice(CHILD, 'completed', 'msg_y', STRANGER)) + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(states(ledger)).toEqual({[CHILD]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('settles a child whose notice arrived before its dispatch result', async () => { + // #given — the notice reaches the stream first + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.started(), + frames.toolStarted('subagent', 'call_dispatch'), + frames.notice(CHILD), + frames.dispatch(CHILD), + frames.delivered('msg_notice'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(states(ledger)).toEqual({[CHILD]: 'settled'}) + }) + + it('marks an owned child unknown when its execution fails, and keeps the run going', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.failed(CHILD)) + await vi.advanceTimersByTimeAsync(10) + + // #then — not settled: an error is evidence something went wrong, not proof the child stopped writing + expect(states(ledger)).toEqual({[CHILD]: 'unknown'}) + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('lets a later notice settle a child that was marked unknown, and then completes', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + run.emit(frames.failed(CHILD)) + await vi.advanceTimersByTimeAsync(10) + + // #when + noticeTurn(run, CHILD, 'error', 'msg_err') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(succeeded(run)).toBe(true) + expect(states(ledger)).toEqual({[CHILD]: 'settled'}) + }) + + it('marks an owned child unknown, not settled, when something else interrupts it', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.interrupted(CHILD, 'user')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(states(ledger)).toEqual({[CHILD]: 'unknown'}) + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it("streams an owned child's text and ignores a stranger's", async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.delta('child says hi', CHILD, 0, 'msg_c'), frames.delta('stranger says hi', STRANGER, 0, 'msg_s')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).toContain('child says hi') + expect(run.sink.text()).not.toContain('stranger says hi') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('fails with drain-timeout at the deadline and interrupts the unsettled child', async () => { + // #given — the child never ends + const ledger = createOwnershipLedger() + const controller = new AbortController() + const run = startRun({ownershipLedger: ledger, controller, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(20_000) + + // #then + const error = failure(run) + expect(error.kind).toBe('drain-timeout') + expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: CHILD})) + expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('does not trip the inactivity timer while it waits on a quiet child', async () => { + // #given + const ledger = createOwnershipLedger() + const controller = new AbortController() + const run = startRun({ + ownershipLedger: ledger, + controller, + inactivityTimeoutMs: 5_000, + active: [CHILD], + children: [CHILD], + }) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when — far past the inactivity window + await vi.advanceTimersByTimeAsync(60_000) + + // #then — still draining: only the run's own deadline bounds a drain + expect(run.outcome()).toBeUndefined() + controller.abort() + await vi.advanceTimersByTimeAsync(20_000) + expect(failure(run).kind).toBe('drain-timeout') + }) + + it('reports why it has not finished while draining, and clears it on exit', async () => { + // #given + const ledger = createOwnershipLedger() + const controller = new AbortController() + const run = startRun({ + ownershipLedger: ledger, + controller, + runId: 'run-drain', + active: [CHILD], + children: [CHILD], + }) + await vi.advanceTimersByTimeAsync(10) + + // #when + await dispatchAndIdle(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then — the child is not settled yet + expect(getWaitReason('run-drain')).toBe('ledger-not-drained') + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(getWaitReason('run-drain')).toBeUndefined() + }) + + it('reports a missing notice as the reason once the ledger is drained without one', async () => { + // #given — reconciliation settled the child, but its notice never came + const ledger = createOwnershipLedger() + const controller = new AbortController() + const run = startRun({ownershipLedger: ledger, controller, runId: 'run-nonotice', active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + + // #when + await dispatchAndIdle(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then — the idle pass settles the child by reconciliation; the gate still wants the notice + expect(getWaitReason('run-nonotice')).toBe('notice-not-observed') + controller.abort() + await vi.advanceTimersByTimeAsync(20_000) + }) +}) + +describe('runOpenCodeCoreV2: bounded reconcile passes', () => { + it('bounds a reconcile pass that never answers: the child becomes unknown and the loop keeps reading', async () => { + // #given — listing children hangs + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + vi.mocked(run.client.session.list).mockImplementation(async () => new Promise(() => undefined)) + await dispatchAndIdle(run) + + // #when — the bound passes + await vi.advanceTimersByTimeAsync(LIVE_RECONCILE_TIMEOUT_MS + 1_000) + + // #then — unknown (it blocks the drain, as an outstanding entry would), and the loop still handles events + expect(states(ledger)).toEqual({[CHILD]: 'unknown'}) + run.emit(frames.delta('still reading')) + await vi.advanceTimersByTimeAsync(10) + expect(run.sink.text()).toContain('still reading') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('lets a late reconcile answer settle nothing after the run left the loop', async () => { + // #given — the pass is in flight when the run ends + const ledger = createOwnershipLedger() + const controller = new AbortController() + const run = startRun({ownershipLedger: ledger, controller, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + let release: (() => void) | undefined + vi.mocked(run.client.session.list).mockImplementation( + async () => + new Promise(resolve => { + release = () => resolve({data: [{id: CHILD, parentID: ROOT}]}) + }), + ) + await dispatchAndIdle(run) + + // #when — the run is cancelled, then the late answer would have settled the child + controller.abort() + await vi.advanceTimersByTimeAsync(20_000) + release?.() + await vi.advanceTimersByTimeAsync(10) + + // #then — teardown owns the ledger from the moment the run ended + expect(states(ledger)[CHILD]).not.toBe('settled') + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.e2e.test.ts b/packages/gateway/src/execute/run-core-v2.e2e.test.ts new file mode 100644 index 0000000000..5b2497102e --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.e2e.test.ts @@ -0,0 +1,241 @@ +/** + * End-to-end: the V2 run loop against the real stock OpenCode v2.2.0 binary and a scripted provider. Skipped unless + * `FRO_BOT_OPENCODE_V2_BIN` names the executable. + * + * The binary must be the pinned stock release, verified against `packages/runtime/src/shared/opencode-v2-pin.json` + * (`assets["opencode-darwin-arm64.zip"]` for the zip it came from) before use: + * + * FRO_BOT_OPENCODE_V2_BIN=/path/to/opencode bun run test packages/gateway/src/execute/run-core-v2.e2e + * + * One prompt runs through to completion with a Code Mode `execute` call whose inner call raises an approval; the test + * answers it through the same reply route the gateway uses (`permission-reply-v2.ts`), so a wrong route, a wrong key or + * a stream that never connects fails here and not in a fixture. + */ + +import type {AddressInfo} from 'node:net' +import type {OpenCodeV2ServerHandle} from '@fro-bot/runtime' +import type {PermissionCoordinator, PermissionRequest} from '../approvals/coordinator.js' + +import {Buffer} from 'node:buffer' +import {execFileSync} from 'node:child_process' +import {existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync} from 'node:fs' +import http from 'node:http' +import os from 'node:os' +import path from 'node:path' +import process from 'node:process' +import {createRemoteOpenCodeV2Client, startOpenCodeV2Server} from '@fro-bot/runtime' +import {afterAll, describe, expect, it, vi} from 'vitest' + +import {createPostReplyFactoryV2} from './permission-reply-v2.js' +import {makeCoordinator, makeLogger, makeSink} from './run-core-v2.fixture.js' +import {runOpenCodeCoreV2} from './run-core-v2.js' + +const BINARY = process.env.FRO_BOT_OPENCODE_V2_BIN +const hasBinary = BINARY !== undefined && BINARY !== '' && existsSync(BINARY) + +const FINAL_TEXT = 'worktree removed, all done' +const EXECUTE_CODE = + "const made = await tools.opencode.worktree_create({name: 'e2e-wt'}); " + + "const dir = typeof made === 'string' ? JSON.parse(made).directory : made.directory; " + + 'return await tools.opencode.worktree_remove({directory: dir})' + +interface ScriptedProvider { + readonly baseURL: string + readonly requests: () => number + readonly stop: () => Promise +} + +function sse(delta: Record, finish: string | null = null): string { + return `data: ${JSON.stringify({ + id: 'c', + object: 'chat.completion.chunk', + created: 1, + model: 'fixture-model', + choices: [{index: 0, delta, finish_reason: finish}], + ...(finish === null ? {} : {usage: {prompt_tokens: 10, completion_tokens: 5, total_tokens: 15}}), + })}\n\n` +} + +/** First chat request with tools: one `execute` call. Every later one: the final text. */ +async function startScriptedProvider(): Promise { + let requests = 0 + let toolTurnSent = false + const server = http.createServer((req, res) => { + const chunks: Buffer[] = [] + req.on('data', (chunk: Buffer) => chunks.push(chunk)) + req.on('end', () => { + if (req.method === 'GET') { + res.writeHead(200, {'content-type': 'application/json'}) + res.end(JSON.stringify({object: 'list', data: [{id: 'fixture-model', object: 'model'}]})) + return + } + requests += 1 + const body = JSON.parse(Buffer.concat(chunks).toString('utf8')) as {tools?: unknown[]} + const hasTools = (body.tools?.length ?? 0) > 0 + res.writeHead(200, {'content-type': 'text/event-stream', 'cache-control': 'no-cache'}) + res.write(sse({role: 'assistant', content: ''})) + if (hasTools && !toolTurnSent) { + toolTurnSent = true + res.write( + sse({ + tool_calls: [ + { + index: 0, + id: 'call_e2e_0', + type: 'function', + function: {name: 'execute', arguments: JSON.stringify({code: EXECUTE_CODE})}, + }, + ], + }), + ) + res.write(sse({}, 'tool_calls')) + } else { + res.write(sse({content: FINAL_TEXT})) + res.write(sse({}, 'stop')) + } + res.write('data: [DONE]\n\n') + res.end() + }) + }) + await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)) + const {port} = server.address() as AddressInfo + return { + baseURL: `http://127.0.0.1:${port}/v1`, + requests: () => requests, + stop: async () => { + server.closeAllConnections() + await new Promise(resolve => server.close(() => resolve())) + }, + } +} + +function createRepo(root: string): string { + const repo = path.join(root, 'repo') + mkdirSync(repo, {recursive: true}) + const env = { + ...process.env, + GIT_AUTHOR_NAME: 't', + GIT_AUTHOR_EMAIL: 't@x', + GIT_COMMITTER_NAME: 't', + GIT_COMMITTER_EMAIL: 't@x', + } + writeFileSync(path.join(repo, 'a.txt'), 'hello\n') + for (const args of [ + ['init', '-q', '-b', 'main'], + ['add', '.'], + ['commit', '-qm', 'init'], + ]) { + execFileSync('git', args, {cwd: repo, env}) + } + return repo +} + +function createEnv(root: string): NodeJS.ProcessEnv { + const home = path.join(root, 'home') + const dirs = ['config', 'data', 'cache', 'state', 'tmp'].map(name => { + const dir = path.join(home, name) + mkdirSync(dir, {recursive: true}) + return dir + }) + const [config, data, cache, state, tmp] = dirs + return { + PATH: process.env.PATH, + HOME: home, + XDG_CONFIG_HOME: config, + XDG_DATA_HOME: data, + XDG_CACHE_HOME: cache, + XDG_STATE_HOME: state, + TMPDIR: tmp, + OPENCODE_DISABLE_MODELS_FETCH: '1', + } +} + +const cleanups: (() => Promise | void)[] = [] + +afterAll(async () => { + for (const cleanup of cleanups.reverse()) await cleanup() +}) + +describe.skipIf(!hasBinary)('runOpenCodeCoreV2 against the real OpenCode v2.2.0 server', () => { + it('runs a prompt to completion through a Code Mode call and an approval answered by request id', async () => { + // #given — the stock server at a git repo, a provider that calls `execute` once, edits gated behind an approval + const root = mkdtempSync(path.join(os.tmpdir(), 'run-core-v2-e2e-')) + cleanups.push(() => rmSync(root, {recursive: true, force: true})) + const repo = createRepo(root) + const provider = await startScriptedProvider() + cleanups.push(provider.stop) + const started = await startOpenCodeV2Server( + { + binaryPath: BINARY as string, + directory: repo, + expectedPluginIds: [], + env: createEnv(root), + timeouts: {agentReadyTimeoutMs: 60_000, pluginGateTimeoutMs: 1500, exitTimeoutMs: 10_000}, + config: { + $schema: 'https://opencode.ai/config.json', + autoupdate: false, + share: 'disabled', + provider: { + fake: { + npm: '@ai-sdk/openai-compatible', + name: 'Fake', + options: {baseURL: provider.baseURL, apiKey: 'fake-e2e-key-not-a-credential'}, + models: {'fixture-model': {name: 'Fixture', tool_call: true, limit: {context: 100_000, output: 8000}}}, + }, + }, + model: 'fake/fixture-model', + permissions: [{action: 'edit', resource: '*', effect: 'ask'}], + }, + }, + makeLogger() as never, + ) + expect(started.success).toBe(true) + if (!started.success) return + const server: OpenCodeV2ServerHandle = started.data + cleanups.push(async () => { + await server.shutdown() + }) + + const client = createRemoteOpenCodeV2Client({ + baseUrl: server.url, + headers: {authorization: server.authorizationHeader()}, + }) + const postReply = createPostReplyFactoryV2(client) + const base = makeCoordinator() + const replies: string[] = [] + const asked: {requestID: string; permission: string}[] = [] + const coordinator: PermissionCoordinator = { + ...base, + onPermissionAsked: vi.fn(async (request: PermissionRequest) => { + asked.push({requestID: request.requestID, permission: request.permission}) + // The same call the Discord decision makes: reply by request id on the asking session. + const result = await postReply(request.sessionID)(request.requestID, repo, 'once') + replies.push(result.ok ? 'ok' : (result.error ?? 'failed')) + return 'once' as const + }), + } + const sink = makeSink() + const onActivity = vi.fn() + + // #when + await runOpenCodeCoreV2({ + client, + directory: repo, + promptText: 'remove the worktree', + sink, + signal: AbortSignal.timeout(90_000), + logger: makeLogger(), + coordinator, + onActivity, + inactivityTimeoutMs: 60_000, + streamSilenceTimeoutMs: 45_000, + }) + + // #then — completed with one reply that carries the model's text, the approval was raised once and answered ok + expect(sink.text()).toContain(FINAL_TEXT) + expect(asked).toHaveLength(1) + expect(replies).toEqual(['ok']) + expect(onActivity).toHaveBeenCalledWith(expect.stringContaining('worktree')) + expect(provider.requests()).toBeGreaterThanOrEqual(2) + }, 120_000) +}) diff --git a/packages/gateway/src/execute/run-core-v2.fixture.ts b/packages/gateway/src/execute/run-core-v2.fixture.ts new file mode 100644 index 0000000000..0ad53d0615 --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.fixture.ts @@ -0,0 +1,472 @@ +/** + * Shared harness for the `run-core-v2*.test.ts` files. + * + * The frames are the real v2.2.0 captures from `@fro-bot/runtime/event-v2-fixtures` (probe run of 2026-10-28), moved + * onto the session under test by `onSession`. Frames the probes could not capture are the runtime fixtures' derived + * ones, built from the v2.2.0 schema. Nothing here is a V1 event. + * + * The fake server is a plain object satisfying `RemoteOpenCodeV2Client`: a scripted event stream the test pushes into, + * an active set that `interrupt` empties by default, and call records. Every stream ends: tests close it or the run's + * own bounds end it. + */ + +import type {OwnershipLedger, RemoteOpenCodeV2Client, V2SessionOutcome} from '@fro-bot/runtime' +import type {PermissionCoordinator} from '../approvals/coordinator.js' +import type {QuestionCoordinator} from '../approvals/question-coordinator.js' +import type {GatewayLogger} from '../discord/client.js' +import type {RunCoreV2Params} from './run-core-v2.js' +import type {RunCoreError} from './run-core.js' + +import {err, ok} from '@fro-bot/runtime' +import { + ENV_PERMISSION_ASKED_FRAME, + EXECUTION_FAILED_FRAME, + EXECUTION_INTERRUPTED_USER_FRAME, + EXECUTION_STARTED_FRAME, + EXECUTION_SUCCEEDED_FRAME, + QUESTION_FORM_CREATED_FRAME, + REASONING_FRAMES, + RETRY_SCHEDULED_FRAME, + SERVER_CONNECTED_FRAME, + SESSION_MOVED_FRAME, + SUBAGENT_BACKGROUND_SUCCESS_FRAME, + SUBAGENT_NOTICE_ENQUEUED_FRAME, + TEXT_DELTA_FRAME, + TEXT_ENDED_FRAME, + UNKNOWN_KIND_FORM_CREATED_FRAME, +} from '@fro-bot/runtime/event-v2-fixtures' +import {vi} from 'vitest' + +import {runOpenCodeCoreV2} from './run-core-v2.js' + +export const ROOT = 'ses_root' +export const CHILD = 'ses_child' +export const OTHER_CHILD = 'ses_other_child' +export const STRANGER = 'ses_stranger' +export const DIRECTORY = '/workspace/repos/o/r' + +// --------------------------------------------------------------------------- +// Frames +// --------------------------------------------------------------------------- + +interface Frame { + readonly type: string + readonly data: unknown +} + +function isRecord(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value) +} + +/** The same captured frame on another session. Rewrites every `sessionID` in `data`, including a form's. */ +export function onSession(frame: T, sessionId: string): object { + function retarget(value: unknown): unknown { + if (!isRecord(value)) return value + return Object.fromEntries( + Object.entries(value).map(([key, inner]) => [ + key, + key === 'sessionID' ? sessionId : key === 'form' ? retarget(inner) : inner, + ]), + ) + } + return {...frame, data: retarget(frame.data)} +} + +function withData(frame: T, data: Record): object { + return {...frame, data: {...(frame.data as Record), ...data}} +} + +export const SERVER_CONNECTED = SERVER_CONNECTED_FRAME +export const HEARTBEAT = {type: 'server.heartbeat'} as const + +export const frames = { + started: (session = ROOT) => onSession(EXECUTION_STARTED_FRAME, session), + succeeded: (session = ROOT) => onSession(EXECUTION_SUCCEEDED_FRAME, session), + failed: (session = ROOT, error: Record = {}) => { + const captured = EXECUTION_FAILED_FRAME.data as {error: Record} + return withData(onSession(EXECUTION_FAILED_FRAME, session) as Frame, {error: {...captured.error, ...error}}) + }, + interrupted: (session = ROOT, reason: 'inactivity' | 'shutdown' | 'superseded' | 'user' = 'user') => + withData(onSession(EXECUTION_INTERRUPTED_USER_FRAME, session) as Frame, {reason}), + delta: (text: string, session = ROOT, ordinal = 0, messageId?: string) => + withData(onSession(TEXT_DELTA_FRAME, session) as Frame, { + delta: text, + ordinal, + ...(messageId === undefined ? {} : {assistantMessageID: messageId}), + }), + textEnded: (text: string, session = ROOT, ordinal = 0, messageId?: string) => + withData(onSession(TEXT_ENDED_FRAME, session) as Frame, { + text, + ordinal, + ...(messageId === undefined ? {} : {assistantMessageID: messageId}), + }), + reasoning: (session = ROOT) => REASONING_FRAMES.map(frame => onSession(frame, session)), + retry: (session = ROOT) => onSession(RETRY_SCHEDULED_FRAME, session), + moved: (session = ROOT) => onSession(SESSION_MOVED_FRAME, session), + + /** A direct tool call, in the captured envelope: input.started, called, success. */ + toolStarted: (name: string, id: string, session = ROOT) => ({ + type: 'session.tool.input.started', + data: {sessionID: session, assistantMessageID: 'msg_tool', id, name}, + }), + toolCalled: (id: string, input: Record, session = ROOT) => ({ + type: 'session.tool.called', + data: {sessionID: session, assistantMessageID: 'msg_tool', id, input, executed: false}, + }), + toolSuccess: (id: string, session = ROOT, metadata: Record = {}) => ({ + type: 'session.tool.success', + data: { + sessionID: session, + assistantMessageID: 'msg_tool', + id, + content: [{type: 'text', text: 'ok'}], + metadata, + executed: false, + }, + }), + toolFailed: (id: string, session = ROOT) => ({ + type: 'session.tool.failed', + data: { + sessionID: session, + assistantMessageID: 'msg_tool', + id, + error: {type: 'tool.execution', message: 'boom'}, + executed: false, + }, + }), + /** One `execute` call reporting its inner calls (shape of the P5 capture). */ + executeProgress: (id: string, calls: readonly {tool: string; status: string}[], session = ROOT) => ({ + type: 'session.tool.progress', + data: {sessionID: session, assistantMessageID: 'msg_tool', id, metadata: {toolCalls: calls}}, + }), + executeSuccess: (id: string, calls: readonly {tool: string; status: string}[], session = ROOT) => ({ + type: 'session.tool.success', + data: { + sessionID: session, + assistantMessageID: 'msg_tool', + id, + content: [{type: 'text', text: '{}'}], + metadata: {toolCalls: calls}, + executed: false, + }, + }), + /** The captured background `subagent` dispatch result, pointed at `child`. */ + dispatch: (child = CHILD, session = ROOT, id = 'call_dispatch') => + withData(onSession(SUBAGENT_BACKGROUND_SUCCESS_FRAME, session) as Frame, { + id, + metadata: {sessionID: child, status: 'running', truncated: false}, + }), + + permissionAsked: (requestId: string, session = ROOT, action = 'external_directory', resource = '/tmp/outside') => + withData(onSession(ENV_PERMISSION_ASKED_FRAME, session) as Frame, { + id: requestId, + action, + resources: [resource], + source: {type: 'tool', messageID: 'msg_tool', id: 'call_execute'}, + }), + permissionReplied: (requestId: string, reply: 'always' | 'once' | 'reject', session = ROOT) => ({ + type: 'permission.replied', + data: {sessionID: session, requestID: requestId, reply}, + }), + questionForm: (formId = 'frm_1', session = ROOT) => { + const created = onSession(QUESTION_FORM_CREATED_FRAME, session) as {data: {form: Record}} + return {...created, data: {form: {...created.data.form, id: formId}}} + }, + unknownKindForm: (formId = 'frm_unknown', session = ROOT) => { + const created = onSession(UNKNOWN_KIND_FORM_CREATED_FRAME, session) as {data: {form: Record}} + return {...created, data: {form: {...created.data.form, id: formId}}} + }, + formReplied: (formId: string, answer: Record, session = ROOT) => ({ + type: 'form.replied', + data: {id: formId, sessionID: session, answer}, + }), + formCancelled: (formId: string, session = ROOT) => ({type: 'form.cancelled', data: {id: formId, sessionID: session}}), + + /** The enqueued synthetic notice the parent receives when a child ends (derived from the P2 capture). */ + notice: (child = CHILD, state = 'completed', inboxId = 'msg_notice', session = ROOT) => ({ + ...SUBAGENT_NOTICE_ENQUEUED_FRAME, + data: { + inboxID: inboxId, + sessionID: session, + item: { + type: 'synthetic', + payload: { + text: ``, + metadata: {source: 'subagent', childID: child, agent: 'General', state}, + }, + delivery: 'steer', + }, + }, + }), + delivered: (inboxId = 'msg_notice', session = ROOT) => ({ + type: 'session.inbox.delivered', + data: {sessionID: session, inboxID: inboxId}, + }), +} + +// --------------------------------------------------------------------------- +// Doubles +// --------------------------------------------------------------------------- + +export function makeLogger(): GatewayLogger { + return {debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn()} +} + +export interface SinkDouble { + readonly append: (text: string) => void + /** Everything appended so far. */ + readonly text: () => string +} + +export function makeSink(onAppend: () => void = () => {}): SinkDouble { + let buffer = '' + return { + append: vi.fn((text: string) => { + onAppend() + buffer += text + }), + text: () => buffer, + } +} + +export function makeCoordinator(): PermissionCoordinator { + const owned = new Set() + return { + onPermissionAsked: vi.fn().mockResolvedValue('once'), + onPermissionReplied: vi.fn(), + pending: vi.fn().mockReturnValue([]), + dispose: vi.fn(), + addOwnedSession: vi.fn((id: string) => { + owned.add(id) + }), + isOwned: vi.fn((id: string) => owned.has(id)), + } +} + +export function makeQuestions(): QuestionCoordinator { + return { + onAsked: vi.fn().mockResolvedValue('registered'), + onMalformed: vi.fn().mockResolvedValue(undefined), + onEcho: vi.fn(), + dispose: vi.fn().mockResolvedValue(undefined), + } +} + +// --------------------------------------------------------------------------- +// The run +// --------------------------------------------------------------------------- + +export type Outcome = {readonly ok: true} | {readonly ok: false; readonly error: RunCoreError} + +export interface StartOptions { + readonly controller?: AbortController + readonly ownershipLedger?: OwnershipLedger + readonly inactivityTimeoutMs?: number + readonly streamSilenceTimeoutMs?: number + readonly runId?: string + readonly questions?: QuestionCoordinator + readonly coordinator?: PermissionCoordinator + readonly forms?: RunCoreV2Params['forms'] + readonly onActivity?: (summary: string) => void + readonly onBusy?: (busy: boolean) => void + readonly onOwnershipChange?: RunCoreV2Params['onOwnershipChange'] + readonly onHumanWaitTerminal?: RunCoreV2Params['onHumanWaitTerminal'] + /** Frames the server sends right after `server.connected`, before the test pushes more. */ + readonly initialFrames?: readonly object[] + /** Called when `prompt` runs, before it resolves. */ + readonly onPrompt?: () => void + /** The `prompt` call's reply. */ + readonly promptResult?: () => ReturnType + readonly createSessionResult?: () => ReturnType + readonly subscribeResult?: () => ReturnType + /** Sessions in the active list before any interrupt. Defaults to the root, so the interrupt has something to stop. */ + readonly active?: readonly string[] + /** `session.active` reply per call, overriding the managed set (e.g. a root that turns up busy at a given time). */ + readonly activeReply?: () => Promise>> + /** Children the list API reports for the root. */ + readonly children?: readonly string[] + /** The persisted outcome `getSession` reports. Defaults to `interrupted` once an interrupt was sent, else none. */ + readonly outcome?: (interruptCalls: number) => V2SessionOutcome | null + readonly interrupt?: (sessionId: string) => ReturnType + /** Called by every `sink.append`; throwing from it makes the event loop body throw. */ + readonly onAppend?: () => void +} + +export interface Run { + readonly done: Promise + readonly outcome: () => Outcome | undefined + readonly sink: SinkDouble + readonly coordinator: PermissionCoordinator + readonly logger: GatewayLogger + readonly client: RemoteOpenCodeV2Client + readonly emit: (...events: readonly object[]) => void + readonly close: () => void + /** Makes the open event stream reject with `error` on its next pull. */ + readonly failStream: (error: unknown) => void + readonly prompt: ReturnType + readonly interrupt: ReturnType + readonly active: ReturnType + readonly replyPermission: ReturnType + readonly replyForm: ReturnType + readonly cancelForm: ReturnType + readonly subscribe: ReturnType + readonly signalOfSubscription: () => AbortSignal | undefined +} + +/** Starts the run under fake timers. The caller advances time. */ +export function startRun(options: StartOptions = {}): Run { + vi.useFakeTimers() + const queue: object[] = [...(options.initialFrames ?? [])] + let closed = false + let streamFailure: {readonly error: unknown} | null = null + let wake: (() => void) | null = null + let subscriptionSignal: AbortSignal | undefined + + async function* stream(): AsyncGenerator { + // The server announces the stream first; the run sends its prompt only after reading it. + yield SERVER_CONNECTED + while (true) { + if (streamFailure !== null) throw streamFailure.error + const next = queue.shift() + if (next !== undefined) { + yield next + } else if (closed) { + return + } else { + await new Promise(resolve => { + wake = resolve + }) + } + } + } + + const active = new Set(options.active ?? [ROOT]) + const interrupt = vi.fn(async ({sessionId}: {sessionId: string}) => { + if (options.interrupt !== undefined) return options.interrupt(sessionId) + active.delete(sessionId) + return ok({interrupted: true}) + }) + const prompt = vi.fn(async () => { + options.onPrompt?.() + return options.promptResult === undefined ? ok(undefined) : options.promptResult() + }) + const activeFn = vi.fn( + options.activeReply ?? (async () => Object.fromEntries([...active].map(id => [id, {type: 'running'}]))), + ) + const subscribe = vi.fn(async (input: {readonly signal?: AbortSignal}) => { + subscriptionSignal = input.signal + return options.subscribeResult === undefined ? ok(stream() as AsyncIterable) : options.subscribeResult() + }) + const replyPermission = vi.fn().mockResolvedValue(ok(undefined)) + const replyForm = vi.fn().mockResolvedValue(ok(undefined)) + const cancelForm = vi.fn().mockResolvedValue(ok(undefined)) + + const client = { + session: { + active: activeFn, + list: vi.fn(async () => ({ + data: (options.children ?? []).map(id => ({id, parentID: ROOT, location: {directory: DIRECTORY}})), + })), + }, + createSession: vi.fn(options.createSessionResult ?? (async () => ok({id: ROOT}))), + getSession: vi.fn(async () => + ok({ + id: ROOT, + parentId: null, + directory: DIRECTORY, + outcome: + options.outcome === undefined + ? interrupt.mock.calls.length > 0 + ? ('interrupted' as const) + : null + : options.outcome(interrupt.mock.calls.length), + }), + ), + prompt, + interrupt, + subscribeEvents: subscribe, + replyPermission, + replyForm, + cancelForm, + } as unknown as RemoteOpenCodeV2Client + + const logger = makeLogger() + const sink = makeSink(options.onAppend) + const coordinator = options.coordinator ?? makeCoordinator() + let settled: Outcome | undefined + const done = runOpenCodeCoreV2({ + client, + directory: DIRECTORY, + promptText: 'Fix the bug please', + sink, + signal: (options.controller ?? new AbortController()).signal, + logger, + coordinator, + ...(options.runId === undefined ? {} : {runId: options.runId}), + ...(options.questions === undefined ? {} : {questions: options.questions}), + ...(options.forms === undefined ? {} : {forms: options.forms}), + ...(options.ownershipLedger === undefined ? {} : {ownershipLedger: options.ownershipLedger}), + ...(options.inactivityTimeoutMs === undefined ? {} : {inactivityTimeoutMs: options.inactivityTimeoutMs}), + ...(options.streamSilenceTimeoutMs === undefined ? {} : {streamSilenceTimeoutMs: options.streamSilenceTimeoutMs}), + ...(options.onActivity === undefined ? {} : {onActivity: options.onActivity}), + ...(options.onBusy === undefined ? {} : {onBusy: options.onBusy}), + ...(options.onOwnershipChange === undefined ? {} : {onOwnershipChange: options.onOwnershipChange}), + ...(options.onHumanWaitTerminal === undefined ? {} : {onHumanWaitTerminal: options.onHumanWaitTerminal}), + }).then( + () => { + settled = {ok: true} + }, + (error: unknown) => { + settled = {ok: false, error: error as RunCoreError} + }, + ) + + function wakeStream(): void { + if (wake !== null) { + const resume: () => void = wake + wake = null + resume() + } + } + + return { + done, + outcome: () => settled, + sink, + coordinator, + logger, + client, + emit: (...events) => { + queue.push(...events) + wakeStream() + }, + close: () => { + closed = true + wakeStream() + }, + failStream: error => { + streamFailure = {error} + wakeStream() + }, + prompt, + interrupt, + active: activeFn, + replyPermission, + replyForm, + cancelForm, + subscribe, + signalOfSubscription: () => subscriptionSignal, + } +} + +export function failure(run: Run): RunCoreError { + const outcome = run.outcome() + if (outcome === undefined || outcome.ok) throw new Error('expected the run to have failed') + return outcome.error +} + +export function succeeded(run: Run): boolean { + return run.outcome()?.ok === true +} + +export const authFailure = () => err({kind: 'auth', status: 401} as const) diff --git a/packages/gateway/src/execute/run-core-v2.forms.test.ts b/packages/gateway/src/execute/run-core-v2.forms.test.ts new file mode 100644 index 0000000000..4aa144550d --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.forms.test.ts @@ -0,0 +1,493 @@ +/** + * Approvals and question forms on the V2 loop: permission asks keyed by request id (nested asks from one `execute` + * call stay distinct), the human-wait gauge that pauses the inactivity watchdog, the `question` form mapped onto the + * existing question flow, and every other form kind cancelled with a visible notice. + */ + +import type {TerminalListener} from '../approvals/request-gate.js' + +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {createFormDirectoryV2} from './question-client-v2.js' +import { + failure, + frames, + makeCoordinator, + makeQuestions, + ROOT, + startRun, + STRANGER, + succeeded, +} from './run-core-v2.fixture.js' + +afterEach(() => { + vi.useRealTimers() +}) + +describe('permission asks', () => { + it('forwards two nested approvals from one execute call as two distinct requests', async () => { + // #given — both asks carry the same execute call id (probe P5) and differ in request id + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.permissionAsked('per_a', ROOT, 'edit', '/wt/one'), + frames.permissionAsked('per_b', ROOT, 'edit', '/wt/two'), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + const asked = vi.mocked(coordinator.onPermissionAsked).mock.calls.map(([request]) => request) + expect(asked.map(request => request.requestID)).toEqual(['per_a', 'per_b']) + expect(asked.map(request => request.sessionID)).toEqual([ROOT, ROOT]) + expect(asked[0]?.permission).toBe('edit') + expect(asked[0]?.patterns).toEqual(['/wt/one']) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('titles an outside-checkout ask with its path, as the approval UI expects', async () => { + // #given + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.permissionAsked('per_a', ROOT, 'external_directory', '/etc/hosts')) + await vi.advanceTimersByTimeAsync(10) + + // #then + const request = vi.mocked(coordinator.onPermissionAsked).mock.calls[0]?.[0] + expect(request?.title).toBe('Access outside workspace: /etc/hosts') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('shows a shell ask the way the approval UI shows a command', async () => { + // #given + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.permissionAsked('per_a', ROOT, 'shell', 'rm -rf build')) + await vi.advanceTimersByTimeAsync(10) + + // #then + const request = vi.mocked(coordinator.onPermissionAsked).mock.calls[0]?.[0] + expect(request?.permission).toBe('bash') + expect(request?.title).toBe('Run command: rm -rf build') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('forwards the authoritative reply for each request on its own', async () => { + // #given + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.permissionAsked('per_a'), frames.permissionAsked('per_b')) + + // #when — the replies differ, and arrive in the other order + run.emit(frames.permissionReplied('per_b', 'reject'), frames.permissionReplied('per_a', 'always')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect( + vi.mocked(coordinator.onPermissionReplied).mock.calls.map(([event]) => [event.requestID, event.reply]), + ).toEqual([ + ['per_b', 'reject'], + ['per_a', 'always'], + ]) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('skips a reply value outside once, always and reject', async () => { + // #given + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit({type: 'permission.replied', data: {sessionID: ROOT, requestID: 'per_a', reply: 'allow-forever'}}) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(coordinator.onPermissionReplied).not.toHaveBeenCalled() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it("keeps a stranger's ask out of this run's approval flow", async () => { + // #given + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.permissionAsked('per_x', STRANGER), frames.permissionReplied('per_x', 'once', STRANGER)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(coordinator.onPermissionAsked).not.toHaveBeenCalled() + expect(coordinator.onPermissionReplied).not.toHaveBeenCalled() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('does not await the coordinator, so a pending approval never starves the stream', async () => { + // #given — an approval nobody has answered yet + const coordinator = makeCoordinator() + vi.mocked(coordinator.onPermissionAsked).mockReturnValue(new Promise(() => undefined)) + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.permissionAsked('per_a'), frames.delta('still streaming')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).toContain('still streaming') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) +}) + +describe('the human-wait gauge', () => { + it('pauses the inactivity watchdog while an approval is open and re-arms it when the last one is answered', async () => { + // #given + const onBusy = vi.fn() + const run = startRun({inactivityTimeoutMs: 5_000, onBusy}) + await vi.advanceTimersByTimeAsync(10) + + // #when — two approvals stay open far longer than the inactivity window + run.emit(frames.permissionAsked('per_a'), frames.permissionAsked('per_b')) + await vi.advanceTimersByTimeAsync(60_000) + + // #then — still running, and not busy + expect(run.outcome()).toBeUndefined() + expect(onBusy).toHaveBeenLastCalledWith(false) + + // #when — one is answered, one is still open + run.emit(frames.permissionReplied('per_a', 'once')) + await vi.advanceTimersByTimeAsync(60_000) + + // #then — one open approval still holds the watchdog + expect(run.outcome()).toBeUndefined() + + // #when — the last is answered, and the agent then goes quiet + run.emit(frames.permissionReplied('per_b', 'once')) + await vi.advanceTimersByTimeAsync(10) + expect(onBusy).toHaveBeenLastCalledWith(true) + await vi.advanceTimersByTimeAsync(6_000) + await vi.advanceTimersByTimeAsync(20_000) + + // #then — the watchdog is armed again with a fresh window + expect(failure(run).kind).toBe('inactivity-timeout') + }) + + it("releases a wait on the request gate's terminal notification, which has no server echo", async () => { + // #given — a settlement that produces no echo (a deadline skip) + let listener: TerminalListener | undefined + const run = startRun({ + inactivityTimeoutMs: 5_000, + onHumanWaitTerminal: l => { + listener = l + return () => { + listener = undefined + } + }, + }) + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.permissionAsked('per_a')) + await vi.advanceTimersByTimeAsync(30_000) + expect(run.outcome()).toBeUndefined() + + // #when + listener?.({requestID: 'per_a', sessionID: ROOT, family: 'approval', scopeId: 's', outcome: 'deadline'} as never) + await vi.advanceTimersByTimeAsync(6_000) + await vi.advanceTimersByTimeAsync(20_000) + + // #then — released, so the watchdog fires after its fresh window + expect(failure(run).kind).toBe('inactivity-timeout') + }) + + it('unsubscribes from terminal notifications when the loop exits', async () => { + // #given + const unsubscribe = vi.fn() + const run = startRun({onHumanWaitTerminal: () => unsubscribe}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(unsubscribe).toHaveBeenCalledTimes(1) + }) + + it('fail-closes the open approvals the moment the run fails', async () => { + // #given — an approval is open when the stream is lost + const coordinator = makeCoordinator() + const questions = makeQuestions() + const run = startRun({coordinator, questions}) + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.permissionAsked('per_a')) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.failStream(new Error('lost')) + await vi.advanceTimersByTimeAsync(20_000) + + // #then — disposed before the barrier's 15 s, so an `always` press cannot persist a rule meanwhile + expect(coordinator.dispose).toHaveBeenCalledWith('run ended') + expect(questions.dispose).toHaveBeenCalledWith('run ended') + }) +}) + +describe('question forms', () => { + it('maps a question form onto the existing question flow and records it for the reply', async () => { + // #given + const questions = makeQuestions() + const forms = createFormDirectoryV2() + const run = startRun({questions, forms}) + await vi.advanceTimersByTimeAsync(10) + + // #when — the form the `question` tool asks (one field per question, keyed q0, q1, …) + run.emit(frames.questionForm('frm_1')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(questions.onAsked).toHaveBeenCalledWith({ + requestID: 'frm_1', + sessionID: ROOT, + questions: [ + { + question: 'Pick?', + header: 'Pick', + options: [ + {label: 'A', description: 'a'}, + {label: 'B', description: 'b'}, + ], + multiple: false, + custom: true, + }, + ], + }) + expect(forms.lookup('frm_1')).toMatchObject({sessionId: ROOT, fields: [{key: 'q0', type: 'string'}]}) + expect(run.cancelForm).not.toHaveBeenCalled() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('holds the inactivity watchdog while the question is open and forwards the answer as an echo', async () => { + // #given + const questions = makeQuestions() + const run = startRun({questions, inactivityTimeoutMs: 5_000}) + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.questionForm('frm_1')) + await vi.advanceTimersByTimeAsync(60_000) + expect(run.outcome()).toBeUndefined() + + // #when — the server echoes the reply, keyed by field + run.emit(frames.formReplied('frm_1', {q0: 'B'})) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(questions.onEcho).toHaveBeenCalledWith({ + kind: 'replied', + requestID: 'frm_1', + sessionID: ROOT, + answers: [['B']], + }) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('forwards a cancelled question as a rejection', async () => { + // #given + const questions = makeQuestions() + const run = startRun({questions}) + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.questionForm('frm_1')) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.formCancelled('frm_1')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(questions.onEcho).toHaveBeenCalledWith({kind: 'rejected', requestID: 'frm_1', sessionID: ROOT}) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('releases the wait itself when the coordinator skipped the question', async () => { + // #given — no budget for a deadline: skipped, never registered, so no terminal event will come + const questions = makeQuestions() + vi.mocked(questions.onAsked).mockResolvedValue('skipped') + const run = startRun({questions, inactivityTimeoutMs: 5_000}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.questionForm('frm_1')) + await vi.advanceTimersByTimeAsync(6_000) + await vi.advanceTimersByTimeAsync(20_000) + + // #then — the watchdog was re-armed and fired + expect(failure(run).kind).toBe('inactivity-timeout') + }) + + it('keeps going when the coordinator fails to register the question', async () => { + // #given + const questions = makeQuestions() + vi.mocked(questions.onAsked).mockRejectedValue(new Error('registry down')) + const run = startRun({questions}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.questionForm('frm_1'), frames.delta('on'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('rejects a question form too large for the question flow so the asking turn ends now', async () => { + // #given — more questions than one request may carry + const questions = makeQuestions() + const run = startRun({questions}) + await vi.advanceTimersByTimeAsync(10) + const base = frames.questionForm('frm_big') + const [field] = (base.data.form as unknown as {fields: unknown[]}).fields + const tooBig = {...base, data: {form: {...base.data.form, fields: Array.from({length: 9}, () => field)}}} + + // #when + run.emit(tooBig) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(questions.onMalformed).toHaveBeenCalledWith({requestID: 'frm_big', sessionID: ROOT, reason: 'oversize'}) + expect(questions.onAsked).not.toHaveBeenCalled() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('cancels a question form with a message, not a hang, when no question handler is wired', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.questionForm('frm_1')) + await vi.advanceTimersByTimeAsync(10) + + // #then — the model's turn continues with a message instead of blocking until the deadline + const input = vi.mocked(run.cancelForm).mock.calls[0]?.[0] as {sessionId: string; formId: string; message?: string} + expect(input).toMatchObject({sessionId: ROOT, formId: 'frm_1'}) + expect(typeof input.message).toBe('string') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('ignores a question form from a session it does not own, without cancelling it', async () => { + // #given + const questions = makeQuestions() + const run = startRun({questions}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.questionForm('frm_x', STRANGER)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(questions.onAsked).not.toHaveBeenCalled() + expect(run.cancelForm).not.toHaveBeenCalled() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) +}) + +describe('forms of any other kind', () => { + it('cancels an unknown form kind with a message and shows the user a notice', async () => { + // #given — an MCP-style form with no metadata.kind + const onActivity = vi.fn() + const questions = makeQuestions() + const run = startRun({questions, onActivity}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.unknownKindForm('frm_unknown')) + await vi.advanceTimersByTimeAsync(10) + + // #then — cancelled with a message so the asking step continues, never forwarded as a question + const input = vi.mocked(run.cancelForm).mock.calls[0]?.[0] as {sessionId: string; formId: string; message?: string} + expect(input).toMatchObject({sessionId: ROOT, formId: 'frm_unknown'}) + expect(typeof input.message).toBe('string') + expect(questions.onAsked).not.toHaveBeenCalled() + expect(run.sink.text()).toContain('could not be shown here and was cancelled') + expect(onActivity).toHaveBeenCalledWith(expect.stringContaining('cancelled')) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it("never copies the form's title or fields into the notice or the logs", async () => { + // #given — the title and field names are plugin-controlled + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.unknownKindForm('frm_unknown')) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).not.toContain('Sign in') + expect(JSON.stringify(vi.mocked(run.logger.warn).mock.calls)).not.toContain('Sign in') + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('does not hold the watchdog for a form it cancelled', async () => { + // #given + const run = startRun({inactivityTimeoutMs: 5_000}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.unknownKindForm('frm_unknown')) + await vi.advanceTimersByTimeAsync(6_000) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('inactivity-timeout') + }) + + it('survives a form cancel that fails', async () => { + // #given + const run = startRun() + run.cancelForm.mockRejectedValue(new Error('down')) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.unknownKindForm('frm_unknown'), frames.delta('carry on'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('fails closed on a form it cannot read for an owned session', async () => { + // #given — no fields: nothing to cancel by id would reach the asker either + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit({type: 'form.created', data: {form: {id: 'frm_bad', sessionID: ROOT, title: 't'}}}) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('session-error') + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.root-abort.test.ts b/packages/gateway/src/execute/run-core-v2.root-abort.test.ts new file mode 100644 index 0000000000..17f2603c4c --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.root-abort.test.ts @@ -0,0 +1,333 @@ +/** + * A run that stops while its root may still be running must interrupt that root and confirm it stopped before the + * failure escapes, even when the ownership ledger is empty. The prompt runs in server scope, so only an interrupt stops + * it; releasing the lock and slot without that leaves the root writing the checkout under the next run (#1958). + * + * The V2 rules under test: an `{interrupted: false}` reply is never a stop (an interrupt sent before the prompt is + * admitted leaves no trace), absence from the active list is never a stop, and an interrupt with reason `shutdown` is + * never a stop. A stop needs an ended execution AND absence from the active list. + */ + +import type {OwnershipLedger} from '@fro-bot/runtime' +import type {Run, StartOptions} from './run-core-v2.fixture.js' + +import {createOwnershipLedger, err, ok} from '@fro-bot/runtime' +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {QUARANTINE_HOLD_WINDOW_MS} from './root-stop.js' +import {failure, frames, ROOT, startRun} from './run-core-v2.fixture.js' + +const INACTIVITY_MS = 5_000 +/** Longer than the 15 s settle bound, so a run that cannot confirm the root has concluded. */ +const PAST_SETTLE_BOUND_MS = 20_000 +const BUSY_ROOT = async (): Promise>> => ({[ROOT]: {type: 'running'}}) + +interface StopScenario { + readonly label: string + readonly kind: 'inactivity-timeout' | 'stream-ended' | 'timeout' + /** Starts a run that will stop for this reason, and drives it to the point where it has stopped. */ + readonly stop: (options?: StartOptions) => Promise +} + +const STOP_SCENARIOS: readonly StopScenario[] = [ + { + label: 'wall-clock timeout', + kind: 'timeout', + stop: async options => { + const controller = new AbortController() + const run = startRun({...options, controller}) + await vi.advanceTimersByTimeAsync(100) + controller.abort() + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, + { + label: 'operator cancel', + kind: 'timeout', + stop: async options => { + const controller = new AbortController() + const run = startRun({...options, controller}) + await vi.advanceTimersByTimeAsync(100) + controller.abort('operator cancel') + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, + { + label: 'operator cancel during a tool call', + kind: 'timeout', + stop: async options => { + const controller = new AbortController() + const run = startRun({...options, controller}) + await vi.advanceTimersByTimeAsync(100) + run.emit( + frames.started(), + frames.toolStarted('shell', 'call_1'), + frames.toolCalled('call_1', {command: 'sleep 60'}), + ) + await vi.advanceTimersByTimeAsync(100) + controller.abort('operator cancel') + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, + { + label: 'signal aborted after the prompt was sent', + kind: 'timeout', + stop: async options => { + const controller = new AbortController() + const run = startRun({...options, controller, onPrompt: () => controller.abort()}) + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, + { + label: 'signal aborted while the prompt was in flight', + kind: 'timeout', + stop: async options => { + const controller = new AbortController() + const run = startRun({ + ...options, + controller, + promptResult: async () => { + controller.abort() + return err({kind: 'aborted'}) + }, + }) + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, + { + label: 'inactivity', + kind: 'inactivity-timeout', + stop: async options => { + const run = startRun({...options, inactivityTimeoutMs: INACTIVITY_MS}) + await vi.advanceTimersByTimeAsync(INACTIVITY_MS + 1_000) + return run + }, + }, + { + label: 'stream ended', + kind: 'stream-ended', + stop: async options => { + const run = startRun(options) + await vi.advanceTimersByTimeAsync(100) + run.close() + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, + { + label: 'stream lost', + kind: 'stream-ended', + stop: async options => { + const run = startRun(options) + await vi.advanceTimersByTimeAsync(100) + run.failStream(new Error('socket hang up')) + await vi.advanceTimersByTimeAsync(1_000) + return run + }, + }, +] + +const LEDGERS: readonly (readonly [string, (() => OwnershipLedger) | undefined])[] = [ + ['no ledger', undefined], + ['an empty ledger', () => createOwnershipLedger()], +] + +function ledgerOption(make: (() => OwnershipLedger) | undefined): StartOptions { + return make === undefined ? {} : {ownershipLedger: make()} +} + +afterEach(() => { + vi.useRealTimers() +}) + +describe('root interrupt on a stop that may leave the root running', () => { + describe.each(STOP_SCENARIOS)('$label', scenario => { + it.each(LEDGERS)('interrupts the root, confirms it stopped and releases with %s', async (_label, makeLedger) => { + // #given / #when — the run stops with nothing owned, so the ledger cannot speak for the root + const run = await scenario.stop(ledgerOption(makeLedger)) + + // #then — same failure kind, root interrupted once, confirmed absent with an ended execution, not quarantined + const error = failure(run) + expect(error.kind).toBe(scenario.kind) + expect(error.quarantined).toBe(false) + expect(run.interrupt).toHaveBeenCalledTimes(1) + expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + expect(run.active).toHaveBeenCalled() + }) + + it('quarantines when the root is still active after the interrupt', async () => { + // #given — the active list keeps reporting the root + const run = await scenario.stop({activeReply: BUSY_ROOT}) + + // #when — the bounded settle budget runs out + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then — same kind, with quarantine as extra evidence + const error = failure(run) + expect(error.kind).toBe(scenario.kind) + expect(error.quarantined).toBe(true) + // the root kept showing up live, so it was interrupted again on every poll, not once + expect(run.interrupt.mock.calls.length).toBeGreaterThan(1) + }) + + it('quarantines when the interrupt fails and the root stays active', async () => { + // #given + const run = await scenario.stop({ + activeReply: BUSY_ROOT, + interrupt: async () => err({kind: 'network', message: 'down'}), + }) + + // #when + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(failure(run).quarantined).toBe(true) + }) + + it('quarantines when the server is unreachable, so nothing can be confirmed', async () => { + // #given + const run = await scenario.stop({ + activeReply: async () => { + throw new Error('session.active failed: network down') + }, + interrupt: async () => err({kind: 'network', message: 'down'}), + }) + + // #when + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + const error = failure(run) + expect(error.kind).toBe(scenario.kind) + expect(error.quarantined).toBe(true) + }) + }) + + it('does not read an interrupt reply of false as a stop: a root with no ended execution is quarantined', async () => { + // #given — the root is absent and the reply says nothing was interrupted: what a prompt that is not admitted + // yet looks like (probe P1). No execution has ended, so there is no evidence the root stopped. + const controller = new AbortController() + const run = startRun({ + controller, + active: [], + interrupt: async () => ok({interrupted: false}), + outcome: () => null, + }) + await vi.advanceTimersByTimeAsync(100) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(failure(run).quarantined).toBe(true) + }) + + it('keeps interrupting during the hold, so a prompt that starts late is stopped', async () => { + // #given — quarantined with the root absent, then it turns up busy as the late prompt starts + const controller = new AbortController() + let lateStart = false + const run = startRun({ + controller, + activeReply: async (): Promise> => + lateStart ? {[ROOT]: {type: 'running'}} : {}, + interrupt: async () => ok({interrupted: lateStart}), + outcome: () => null, + }) + await vi.advanceTimersByTimeAsync(100) + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + expect(failure(run).quarantined).toBe(true) + const interruptsAtQuarantine = run.interrupt.mock.calls.length + + // #when + lateStart = true + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(run.interrupt.mock.calls.length).toBeGreaterThan(interruptsAtQuarantine) + }) + + it('does not keep interrupting after the quarantine hold window closes', async () => { + // #given + const controller = new AbortController() + const run = startRun({controller, activeReply: BUSY_ROOT}) + await vi.advanceTimersByTimeAsync(100) + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + await vi.advanceTimersByTimeAsync(QUARANTINE_HOLD_WINDOW_MS + 1_000) + const calls = run.interrupt.mock.calls.length + + // #when + await vi.advanceTimersByTimeAsync(10_000) + + // #then + expect(run.interrupt.mock.calls.length).toBe(calls) + }) + + it('does not accept an interrupt with reason shutdown as the root stopping, and quarantines', async () => { + // #given — the server reports the root's execution interrupted for shutdown: the claim stays held and resumable. + // The persisted outcome even reads `interrupted`, from an earlier interrupt of the run's own. + const run = startRun({outcome: () => 'interrupted', active: []}) + await vi.advanceTimersByTimeAsync(100) + + // #when + run.emit(frames.interrupted(ROOT, 'shutdown')) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + const error = failure(run) + expect(error.kind).toBe('session-error') + expect(error.quarantined).toBe(true) + }) + + it('takes the fast path, with no remote call, for a failure after the root already halted', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(100) + + // #when + run.emit(frames.failed()) + await vi.advanceTimersByTimeAsync(1_000) + + // #then + expect(failure(run).quarantined).toBe(false) + expect(run.interrupt).not.toHaveBeenCalled() + }) + + it("stamps the run id on the barrier's log lines", async () => { + // #given + const controller = new AbortController() + const run = startRun({controller, runId: 'run-42', activeReply: BUSY_ROOT}) + await vi.advanceTimersByTimeAsync(100) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(run.logger.error).toHaveBeenCalledWith( + expect.objectContaining({runId: 'run-42', kind: 'timeout'}), + expect.stringContaining('quarantining run'), + ) + }) + + it('never interrupts for a run that completed', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(100) + + // #when + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(1_000) + + // #then + expect(run.outcome()).toEqual({ok: true}) + expect(run.interrupt).not.toHaveBeenCalled() + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.test.ts b/packages/gateway/src/execute/run-core-v2.test.ts new file mode 100644 index 0000000000..f362e52ab7 --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.test.ts @@ -0,0 +1,714 @@ +/** + * Behaviour of the OpenCode V2 execute+stream core: session, prompt, stream consumption, tool lines, failures. + * + * Drives the real `runOpenCodeCoreV2` loop with fake timers against a scripted event stream built from the captured + * v2.2.0 frames (see `run-core-v2.fixture.ts`). Root stop, drain and approvals have their own files. + */ + +import {afterEach, describe, expect, it, vi} from 'vitest' + +import { + authFailure, + DIRECTORY, + failure, + frames, + HEARTBEAT, + makeCoordinator, + ROOT, + SERVER_CONNECTED, + startRun, + STRANGER, + succeeded, +} from './run-core-v2.fixture.js' +import {EVENT_STREAM_CONNECT_TIMEOUT_MS} from './run-core.js' + +afterEach(() => { + vi.useRealTimers() +}) + +describe('runOpenCodeCoreV2: a plain turn', () => { + it('creates the session at the directory, prompts after the stream connects, and resolves on the root succeeding', async () => { + // #given + const run = startRun() + + // #when + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.started(), frames.delta('all done'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then — one reply, streamed once + expect(succeeded(run)).toBe(true) + expect(run.sink.text()).toBe('all done') + expect(run.client.createSession).toHaveBeenCalledWith(expect.objectContaining({directory: DIRECTORY})) + expect(run.prompt).toHaveBeenCalledTimes(1) + expect(run.prompt).toHaveBeenCalledWith( + expect.objectContaining({sessionId: ROOT, text: 'Fix the bug please', directory: DIRECTORY}), + ) + expect(run.coordinator.addOwnedSession).toHaveBeenCalledWith(ROOT) + expect(run.interrupt).not.toHaveBeenCalled() + }) + + it('subscribes before it prompts and holds the prompt until server.connected is read', async () => { + // #given — the server takes a while to announce the stream + const order: string[] = [] + let release: (() => void) | undefined + async function* delayed(): AsyncGenerator { + await new Promise(resolve => { + release = resolve + }) + yield SERVER_CONNECTED + await new Promise(() => undefined) + } + const run = startRun({ + subscribeResult: async () => { + order.push('subscribe') + return {success: true, data: delayed()} + }, + onPrompt: () => order.push('prompt'), + }) + + // #when — the connect frame has not arrived + await vi.advanceTimersByTimeAsync(5_000) + expect(run.prompt).not.toHaveBeenCalled() + release?.() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(order).toEqual(['subscribe', 'prompt']) + }) + + it('fails as unreachable, and never prompts, when the stream does not connect in time', async () => { + // #given + const run = startRun({ + subscribeResult: async () => ({ + success: true, + data: (async function* () { + await new Promise(() => undefined) + })(), + }), + }) + + // #when + await vi.advanceTimersByTimeAsync(EVENT_STREAM_CONNECT_TIMEOUT_MS + 100) + + // #then + expect(failure(run).kind).toBe('unreachable') + expect(run.prompt).not.toHaveBeenCalled() + }) + + it('fails as unreachable when the first frame is not server.connected', async () => { + // #given + const run = startRun({ + subscribeResult: async () => ({ + success: true, + data: (async function* () { + yield frames.started() + })(), + }), + }) + + // #when + await vi.advanceTimersByTimeAsync(100) + + // #then + expect(failure(run).kind).toBe('unreachable') + expect(run.prompt).not.toHaveBeenCalled() + }) + + it('refuses to run without a coordinator, before it creates a session', async () => { + // #given / #when + const {runOpenCodeCoreV2} = await import('./run-core-v2.js') + const kit = await import('./run-core-v2.fixture.js') + const client = startRun().client + await vi.advanceTimersByTimeAsync(10) + const createCalls = vi.mocked(client.createSession).mock.calls.length + const attempt = runOpenCodeCoreV2({ + client, + directory: DIRECTORY, + promptText: 'x', + sink: kit.makeSink(), + signal: new AbortController().signal, + logger: kit.makeLogger(), + }) + + // #then + await expect(attempt).rejects.toMatchObject({kind: 'missing-coordinator'}) + expect(vi.mocked(client.createSession).mock.calls.length).toBe(createCalls) + }) + + it('fails with timeout before any call when the signal is already aborted', async () => { + // #given + const controller = new AbortController() + controller.abort() + + // #when + const run = startRun({controller}) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(failure(run).kind).toBe('timeout') + expect(run.client.createSession).not.toHaveBeenCalled() + }) + + it('reports busy while it works and not busy once done', async () => { + // #given + const onBusy = vi.fn() + const run = startRun({onBusy}) + + // #when + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(onBusy.mock.calls.map(call => call[0] as boolean)).toEqual([true, false]) + }) +}) + +describe('runOpenCodeCoreV2: attach failures', () => { + it('maps a 401 on session create to auth', async () => { + // #given + const run = startRun({createSessionResult: async () => authFailure()}) + + // #when + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(failure(run).kind).toBe('auth') + expect(run.subscribe).not.toHaveBeenCalled() + }) + + it('maps a transport failure on session create to unreachable', async () => { + // #given + const run = startRun({ + createSessionResult: async () => ({success: false, error: {kind: 'network', message: 'down'}}), + }) + + // #when + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(failure(run).kind).toBe('unreachable') + }) + + it('maps a 401 on the event subscription to auth', async () => { + // #given + const run = startRun({subscribeResult: async () => authFailure()}) + + // #when + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(failure(run).kind).toBe('auth') + expect(run.prompt).not.toHaveBeenCalled() + }) + + it('maps a 401 on the prompt to auth, a server error to prompt-error and a transport failure to unreachable', async () => { + // #given + const auth = startRun({promptResult: async () => authFailure()}) + await vi.advanceTimersByTimeAsync(10) + const rejected = startRun({promptResult: async () => ({success: false, error: {kind: 'http', status: 500}})}) + await vi.advanceTimersByTimeAsync(10) + const down = startRun({promptResult: async () => ({success: false, error: {kind: 'network', message: 'x'}})}) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(failure(auth).kind).toBe('auth') + expect(failure(rejected).kind).toBe('prompt-error') + expect(failure(down).kind).toBe('unreachable') + }) + + it('never puts a credential or response text in the error message', async () => { + // #given + const run = startRun({createSessionResult: async () => authFailure()}) + + // #when + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(failure(run).message).not.toMatch(/bearer|token|password/i) + }) +}) + +describe('runOpenCodeCoreV2: streaming the reply', () => { + it('never lets reasoning text reach the reply', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when — the captured reasoning frames carry the text "PRIVATE CHAIN OF THOUGHT" in a delta and in an end event + run.emit(frames.started(), ...frames.reasoning(), frames.delta('answer'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).toBe('answer') + expect(run.sink.text()).not.toContain('PRIVATE') + }) + + it('counts reasoning as activity, so a long think does not trip the inactivity timer', async () => { + // #given + const run = startRun({inactivityTimeoutMs: 5_000}) + await vi.advanceTimersByTimeAsync(10) + + // #when — reasoning keeps arriving inside each window + for (let i = 0; i < 4; i += 1) { + await vi.advanceTimersByTimeAsync(3_000) + run.emit(...frames.reasoning()) + } + run.emit(frames.delta('done'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('separates text parts so they do not run together', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when — two assistant text parts, as the captured text frames carry ordinals + run.emit( + frames.delta('First part.', ROOT, 0, 'msg_a'), + frames.delta('Second part.', ROOT, 1, 'msg_a'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).toMatch(/First part\.\s+Second part\./) + }) + + it('appends a text part that arrived only as an end event, and never twice', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when — one part streamed deltas and then ended; another only ended + run.emit( + frames.delta('streamed', ROOT, 0, 'msg_a'), + frames.textEnded('streamed', ROOT, 0, 'msg_a'), + frames.textEnded('whole', ROOT, 1, 'msg_a'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text().match(/streamed/g)).toHaveLength(1) + expect(run.sink.text()).toContain('whole') + }) + + it('ignores text from a session this run does not own', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.delta('stranger text', STRANGER), frames.delta('mine'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).toBe('mine') + }) + + it("does not complete on another session's success", async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.succeeded(STRANGER)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('releases held whitespace to the sink on exit', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when — a part whose only text so far is whitespace, then the turn ends + run.emit(frames.delta('Hello', ROOT, 0, 'msg_a'), frames.delta('\n\n', ROOT, 1, 'msg_a'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(run.sink.text()).toContain('Hello') + }) +}) + +describe('runOpenCodeCoreV2: tool lines', () => { + it('shows an essential direct tool once, with its command', async () => { + // #given + const onActivity = vi.fn() + const run = startRun({onActivity}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.toolStarted('shell', 'call_1'), + frames.toolCalled('call_1', {command: 'bun test', description: 'Run tests'}), + frames.toolSuccess('call_1'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(onActivity).toHaveBeenCalledTimes(1) + expect(run.sink.text()).toContain('bun test') + }) + + it('hides a read-only tool that succeeded and shows one that failed', async () => { + // #given + const onActivity = vi.fn() + const run = startRun({onActivity}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.toolStarted('read', 'call_1'), + frames.toolCalled('call_1', {filePath: '/a'}), + frames.toolSuccess('call_1'), + frames.toolStarted('read', 'call_2'), + frames.toolCalled('call_2', {filePath: '/b'}), + frames.toolFailed('call_2'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(onActivity).toHaveBeenCalledTimes(1) + }) + + it('summarizes the calls inside an execute call, each once, and not the wrapper', async () => { + // #given — Code Mode: one execute call carries two inner calls, reported by progress and again by the result + const onActivity = vi.fn() + const run = startRun({onActivity}) + await vi.advanceTimersByTimeAsync(10) + const running = [{tool: 'opencode.worktree_list', status: 'running'}] + const half = [ + {tool: 'opencode.worktree_list', status: 'completed'}, + {tool: 'opencode.models', status: 'running'}, + ] + const done = [ + {tool: 'opencode.worktree_list', status: 'completed'}, + {tool: 'opencode.models', status: 'completed'}, + ] + + // #when + run.emit( + frames.toolStarted('execute', 'call_x'), + frames.toolCalled('call_x', {code: 'await tools.opencode.worktree_list({})'}), + frames.executeProgress('call_x', running), + frames.executeProgress('call_x', half), + frames.executeProgress('call_x', done), + frames.executeSuccess('call_x', done), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then — two inner calls, two lines; the execute wrapper itself gets none + expect(onActivity).toHaveBeenCalledTimes(2) + const lines = onActivity.mock.calls.map(([summary]) => String(summary)) + expect(lines.some(line => line.includes('worktree_list'))).toBe(true) + expect(lines.some(line => line.includes('models'))).toBe(true) + expect(lines.some(line => line.includes('execute'))).toBe(false) + }) + + it('names an execute inner call that carries input, so the line says which tool ran', async () => { + // #given — the real server reports each inner call with its input, and the generic renderer prints input alone + const onActivity = vi.fn() + const run = startRun({onActivity}) + await vi.advanceTimersByTimeAsync(10) + const calls = [{tool: 'opencode.worktree_create', status: 'completed', input: {name: 'e2e-wt'}}] + + // #when + run.emit(frames.toolStarted('execute', 'call_x'), frames.executeSuccess('call_x', calls), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(onActivity).toHaveBeenCalledTimes(1) + expect(String(onActivity.mock.calls[0]?.[0])).toContain('worktree_create') + }) + + it('shows an execute inner call that failed', async () => { + // #given + const onActivity = vi.fn() + const run = startRun({onActivity}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.toolStarted('execute', 'call_x'), + frames.executeSuccess('call_x', [{tool: 'opencode.worktree_remove', status: 'error'}]), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(onActivity).toHaveBeenCalledTimes(1) + expect(run.sink.text()).toContain('worktree_remove') + }) + + it('keeps going when a tool line cannot be rendered', async () => { + // #given — a hostile input shape + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.toolStarted('shell', 'call_1'), + frames.toolCalled('call_1', {command: {nested: true}}), + frames.toolSuccess('call_1'), + frames.delta('still here'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + expect(run.sink.text()).toContain('still here') + }) + + it('treats tool progress as activity for the inactivity timer', async () => { + // #given + const run = startRun({inactivityTimeoutMs: 5_000}) + await vi.advanceTimersByTimeAsync(10) + + // #when + for (let i = 0; i < 4; i += 1) { + await vi.advanceTimersByTimeAsync(3_000) + run.emit(frames.executeProgress('call_x', [{tool: 'opencode.models', status: 'running'}])) + } + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) +}) + +describe('runOpenCodeCoreV2: failures the server reports', () => { + it('fails the run on a root execution failure with a fixed reason and none of the upstream text', async () => { + // #given — the captured failure carries an upstream response body + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.failed()) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + const error = failure(run) + expect(error.kind).toBe('session-error') + expect(error.providerFailureReason).toBe('session error') + expect(error.message).not.toContain('secret upstream body') + expect(error.message).not.toContain('boom') + }) + + it('labels an auth failure with the closed provider reason', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.failed(ROOT, {type: 'provider.auth', message: 'No auth available', status: 401})) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).providerFailureReason).toBe('provider auth unavailable') + }) + + it('does not fail on a retry; the terminal event decides', async () => { + // #given — the captured rate-limit retry + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.retry(), frames.delta('recovered'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('fails the run when something else interrupts the root, but not when the run did it', async () => { + // #given + const other = startRun() + await vi.advanceTimersByTimeAsync(10) + const controller = new AbortController() + const own = startRun({controller}) + await vi.advanceTimersByTimeAsync(10) + + // #when — another client interrupts one root; the run cancels the other and its own interrupt echoes back + other.emit(frames.interrupted(ROOT, 'user')) + controller.abort() + own.emit(frames.interrupted(ROOT, 'user')) + await vi.advanceTimersByTimeAsync(20_000) + + // #then — both end in a failure, but the first is a session error and the second a timeout (the run's own stop) + expect(failure(other).kind).toBe('session-error') + expect(failure(own).kind).toBe('timeout') + }) + + it('fails closed on a session move of an owned session and interrupts it', async () => { + // #given — the outside-checkout rules re-base on the destination after a move (probe P12) + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.moved(ROOT)) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('session-error') + expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('ignores a session move of a session it does not own', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.moved(STRANGER), frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('fails closed on an unreadable permission ask for an owned session, rather than hanging on it', async () => { + // #given — no request id, so no reply can ever be sent + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit({type: 'permission.asked', data: {sessionID: ROOT, action: 'edit'}}) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('session-error') + }) + + it('keeps going past an unreadable event that names no owned session', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit({type: 'permission.asked', data: {sessionID: STRANGER}}, frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) +}) + +describe('runOpenCodeCoreV2: the stream itself', () => { + it('fails through the barrier when the stream is lost mid-run', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.failStream(new Error('socket hang up')) + await vi.advanceTimersByTimeAsync(20_000) + + // #then — the prompt keeps running server-side, so the root was interrupted and confirmed + const error = failure(run) + expect(error.kind).toBe('stream-ended') + expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('fails as stream-ended when the stream closes before the root finishes', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.close() + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('stream-ended') + expect(run.interrupt).toHaveBeenCalled() + }) + + it('fails when a second server.connected shows the stream was replaced', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(SERVER_CONNECTED) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('stream-ended') + }) + + it('fails as stream-ended through the barrier when nothing arrives for the silence window', async () => { + // #given + const run = startRun({streamSilenceTimeoutMs: 30_000}) + await vi.advanceTimersByTimeAsync(10) + + // #when + await vi.advanceTimersByTimeAsync(31_000) + await vi.advanceTimersByTimeAsync(20_000) + + // #then + expect(failure(run).kind).toBe('stream-ended') + expect(run.interrupt).toHaveBeenCalled() + }) + + it('treats a heartbeat as a sign of life, so a quiet but live stream is not cut', async () => { + // #given + const run = startRun({streamSilenceTimeoutMs: 30_000}) + await vi.advanceTimersByTimeAsync(10) + + // #when — a heartbeat every 15 s for two minutes, then the turn ends + for (let i = 0; i < 8; i += 1) { + await vi.advanceTimersByTimeAsync(15_000) + run.emit(HEARTBEAT) + } + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('closes the event subscription on every exit', async () => { + // #given + const run = startRun() + await vi.advanceTimersByTimeAsync(10) + const signal = run.signalOfSubscription() + + // #when + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(signal?.aborted).toBe(true) + }) +}) + +describe('runOpenCodeCoreV2: unrelated forms and approvals do not touch a plain run', () => { + it('leaves a coordinator that was never asked alone', async () => { + // #given + const coordinator = makeCoordinator() + const run = startRun({coordinator}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.succeeded()) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(coordinator.onPermissionAsked).not.toHaveBeenCalled() + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.ts b/packages/gateway/src/execute/run-core-v2.ts new file mode 100644 index 0000000000..f5947dd6d7 --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.ts @@ -0,0 +1,1283 @@ +/** + * Execute+stream core for the gateway on OpenCode V2 (v2.2.0): the sibling of `run-core.ts`. + * + * Responsibility boundary, unchanged: this owns session creation, prompt send, event subscription, event → sink routing + * and resolution. It does NOT own the lock, run-state lifecycle, heartbeat, mention routing or the authorization gate; + * those live in `run.ts` and are shared by both generations. It throws the same `RunCoreError`, so `run.ts` maps `kind` + * to coarse Discord replies exactly as before. + * + * What V2 changes, and where it shows: + * - The wire. One HTTP API under `/api/*` and one SSE stream (`GET /api/event`) for EVERY location on the server, so + * ownership (the root, or a child this run adopted) is what keeps a stranger's events out. `runtime/event-v2.ts` maps + * frames to a small domain union; this loop never reads a raw event name. + * - Completion. There is no `session.idle`. A root that finished a turn is `session.execution.succeeded`, a failed one + * `execution.failed`, a stopped one `execution.interrupted` with a reason. + * - Stop. `interrupt` replies `{interrupted: false}` for an idle session AND for a prompt not admitted yet, so it is a + * delivery receipt, never a stop. A stop is confirmed in `root-stop-v2.ts` by an ended execution plus absence from the + * active list, and never by an interrupt with reason `shutdown`. + * - Code Mode. Plugin and MCP tools run inside one `execute` call, so a tool line comes from the calls listed in the + * call's `metadata.toolCalls[]`, not from the wrapper. `shell`, `read`, `edit`, `question` and `subagent` are direct + * tools. A nested approval is its own request, keyed by request id, never by the `execute` call id. + * - Questions. The `question` tool asks a form; a reply is a form reply and a reject is a form cancel. Any other form + * kind is cancelled with a visible notice, since nobody can fill it in here. + * - Reasoning. It has its own events and carries no text into this loop, so it cannot reach the reply. + * - A session move. The outside-checkout rules re-base on the destination, so a moved owned session fails the run. + * + * Everything else is parity with V1 and is commented where it lives: the termination barrier and its quarantine, the + * cold-abort rule (#1958), the silence watchdog, eager subscribe, bounded and guarded reconcile passes, the drain gate + * and its wait reason, owned children marked `unknown` on error, and the human-wait gauge that pauses the watchdog. + */ + +import type {OwnershipLedger, RemoteOpenCodeV2Client, V2CallError, V2DomainEvent, V2FormField} from '@fro-bot/runtime' +import type {PermissionCoordinator} from '../approvals/coordinator.js' +import type {QuestionAskedRequest, QuestionCoordinator} from '../approvals/question-coordinator.js' +import type {TerminalListener} from '../approvals/request-gate.js' +import type {GatewayLogger} from '../discord/client.js' +import type {DrainCompletionV2} from './drain-completion-v2.js' +import type {ExtractedToolPart} from './format-part.js' +import type {ProviderFailure, ProviderFailureReason} from './provider-failure.js' +import type {FormDirectoryV2} from './question-client-v2.js' +import type {StreamTerminal} from './root-stop-v2.js' +import type {CoreStreamSink, RunCoreErrorKind} from './run-core.js' +import { + createInactivityTimer, + createLedgerReconciler, + createOwnershipLedger, + createV2LedgerReconcileAdapter, + mapV2Event, + mapV2EventStream, + readBackgroundDispatch, + settleLedgerFromSubagentNotice, + toErrorMessage, +} from '@fro-bot/runtime' +import {parsePermissionReply, parsePermissionRequest} from '../approvals/coordinator.js' +import {parseQuestionRequest, safeLogId} from '../approvals/question-coordinator.js' +import {createDrainCompletionV2} from './drain-completion-v2.js' +import {formatToolPart} from './format-part.js' +import {reconcileLivePass} from './live-reconcile.js' +import {failureFromV2Error} from './provider-failure-v2.js' +import {createFormDirectoryV2} from './question-client-v2.js' +import {startQuarantineRootWatchV2} from './root-stop-v2.js' +import { + awaitFirstEvent, + EVENT_STREAM_CONNECT_TIMEOUT_MS, + makeAbortableStream, + resumeWith, + RunCoreError, + wrapLedgerWithHooks, +} from './run-core.js' +import {toRuntimeLogger} from './runtime-logger.js' +import {settleOwnedSessionsV2} from './settle-owned-sessions-v2.js' +import {createTextBoundaryTracker} from './text-boundary.js' +import {clearWaitReason, setWaitReason} from './wait-reason-registry.js' + +/** Which kind of request a human wait is held for. */ +type HumanWaitKind = 'approval' | 'question' + +/** Bound on a form cancel the loop fires and does not await. */ +const FORM_CANCEL_TIMEOUT_MS = 10_000 + +/** Sent to the model when a form it asked cannot be answered here, so its turn continues instead of waiting. */ +const UNSUPPORTED_FORM_MESSAGE = 'This client cannot answer this kind of request. Continue without it.' +const NO_QUESTION_HANDLER_MESSAGE = 'This client cannot answer questions right now. Continue without an answer.' + +/** The unsupported-form notice shown to the user. Fixed text: the form title is model- or plugin-controlled. */ +const UNSUPPORTED_FORM_NOTICE = '⚠ An agent request that needs input could not be shown here and was cancelled.' + +/** An interrupt or failure the gateway did not cause (see the `execution_interrupted` branch). */ +const INTERRUPTED_FAILURE: ProviderFailure = {reason: 'session error', errorName: 'MessageAbortedError'} + +/** Parameters for the V2 execute+stream core. */ +export interface RunCoreV2Params { + /** Client for the remote OpenCode V2 server (attach result from `opencode-attach-v2.ts`). */ + readonly client: RemoteOpenCodeV2Client + /** Absolute path to the workspace repo checkout. The session is created at this location. */ + readonly directory: string + /** Pre-built prompt text. Must be non-empty — callers validate before calling. */ + readonly promptText: string + /** Streaming sink that receives text deltas. The caller flushes it after this resolves. */ + readonly sink: CoreStreamSink + /** Abort signal — aborts event iteration when signalled. */ + readonly signal: AbortSignal + /** Injected logger. Internal details only — never leak session internals to Discord. */ + readonly logger: GatewayLogger + /** The gateway run this core is executing. Stamped on the barrier's log lines. */ + readonly runId?: string + /** Only `approval-required` is supported; absent means the same. */ + readonly approvalMode?: 'approval-required' + /** Permission coordinator. Required: fail-closed before any session is created when absent. */ + readonly coordinator?: PermissionCoordinator + /** + * Question coordinator. When absent, a `question` form is cancelled with a message so the model continues, rather + * than left to block until the run's deadline. + */ + readonly questions?: QuestionCoordinator + /** + * The open question forms of this run. The loop records each form it forwards so the question effects can address + * the reply by session and form id. Defaults to a private directory when the effects are not wired. + */ + readonly forms?: FormDirectoryV2 + /** Subscription to the request gate's terminal notifications; releases the matching human wait. */ + readonly onHumanWaitTerminal?: (listener: TerminalListener) => () => void + /** Silence watchdog for the event stream (never paused). A stream with no frame, heartbeats included, is dead. */ + readonly streamSilenceTimeoutMs?: number + /** Called with each essential tool-action summary as it is appended. */ + readonly onActivity?: (summary: string) => void + /** Called when the busy state changes. */ + readonly onBusy?: (busy: boolean) => void + /** Inactivity timeout: aborts with `inactivity-timeout` when no text, tool or reasoning activity arrives. */ + readonly inactivityTimeoutMs?: number + /** Ownership ledger for background subagents this run dispatches. When present the run drains before it completes. */ + readonly ownershipLedger?: OwnershipLedger + /** Called after every ledger mutation with the root id and the not-yet-settled owned session ids. */ + readonly onOwnershipChange?: (info: { + readonly rootSessionId: string + readonly ownedSessionIds: readonly string[] + }) => void +} + +// --------------------------------------------------------------------------- +// Pure helpers +// --------------------------------------------------------------------------- + +/** The names the Discord tool renderer knows: V2 `shell` is V1 `bash`, V2 `subagent` is V1 `task`. */ +function rendererToolName(name: string): string { + if (name === 'shell') return 'bash' + if (name === 'subagent') return 'task' + return name +} + +function titleFromInput(input: Readonly> | null): string | undefined { + const title = input?.title + if (typeof title === 'string' && title.length > 0) return title + return undefined +} + +/** + * Fail-soft tool-render helper: catches any exception (malformed input), logs `{tool, status}` only, and appends + * nothing on error. A throwing renderer must never abort the event stream. + */ +function appendToolSummary( + part: ExtractedToolPart, + sink: CoreStreamSink, + logger: GatewayLogger, + onActivity?: (summary: string) => void, +): void { + let summary: string | null + try { + summary = formatToolPart(part) + } catch { + logger.warn({tool: part.tool, status: part.state.status}, 'run-core: formatToolPart threw — skipping tool line') + return + } + if (summary !== null && summary.length > 0) { + sink.append(`\n${summary}\n`) + onActivity?.(summary) + } +} + +/** The V1-shaped payload the existing question parser reads, built from a question form's fields. */ +function questionPayloadFromForm(formId: string, sessionId: string, fields: readonly V2FormField[]): unknown { + return { + id: formId, + sessionID: sessionId, + questions: fields.map(field => ({ + question: field.description ?? field.title ?? '', + header: field.title ?? '', + options: field.options.map(option => ({label: option.label, description: option.description ?? ''})), + multiple: field.type === 'multiselect', + custom: true, + })), + } +} + +/** The answers a replied form carries, per question in field order, for the question echo. */ +function answersFromForm( + fields: readonly V2FormField[], + answer: Readonly> | null, +): readonly (readonly string[])[] { + return fields.map(field => { + const value = answer?.[field.key] + if (Array.isArray(value)) return value.filter((item): item is string => typeof item === 'string') + if (typeof value === 'string') return [value] + return [] + }) +} + +function describeCallError(error: V2CallError): string { + return error.kind === 'auth' || error.kind === 'http' ? `${error.kind} ${error.status}` : error.kind +} + +// --------------------------------------------------------------------------- +// Core +// --------------------------------------------------------------------------- + +export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise { + const { + client, + directory, + promptText, + sink, + signal, + logger, + runId, + coordinator, + questions, + onHumanWaitTerminal, + approvalMode, + onActivity, + onBusy, + inactivityTimeoutMs, + streamSilenceTimeoutMs, + ownershipLedger, + onOwnershipChange, + } = params + const forms = params.forms ?? createFormDirectoryV2() + + // ── 0. Mode/coordinator pre-flight ──────────────────────────────────────── + // approval-required is the only supported mode and it needs a coordinator before any session or prompt exists. + if (coordinator === undefined) { + logger.error({approvalMode}, 'run-core: coordinator required — failing closed before session creation') + throw new RunCoreError( + 'missing-coordinator', + 'approval-required mode requires a PermissionCoordinator — none was provided', + ) + } + // Captured immediately after the narrowing check: narrowing does not carry into nested callbacks, this binding does. + const ownershipCoordinator: PermissionCoordinator = coordinator + + // ── 0b. Inactivity timer ─────────────────────────────────────────────────── + // Armed only once the prompt is sent (`resetInactivity` after it succeeds), so the primitive's auto-arm is paused at + // once. Paused while a human is waited on or while the run drains; see `resetInactivity`. + const inactivityTimer = createInactivityTimer({timeoutMs: inactivityTimeoutMs ?? 0}) + const inactivityArmed = inactivityTimeoutMs !== undefined && inactivityTimeoutMs > 0 + inactivityTimer.pause() + + let draining = false + const outstandingHumanWaits = new Map() + + function clearInactivity(): void { + inactivityTimer.pause() + } + + // The single re-arm path. Activity must not re-arm the watchdog while a human is waited on or while the run drains, + // or a quiet human wait / drain would trip `inactivity-timeout` before the question deadline or the run's own. + function resetInactivity(): void { + if (!inactivityArmed) return + if (draining || outstandingHumanWaits.size > 0) return + inactivityTimer.reset() + } + + // Aborts when either the wall-clock/cancel signal or the inactivity signal fires. + const combinedSignal = inactivityArmed ? AbortSignal.any([signal, inactivityTimer.signal]) : signal + + // ── 0c. Pre-flight abort check ───────────────────────────────────────────── + if (combinedSignal.aborted) { + logger.warn({}, 'run-core: signal already aborted before session creation') + throw new RunCoreError('timeout', 'Run timed out: signal was already aborted before session creation') + } + + // ── 1. Create session ────────────────────────────────────────────────────── + // The session is created at `directory`. That exact string is also what the quiescence join matches on. + let sessionId: string + try { + const created = await client.createSession({directory, signal: combinedSignal}) + if (!created.success) { + if (created.error.kind === 'auth') { + logger.error({detail: 'session.create 401'}, 'run-core: workspace proxy rejected bearer token') + throw new RunCoreError('auth', `Session create rejected: ${describeCallError(created.error)}`) + } + if (created.error.kind === 'aborted' && combinedSignal.aborted) { + throw new RunCoreError('timeout', 'Run timed out: signal aborted while creating the session') + } + throw new RunCoreError('unreachable', `Session create failed: ${describeCallError(created.error)}`) + } + sessionId = created.data.id + // Ownership (root or an adopted descendant) is what event routing consults; an unowned session reaches no handler. + coordinator.addOwnedSession(sessionId) + logger.info({sessionId}, 'run-core: session created') + } catch (error) { + if (error instanceof RunCoreError) throw error + const message = toErrorMessage(error) + logger.error({detail: message}, 'run-core: session create threw (server unreachable?)') + throw new RunCoreError('unreachable', `Session create threw: ${message}`) + } + + // ── 1b. Post-create abort check ──────────────────────────────────────────── + if (combinedSignal.aborted) { + clearInactivity() + logger.warn({sessionId}, 'run-core: signal aborted after session creation') + throw new RunCoreError('timeout', 'Run timed out: signal aborted after session creation') + } + + // ── 1c. Drain machinery — inert when no ledger is provided ───────────────── + // `drainDoneController` is a purely internal signal (never a failure) that unblocks the stream once the gate admits + // completion, kept apart from `combinedSignal`, whose abort always means timeout, inactivity or cancel. + const drainDoneController = new AbortController() + + // A ledger mutation only asks the gate to validate; it never completes the drain itself. A settled ledger means every + // child is non-live, which the server does BEFORE the parent's follow-up turn, so the ledger alone is not completion. + let drainCompletion: DrainCompletionV2 | undefined + + function persistOwnership(): void { + if (ownershipLedger === undefined) return + const ownedSessionIds = ownershipLedger + .snapshot() + .filter(entry => entry.state !== 'settled') + .map(entry => entry.sessionId) + onOwnershipChange?.({rootSessionId: sessionId, ownedSessionIds}) + } + + // Children whose completion notice was seen. A notice can precede the dispatch result on the stream; the child is then + // settled the moment it is adopted. + const noticedChildIds = new Set() + + const ledger: OwnershipLedger | undefined = + ownershipLedger === undefined + ? undefined + : wrapLedgerWithHooks( + ownershipLedger, + () => { + persistOwnership() + drainCompletion?.requestValidation() + }, + // The single place a directly observed dispatch reaches the coordinator, so its events and approvals route + // from the moment it is adopted. Reconciliation never adopts. + adoptedSessionId => ownershipCoordinator.addOwnedSession(adoptedSessionId), + ) + + const reconcileAdapter = ledger === undefined ? undefined : createV2LedgerReconcileAdapter(client.session) + const runtimeLogger = ledger === undefined ? undefined : toRuntimeLogger(logger) + // Live reconcile passes (the periodic tick and the one-shot on root idle) are bounded and write through a guarded + // ledger. Once the run tears down or leaves the loop, settle owns the ledger and a pass still in flight is inert. + let liveReconcileClosed = false + const liveReconcileOptions = + ledger === undefined || reconcileAdapter === undefined || runtimeLogger === undefined + ? undefined + : {ledger, adapter: reconcileAdapter, parentSessionId: sessionId, logger: runtimeLogger} + const reconciler = + liveReconcileOptions === undefined + ? undefined + : createLedgerReconciler({ + ...liveReconcileOptions, + runPass: async () => reconcileLivePass(liveReconcileOptions, () => liveReconcileClosed), + }) + + if (ledger !== undefined && reconcileAdapter !== undefined) { + drainCompletion = createDrainCompletionV2({ + rootSessionId: sessionId, + ledger, + adapter: reconcileAdapter, + signal: combinedSignal, + logger, + // The only path that completes a drain: an admitted validation unblocks the stream. + onAdmitted: () => { + drainDoneController.abort() + }, + // Why the gate has not admitted the run yet, for the operator status (in-process only, cleared on every exit). + onNotAdmitted: code => { + if (runId !== undefined) setWaitReason(runId, code) + }, + }) + } + + // ── 1d. Termination barrier ───────────────────────────────────────────────── + // Every RunCoreError thrown from here on goes through `throwWithBarrier`: it settles the owned sessions and, where + // the root may still be executing, interrupts the root and confirms it stopped, BEFORE the causal error escapes to + // `run.ts`. `run.ts` must never stop the heartbeat, release the lock or hand off the slot while a sibling of the + // failed session is alive and writing. If settlement cannot be confirmed within its bound, the SAME kind and message + // re-throw with `quarantined: true`. Pass-through (zero remote calls) when nothing unsettled is owned. + // + // The prompt is admitted into server scope, so closing the stream or giving up on the run does not stop it: only + // an interrupt does. A stop where the root may still be executing (`rootMayBeRunning`: the wall-clock or inactivity + // deadline, a stream that ended, a signal after the prompt was sent, an operator cancel) must therefore interrupt the + // root and confirm it before the run releases its lock and slot, even with an empty ledger. A failure where the root + // has already halted (a terminal provider error, a rejected prompt) and a clean completion keep the fast path. + // + // Follow-up window: after background work settles, the server starts a parent turn to take the notices in, which may + // be writing to the checkout again. A failure there takes the same root teardown. + const streamController = new AbortController() + + // How the root's latest execution ended on the stream, as the loop saw it. Cleared when a new execution starts. + let rootTerminal: StreamTerminal | null = null + + async function throwWithBarrier( + kind: RunCoreErrorKind, + message: string, + options: { + readonly rootMayBeRunning?: boolean + readonly providerFailureReason?: ProviderFailureReason + readonly cause?: unknown + } = {}, + ): Promise { + const {rootMayBeRunning = false, providerFailureReason, cause} = options + // Fail-close the human waits FIRST: the barrier can take up to 15 s, and until the waits are settled an `always` + // press could still persist a permission rule. Neither call is awaited; their replies are bounded by their own + // timeouts and must not delay the root interrupt. + ownershipCoordinator.dispose('run ended') + // eslint-disable-next-line no-void + void questions?.dispose('run ended') + // The run is over: close the event connection with it, whichever path got here. + streamController.abort() + liveReconcileClosed = true + reconciler?.dispose() + drainCompletion?.dispose() + const rootFollowUpOpen = + rootMayBeRunning || (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted) + const barrierLedger = ledger ?? (rootMayBeRunning ? createOwnershipLedger() : undefined) + if (barrierLedger === undefined || (barrierLedger.isDrainComplete() && !rootFollowUpOpen)) { + throw new RunCoreError(kind, message, false, providerFailureReason, cause) + } + // Background work can start root turns by itself, so nothing seen so far rules out a turn that is not on the stream + // yet. Read before settlement, which itself cancels children and so can trigger notices. + const followUpPossible = + rootFollowUpOpen && + (barrierLedger.snapshot().some(entry => entry.state !== 'settled') || + (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted)) + const settlement = await settleOwnedSessionsV2({ + client, + rootSessionId: sessionId, + ledger: barrierLedger, + logger, + ...(runId === undefined ? {} : {runId}), + ...(rootFollowUpOpen ? {confirmRootQuiescent: true} : {}), + ...(followUpPossible ? {followUpPossible: true} : {}), + streamTerminal: () => rootTerminal, + }) + if (settlement.settled) { + throw new RunCoreError(kind, message, false, providerFailureReason, cause) + } + // A root the barrier could not confirm stopped may still be preparing a prompt (an interrupt sent before the + // execution is admitted does nothing). Keep probing it for the quarantine hold, interrupting it whenever it shows + // up busy. + if (settlement.rootUnconfirmed) { + startQuarantineRootWatchV2({ + client, + adapter: createV2LedgerReconcileAdapter(client.session), + rootSessionId: sessionId, + streamTerminal: () => rootTerminal, + ...(followUpPossible ? {followUpPossible: true} : {}), + logger, + ...(runId === undefined ? {} : {runId}), + }) + } + logger.error( + {...(runId === undefined ? {} : {runId}), sessionId, kind, detail: settlement.reason}, + 'run-core: owned work could not be confirmed settled before this failure — quarantining run', + ) + throw new RunCoreError(kind, message, true, providerFailureReason, cause) + } + + // Fails the run on a provider rejection the server will not recover from (#1836). Reuses `session-error`: a new + // operator failure kind would be a contract change. Only the fixed `reason` leaves the classifier; the provider's own + // message is never logged or placed in the error. `rootMayBeRunning` only when the root may not have halted. + async function failFromProvider(failure: ProviderFailure, source: string, rootMayBeRunning = false): Promise { + logger.error( + {sessionId, source, errorName: failure.errorName, reason: failure.reason}, + 'run-core: provider rejected the request — failing run', + ) + clearInactivity() + throw await throwWithBarrier('session-error', `Provider failure: ${failure.reason}`, { + rootMayBeRunning, + providerFailureReason: failure.reason, + }) + } + + // ── 2. Subscribe to events (eager) ───────────────────────────────────────── + // The stream is connected here, before the prompt is sent: the server replays nothing to a late connection. The + // subscription's signal is the run's own deadline and cancel plus `streamController`, which every exit aborts, so a + // silence or replaced-stream failure never leaves the reader parked on a socket nobody listens to. + let eventStream: AsyncIterable + try { + const subscribed = await client.subscribeEvents({ + directory, + signal: AbortSignal.any([combinedSignal, streamController.signal]), + }) + if (!subscribed.success) { + const kind: RunCoreErrorKind = subscribed.error.kind === 'auth' ? 'auth' : 'unreachable' + if (subscribed.error.kind === 'aborted' && combinedSignal.aborted) { + clearInactivity() + throw await throwWithBarrier('timeout', 'Run timed out: signal aborted while subscribing to events') + } + logger.error({sessionId, detail: describeCallError(subscribed.error)}, 'run-core: event subscribe failed') + throw await throwWithBarrier(kind, `Event subscribe failed: ${describeCallError(subscribed.error)}`) + } + eventStream = subscribed.data + logger.info({sessionId, directory}, 'run-core: event stream subscribed') + } catch (error) { + if (error instanceof RunCoreError) throw error + const message = toErrorMessage(error) + logger.error({sessionId, detail: message}, 'run-core: event.subscribe threw') + throw await throwWithBarrier('unreachable', `Event subscribe threw: ${message}`) + } + + // ── 2b. Post-subscribe abort check ──────────────────────────────────────── + if (combinedSignal.aborted) { + clearInactivity() + logger.warn({sessionId}, 'run-core: signal aborted after event subscribe') + throw await throwWithBarrier('timeout', 'Run timed out: signal aborted after event subscribe') + } + + // ── 2c. Connect barrier ─────────────────────────────────────────────────── + // Read the first frame of ONE iterator. The server registers its listener before it emits `server.connected`, so once + // that frame is read nothing published later can be missed. The same iterator is consumed by the event loop below. + // Nothing has been sent yet, so a failure here is `unreachable` (cancel and deadline keep `timeout`). + const eventIterator = eventStream[Symbol.asyncIterator]() + const firstFrame = await awaitFirstEvent(eventIterator, combinedSignal, EVENT_STREAM_CONNECT_TIMEOUT_MS) + if (firstFrame.kind === 'aborted') { + clearInactivity() + logger.warn({sessionId}, 'run-core: signal aborted while waiting for the event stream to connect') + throw await throwWithBarrier( + 'timeout', + 'Run timed out: signal aborted while waiting for the event stream to connect', + ) + } + if (firstFrame.kind !== 'frame' || mapV2Event(firstFrame.value)?.kind !== 'connected') { + const detail = + firstFrame.kind === 'frame' + ? 'first frame was not server.connected' + : firstFrame.kind === 'error' + ? toErrorMessage(firstFrame.error) + : firstFrame.kind + logger.error({sessionId, detail}, 'run-core: event stream did not connect before the prompt') + throw await throwWithBarrier('unreachable', `Event stream did not connect: ${detail}`, { + cause: firstFrame.kind === 'error' ? firstFrame.error : undefined, + }) + } + eventStream = resumeWith(eventIterator, firstFrame.value) + + // ── 3. Send prompt ───────────────────────────────────────────────────────── + // Admission is not instant (about 270 ms on a cold location, probe P1), and an interrupt sent before it is admitted + // leaves no trace. That is why nothing below ever reads an interrupt reply as a stop. + try { + const prompted = await client.prompt({sessionId, text: promptText, directory, signal: combinedSignal}) + if (!prompted.success) { + const detail = describeCallError(prompted.error) + if (prompted.error.kind === 'aborted' && combinedSignal.aborted) { + // Cancelling the request does not prove the server never admitted the prompt: a stop where the root may be + // running, not an unreachable server. + clearInactivity() + logger.warn({sessionId, detail}, 'run-core: signal aborted while sending the prompt') + throw await throwWithBarrier('timeout', 'Run timed out: signal aborted while sending the prompt', { + rootMayBeRunning: true, + }) + } + if (prompted.error.kind === 'auth') { + logger.error({sessionId, detail: 'prompt 401'}, 'run-core: workspace proxy rejected bearer token') + throw await throwWithBarrier('auth', `Prompt rejected: ${detail}`) + } + if (prompted.error.kind === 'http' || prompted.error.kind === 'parse') { + logger.error({sessionId, detail}, 'run-core: prompt returned an error') + throw await throwWithBarrier('prompt-error', `Prompt error: ${detail}`) + } + logger.error({sessionId, detail}, 'run-core: prompt failed (server unreachable?)') + throw await throwWithBarrier('unreachable', `Prompt failed: ${detail}`) + } + logger.info({sessionId, directory}, 'run-core: prompt sent') + onBusy?.(true) + resetInactivity() + } catch (error) { + if (error instanceof RunCoreError) throw error + const message = toErrorMessage(error) + if (combinedSignal.aborted) { + clearInactivity() + logger.warn({sessionId, detail: message}, 'run-core: signal aborted while sending the prompt') + throw await throwWithBarrier('timeout', 'Run timed out: signal aborted while sending the prompt', { + rootMayBeRunning: true, + }) + } + logger.error({sessionId, detail: message}, 'run-core: prompt threw (server unreachable?)') + throw await throwWithBarrier('unreachable', `Prompt threw: ${message}`) + } + + // ── 3b. Post-prompt abort check ──────────────────────────────────────────── + if (combinedSignal.aborted) { + clearInactivity() + logger.warn({sessionId}, 'run-core: signal aborted after prompt send') + throw await throwWithBarrier('timeout', 'Run timed out: signal aborted after prompt send', { + rootMayBeRunning: true, + }) + } + + // ── 4. Consume event stream ──────────────────────────────────────────────── + // Tool name and input by call id: `session.tool.success` carries neither. + const toolCalls = new Map> | null}>() + // Inner calls of `execute` calls already shown, by `v2InnerCallKey`. + const shownInnerCalls = new Set() + // Text parts that received at least one delta, by message and ordinal: an end event repeats their text. + const streamedTextParts = new Set() + + // Segment boundaries: the sinks are append-only and see only strings, so separate text parts would otherwise run + // together. The separator is inserted once, through the sink. See `text-boundary.ts` for the rule. + const textBoundary = createTextBoundaryTracker() + const trackedSink: CoreStreamSink = { + append: text => { + sink.append(text) + textBoundary.noteAppended(text) + }, + } + + function appendSegmentText(segmentKey: string | null, text: string): void { + const emit = textBoundary.append(segmentKey, text) + if (emit.length > 0) sink.append(emit) + } + + // Observability counters (#1101): disambiguate a genuine workspace hang (zero events) from an event-routing gap + // (events arrived but none reset the inactivity timer). + let totalEvents = 0 + let activityEvents = 0 + let serverConnectedCount = 0 + let lastEventType: string | undefined + + function markActivity(): void { + activityEvents += 1 + resetInactivity() + } + + // Human-wait gauge: the request ids a human still has to settle, approvals and questions alike. The inactivity + // watchdog is paused while the map is non-empty and, outside drain, re-armed with a fresh window only when the last + // id is released. Keying by request id keeps both directions idempotent. The gauge never influences drain: while + // `draining` the watchdog stays paused whatever is released, and the hard deadline is the only bound. + let humanWaitsClosed = false + + function holdHumanWait(requestId: string, kind: HumanWaitKind): void { + outstandingHumanWaits.set(requestId, kind) + onBusy?.(false) + clearInactivity() + } + + function releaseHumanWait(requestId: string): void { + if (humanWaitsClosed) return + if (!outstandingHumanWaits.delete(requestId)) return + if (draining) return + if (outstandingHumanWaits.size > 0) return + onBusy?.(true) + markActivity() + } + + // Terminal notifications from the request gate release the wait for any settlement path, including the ones that + // produce no server echo (deadline skip, failed reply, teardown). + const unsubscribeHumanWaitTerminal = onHumanWaitTerminal?.(event => { + releaseHumanWait(event.requestID) + }) + + // True for the root, or a descendant this run's ledger adopted. The boundary that keeps a stranger's tool calls, + // approvals and forms out of this run's handling and Discord thread. + function isOwnedSession(eventSessionID: string | null): boolean { + return eventSessionID !== null && ownershipCoordinator.isOwned(eventSessionID) + } + + /** Real run activity on an owned session: re-arms the watchdog, and invalidates the drain gate's idle evidence. */ + function noteActivity(eventSessionId: string): void { + markActivity() + if (eventSessionId === sessionId) drainCompletion?.noteRootActivity() + } + + function cancelUnanswerableForm(formId: string, formSessionId: string, message: string): void { + // Fire-and-continue: awaiting would starve the stream. A failed cancel leaves the form pending until the run's + // deadline, which is what V1 did for every unanswerable question. + client + .cancelForm({ + sessionId: formSessionId, + formId, + message, + signal: AbortSignal.timeout(FORM_CANCEL_TIMEOUT_MS), + }) + .then( + result => { + if (!result.success) { + logger.warn( + {formId: safeLogId(formId), sessionID: safeLogId(formSessionId), error: result.error.kind}, + 'run-core: form cancel returned an error', + ) + } + }, + () => { + logger.warn({formId: safeLogId(formId)}, 'run-core: form cancel threw') + }, + ) + } + + // The silence watchdog starts here (the primitive arms on creation), immediately before the `try` whose `finally` + // disposes it, so nothing can throw in between and leak it. It feeds only the loop's own abort: the wall-clock and + // activity signals keep their meaning for every check on `combinedSignal`. + const silenceTimer = createInactivityTimer({timeoutMs: streamSilenceTimeoutMs ?? 0}) + + // The stream is wrapped so the loop does not block indefinitely on a silent server when a signal fires mid-wait. The + // abort signal also includes `drainDoneController.signal`, so the loop unblocks the instant the gate admits. + const abortableStream = makeAbortableStream( + eventStream, + AbortSignal.any([ + combinedSignal, + ...(ledger === undefined ? [] : [drainDoneController.signal]), + silenceTimer.signal, + ]), + ) + + // Any frame, heartbeats included, proves the stream is alive. Before type dispatch, so no branch can skip it. + async function* observeFrames(source: AsyncIterable): AsyncGenerator { + for await (const frame of source) { + silenceTimer.reset() + totalEvents += 1 + lastEventType = typeof frame === 'object' && frame !== null && 'type' in frame ? String(frame.type) : undefined + yield frame + } + } + + const events = mapV2EventStream(observeFrames(abortableStream), { + logger: toRuntimeLogger(logger), + isOwnedSession, + }) + + function handleToolStart(event: Extract): void { + toolCalls.set(event.callId, {name: event.name, input: null}) + } + + function showInnerCalls(event: { + readonly callId: string + readonly calls: readonly { + readonly key: string + readonly tool: string + readonly status: string + readonly input: Readonly> | null + }[] + }): void { + for (const inner of event.calls) { + if (inner.status === 'running' || shownInnerCalls.has(inner.key)) continue + shownInnerCalls.add(inner.key) + appendToolSummary( + { + tool: inner.tool, + state: { + ...(inner.input === null ? {} : {input: {...inner.input}}), + // The generic renderer prints a call's input alone; the title is what says which tool ran. + title: inner.tool, + status: inner.status === 'error' ? 'error' : 'completed', + }, + }, + trackedSink, + logger, + onActivity, + ) + } + } + + try { + for await (const event of events) { + // Check abort at the top of each iteration so we exit as soon as the signal fires, even if the stream keeps + // yielding events. + if (combinedSignal.aborted) break + + switch (event.kind) { + case 'connected': { + // The server announces a stream once, when it opens. A second announcement means the connection was + // replaced, and events in between were never delivered: this run can no longer trust what it saw. + serverConnectedCount += 1 + if (serverConnectedCount > 1) { + logger.error( + {sessionId, totalEvents, activityEvents, lastEventType}, + 'run-core: event stream announced itself again — stream was replaced', + ) + throw await throwWithBarrier( + 'stream-ended', + 'Event stream was replaced (a second server.connected arrived)', + {rootMayBeRunning: true}, + ) + } + break + } + + case 'text_delta': { + if (!isOwnedSession(event.sessionId)) break + const partKey = `${event.messageId ?? event.sessionId}:${event.ordinal}` + streamedTextParts.add(partKey) + appendSegmentText(event.messageId === null ? null : `part:${partKey}`, event.delta) + noteActivity(event.sessionId) + break + } + + case 'text_ended': { + if (!isOwnedSession(event.sessionId)) break + // The end event repeats the text deltas already delivered. A part that ended without any delta (a provider + // that does not stream) is appended whole, once, so its text is not lost. + const partKey = `${event.messageId ?? event.sessionId}:${event.ordinal}` + if (!streamedTextParts.has(partKey) && event.text.length > 0) { + streamedTextParts.add(partKey) + appendSegmentText(event.messageId === null ? null : `part:${partKey}`, event.text) + } + noteActivity(event.sessionId) + break + } + + case 'reasoning_activity': { + // Carries no text, so there is nothing to suppress: it can only keep the watchdog honest. + if (isOwnedSession(event.sessionId)) noteActivity(event.sessionId) + break + } + + case 'tool_started': { + if (isOwnedSession(event.sessionId)) handleToolStart(event) + break + } + + case 'tool_called': { + if (!isOwnedSession(event.sessionId)) break + const known = toolCalls.get(event.callId) + toolCalls.set(event.callId, {name: known?.name ?? null, input: event.input}) + logger.debug({callId: event.callId, tool: known?.name}, 'run-core: tool called') + break + } + + case 'tool_progress': { + if (!isOwnedSession(event.sessionId)) break + showInnerCalls(event) + noteActivity(event.sessionId) + break + } + + case 'tool_finished': { + if (!isOwnedSession(event.sessionId)) break + const info = toolCalls.get(event.callId) + toolCalls.delete(event.callId) + const name = info?.name ?? null + logger.debug({callId: event.callId, tool: name, outcome: event.outcome}, 'run-core: tool finished') + + if (name === 'execute' || event.calls.length > 0) { + // Code Mode: the wrapper is not a tool line; the calls it made are. + showInnerCalls(event) + } else if (name !== null) { + // Background dispatch observed: a `subagent` call that finished successfully with running metadata. Adopt + // the child; the wrapped ledger's `onAdopted` hook registers it with the coordinator. This is the ONLY + // path that calls `ledger.adopt` — reconciliation never adopts an untracked session. + const dispatch = ledger === undefined ? null : readBackgroundDispatch(name, event) + if (ledger !== undefined && dispatch !== null) { + const description = info?.input?.description + const label = typeof description === 'string' && description.length > 0 ? description : 'background task' + ledger.adopt(dispatch.childSessionId, label) + if (noticedChildIds.has(dispatch.childSessionId)) ledger.settle(dispatch.childSessionId) + logger.info( + {sessionId, childSessionId: dispatch.childSessionId, label}, + 'run-core: background dispatch observed -- adopted into ownership ledger', + ) + } + const title = titleFromInput(info?.input ?? null) + appendToolSummary( + { + tool: rendererToolName(name), + state: { + ...(info?.input === null || info?.input === undefined ? {} : {input: {...info.input}}), + ...(title === undefined ? {} : {title}), + status: event.outcome === 'failed' ? 'error' : 'completed', + }, + }, + trackedSink, + logger, + onActivity, + ) + } + noteActivity(event.sessionId) + break + } + + case 'permission_asked': { + if (!isOwnedSession(event.sessionId)) break + // approval-required mode: route to the coordinator. The request is keyed by REQUEST id: two approvals raised + // from one `execute` call share the call id and are two requests. + const request = parsePermissionRequest({ + id: event.requestId, + sessionID: event.sessionId, + permission: event.action === 'shell' ? 'bash' : event.action, + patterns: event.resources, + }) + if (request === null) { + logger.warn({eventType: 'permission.asked'}, 'run-core: permission.asked payload malformed — skipping') + break + } + // Pauses typing and the inactivity timer until every outstanding approval is released. + holdHumanWait(request.requestID, 'approval') + // Fire-and-continue: do NOT await — awaiting would starve the stream. + // eslint-disable-next-line no-void + void coordinator.onPermissionAsked(request) + logger.info({requestID: request.requestID}, 'run-core: permission.asked forwarded to coordinator') + break + } + + case 'permission_replied': { + // Authoritative settlement — route to the coordinator. + if (!isOwnedSession(event.sessionId)) break + const reply = parsePermissionReply({ + requestID: event.requestId, + sessionID: event.sessionId, + reply: event.reply, + }) + if (reply === null) { + logger.warn({eventType: 'permission.replied'}, 'run-core: permission.replied payload malformed — skipping') + break + } + releaseHumanWait(reply.requestID) + coordinator.onPermissionReplied(reply) + logger.info({requestID: reply.requestID, reply: reply.reply}, 'run-core: permission.replied forwarded') + break + } + + case 'form_asked': { + if (!isOwnedSession(event.sessionId)) { + // A form from a session this run does not own must not reach this run's operators. Logged because the + // asking session is blocked on it: ids and a reason code only. + logger.warn( + {formId: safeLogId(event.formId), sessionID: safeLogId(event.sessionId), reason: 'unowned-session'}, + 'run-core: form.created from a session this run does not own — ignoring', + ) + break + } + if (event.formKind !== 'question') { + // Nobody can fill in a form of another kind here. Cancel it with a message so the asking step continues, + // and tell the user: a silently cancelled request would look like the agent ignoring it. + logger.warn( + {formId: safeLogId(event.formId), sessionID: safeLogId(event.sessionId), reason: 'unsupported-form-kind'}, + 'run-core: form of an unsupported kind — cancelling', + ) + cancelUnanswerableForm(event.formId, event.sessionId, UNSUPPORTED_FORM_MESSAGE) + trackedSink.append(`\n${UNSUPPORTED_FORM_NOTICE}\n`) + onActivity?.(UNSUPPORTED_FORM_NOTICE) + break + } + if (questions === undefined) { + logger.warn( + {formId: safeLogId(event.formId), sessionID: safeLogId(event.sessionId), reason: 'no-question-handler'}, + 'run-core: question form but no question handler is configured — cancelling', + ) + cancelUnanswerableForm(event.formId, event.sessionId, NO_QUESTION_HANDLER_MESSAGE) + break + } + // Recorded before anything can reply or reject: the question effects look the session and layout up by form id. + forms.remember(event.formId, {sessionId: event.sessionId, fields: event.fields}) + const parsed = parseQuestionRequest(questionPayloadFromForm(event.formId, event.sessionId, event.fields)) + if (parsed.kind === 'malformed') { + logger.warn( + {formId: safeLogId(event.formId), sessionID: safeLogId(event.sessionId), reason: parsed.reason}, + 'run-core: question form payload malformed — rejecting', + ) + // The asking tool call is blocked on this form: reject it so the turn ends now, not at the inactivity timer. + // eslint-disable-next-line no-void + void questions.onMalformed({requestID: event.formId, sessionID: event.sessionId, reason: parsed.reason}) + break + } + const asked: QuestionAskedRequest = parsed.value + // Pauses typing and the inactivity timer until every outstanding human wait is released. + holdHumanWait(asked.requestID, 'question') + // Fire-and-continue. A question the coordinator did not hand to the gate (skipped for lack of budget, or a + // failed registration) never produces a terminal event, so release its wait here. + questions + .onAsked(asked) + .then(outcome => { + if (outcome === 'skipped' || outcome === 'failed') releaseHumanWait(asked.requestID) + }) + .catch(() => { + releaseHumanWait(asked.requestID) + }) + logger.info( + {requestID: asked.requestID, sessionID: asked.sessionID}, + 'run-core: question form forwarded to question handler', + ) + break + } + + case 'form_resolved': { + // Authoritative settlement from the server — works whether or not the gateway claimed the request. + const record = forms.lookup(event.formId) + if (record === undefined || !isOwnedSession(event.sessionId) || questions === undefined) break + questions.onEcho( + event.outcome === 'replied' + ? { + kind: 'replied', + requestID: event.formId, + sessionID: event.sessionId, + answers: answersFromForm(record.fields, event.answer), + } + : {kind: 'rejected', requestID: event.formId, sessionID: event.sessionId}, + ) + // The echo is proof the server is unblocked, so release even if the gate had no entry for it. + releaseHumanWait(event.formId) + forms.forget(event.formId) + logger.info({requestID: safeLogId(event.formId), echo: event.outcome}, 'run-core: form echo forwarded') + break + } + + case 'subagent_notice': { + // The server's own statement that a child ended, read from metadata and never from text. Every terminal + // state settles the entry (a cancelled child included). + if (!isOwnedSession(event.sessionId)) break + noticedChildIds.add(event.notice.childSessionId) + // The gate hears it first: the notice must be registered before the settle can ask it to validate. + drainCompletion?.noteNotice(event.notice, event.inboxId) + if (ledger !== undefined) settleLedgerFromSubagentNotice(ledger, event.notice) + markActivity() + logger.info( + {sessionId, childSessionId: event.notice.childSessionId, state: event.notice.state}, + 'run-core: child completion notice observed', + ) + break + } + + case 'inbox_delivered': { + if (event.sessionId === sessionId) drainCompletion?.noteInboxDelivered(event.inboxId) + break + } + + case 'execution_started': { + if (event.sessionId === sessionId) { + rootTerminal = null + drainCompletion?.noteRootActivity() + } + break + } + + case 'execution_succeeded': { + // Deliberately root-scoped, NOT an ownership check: a descendant finishing a turn must never end the run + // while the root is still working. Root success is the signal to CONSIDER finishing; whether that is allowed + // is the ledger's call, below. + if (event.sessionId !== sessionId) break + rootTerminal = 'succeeded' + // A run that never adopted a dispatch (no ledger, or an empty one) completes on the root's success. Once ANY + // dispatch was adopted, a settled ledger is not enough: see the drain-completion gate. + if (ledger === undefined || drainCompletion === undefined || ledger.snapshot().length === 0) { + logger.info( + {sessionId, totalEvents, activityEvents, lastEventType}, + 'run-core: root execution succeeded — stream complete', + ) + onBusy?.(false) + clearInactivity() + return + } + + // A background dispatch was adopted: enter (or remain in) drain rather than completing. The run stays alive — + // slot, lease and approval routing continue — until the gate admits success or the run's deadline expires. + const ledgerSettled = ledger.isDrainComplete() + if (!draining) { + draining = true + logger.info( + {sessionId, outstanding: ledger.outstanding(), totalEvents, activityEvents}, + ledgerSettled + ? 'run-core: root idle with background work settled — awaiting completion notice and root freshness' + : 'run-core: root idle with owned work outstanding — draining', + ) + onBusy?.(false) + clearInactivity() + drainCompletion.beginDrain() + } + + // Root idle is evidence only for the generation it arrives in: stamp the current revision. + drainCompletion.noteRootIdle() + + // Immediate reconcile pass so already-finished background work settles without waiting for the interval. + // Fire-and-forget: its mutations (via the wrapped ledger) trigger persistence and validation on their own. + if (!ledgerSettled && liveReconcileOptions !== undefined) { + // eslint-disable-next-line no-void + void reconcileLivePass(liveReconcileOptions, () => liveReconcileClosed) + } + + // Validate now that this generation has idle evidence. Coalesced: at most one in flight. + drainCompletion.requestValidation() + break + } + + case 'execution_failed': { + if (event.sessionId === sessionId) { + rootTerminal = 'failed' + throw await failFromProvider(failureFromV2Error(event.error), 'session.execution.failed') + } + if (isOwnedSession(event.sessionId)) { + // A child's failure does not end the root's turn. It is evidence something went wrong, not proof the child + // stopped writing, so the entry is marked `unknown` — never `settled` — and the root learns the outcome from + // the child's notice. The drain settles the entry once reconciliation sees it stop, or cancels it at the + // deadline. + ledger?.markUnknown(event.sessionId) + logger.warn( + {sessionId, childSessionId: event.sessionId}, + 'run-core: owned child reported a terminal execution failure — marked unknown, run continues', + ) + } + break + } + + case 'execution_interrupted': { + if (event.sessionId === sessionId) { + rootTerminal = event.reason + // An interrupt the gateway did not send. The run's own stop ends the loop before this is read, so one that + // arrives here came from another client, or from the server (reason `shutdown`, which leaves the claim held + // and the execution resumable, so the root may not have stopped). + logger.error({sessionId, reason: event.reason}, 'run-core: root execution was interrupted — failing run') + throw await failFromProvider( + INTERRUPTED_FAILURE, + 'session.execution.interrupted', + event.reason === 'shutdown', + ) + } + if (isOwnedSession(event.sessionId)) { + ledger?.markUnknown(event.sessionId) + logger.warn( + {sessionId, childSessionId: event.sessionId, reason: event.reason}, + 'run-core: owned child was interrupted — marked unknown, run continues', + ) + } + break + } + + case 'retry_scheduled': { + // A retry is not a failure: the terminal event decides (see `provider-failure-v2.ts`). It is activity, and the + // root may be mid-backoff, so it is logged for the operator. + if (isOwnedSession(event.sessionId)) { + logger.warn( + {sessionId: event.sessionId, attempt: event.attempt}, + 'run-core: provider retry scheduled — waiting', + ) + } + break + } + + case 'step_failed': { + // Informational: a failed step is followed by either a retry or the execution's own terminal event. + if (isOwnedSession(event.sessionId)) { + logger.warn( + {sessionId: event.sessionId}, + 'run-core: a model step failed — waiting for the execution outcome', + ) + } + break + } + + case 'session_moved': { + // An owned move is upgraded to `fatal` by the mapper; one that reaches here belongs to a stranger. + break + } + + case 'fatal': { + // The outside-checkout rules re-base on the destination (probe P12), so the run can no longer be trusted to + // stay inside its sandbox. The barrier interrupts the root and every owned child, then the run fails. + logger.error({sessionId, movedSessionId: event.sessionId}, 'run-core: an owned session moved — failing run') + clearInactivity() + throw await throwWithBarrier('session-error', 'An owned session changed location during the run', { + rootMayBeRunning: true, + }) + } + + case 'malformed': { + // A known event whose payload could not be read (the mapper already logged the type and reason, never the + // payload). One that names an owned session and could hide a request nobody can answer fails closed: the + // asking tool call would block until the deadline. + const safetyRelevant = + event.eventType === 'permission.asked' || + event.eventType === 'form.created' || + event.eventType === 'session.moved' + if (safetyRelevant && isOwnedSession(event.sessionId)) { + logger.error( + {sessionId, eventType: event.eventType}, + 'run-core: an unreadable event from an owned session could hide a request — failing run', + ) + clearInactivity() + throw await throwWithBarrier('session-error', 'An unreadable event from an owned session', { + rootMayBeRunning: true, + }) + } + break + } + } + } + } catch (error) { + // A rejected stream or an unexpected throw in the loop body is not a RunCoreError. It must not escape raw: `run.ts` + // would treat it as an unquarantined failure and release the lock and slot while the root, whose prompt keeps + // running server-side, may still be writing the checkout. + if (error instanceof RunCoreError) throw error + const message = toErrorMessage(error) + clearInactivity() + logger.error({sessionId, detail: message}, 'run-core: event loop failed unexpectedly') + throw await throwWithBarrier('stream-ended', `Event stream failed: ${message}`, { + rootMayBeRunning: true, + cause: error, + }) + } finally { + // The timers are always disposed on loop exit (normal, break, or throw). + inactivityTimer.dispose() + silenceTimer.dispose() + // Every exit of the loop closes the connection: the reader is otherwise left parked on a socket. + streamController.abort() + liveReconcileClosed = true + reconciler?.dispose() + // No validation result may admit success once the loop has exited, and its retry timer must not leak. + drainCompletion?.dispose() + // A run that is no longer draining has no wait reason, whatever way the loop ended. + if (runId !== undefined) clearWaitReason(runId) + // The watchdog is gone: stop reacting to gate notifications and late releases. + humanWaitsClosed = true + unsubscribeHumanWaitTerminal?.() + // Release whitespace still held for segments that never became visible, on EVERY exit. + const heldTail = textBoundary.flush() + if (heldTail.length > 0) sink.append(heldTail) + } + + // Drain completed successfully: the gate admitted and `drainDoneController` unblocked the stream — NOT a failure. + // Checked before `combinedSignal.aborted` because both signals feed the loop's abort and only one can be responsible. + if (!combinedSignal.aborted && drainDoneController.signal.aborted) { + logger.info( + {sessionId, totalEvents, activityEvents, lastEventType}, + 'run-core: drain complete — owned work settled', + ) + onBusy?.(false) + clearInactivity() + return + } + + // The silence watchdog is classified by its own signal, ahead of the drain-timeout, inactivity and wall-clock + // branches: a silent stream is a lost stream whichever of those deadlines fired alongside it. It sits after the + // drain-complete success on purpose: a drain the gate admitted in the same tick is a completed run. + if (silenceTimer.signal.aborted) { + logger.error( + {sessionId, totalEvents, activityEvents, lastEventType, silenceMs: streamSilenceTimeoutMs}, + 'run-core: event stream silent — failing the run', + ) + throw await throwWithBarrier( + 'stream-ended', + `Event stream silent for ${Math.round((streamSilenceTimeoutMs ?? 0) / 1000)}s`, + {rootMayBeRunning: true}, + ) + } + + // Stream exhausted (loop exited normally or via break). Distinguish timeout from premature close. + if (combinedSignal.aborted) { + if (ledger !== undefined && draining) { + // The run's own deadline covers execution AND drain. Cancelling and confirming every unsettled entry (outstanding + // AND unknown) lives in `throwWithBarrier`, which cancels per entry rather than with a tree-cancel. + logger.warn( + {sessionId, outstanding: ledger.outstanding(), unknown: ledger.unknown(), totalEvents, activityEvents}, + 'run-core: drain deadline expired — cancelling unsettled owned work, run reports incomplete', + ) + throw await throwWithBarrier('drain-timeout', 'Run timed out while draining outstanding owned work') + } + + // Inactivity is the tighter bound (always < hard ceiling), so on the rare both-aborted tick we attribute to it. + if (inactivityArmed && inactivityTimer.signal.aborted) { + logger.warn( + {sessionId, totalEvents, activityEvents, lastEventType}, + 'run-core: stream ended due to inactivity timeout', + ) + throw await throwWithBarrier('inactivity-timeout', 'Run timed out: no activity within the inactivity window', { + rootMayBeRunning: true, + }) + } + logger.warn({sessionId, totalEvents, activityEvents, lastEventType}, 'run-core: stream ended due to timeout signal') + throw await throwWithBarrier('timeout', 'Run timed out: event stream aborted by timeout signal', { + rootMayBeRunning: true, + }) + } + + // Stream closed without a root success and not aborted by us → the server may still be working; fail so the run is + // not silently completed. + logger.error( + {sessionId, totalEvents, activityEvents, lastEventType}, + 'run-core: event stream closed before the root finished', + ) + throw await throwWithBarrier('stream-ended', 'Event stream closed before the root execution finished', { + rootMayBeRunning: true, + }) +} diff --git a/packages/gateway/src/execute/run-core.ts b/packages/gateway/src/execute/run-core.ts index ac9406f04a..a4b1d87ed4 100644 --- a/packages/gateway/src/execute/run-core.ts +++ b/packages/gateway/src/execute/run-core.ts @@ -1719,7 +1719,7 @@ export async function awaitFirstEvent( } /** An iterable over `iterator` that yields `first` (already read from it) before anything else, then the rest. */ -function resumeWith(iterator: AsyncIterator, first: unknown): AsyncIterable { +export function resumeWith(iterator: AsyncIterator, first: unknown): AsyncIterable { let pending = true return { [Symbol.asyncIterator]: () => ({ @@ -1745,7 +1745,10 @@ function resumeWith(iterator: AsyncIterator, first: unknown): AsyncIter * wrapper the `for await` loop only checks `signal.aborted` AFTER an event * arrives, meaning a timed-out run can block indefinitely on a quiet stream. */ -async function* makeAbortableStream(stream: AsyncIterable, signal: AbortSignal): AsyncGenerator { +export async function* makeAbortableStream( + stream: AsyncIterable, + signal: AbortSignal, +): AsyncGenerator { const iterator = stream[Symbol.asyncIterator]() try { diff --git a/packages/gateway/src/execute/run.ts b/packages/gateway/src/execute/run.ts index e640846493..a735e4d4b0 100644 --- a/packages/gateway/src/execute/run.ts +++ b/packages/gateway/src/execute/run.ts @@ -23,6 +23,7 @@ import type { import type {ListBackupsFn, PreviewRecoveryFn, RecoverFn} from './checkout-recovery.js' import type {ConcurrencyRegistry} from './concurrency.js' import type {LaunchAdmission, LaunchWorkRequest, PostReplyFactory, ReplySink, StatusSink} from './launch-types.js' +import type {OpenCodeGeneration} from './opencode-generation.js' import type {CheckoutPreparation, CheckoutProvenance} from './provenance.js' import type {ChannelQueue} from './queue.js' import type {RepoQuiescenceChecker} from './repo-quiescence.js' @@ -43,7 +44,6 @@ import { toErrorMessage, transitionRun, } from '@fro-bot/runtime' - import {createPermissionCoordinator} from '../approvals/coordinator.js' import {createDiscordApprovalOnPending} from '../approvals/discord-transport.js' import {createQuestionCoordinator} from '../approvals/question-coordinator.js' @@ -67,7 +67,10 @@ import {abortRegistry} from './abort-registry.js' import {settleAmbiguousRecovery, tryAutoRecoverDirtyCheckout} from './checkout-recovery.js' import {markRunEnded, markRunLive} from './live-run-registry.js' import {releaseLockOrByOwnership} from './lock-release.js' +import {attachOpencodeV2} from './opencode-attach-v2.js' import {attachOpencode} from './opencode-attach.js' +import {selectOpenCodeGeneration} from './opencode-generation.js' +import {createPostReplyFactoryV2} from './permission-reply-v2.js' import { CLIENT_TIMEOUT_REPLY, formatPreparationFailedReply, @@ -86,8 +89,10 @@ import { toCheckoutPreparation, toRemoteFreshnessFromUpdateReady, } from './provenance.js' +import {createFormDirectoryV2, createQuestionEffectsV2} from './question-client-v2.js' import {createQuestionEffects} from './question-client.js' import {QUARANTINE_HOLD_WINDOW_MS} from './root-stop.js' +import {runOpenCodeCoreV2} from './run-core-v2.js' import {RunCoreError, runOpenCodeCore} from './run-core.js' import {toRuntimeLogger} from './runtime-logger.js' import {TERMINAL_WRITE_RETRY, transitionRetryingStaleEtag} from './stale-etag-transition.js' @@ -380,6 +385,32 @@ const PERMANENT_CLONE_ERROR_CODES: ReadonlySet = new Set): PostReplyFactory { + return sessionID => async (rID, dir, decision) => { + // Call the OpenCode SDK permission reply endpoint. + // Uses the session-scoped API: POST /session/{id}/permissions/{permissionID} + try { + const res = await handle.client.postSessionIdPermissionsPermissionId({ + path: {id: sessionID, permissionID: rID}, + body: {response: decision}, + query: {directory: dir}, + signal: AbortSignal.timeout(10_000), + }) + const envelope = res as {error?: unknown} | undefined + if (envelope?.error != null) { + return {ok: false as const, error: formatSdkError(envelope.error)} + } + return {ok: true as const} + } catch (error) { + return {ok: false as const, error: toErrorMessage(error)} + } + } +} + /** * Map an `EnsureCloneFailure` to a `RunCoreErrorKind` honestly, instead of * collapsing every non-auth failure into `unreachable`. @@ -856,9 +887,21 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { // This prevents creating a thread, acquiring a lock, or creating run-state // for a workspace that is not yet serving OpenCode. let workspaceReady = false + // The OpenCode generation the workspace runs, read from the version it reports on its control API. A workspace + // that reports none runs V1. A version that is present but unreadable selects neither loop: not ready. + let openCodeGeneration: OpenCodeGeneration = 'v1' try { const readyzResult = await readyz() workspaceReady = readyzResult.success === true && readyzResult.data.ready === true + if (workspaceReady && readyzResult.success === true) { + const selected = selectOpenCodeGeneration(readyzResult.data.opencodeVersion) + if (selected.success) { + openCodeGeneration = selected.data + } else { + logger.warn({channelId, repo}, 'run: the workspace reported an unreadable OpenCode version — not ready') + workspaceReady = false + } + } } catch { // Thrown exception (e.g. timeout) → fail closed workspaceReady = false @@ -1506,7 +1549,11 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { // ── Execute prompt via OpenCode ───────────────────────────────────────────────────────────────────────────────────────── - const handle = attachOpencode(attachUrl, attachToken) + // One attach per run, by the generation the workspace reported. The V1 handle and the V2 client never coexist. + const openCode = + openCodeGeneration === 'v2' + ? ({generation: 'v2', client: attachOpencodeV2(attachUrl, attachToken)} as const) + : ({generation: 'v1', handle: attachOpencode(attachUrl, attachToken)} as const) const promptText = request.promptBuilder === undefined ? buildDiscordPrompt({ @@ -1559,25 +1606,10 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { // // AbortSignal.timeout(10_000) avoids the dangling-timer leak from the old // Promise.race approach. AbortSignal.timeout is self-cleaning. - const postReplyFactory: PostReplyFactory = sessionID => async (rID, dir, decision) => { - // Call the OpenCode SDK permission reply endpoint. - // Uses the session-scoped API: POST /session/{id}/permissions/{permissionID} - try { - const res = await handle.client.postSessionIdPermissionsPermissionId({ - path: {id: sessionID, permissionID: rID}, - body: {response: decision}, - query: {directory: dir}, - signal: AbortSignal.timeout(10_000), - }) - const envelope = res as {error?: unknown} | undefined - if (envelope?.error != null) { - return {ok: false as const, error: formatSdkError(envelope.error)} - } - return {ok: true as const} - } catch (error) { - return {ok: false as const, error: toErrorMessage(error)} - } - } + const postReplyFactory: PostReplyFactory = + openCode.generation === 'v2' + ? createPostReplyFactoryV2(openCode.client) + : createPostReplyFactoryV1(openCode.handle) // ── Approval transport selection — resolved before coordinator creation ────── // `resolvedApprovalOnPending` is resolved first. If the factory throws, the outer @@ -1646,6 +1678,8 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { // canonical directory. The deadline is evaluated when a question is asked, from the budget // left then (not at run start), so a late question never outlives the hard abort. Scope // matches cancellation's: the Discord thread for Discord runs, the run id otherwise. + // The open question forms of this run: V2 addresses a reply by session and form id, which the loop records here. + const v2Forms = createFormDirectoryV2() const announceQuestion = deps.createQuestionOnRegistered?.({runId, repo, surface: request.surface, replySink}) // Runs after the registry holds the question: surface announcement first, push last so a // push failure can never preempt the surfaces. Neither can throw into the coordinator. @@ -1660,11 +1694,14 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { : createQuestionCoordinator({ logger, registry: deps.questionRegistry, - effects: createQuestionEffects({ - baseURL: attachUrl, - token: attachToken, - directory: sessionDirectory, - }), + effects: + openCode.generation === 'v2' + ? createQuestionEffectsV2({client: openCode.client, forms: v2Forms}) + : createQuestionEffects({ + baseURL: attachUrl, + token: attachToken, + directory: sessionDirectory, + }), scopeId: request.surface === 'discord' ? threadId : runId, runId, computeDeadlineMs: () => computeApprovalDeadlineMs(Math.max(0, runTimeoutMs - (Date.now() - runStartMs))), @@ -1672,8 +1709,7 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { }) try { - await runOpenCodeCore({ - handle, + const commonCoreParams = { directory: sessionDirectory, promptText: promptTextWithProvenance, sink: replySink, @@ -1694,7 +1730,10 @@ async function executeWorkOnHeldSlot(task: RunTask): Promise { }, ownershipLedger, onOwnershipChange: persistOwnership, - }) + } + await (openCode.generation === 'v2' + ? runOpenCodeCoreV2({...commonCoreParams, client: openCode.client, forms: v2Forms}) + : runOpenCodeCore({...commonCoreParams, handle: openCode.handle})) } finally { // Fail-closed: dispose any still-open coordinator entries so pending approvals // don't hang if the run ended (normally or via error) before they were settled. diff --git a/packages/gateway/src/execute/run.v2-selection.test.ts b/packages/gateway/src/execute/run.v2-selection.test.ts new file mode 100644 index 0000000000..a4621d9d1b --- /dev/null +++ b/packages/gateway/src/execute/run.v2-selection.test.ts @@ -0,0 +1,134 @@ +/** + * The run picks the OpenCode V1 or V2 loop from the version the workspace reports when the gateway attaches + * (`GET /readyz`, field `opencodeVersion`). Everything around the loop (lock, run state, heartbeat, terminal writes, + * reply flush) is shared, so a V2 run must leave exactly the trail a V1 run leaves. + */ + +/* eslint-disable perfectionist/sort-imports -- ./test-helpers.js must import before any real module (it registers the vi.mock calls) */ +import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest' +import { + CHANNEL_ID, + makeBinding, + makeDeps, + makeMessage, + mockRunOpenCodeCore, + mockRuntime, + setupHappyPath, +} from './test-helpers.js' +import {attachOpencode} from './opencode-attach.js' +import {attachOpencodeV2} from './opencode-attach-v2.js' +import {runOpenCodeCoreV2} from './run-core-v2.js' +/* eslint-enable perfectionist/sort-imports */ + +vi.mock('./run-core-v2.js', () => ({runOpenCodeCoreV2: vi.fn().mockResolvedValue(undefined)})) +vi.mock('./opencode-attach-v2.js', () => ({attachOpencodeV2: vi.fn().mockReturnValue({kind: 'v2-client'})})) + +function readyzReporting(version: unknown) { + return vi.fn().mockResolvedValue({ + success: true as const, + data: {ready: true, opencode: 'ready', ...(version === undefined ? {} : {opencodeVersion: version})}, + }) +} + +function transitionPhases(): string[] { + return mockRuntime.transitionRun.mock.calls.map((call: unknown[]) => call[4] as string) +} + +beforeEach(() => { + vi.clearAllMocks() + vi.mocked(runOpenCodeCoreV2).mockResolvedValue(undefined) +}) + +afterEach(() => { + vi.useRealTimers() +}) + +describe('run: OpenCode generation selection', () => { + it('runs the V2 loop, with a V2 client and a form directory, when the workspace reports a 2.x version', async () => { + // #given + const {runMention} = await import('./run.js') + setupHappyPath() + const deps = makeDeps({readyz: readyzReporting('2.2.0')}) + + // #when + await runMention(makeMessage(), makeBinding(), deps) + + // #then + expect(runOpenCodeCoreV2).toHaveBeenCalledOnce() + expect(mockRunOpenCodeCore).not.toHaveBeenCalled() + expect(attachOpencodeV2).toHaveBeenCalledWith('http://workspace:9200', 'secret-bearer-token') + expect(attachOpencode).not.toHaveBeenCalled() + const params = vi.mocked(runOpenCodeCoreV2).mock.calls[0]?.[0] + expect(params).toMatchObject({client: {kind: 'v2-client'}, directory: '/workspace/repos/acme/widget'}) + expect(params?.runId).toBeDefined() + expect(params?.forms).toBeDefined() + }) + + it.each([['1.19.4'], [undefined]])('keeps the V1 loop when the workspace reports %s', async version => { + // #given + const {runMention} = await import('./run.js') + setupHappyPath() + const deps = makeDeps({readyz: readyzReporting(version)}) + + // #when + await runMention(makeMessage(), makeBinding(), deps) + + // #then + expect(mockRunOpenCodeCore).toHaveBeenCalledOnce() + expect(runOpenCodeCoreV2).not.toHaveBeenCalled() + expect(attachOpencodeV2).not.toHaveBeenCalled() + }) + + it('treats a workspace whose version cannot be read as not ready, and runs neither loop', async () => { + // #given + const {runMention} = await import('./run.js') + setupHappyPath() + const deps = makeDeps({readyz: readyzReporting('latest')}) + + // #when + await runMention(makeMessage(), makeBinding(), deps) + + // #then + expect(mockRunOpenCodeCore).not.toHaveBeenCalled() + expect(runOpenCodeCoreV2).not.toHaveBeenCalled() + expect(mockRuntime.acquireLock).not.toHaveBeenCalled() + }) + + it('writes the same terminal run-state trail for a completed V2 run as for a V1 run', async () => { + // #given — one V1 run, one V2 run, same mocks + const {runMention} = await import('./run.js') + setupHappyPath() + await runMention(makeMessage(), makeBinding(), makeDeps({readyz: readyzReporting(undefined)})) + const v1 = transitionPhases() + vi.clearAllMocks() + setupHappyPath() + vi.mocked(runOpenCodeCoreV2).mockResolvedValue(undefined) + + // #when + const deps = makeDeps({readyz: readyzReporting('2.2.0')}) + await runMention(makeMessage(), makeBinding(), deps) + + // #then + expect(transitionPhases()).toEqual(v1) + expect(transitionPhases()).toContain('COMPLETED') + expect(mockRuntime.releaseLock).toHaveBeenCalledOnce() + expect(deps.concurrency.release).toHaveBeenCalledWith(CHANNEL_ID) + }) + + it('treats a V2 loop failure like a V1 failure: terminal FAILED, lock released', async () => { + // #given + const {runMention} = await import('./run.js') + setupHappyPath() + const {RunCoreError} = await import('./run-core.js') + vi.mocked(runOpenCodeCoreV2).mockRejectedValue(new RunCoreError('stream-ended', 'lost')) + const deps = makeDeps({readyz: readyzReporting('2.2.0')}) + + // #when + await runMention(makeMessage(), makeBinding(), deps) + + // #then + expect(transitionPhases()).toContain('FAILED') + expect(transitionPhases()).not.toContain('COMPLETED') + expect(mockRuntime.releaseLock).toHaveBeenCalledOnce() + }) +}) diff --git a/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts b/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts new file mode 100644 index 0000000000..4e1eb787a9 --- /dev/null +++ b/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts @@ -0,0 +1,383 @@ +import type {RemoteOpenCodeV2Client, V2SessionOutcome} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {StreamTerminal} from './root-stop-v2.js' + +import {createOwnershipLedger, err, ok} from '@fro-bot/runtime' +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {DEFAULT_SETTLE_TIMEOUT_MS, settleOwnedSessionsV2} from './settle-owned-sessions-v2.js' + +const ROOT = 'ses_root' +const CHILD = 'ses_child' +const OTHER_CHILD = 'ses_other' + +function makeLogger(): GatewayLogger { + return {debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn()} +} + +interface ServerOptions { + /** Sessions that are active before any interrupt. */ + readonly active?: readonly string[] + /** Sessions an interrupt stops (removes from `active`). Defaults to all of them. */ + readonly stoppable?: readonly string[] + readonly children?: readonly string[] + readonly outcome?: V2SessionOutcome | null + readonly interrupt?: (sessionId: string) => Promise + readonly activeFails?: boolean +} + +function makeServer(options: ServerOptions = {}) { + const active = new Set(options.active ?? []) + const stoppable = new Set(options.stoppable ?? [ROOT, CHILD, OTHER_CHILD]) + const interrupt = vi.fn(async ({sessionId}: {sessionId: string}) => { + if (options.interrupt !== undefined) return options.interrupt(sessionId) as never + if (stoppable.has(sessionId)) active.delete(sessionId) + return ok({interrupted: true}) + }) + const activeCalls = vi.fn(async () => { + if (options.activeFails === true) throw new Error('session.active failed: http 503') + return Object.fromEntries([...active].map(id => [id, {type: 'running'}])) + }) + const client = { + session: { + active: activeCalls, + list: vi.fn(async () => ({data: (options.children ?? []).map(id => ({id, parentID: ROOT}))})), + }, + interrupt, + getSession: vi.fn(async () => ok({id: ROOT, parentId: null, directory: '/d', outcome: options.outcome ?? null})), + } as unknown as RemoteOpenCodeV2Client + return {client, interrupt, activeCalls, active} +} + +function unknownIds(ledger: ReturnType): string[] { + return ledger + .snapshot() + .filter(entry => entry.state === 'unknown') + .map(entry => entry.sessionId) +} + +function ledgerWith(...ids: string[]) { + const ledger = createOwnershipLedger() + for (const id of ids) ledger.adopt(id, id) + return ledger +} + +afterEach(() => { + vi.useRealTimers() +}) + +describe('settleOwnedSessionsV2', () => { + it('settles with zero remote calls when nothing is owned and the root need not be confirmed', async () => { + // #given + const server = makeServer() + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + }) + + // #then + expect(result).toEqual({settled: true}) + expect(server.interrupt).not.toHaveBeenCalled() + expect(server.activeCalls).not.toHaveBeenCalled() + }) + + it('interrupts the root and every unsettled child and settles a child that left the active list', async () => { + // #given + const ledger = ledgerWith(CHILD) + const server = makeServer({active: [CHILD], children: [CHILD]}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + }) + + // #then + expect(result).toEqual({settled: true}) + expect(server.interrupt.mock.calls.map(([input]) => input.sessionId).sort()).toEqual([CHILD, ROOT]) + expect(ledger.isDrainComplete()).toBe(true) + }) + + it('downgrades a child that is still active to unknown and reports it unsettled', async () => { + // #given — the child ignores the interrupt + const ledger = ledgerWith(CHILD) + const server = makeServer({active: [CHILD], stoppable: [], children: [CHILD]}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + }) + + // #then + expect(result).toMatchObject({settled: false, rootUnconfirmed: false}) + expect(unknownIds(ledger)).toEqual([CHILD]) + }) + + it('does not treat an interrupt reply of false as a stop for a child', async () => { + // #given — the reply says nothing was interrupted, and the child is still active + const ledger = ledgerWith(CHILD) + const server = makeServer({ + active: [CHILD], + children: [CHILD], + interrupt: async () => ok({interrupted: false}), + }) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + }) + + // #then + expect(result).toMatchObject({settled: false}) + expect(ledger.isDrainComplete()).toBe(false) + }) + + describe('root confirmation', () => { + it('confirms a root that ended with a persisted outcome and is absent from the active list', async () => { + // #given + const server = makeServer({active: [ROOT], outcome: 'interrupted'}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + rootPollIntervalMs: 10, + }) + + // #then + expect(result).toEqual({settled: true}) + expect(server.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('accepts an interrupt with reason user from the stream', async () => { + // #given — no persisted outcome yet, but the stream saw the user interrupt + const server = makeServer({active: [ROOT]}) + const terminal: StreamTerminal = 'user' + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => terminal, + rootPollIntervalMs: 10, + }) + + // #then + expect(result).toEqual({settled: true}) + }) + + it('quarantines when the interrupt that stopped the root had reason shutdown', async () => { + // #given — the root is gone from the active list, but its last interrupt was a shutdown (claim still held) + vi.useFakeTimers() + const server = makeServer({active: [ROOT], outcome: 'interrupted'}) + const pending = settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'shutdown', + rootPollIntervalMs: 50, + }) + + // #when + await vi.advanceTimersByTimeAsync(DEFAULT_SETTLE_TIMEOUT_MS + 100) + + // #then + await expect(pending).resolves.toMatchObject({settled: false, rootUnconfirmed: true}) + }) + + it('interrupts the root again whenever it turns up live, and quarantines if it never stops', async () => { + // #given + vi.useFakeTimers() + const server = makeServer({active: [ROOT], stoppable: [], outcome: 'succeeded'}) + const pending = settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + rootPollIntervalMs: 100, + }) + + // #when + await vi.advanceTimersByTimeAsync(DEFAULT_SETTLE_TIMEOUT_MS + 100) + + // #then + await expect(pending).resolves.toMatchObject({settled: false, rootUnconfirmed: true}) + expect(server.interrupt.mock.calls.length).toBeGreaterThan(2) + }) + + it('quarantines when the root has no evidence of an ended execution', async () => { + // #given — absent from the active list, but no outcome and nothing on the stream: not started, or not admitted + vi.useFakeTimers() + const server = makeServer({outcome: null}) + const pending = settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + rootPollIntervalMs: 100, + }) + + // #when + await vi.advanceTimersByTimeAsync(DEFAULT_SETTLE_TIMEOUT_MS + 100) + + // #then + await expect(pending).resolves.toMatchObject({settled: false, rootUnconfirmed: true}) + }) + + it('does not poll when background work is open: it reports the root unconfirmed at once', async () => { + // #given — a child is still running and can start a root turn + const ledger = ledgerWith(CHILD) + const server = makeServer({active: [ROOT, CHILD], children: [CHILD], outcome: 'succeeded'}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + }) + + // #then — the children settled, the root did not, and no budget was spent waiting + expect(result).toMatchObject({settled: false, rootUnconfirmed: true}) + expect(server.client.getSession).not.toHaveBeenCalled() + expect(ledger.isDrainComplete()).toBe(true) + }) + }) + + describe('bound and failure', () => { + it('quarantines instead of hanging when the server never answers', async () => { + // #given + vi.useFakeTimers() + const ledger = ledgerWith(CHILD) + const server = makeServer({active: [CHILD], interrupt: async () => new Promise(() => undefined)}) + const pending = settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + }) + + // #when + await vi.advanceTimersByTimeAsync(DEFAULT_SETTLE_TIMEOUT_MS + 1) + + // #then + await expect(pending).resolves.toMatchObject({settled: false, rootUnconfirmed: true}) + expect(unknownIds(ledger)).toEqual([CHILD]) + }) + + it('does not let an abandoned attempt settle the ledger after the bound has passed', async () => { + // #given — the active list answers only after the bound + vi.useFakeTimers() + const ledger = ledgerWith(CHILD) + let release: (() => void) | undefined + const server = makeServer({active: [CHILD], children: [CHILD]}) + ;(server.client.session as unknown as {active: unknown}).active = async () => + new Promise(resolve => { + release = () => resolve({}) + }) + const pending = settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + timeoutMs: 1_000, + }) + await vi.advanceTimersByTimeAsync(1_001) + await expect(pending).resolves.toMatchObject({settled: false}) + + // #when — the late answer would have settled the child + release?.() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(unknownIds(ledger)).toEqual([CHILD]) + }) + + it('quarantines when the active list cannot be read, and never settles on a failed read', async () => { + // #given + const ledger = ledgerWith(CHILD) + const server = makeServer({active: [CHILD], children: [CHILD], activeFails: true}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + }) + + // #then + expect(result).toMatchObject({settled: false, rootUnconfirmed: false}) + expect(unknownIds(ledger)).toEqual([CHILD]) + }) + + it('stamps the run id on its log lines when it has one', async () => { + // #given + const logger = makeLogger() + const server = makeServer({active: [CHILD], stoppable: [], children: [CHILD]}) + + // #when + await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger: ledgerWith(CHILD), + logger, + runId: 'run-1', + }) + + // #then + expect(logger.warn).toHaveBeenCalledWith(expect.objectContaining({runId: 'run-1'}), expect.any(String)) + expect(logger.error).toHaveBeenCalledWith(expect.objectContaining({runId: 'run-1'}), expect.any(String)) + }) + }) + + it('reports an interrupt failure as evidence, not as a reason to skip the confirmation', async () => { + // #given — the root interrupt errors, the child still gets interrupted and settles + const ledger = ledgerWith(CHILD) + const server = makeServer({ + active: [CHILD], + children: [CHILD], + interrupt: async sessionId => { + if (sessionId === ROOT) return err({kind: 'http', status: 500}) + return ok({interrupted: true}) + }, + }) + ;(server.client.session as unknown as {active: unknown}).active = async () => ({}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + }) + + // #then + expect(result).toEqual({settled: true}) + }) +}) diff --git a/packages/gateway/src/execute/settle-owned-sessions-v2.ts b/packages/gateway/src/execute/settle-owned-sessions-v2.ts new file mode 100644 index 0000000000..edc3517bb1 --- /dev/null +++ b/packages/gateway/src/execute/settle-owned-sessions-v2.ts @@ -0,0 +1,273 @@ +/** + * Termination barrier for a run's owned background sessions, on OpenCode V2: the sibling of + * `settle-owned-sessions.ts`. The contract is the same; read that module's doc for the reasoning. What differs is how a + * stop is requested and how it is confirmed: + * + * - A session is stopped with `POST /api/session/:id/interrupt`. Its reply is a delivery receipt, never a stop + * (`{interrupted: false}` is also what a not-yet-admitted prompt returns, probe P1). + * - A child is confirmed settled by the same reconciliation primitive the drain uses (`reconcileLedgerOnce`) over the V2 + * adapter: absent from `GET /api/session/active` and listed by `session.list({parentID})`. + * - A root is confirmed stopped by positive evidence plus absence from the active list (`probeRootStopV2`), and never + * by an interrupt with reason `shutdown`. + * + * Fast path: returns `{settled: true}` with zero remote calls when the ledger has no unsettled work and the root need + * not be confirmed. Otherwise the whole attempt (interrupt round, confirmation round) runs under its own bound, with a + * fresh teardown signal, because the run's own signal is already aborted by the time a failure reaches here. Anything + * still unresolved when the attempt ends is downgraded to `unknown`, and the caller quarantines. + * + * Background work open (`followUpPossible`): the server then starts root turns by itself, so the root is never + * confirmed. The barrier interrupts the root and the owned children once, settles the children, and reports + * `rootUnconfirmed` without waiting out its budget; the quarantine watch does the polling. + * + * This module does not decide what `run.ts` does with a quarantine outcome. + */ + +import type {OwnershipLedger, RemoteOpenCodeV2Client} from '@fro-bot/runtime' +import type {GatewayLogger} from '../discord/client.js' +import type {StreamTerminal} from './root-stop-v2.js' + +import {createV2LedgerReconcileAdapter, reconcileLedgerOnce, toErrorMessage} from '@fro-bot/runtime' +import {interruptSession, probeRootStopV2} from './root-stop-v2.js' +import {ROOT_QUIESCENCE_POLL_INTERVAL_MS} from './root-stop.js' +import {toRuntimeLogger} from './runtime-logger.js' + +export {ROOT_QUIESCENCE_POLL_INTERVAL_MS} + +/** + * Upper bound, in milliseconds, on the whole settle attempt (interrupt round + confirmation round). A fresh budget, + * not a remainder of the run's. + */ +export const DEFAULT_SETTLE_TIMEOUT_MS = 15_000 + +export interface SettleOwnedSessionsV2Params { + /** Client for the workspace OpenCode V2 server this run is attached to. */ + readonly client: RemoteOpenCodeV2Client + /** The root session this run created. */ + readonly rootSessionId: string + /** The run's ownership ledger. Mutated in place (`markUnknown`/`settle` via reconciliation). */ + readonly ledger: OwnershipLedger + readonly logger: GatewayLogger + /** The gateway run this attempt belongs to. Stamped on every log line, including the reconciliation lines. */ + readonly runId?: string + /** Overrides `DEFAULT_SETTLE_TIMEOUT_MS` — for tests only. */ + readonly timeoutMs?: number + /** The root may still be executing. Disables the settled-ledger fast path and adds root quiescence to the checks. */ + readonly confirmRootQuiescent?: boolean + /** Background work is open, so a root turn the stream has not shown can still start. Only meaningful with `confirmRootQuiescent`. */ + readonly followUpPossible?: boolean + /** Overrides `ROOT_QUIESCENCE_POLL_INTERVAL_MS` — for tests only. */ + readonly rootPollIntervalMs?: number + /** How the root's latest execution ended on the stream, or `null`. Absent: the server's persisted outcome decides. */ + readonly streamTerminal?: () => StreamTerminal | null +} + +export type SettleOwnedSessionsV2Result = + | {readonly settled: true} + | { + readonly settled: false + readonly reason: string + /** The root was to be confirmed stopped and was not. The caller keeps watching it through the hold. */ + readonly rootUnconfirmed: boolean + } + +function withRunId(logger: GatewayLogger, runId: string | undefined): GatewayLogger { + if (runId === undefined) return logger + return { + debug: (context, message) => logger.debug({runId, ...context}, message), + info: (context, message) => logger.info({runId, ...context}, message), + warn: (context, message) => logger.warn({runId, ...context}, message), + error: (context, message) => logger.error({runId, ...context}, message), + } +} + +/** Race `work` against its own timer, so work that ignores cancellation still resolves into a decision. */ +async function withBound(ms: number, work: () => Promise, onTimeout: () => T): Promise { + let timer: ReturnType | undefined + const timeoutPromise = new Promise(resolve => { + timer = setTimeout(() => resolve(onTimeout()), ms) + }) + try { + return await Promise.race([work(), timeoutPromise]) + } finally { + if (timer !== undefined) clearTimeout(timer) + } +} + +export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params): Promise { + const { + client, + rootSessionId, + ledger, + timeoutMs = DEFAULT_SETTLE_TIMEOUT_MS, + confirmRootQuiescent = false, + followUpPossible = false, + rootPollIntervalMs = ROOT_QUIESCENCE_POLL_INTERVAL_MS, + streamTerminal = (): StreamTerminal | null => null, + } = params + const logger = withRunId(params.logger, params.runId) + + if (ledger.isDrainComplete() && !confirmRootQuiescent) { + return {settled: true} + } + + const unsettled = ledger.snapshot().filter(entry => entry.state !== 'settled') + logger.warn( + {rootSessionId, unsettled: unsettled.map(entry => entry.sessionId), confirmRootQuiescent}, + confirmRootQuiescent + ? 'settle-owned-sessions: run failed while the root may still be running — interrupting the root and confirming it stopped before releasing resources' + : 'settle-owned-sessions: run failed with owned work outstanding — cancelling before releasing resources', + ) + let finished = false + const isFinished = (): boolean => finished + // Whether the root was confirmed stopped, readable from the bound's timeout path too. + let rootConfirmed = !confirmRootQuiescent + + return withBound( + timeoutMs, + async () => { + // The barrier always resolves to a decision, even when a callee misbehaves. + try { + const teardownSignal = AbortSignal.timeout(timeoutMs) + + // Stop the root from producing more work. Confirmed below only when `confirmRootQuiescent`. + await interruptSession(client, rootSessionId, teardownSignal, logger, 'root') + + await Promise.allSettled( + unsettled.map(async entry => interruptSession(client, entry.sessionId, teardownSignal, logger, 'owned')), + ) + + const adapter = createV2LedgerReconcileAdapter(client.session) + // Once the bound has passed this attempt is abandoned: whatever it still has in flight must not change the + // ledger the caller has already read the decision from. + const attemptLedger: OwnershipLedger = { + ...ledger, + settle: sessionId => { + if (!isFinished()) ledger.settle(sessionId) + }, + markUnknown: sessionId => { + if (!isFinished()) ledger.markUnknown(sessionId) + }, + } + if (unsettled.length > 0) { + const reconcileResult = await reconcileLedgerOnce({ + ledger: attemptLedger, + adapter, + parentSessionId: rootSessionId, + logger: toRuntimeLogger(logger), + signal: teardownSignal, + }) + if (!reconcileResult.success) { + logger.warn( + {rootSessionId, detail: reconcileResult.error.message}, + 'settle-owned-sessions: reconciliation call failed while confirming settlement', + ) + } + } + + // The root's own turn: confirmed only by positive evidence, never by absence alone. Poll inside the same + // teardown budget, interrupting again whenever the root turns up live. + let rootQuiescent = !confirmRootQuiescent + let reinterrupts = 0 + while (!rootQuiescent && !isFinished() && !teardownSignal.aborted) { + // Nothing can confirm the root with background work open; the quarantine watch does the polling. + if (followUpPossible) break + const probe = await probeRootStopV2({ + client, + adapter, + rootSessionId, + signal: teardownSignal, + streamTerminal, + }) + if (probe === 'confirmed') { + rootQuiescent = true + rootConfirmed = true + } else { + if (probe === 'busy' && !isFinished()) { + reinterrupts += 1 + if (reinterrupts === 1) { + logger.warn( + {rootSessionId}, + 'settle-owned-sessions: the root is running after the interrupt — interrupting it again until it is confirmed stopped', + ) + } + await interruptSession(client, rootSessionId, teardownSignal, logger, 'root') + } + if (!isFinished()) { + await new Promise(resolve => { + setTimeout(resolve, rootPollIntervalMs) + }) + } + } + } + + if (ledger.isDrainComplete() && rootQuiescent) { + logger.info( + {rootSessionId, confirmRootQuiescent}, + confirmRootQuiescent + ? 'settle-owned-sessions: owned work settled and the root confirmed stopped' + : 'settle-owned-sessions: owned work confirmed settled', + ) + return {settled: true as const} + } + + // Still not confirmed. Downgrade every remaining entry to `unknown` rather than leaving it `outstanding`, + // which would misrepresent "we gave up waiting" as "we never tried". + const stillUnresolved = attemptLedger.snapshot().filter(entry => entry.state !== 'settled') + for (const entry of stillUnresolved) { + attemptLedger.markUnknown(entry.sessionId) + } + const stillUnresolvedIds = stillUnresolved.map(entry => entry.sessionId) + logger.error( + {rootSessionId, stillUnresolvedIds, rootQuiescent}, + 'settle-owned-sessions: owned work could not be confirmed settled', + ) + if (!rootQuiescent) { + return { + settled: false as const, + reason: `root session not confirmed stopped after interrupt${ + stillUnresolvedIds.length > 0 + ? `; owned sessions not confirmed settled: ${stillUnresolvedIds.join(', ')}` + : '' + }`, + rootUnconfirmed: true, + } + } + return { + settled: false as const, + reason: `owned sessions not confirmed settled: ${stillUnresolvedIds.join(', ')}`, + rootUnconfirmed: false, + } + } catch (error) { + const message = toErrorMessage(error) + logger.error( + {rootSessionId, detail: message}, + 'settle-owned-sessions: unexpected error during settle attempt — quarantining rather than letting it escape', + ) + return { + settled: false as const, + reason: `settle attempt threw unexpectedly: ${message}`, + rootUnconfirmed: !rootConfirmed, + } + } finally { + finished = true + } + }, + () => { + finished = true + // Marking happens after `finished` is set, so the abandoned attempt cannot undo it. + const abandonedEntries = ledger.snapshot().filter(entry => entry.state !== 'settled') + for (const entry of abandonedEntries) { + ledger.markUnknown(entry.sessionId) + } + logger.error( + {rootSessionId, timeoutMs, abandonedIds: abandonedEntries.map(entry => entry.sessionId)}, + 'settle-owned-sessions: settle attempt exceeded its bound — quarantining rather than hanging', + ) + return { + settled: false as const, + reason: `settle attempt exceeded its ${timeoutMs}ms bound`, + rootUnconfirmed: !rootConfirmed, + } + }, + ) +} diff --git a/packages/gateway/src/program.ts b/packages/gateway/src/program.ts index b487f34ad0..0bd7be0113 100644 --- a/packages/gateway/src/program.ts +++ b/packages/gateway/src/program.ts @@ -51,8 +51,10 @@ import {handleRecoverEntryButtonClick, parseRecoverEntryCustomId} from './discor import {abortRegistry} from './execute/abort-registry.js' import {totalRecoveryBudgetMs} from './execute/checkout-recovery.js' import {createConcurrencyRegistry} from './execute/concurrency.js' +import {createGenerationAwareQuiescenceChecker} from './execute/opencode-generation.js' import {createChannelQueue, DEFAULT_MAX_QUEUE_DEPTH} from './execute/queue.js' import {recoverStaleRuns} from './execute/recovery.js' +import {createRepoQuiescenceCheckerV2} from './execute/repo-quiescence-v2.js' import {createRepoQuiescenceChecker} from './execute/repo-quiescence.js' import {createRunIndex} from './execute/run-index.js' import {getInFlightRuns} from './execute/run.js' @@ -505,10 +507,18 @@ export function makeGatewayProgram(deps: GatewayProgramDeps, config: GatewayConf const workspaceCalls = createWorkspaceCalls({appClient, workspaceClient, logger}) // One workspace quiescence checker shared by acquisition, maintenance, recovery and operator release. - const checkRepoQuiescence = createRepoQuiescenceChecker({ + // The check follows the OpenCode generation the workspace reports on every call (V1 session status, or the V2 + // active-list join), and is `unknown` when the workspace cannot be asked. + const quiescenceOptions = { workspaceOpencodeUrl: config.workspaceOpencodeUrl, workspaceOpencodeToken: config.workspaceOpencodeToken, logger, + } + const checkRepoQuiescence = createGenerationAwareQuiescenceChecker({ + readyz: async () => workspaceClient.readyz(), + v1: createRepoQuiescenceChecker(quiescenceOptions), + v2: createRepoQuiescenceCheckerV2(quiescenceOptions), + logger, }) const commandDeps = { diff --git a/packages/gateway/src/workspace-api/client.test.ts b/packages/gateway/src/workspace-api/client.test.ts index 6ca7b227cf..b5b82c4467 100644 --- a/packages/gateway/src/workspace-api/client.test.ts +++ b/packages/gateway/src/workspace-api/client.test.ts @@ -37,6 +37,46 @@ describe('WorkspaceClient.readyz', () => { vi.unstubAllGlobals() }) + it('carries the OpenCode version the workspace reports, which selects the run loop', async () => { + // #given + const client = makeClient() + vi.stubGlobal( + 'fetch', + vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ready: true, opencode: 'ready', opencodeVersion: '2.2.0'}), + }), + ) + + // #when + const result = await client.readyz() + + // #then + expect(result).toEqual(ok({ready: true, opencode: 'ready', opencodeVersion: '2.2.0'})) + vi.unstubAllGlobals() + }) + + it('rejects a body whose version is not a string, rather than guess a run loop', async () => { + // #given + const client = makeClient() + vi.stubGlobal( + 'fetch', + vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ready: true, opencode: 'ready', opencodeVersion: 2}), + }), + ) + + // #when + const result = await client.readyz() + + // #then + expect(result.success).toBe(false) + vi.unstubAllGlobals() + }) + it('gETs /readyz on the same base URL as /clone', async () => { // #given const client = makeClient() diff --git a/packages/gateway/src/workspace-api/client.ts b/packages/gateway/src/workspace-api/client.ts index 8da310424d..2691793d49 100644 --- a/packages/gateway/src/workspace-api/client.ts +++ b/packages/gateway/src/workspace-api/client.ts @@ -698,6 +698,8 @@ function isReadyzResponse(value: unknown): value is ReadyzResponse { if (typeof value !== 'object' || value === null) return false const v = value as Record if (typeof v.ready !== 'boolean') return false + // The version is optional, but a present value that is not a string cannot select a run loop: reject the body. + if (v.opencodeVersion !== undefined && typeof v.opencodeVersion !== 'string') return false if (v.ready === true) { return v.opencode === 'ready' } diff --git a/packages/gateway/src/workspace-api/types.ts b/packages/gateway/src/workspace-api/types.ts index 3411b4df1d..3edd2228a5 100644 --- a/packages/gateway/src/workspace-api/types.ts +++ b/packages/gateway/src/workspace-api/types.ts @@ -135,6 +135,11 @@ export type InspectErrorCode = export interface ReadyzReady { readonly ready: true readonly opencode: 'ready' + /** + * The OpenCode version the workspace runs (`2.2.0`). Absent on a workspace that does not report it, which the + * gateway reads as OpenCode V1. The gateway picks its run loop from the major version. + */ + readonly opencodeVersion?: string } /** @@ -144,6 +149,7 @@ export interface ReadyzReady { export interface ReadyzNotReady { readonly ready: false readonly opencode: 'starting' | 'down' | 'degraded' | 'unknown' + readonly opencodeVersion?: string } /** Discriminated union of all /readyz response shapes. */ From da59ec795466ab8f1498fdfb209924508357abda Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Wed, 28 Oct 2026 21:44:17 -0700 Subject: [PATCH 3/9] fix(gateway): quarantine on outstanding background work, fence unreadable notices and frames, track child inbox delivery --- .../src/execute/drain-completion-v2.test.ts | 37 ++++ .../src/execute/drain-completion-v2.ts | 26 ++- .../src/execute/run-core-v2.drain.test.ts | 189 +++++++++++++++++- .../src/execute/run-core-v2.transport.test.ts | 71 +++++++ packages/gateway/src/execute/run-core-v2.ts | 25 ++- packages/runtime/src/agent/event-v2.test.ts | 45 +++++ packages/runtime/src/agent/event-v2.ts | 32 ++- .../src/agent/remote-client-v2.test.ts | 26 ++- .../runtime/src/agent/remote-client-v2.ts | 15 +- packages/runtime/src/agent/subagent-notice.ts | 33 +++ 10 files changed, 474 insertions(+), 25 deletions(-) create mode 100644 packages/gateway/src/execute/run-core-v2.transport.test.ts diff --git a/packages/gateway/src/execute/drain-completion-v2.test.ts b/packages/gateway/src/execute/drain-completion-v2.test.ts index f2dbe9be40..ba03fc03ba 100644 --- a/packages/gateway/src/execute/drain-completion-v2.test.ts +++ b/packages/gateway/src/execute/drain-completion-v2.test.ts @@ -79,6 +79,43 @@ afterEach(() => { }) describe('createDrainCompletionV2', () => { + it('stops waiting for a readable notice from a child whose notice could not be read', async () => { + // #given — the ledger settled the child (reconciliation saw it stop), and no readable notice ever came + const s = setup() + s.drain.noteRootIdle() + s.drain.beginDrain() + s.ledger.settle(CHILD) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + expect(s.reasons.at(-1)).toBe('notice-not-observed') + + // #when — an unreadable notice names it, and the turn that follows ends + s.drain.noteUnreadableNotice(CHILD) + s.drain.noteRootActivity() + s.drain.noteRootIdle() + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('still needs idle evidence after an unreadable notice', async () => { + // #given + const s = setup() + s.drain.noteRootIdle() + s.drain.beginDrain() + s.ledger.settle(CHILD) + + // #when — the notice invalidates the earlier idle + s.drain.noteUnreadableNotice(CHILD) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('idle-evidence-stale') + }) + it('admits success only after the turn the notice triggered has ended and the root is not live', async () => { // #given — the root went idle once, the child settled, its notice arrived const s = setup() diff --git a/packages/gateway/src/execute/drain-completion-v2.ts b/packages/gateway/src/execute/drain-completion-v2.ts index 0208283dca..b434dc089b 100644 --- a/packages/gateway/src/execute/drain-completion-v2.ts +++ b/packages/gateway/src/execute/drain-completion-v2.ts @@ -61,7 +61,13 @@ export interface DrainCompletionV2 { * notice is already a transcript message. Deduped by child and state. Invalidates idle evidence. */ readonly noteNotice: (notice: SubagentNotice, inboxId: string | null) => void - /** A queued inbox item entered a root turn. */ + /** + * A notice about `childSessionId` arrived and could not be read, so the child's end is unproven. The gate stops + * waiting for a readable notice from it and invalidates idle evidence; the ledger entry (the caller marks it + * `unknown`) is what still blocks admission until the child is seen to stop. + */ + readonly noteUnreadableNotice: (childSessionId: string) => void + /** A queued inbox item entered a turn of an owned session. */ readonly noteInboxDelivered: (inboxId: string) => void /** The root's execution succeeded: stamps the current revision, unless a notice is still queued. */ readonly noteRootIdle: () => void @@ -135,6 +141,13 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai requestValidation() } + function noteUnreadableNotice(childSessionId: string): void { + if (closed) return + invalidate() + noticedChildren.add(childSessionId) + requestValidation() + } + function noteInboxDelivered(inboxId: string): void { if (closed) return for (const record of notices.values()) { @@ -264,5 +277,14 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai retryTimer = undefined } - return {noteRootActivity, noteNotice, noteInboxDelivered, noteRootIdle, beginDrain, requestValidation, dispose} + return { + noteRootActivity, + noteNotice, + noteUnreadableNotice, + noteInboxDelivered, + noteRootIdle, + beginDrain, + requestValidation, + dispose, + } } diff --git a/packages/gateway/src/execute/run-core-v2.drain.test.ts b/packages/gateway/src/execute/run-core-v2.drain.test.ts index 21c2c8de59..e5c46d4db4 100644 --- a/packages/gateway/src/execute/run-core-v2.drain.test.ts +++ b/packages/gateway/src/execute/run-core-v2.drain.test.ts @@ -6,7 +6,7 @@ import type {OwnershipLedger} from '@fro-bot/runtime' -import {createOwnershipLedger} from '@fro-bot/runtime' +import {createOwnershipLedger, ok} from '@fro-bot/runtime' import {SUBAGENT_FOREGROUND_SUCCESS_FRAME} from '@fro-bot/runtime/event-v2-fixtures' import {afterEach, describe, expect, it, vi} from 'vitest' @@ -480,3 +480,190 @@ describe('runOpenCodeCoreV2: bounded reconcile passes', () => { expect(states(ledger)[CHILD]).not.toBe('settled') }) }) + +describe('runOpenCodeCoreV2: a notice queued into a busy child', () => { + it('completes once the child takes the notice in, instead of waiting for a delivery it never forwarded', async () => { + // #given — the root's child is still busy when its own child (a grandchild) ends, so that notice queues there + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when — the child takes the grandchild's notice in, then ends itself and the root takes that notice in + run.emit( + frames.notice('ses_grandchild', 'completed', 'msg_grandchild', CHILD), + frames.delivered('msg_grandchild', CHILD), + ) + noticeTurn(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('does not complete while the notice is still queued in the child', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when — never delivered + run.emit(frames.notice('ses_grandchild', 'completed', 'msg_grandchild', CHILD)) + noticeTurn(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('ignores a delivery in a session this run does not own', async () => { + // #given — a notice queued in the child + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when — the id is "delivered" in a stranger's session + run.emit( + frames.notice('ses_grandchild', 'completed', 'msg_grandchild', CHILD), + frames.delivered('msg_grandchild', STRANGER), + ) + noticeTurn(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) +}) + +/** The root dispatches a child in the background, then halts before it ever reports a success. */ +async function haltWithChildRunning(halt: (run: ReturnType) => void) { + const ledger = createOwnershipLedger() + let rootBusy = false + let rootInterrupts = 0 + const run = startRun({ + ownershipLedger: ledger, + children: [CHILD], + // The cancelled child's notice makes the server start a successor root turn: the root turns up busy later. + activeReply: async (): Promise> => + rootBusy ? {[ROOT]: {type: 'running'}} : {}, + interrupt: async sessionId => { + if (sessionId === ROOT) rootInterrupts += 1 + return ok({interrupted: rootBusy}) + }, + }) + await vi.advanceTimersByTimeAsync(10) + run.emit( + frames.started(), + frames.toolStarted('subagent', 'call_dispatch'), + frames.toolCalled('call_dispatch', {description: 'bg child', prompt: 'work', background: true}), + frames.dispatch(CHILD), + ) + await vi.advanceTimersByTimeAsync(10) + expect(states(ledger)).toEqual({[CHILD]: 'outstanding'}) + halt(run) + await vi.advanceTimersByTimeAsync(20_000) + return { + run, + rootInterrupts: () => rootInterrupts, + startSuccessor: () => { + rootBusy = true + }, + } +} + +describe('runOpenCodeCoreV2: a halted root with background work outstanding', () => { + it.each([ + ['execution.failed', (run: ReturnType) => run.emit(frames.failed())], + [ + 'execution.interrupted by a user', + (run: ReturnType) => run.emit(frames.interrupted(ROOT, 'user')), + ], + ] as const)('quarantines on %s and keeps interrupting the root through the hold', async (_label, halt) => { + // #given / #when — the root halts while its background child is still running + const {run, rootInterrupts, startSuccessor} = await haltWithChildRunning(halt) + + // #then — the stop is never confirmed: cancelling the child delivers a notice that wakes the root + expect(failure(run).quarantined).toBe(true) + const interruptsAtQuarantine = rootInterrupts() + + // #when — the server starts the successor turn during the hold + startSuccessor() + await vi.advanceTimersByTimeAsync(2_000) + + // #then — the root is interrupted again + expect(rootInterrupts()).toBeGreaterThan(interruptsAtQuarantine) + }) + + it('keeps the fast path for a halted root that owns no background work', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.failed()) + await vi.advanceTimersByTimeAsync(1_000) + + // #then + expect(failure(run).quarantined).toBe(false) + expect(run.interrupt).not.toHaveBeenCalled() + }) +}) + +describe('runOpenCodeCoreV2: a notice that cannot be read', () => { + it('fences the child it names, so the run completes instead of waiting out its deadline', async () => { + // #given — the child ended, but its notice carries a state this client does not know + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when — the unreadable notice, then the turn that takes it in + noticeTurn(run, CHILD, 'paused', 'msg_odd') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('marks a still-running child unknown rather than settled, and keeps the run going', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.notice(CHILD, 'paused', 'msg_odd')) + await vi.advanceTimersByTimeAsync(10) + + // #then — the notice proves nothing about the child, so it blocks the drain + expect(states(ledger)).toEqual({[CHILD]: 'unknown'}) + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) + + it('ignores an unreadable notice delivered to a session this run does not own', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [CHILD], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + await dispatchAndIdle(run) + + // #when + run.emit(frames.notice(CHILD, 'paused', 'msg_odd', STRANGER)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(states(ledger)).toEqual({[CHILD]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(20_000) + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.transport.test.ts b/packages/gateway/src/execute/run-core-v2.transport.test.ts new file mode 100644 index 0000000000..816ad0cc4c --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.transport.test.ts @@ -0,0 +1,71 @@ +/** + * The V2 run loop over the real remote client: a data frame the transport cannot parse is a lost frame of unknown type + * (a truncated `permission.asked` is a request nobody can answer), so it ends the stream through the barrier instead of + * being skipped and found five minutes later by the inactivity watchdog. + */ + +import {createRemoteOpenCodeV2Client} from '@fro-bot/runtime' +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {DIRECTORY, failure, ROOT, startRun} from './run-core-v2.fixture.js' + +const INACTIVITY_MS = 300_000 +const ENCODER = new TextEncoder() + +/** A live event stream: it delivers `chunks`, then stays open until the caller aborts. */ +function liveStreamFetch(chunks: readonly string[]): typeof fetch { + return vi.fn(async (_input: unknown, init?: RequestInit) => { + const body = new ReadableStream({ + start(stream) { + for (const chunk of chunks) stream.enqueue(ENCODER.encode(chunk)) + init?.signal?.addEventListener('abort', () => stream.error(new DOMException('aborted', 'AbortError'))) + }, + }) + return new Response(body, {status: 200, headers: {'content-type': 'text/event-stream'}}) + }) +} + +function startOverTransport(chunks: readonly string[]) { + const transport = createRemoteOpenCodeV2Client({baseUrl: 'http://workspace', fetch: liveStreamFetch(chunks)}) + return startRun({ + inactivityTimeoutMs: INACTIVITY_MS, + subscribeResult: async () => transport.subscribeEvents({directory: DIRECTORY}), + }) +} + +afterEach(() => { + vi.useRealTimers() +}) + +describe('runOpenCodeCoreV2 over the remote client: an unreadable data frame', () => { + it('ends a run whose permission.asked frame was truncated as stream-ended, with the root interrupted', async () => { + // #given — the stream connects, then delivers a permission ask cut off mid-payload + const run = startOverTransport([ + 'data: {"type":"server.connected","data":{}}\n\n', + `data: {"type":"permission.asked","data":{"sessionID":"${ROOT}","id":"per_1","action":"ext\n\n`, + ]) + + // #when — far short of the inactivity window + await vi.advanceTimersByTimeAsync(1_000) + + // #then — the run fails now, and the root that may be waiting on the lost ask is interrupted and confirmed stopped + const error = failure(run) + expect(error.kind).toBe('stream-ended') + expect(error.quarantined).toBe(false) + expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('does not carry any of the unreadable payload into the error', async () => { + // #given + const run = startOverTransport([ + 'data: {"type":"server.connected","data":{}}\n\n', + 'data: {"type":"permission.asked","data":{"secret":"hunter2\n\n', + ]) + + // #when + await vi.advanceTimersByTimeAsync(1_000) + + // #then + expect(failure(run).message).not.toContain('hunter2') + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.ts b/packages/gateway/src/execute/run-core-v2.ts index f5947dd6d7..c811b3d552 100644 --- a/packages/gateway/src/execute/run-core-v2.ts +++ b/packages/gateway/src/execute/run-core-v2.ts @@ -422,8 +422,14 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise liveReconcileClosed = true reconciler?.dispose() drainCompletion?.dispose() + // Adopted background work keeps a successor root turn possible even after the root halted: settling cancels the + // children, each cancel delivers a notice, and the coordinator starts a root turn for it whatever way the last one + // ended. + const hasAdoptedWork = ledger !== undefined && ledger.snapshot().length > 0 const rootFollowUpOpen = - rootMayBeRunning || (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted) + rootMayBeRunning || + hasAdoptedWork || + (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted) const barrierLedger = ledger ?? (rootMayBeRunning ? createOwnershipLedger() : undefined) if (barrierLedger === undefined || (barrierLedger.isDrainComplete() && !rootFollowUpOpen)) { throw new RunCoreError(kind, message, false, providerFailureReason, cause) @@ -1021,7 +1027,9 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise } case 'inbox_delivered': { - if (event.sessionId === sessionId) drainCompletion?.noteInboxDelivered(event.inboxId) + // Any owned session: a notice can be queued into a busy child, and is delivered there. Inbox ids are unique + // message ids, so a delivery can only match the notice it names. + if (isOwnedSession(event.sessionId)) drainCompletion?.noteInboxDelivered(event.inboxId) break } @@ -1170,6 +1178,19 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise event.eventType === 'permission.asked' || event.eventType === 'form.created' || event.eventType === 'session.moved' + if (event.childSessionId !== undefined && isOwnedSession(event.sessionId)) { + // A child's notice the server sent and this client cannot read. It proves nothing about the child, so the + // child is fenced rather than waited on: the gate stops expecting a readable notice, and the entry is + // `unknown` (never `settled`) until reconciliation sees it stop. + drainCompletion?.noteUnreadableNotice(event.childSessionId) + ledger?.markUnknown(event.childSessionId) + markActivity() + logger.warn( + {sessionId, childSessionId: event.childSessionId, eventType: event.eventType}, + 'run-core: a child completion notice could not be read — child fenced and marked unknown', + ) + break + } if (safetyRelevant && isOwnedSession(event.sessionId)) { logger.error( {sessionId, eventType: event.eventType}, diff --git a/packages/runtime/src/agent/event-v2.test.ts b/packages/runtime/src/agent/event-v2.test.ts index 62272e5761..484478b437 100644 --- a/packages/runtime/src/agent/event-v2.test.ts +++ b/packages/runtime/src/agent/event-v2.test.ts @@ -509,6 +509,51 @@ describe('mapV2Event: subagent notices', () => { expect(event).toBeNull() }) + it.each([ + ['an unknown state', {source: 'subagent', childID: CHILD_SESSION_ID, agent: 'General', state: 'paused'}], + ['state running, which is never delivered', {source: 'subagent', childID: CHILD_SESSION_ID, state: 'running'}], + ['no state', {source: 'subagent', childID: CHILD_SESSION_ID}], + ])('maps a subagent notice with %s to malformed, naming the child', (_label, metadata) => { + const inbox = mapV2Event({ + type: 'session.inbox.enqueued', + data: {inboxID: 'msg_odd', sessionID: PARENT_SESSION_ID, item: {type: 'synthetic', payload: {metadata}}}, + }) + const synthetic = mapV2Event({type: 'session.synthetic', data: {sessionID: PARENT_SESSION_ID, metadata}}) + + for (const event of [inbox, synthetic]) { + expect(event).toMatchObject({ + kind: 'malformed', + sessionId: PARENT_SESSION_ID, + childSessionId: CHILD_SESSION_ID, + }) + } + }) + + it('maps a subagent notice that names no readable child to malformed without a child id', () => { + const event = mapV2Event({ + type: 'session.synthetic', + data: {sessionID: PARENT_SESSION_ID, metadata: {source: 'subagent', state: 'completed'}}, + }) + expect(event).toEqual({ + kind: 'malformed', + eventType: 'session.synthetic', + sessionId: PARENT_SESSION_ID, + reason: 'unreadable subagent notice', + }) + }) + + it('still ignores an enqueued item that is not synthetic, whatever its metadata says', () => { + const event = mapV2Event({ + type: 'session.inbox.enqueued', + data: { + inboxID: 'msg_user', + sessionID: PARENT_SESSION_ID, + item: {type: 'user', payload: {metadata: {source: 'subagent', childID: CHILD_SESSION_ID, state: 'paused'}}}, + }, + }) + expect(event).toBeNull() + }) + it('ignores a synthetic event from instruction loading', () => { const event = mapV2Event({ type: 'session.synthetic', diff --git a/packages/runtime/src/agent/event-v2.ts b/packages/runtime/src/agent/event-v2.ts index 1b63e6a870..d6ec9b17b4 100644 --- a/packages/runtime/src/agent/event-v2.ts +++ b/packages/runtime/src/agent/event-v2.ts @@ -1,8 +1,8 @@ import type {Logger} from '../shared/logger.js' -import type {SubagentNotice} from './subagent-notice.js' +import type {SubagentNotice, SubagentNoticeRead} from './subagent-notice.js' import {getNumberProperty, getObjectProperty, getStringProperty, ownValue} from './payload-accessors.js' -import {readSubagentNotice, readSubagentNoticeItem} from './subagent-notice.js' +import {classifySubagentNotice, classifySubagentNoticeItem} from './subagent-notice.js' /** * OpenCode V2 event mapper: turns parsed V2 event frames into one small, surface-neutral domain union that the Action @@ -195,6 +195,8 @@ export type V2DomainEvent = readonly eventType: string readonly sessionId: string | null readonly reason: string + /** Set for a subagent notice that could not be read and still named its child; the loop fences that child. */ + readonly childSessionId?: string } /** Stable identity of an inner call of an `execute` tool call. */ @@ -469,11 +471,24 @@ function mapSessionError(type: string, data: unknown): V2DomainEvent { } function mapNotice( - sessionId: string | null, - notice: SubagentNotice | null, + type: string, + data: unknown, + read: SubagentNoticeRead, inboxId: string | null, ): V2DomainEvent | null { - return sessionId === null || notice === null ? null : {kind: 'subagent_notice', sessionId, notice, inboxId} + const sessionId = getStringProperty(data, 'sessionID') + if (read.kind === 'none') return null + if (read.kind === 'notice') { + return sessionId === null ? null : {kind: 'subagent_notice', sessionId, notice: read.notice, inboxId} + } + // A notice the server sent that this reader cannot take. Dropping it would leave its child unaccounted for. + return { + kind: 'malformed', + eventType: type, + sessionId, + reason: 'unreadable subagent notice', + ...(read.childSessionId === null ? {} : {childSessionId: read.childSessionId}), + } } /** @@ -554,8 +569,9 @@ export function mapV2Event(frame: unknown): V2DomainEvent | null { case 'session.inbox.enqueued': return mapNotice( - getStringProperty(data, 'sessionID'), - readSubagentNoticeItem(getObjectProperty(data, 'item')), + type, + data, + classifySubagentNoticeItem(getObjectProperty(data, 'item')), getStringProperty(data, 'inboxID'), ) @@ -566,7 +582,7 @@ export function mapV2Event(frame: unknown): V2DomainEvent | null { } case 'session.synthetic': - return mapNotice(getStringProperty(data, 'sessionID'), readSubagentNotice(data), null) + return mapNotice(type, data, classifySubagentNotice(data), null) default: return null diff --git a/packages/runtime/src/agent/remote-client-v2.test.ts b/packages/runtime/src/agent/remote-client-v2.test.ts index 8c620a5ca4..4d764bf08d 100644 --- a/packages/runtime/src/agent/remote-client-v2.test.ts +++ b/packages/runtime/src/agent/remote-client-v2.test.ts @@ -292,21 +292,31 @@ describe('createRemoteOpenCodeV2Client', () => { expect(requests[0]?.headers.accept).toBe('text/event-stream') }) - it('keeps reading after a frame it cannot parse', async () => { - // #given + it('ends the stream with an error at a frame it cannot parse, after delivering the frames before it', async () => { + // #given — a frame that is cut off, then a frame that would parse const client = createRemoteOpenCodeV2Client({ baseUrl: 'http://w', - fetch: makeFetch(() => sseResponse(['data: {not json\n\n', 'data: {"type":"x"}\n\n'])).fetch, + fetch: makeFetch(() => + sseResponse([ + 'data: {"type":"x"}\n\n', + 'data: {"type":"permission.asked","data":{"id":"sec\n\n', + 'data: {"type":"y"}\n\n', + ]), + ).fetch, }) - - // #when const result = await client.subscribeEvents({directory: '/d'}) if (!result.success) throw new Error('expected a stream') + + // #when const frames: unknown[] = [] - for await (const frame of result.data) frames.push(frame) + const reading = (async () => { + for await (const frame of result.data) frames.push(frame) + })() - // #then — the unreadable frame is still a sign of life, and carries no payload - expect(frames).toEqual([{type: 'server.unreadable'}, {type: 'x'}]) + // #then — the stream fails instead of skipping a frame of unknown type, and the error carries no payload + await expect(reading).rejects.toThrow('could not be parsed') + await expect(reading).rejects.not.toThrow('sec') + expect(frames).toEqual([{type: 'x'}]) }) it('fails a subscription the proxy rejects, as auth', async () => { diff --git a/packages/runtime/src/agent/remote-client-v2.ts b/packages/runtime/src/agent/remote-client-v2.ts index bbb600ffe0..06731618bc 100644 --- a/packages/runtime/src/agent/remote-client-v2.ts +++ b/packages/runtime/src/agent/remote-client-v2.ts @@ -55,8 +55,12 @@ export interface V2SessionSummary { */ export const V2_HEARTBEAT_FRAME = {type: 'server.heartbeat'} as const -/** Stand-in for a data frame whose JSON could not be parsed. It carries nothing from the payload. */ -const V2_UNREADABLE_FRAME = {type: 'server.unreadable'} as const +/** + * What the event stream throws for a data frame whose JSON cannot be parsed. A frame that cannot be read has no type, so + * nothing can say whether it was a request somebody has to answer: the stream ends, and the consumer treats that as a + * lost connection. The message carries nothing from the payload. + */ +const V2_UNREADABLE_FRAME_MESSAGE = 'OpenCode V2 event stream carried a data frame that could not be parsed' export interface RemoteOpenCodeV2ClientOptions { /** Base URL of the proxy (no trailing path). */ @@ -145,7 +149,10 @@ function readOutcome(value: unknown): V2SessionOutcome | null { return outcome === 'succeeded' || outcome === 'failed' || outcome === 'interrupted' ? outcome : null } -/** SSE blocks are separated by a blank line; a block of comment lines only is a heartbeat. */ +/** + * SSE blocks are separated by a blank line; a block of comment lines only is a heartbeat. Throws on a data block that is + * not JSON. + */ function readBlock(block: string): unknown { const lines = block.split('\n') const dataLines = lines.filter(line => line.startsWith('data:')).map(line => line.slice(5).replace(/^ /, '')) @@ -153,7 +160,7 @@ function readBlock(block: string): unknown { try { return JSON.parse(dataLines.join('\n')) } catch { - return V2_UNREADABLE_FRAME + throw new Error(V2_UNREADABLE_FRAME_MESSAGE) } } diff --git a/packages/runtime/src/agent/subagent-notice.ts b/packages/runtime/src/agent/subagent-notice.ts index ca3fb960a9..be94221e35 100644 --- a/packages/runtime/src/agent/subagent-notice.ts +++ b/packages/runtime/src/agent/subagent-notice.ts @@ -68,6 +68,39 @@ export function readSubagentNoticeItem(item: unknown): SubagentNotice | null { return readSubagentNotice(getObjectProperty(item, 'payload')) } +/** How a synthetic message or inbox item reads as a subagent notice. */ +export type SubagentNoticeRead = + | {readonly kind: 'none'} + | {readonly kind: 'notice'; readonly notice: SubagentNotice} + /** + * The server marked it as a subagent notice (`metadata.source === 'subagent'`), but this reader cannot take it: an + * unknown state or a changed shape. The child it names, when readable, is no longer known to be running or ended. + */ + | {readonly kind: 'unreadable'; readonly childSessionId: string | null} + +/** Like `readSubagentNotice`, but tells a message that is not a notice from a notice that cannot be read. */ +export function classifySubagentNotice(value: unknown): SubagentNoticeRead { + const notice = readSubagentNotice(value) + if (notice !== null) return {kind: 'notice', notice} + + const type = getStringProperty(value, 'type') + if (type !== null && type !== 'synthetic') return {kind: 'none'} + const metadata = getObjectProperty(value, 'metadata') + if (getStringProperty(metadata, 'source') !== 'subagent') return {kind: 'none'} + + const childSessionId = getStringProperty(metadata, 'childID') + return { + kind: 'unreadable', + childSessionId: childSessionId === null || childSessionId.length === 0 ? null : childSessionId, + } +} + +/** Like `readSubagentNoticeItem`, with the same distinction. Only `synthetic` items are considered. */ +export function classifySubagentNoticeItem(item: unknown): SubagentNoticeRead { + if (getStringProperty(item, 'type') !== 'synthetic') return {kind: 'none'} + return classifySubagentNotice(getObjectProperty(item, 'payload')) +} + export interface SubagentNoticeSettlement { readonly childSessionId: string readonly state: SubagentNoticeState From 98ede79f026b0d7f31aa09d08f5b6c2144d23801 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Wed, 28 Oct 2026 23:16:58 -0700 Subject: [PATCH 4/9] refactor(gateway): own background shell jobs in the V2 run loop A background `shell` is a server job, not a session: `session.active` never lists it, an interrupt does not stop it, and it outlives the run's lock while its completion notice later wakes the root. The V2 loop now treats it like a background subagent. - Mapper: `shell.created`/`shell.exited` and the job notice (`source: shell` with a `jobID`; a user command's notice has none and is ignored) map to `shell_started`/`shell_exited`/`shell_notice`. An unreadable job notice names its shell so the loop can fence it. - Ledger: shells share the ownership ledger under a `shell:` key space. Adopted on `shell.created` and on a `running` `shell` tool result; settled on the notice; a foreground shell is released when its call ends. Reconcile settles a shell absent from `GET /api/shell` that reads stopped or 404, and keeps it unknown on any other read error. - Drain: an outstanding shell blocks admission, and its notice is observed and delivered like a child's. - Stop paths: before the root abort, every owned running shell is DELETEd and confirmed gone by re-listing. An unconfirmed kill keeps the stop unconfirmed; the quarantine watch keeps deleting through the hold. - Quiescence: the repo is not clear while any shell runs in its directory. - Remote client: `listShells`, `getShell`, `deleteShell`. --- .../src/execute/drain-completion-v2.test.ts | 133 +++- .../src/execute/drain-completion-v2.ts | 44 +- .../src/execute/live-reconcile.test.ts | 44 ++ .../gateway/src/execute/live-reconcile.ts | 8 +- .../src/execute/repo-quiescence-v2.test.ts | 107 ++- .../gateway/src/execute/repo-quiescence-v2.ts | 59 +- .../gateway/src/execute/root-stop-v2.test.ts | 111 ++- packages/gateway/src/execute/root-stop-v2.ts | 46 +- .../src/execute/run-core-v2.e2e.test.ts | 264 +++++-- .../src/execute/run-core-v2.fixture.ts | 80 +++ .../src/execute/run-core-v2.shell.test.ts | 670 ++++++++++++++++++ packages/gateway/src/execute/run-core-v2.ts | 143 +++- packages/gateway/src/execute/run-core.ts | 7 + .../execute/settle-owned-sessions-v2.test.ts | 266 ++++++- .../src/execute/settle-owned-sessions-v2.ts | 88 ++- .../src/execute/settle-owned-sessions.test.ts | 3 + .../src/execute/shell-server-v2.fixture.ts | 84 +++ .../runtime/src/agent/event-v2.fixtures.ts | 283 ++++++++ packages/runtime/src/agent/event-v2.ts | 130 +++- packages/runtime/src/agent/index.ts | 33 +- .../src/agent/ledger-reconcile.test.ts | 57 +- .../runtime/src/agent/ledger-reconcile.ts | 12 +- .../src/agent/ownership-ledger.test.ts | 31 + .../runtime/src/agent/ownership-ledger.ts | 31 + .../src/agent/remote-client-v2.test.ts | 170 +++++ .../runtime/src/agent/remote-client-v2.ts | 91 ++- .../runtime/src/agent/shell-jobs-v2.test.ts | 373 ++++++++++ packages/runtime/src/agent/shell-jobs-v2.ts | 245 +++++++ .../runtime/src/agent/shell-notice.test.ts | 343 +++++++++ packages/runtime/src/agent/shell-notice.ts | 128 ++++ 30 files changed, 3943 insertions(+), 141 deletions(-) create mode 100644 packages/gateway/src/execute/run-core-v2.shell.test.ts create mode 100644 packages/gateway/src/execute/shell-server-v2.fixture.ts create mode 100644 packages/runtime/src/agent/shell-jobs-v2.test.ts create mode 100644 packages/runtime/src/agent/shell-jobs-v2.ts create mode 100644 packages/runtime/src/agent/shell-notice.test.ts create mode 100644 packages/runtime/src/agent/shell-notice.ts diff --git a/packages/gateway/src/execute/drain-completion-v2.test.ts b/packages/gateway/src/execute/drain-completion-v2.test.ts index ba03fc03ba..4b3c85db03 100644 --- a/packages/gateway/src/execute/drain-completion-v2.test.ts +++ b/packages/gateway/src/execute/drain-completion-v2.test.ts @@ -2,7 +2,7 @@ import type {LedgerReconcileAdapter, SubagentNotice} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' import type {DrainRejectCode} from './drain-completion.js' -import {createOwnershipLedger, err, ok} from '@fro-bot/runtime' +import {createOwnershipLedger, err, ok, shellLedgerKey} from '@fro-bot/runtime' import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest' import {createDrainCompletionV2} from './drain-completion-v2.js' @@ -404,3 +404,134 @@ describe('createDrainCompletionV2', () => { expect(s.reasons.at(-1)).toBe('notice-not-observed') }) }) + +describe('createDrainCompletionV2: background shells', () => { + const SHELL = 'sh_185e8678e001OVuLXzTBhwDmUx' + const SHELL_KEY = shellLedgerKey(SHELL) + + function shellSetup(options: {readonly live?: readonly Live[]} = {}) { + const s = setup({children: [], ...options}) + s.ledger.adopt(SHELL_KEY, 'sleep 8') + return s + } + + /** The server's own statement that a background shell ended: the ledger settles and the gate hears the notice. */ + function shellEnds(s: ReturnType, inboxId: string | null = 'msg_shell_notice') { + s.ledger.settle(SHELL_KEY) + s.drain.noteShellNotice(SHELL, 'completed', inboxId) + } + + it('does not admit while a shell is outstanding, whatever the root did', async () => { + // #given — the root went idle and the shell still runs + const s = shellSetup() + s.drain.noteRootIdle() + s.drain.beginDrain() + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('ledger-not-drained') + }) + + it('admits only after the shell notice and the root turn it woke have both ended (real p20 order)', async () => { + // #given — idle once, shell running + const s = shellSetup() + s.drain.noteRootIdle() + s.drain.beginDrain() + + // #when — the notice arrives and the shell settles, but the woken turn has not run yet + shellEnds(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then — the first idle is not terminal + expect(s.onAdmitted).not.toHaveBeenCalled() + + // #when — the woken turn takes the notice in and ends + noticeTurn(s, 'msg_shell_notice') + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('does not admit a settled shell whose notice was never observed', async () => { + // #given — reconciliation saw the shell stop; its notice has not arrived + const s = shellSetup() + s.drain.noteRootIdle() + s.drain.beginDrain() + s.ledger.settle(SHELL_KEY) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('notice-not-observed') + }) + + it('holds a queued shell notice until it is delivered into a root turn', async () => { + // #given + const s = shellSetup() + s.drain.noteRootIdle() + s.drain.beginDrain() + shellEnds(s) + + // #when — a root idle that did not take the notice in + s.drain.noteRootIdle() + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + }) + + it('counts an unreadable shell notice as observed, but still needs idle evidence', async () => { + // #given + const s = shellSetup() + s.drain.noteRootIdle() + s.drain.beginDrain() + s.ledger.settle(SHELL_KEY) + + // #when + s.drain.noteUnreadableShellNotice(SHELL) + await vi.advanceTimersByTimeAsync(10) + + // #then — the earlier idle is stale + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('idle-evidence-stale') + + // #when — the turn that follows ends + s.drain.noteRootActivity() + s.drain.noteRootIdle() + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('a child notice does not stand in for a shell notice, and the other way round', async () => { + // #given — a child and a shell are outstanding, and only the child ends + const s = setup({children: [CHILD]}) + s.ledger.adopt(SHELL_KEY, 'sleep 8') + s.drain.noteRootIdle() + s.drain.beginDrain() + childEnds(s) + s.ledger.settle(SHELL_KEY) + + // #when + noticeTurn(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then — the shell's own notice is still missing + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('notice-not-observed') + }) +}) diff --git a/packages/gateway/src/execute/drain-completion-v2.ts b/packages/gateway/src/execute/drain-completion-v2.ts index b434dc089b..35d8d1fa43 100644 --- a/packages/gateway/src/execute/drain-completion-v2.ts +++ b/packages/gateway/src/execute/drain-completion-v2.ts @@ -11,7 +11,8 @@ * (`session.inbox.delivered`), so the gate keeps that state itself and asks the server one thing: is the root in the * active list. Success is admitted only when ALL of these hold at one commit point: * - the ledger reports drain-complete (`unknown` still blocks, exactly as before); - * - every ledger entry's notice was observed. A cancelled child's notice counts: the notice is the server's own + * - every ledger entry's notice was observed (a background shell is a ledger entry like a child: its notice wakes the root + * the same way). A cancelled child's notice counts: the notice is the server's own * statement that the child ended, and a notice carries no model-forgeable text here (`readSubagentNotice` reads only * metadata); * - every queued notice has been delivered into a root turn; @@ -28,11 +29,11 @@ * Not a state machine framework: a revision counter, an idle stamp, the notices seen, and one validation in flight. */ -import type {LedgerReconcileAdapter, OwnershipLedger, SubagentNotice} from '@fro-bot/runtime' +import type {LedgerReconcileAdapter, OwnershipLedger, ShellNoticeState, SubagentNotice} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' import type {DrainRejectCode} from './drain-completion.js' -import {toErrorMessage} from '@fro-bot/runtime' +import {shellLedgerKey, toErrorMessage} from '@fro-bot/runtime' import {DRAIN_REQUEST_TIMEOUT_MS, DRAIN_VALIDATION_INTERVAL_MS} from './drain-completion.js' type BoundedResult = {readonly ok: true; readonly value: T} | {readonly ok: false} @@ -67,6 +68,14 @@ export interface DrainCompletionV2 { * `unknown`) is what still blocks admission until the child is seen to stop. */ readonly noteUnreadableNotice: (childSessionId: string) => void + /** + * A completion notice for one of the root's background shells, with the same meaning as `noteNotice`. A shell is + * waited on exactly like a child: its notice wakes the root, so the first idle after it is not terminal. Deduped by + * shell and state. Invalidates idle evidence. + */ + readonly noteShellNotice: (shellId: string, state: ShellNoticeState, inboxId: string | null) => void + /** As `noteUnreadableNotice`, for a shell. The ledger entry (the caller marks it `unknown`) still blocks admission. */ + readonly noteUnreadableShellNotice: (shellId: string) => void /** A queued inbox item entered a turn of an owned session. */ readonly noteInboxDelivered: (inboxId: string) => void /** The root's execution succeeded: stamps the current revision, unless a notice is still queued. */ @@ -126,9 +135,10 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai invalidate() } - function noteNotice(notice: SubagentNotice, inboxId: string | null): void { + // Notices and fences are keyed by ledger key, so a child and a shell can never stand in for each other. + function recordNotice(ledgerKey: string, state: string, inboxId: string | null): void { if (closed) return - const key = `${notice.childSessionId}:${notice.state}` + const key = `${ledgerKey}:${state}` const existing = notices.get(key) if (existing === undefined) { // A queued item is not in a turn yet; a transcript message already is. @@ -137,17 +147,33 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai } else if (existing.inboxId === null && inboxId !== null && !existing.delivered) { existing.inboxId = inboxId } - noticedChildren.add(notice.childSessionId) + noticedChildren.add(ledgerKey) requestValidation() } - function noteUnreadableNotice(childSessionId: string): void { + function noteNotice(notice: SubagentNotice, inboxId: string | null): void { + recordNotice(notice.childSessionId, notice.state, inboxId) + } + + function noteShellNotice(shellId: string, state: ShellNoticeState, inboxId: string | null): void { + recordNotice(shellLedgerKey(shellId), state, inboxId) + } + + function fenceUnreadable(ledgerKey: string): void { if (closed) return invalidate() - noticedChildren.add(childSessionId) + noticedChildren.add(ledgerKey) requestValidation() } + function noteUnreadableNotice(childSessionId: string): void { + fenceUnreadable(childSessionId) + } + + function noteUnreadableShellNotice(shellId: string): void { + fenceUnreadable(shellLedgerKey(shellId)) + } + function noteInboxDelivered(inboxId: string): void { if (closed) return for (const record of notices.values()) { @@ -281,6 +307,8 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai noteRootActivity, noteNotice, noteUnreadableNotice, + noteShellNotice, + noteUnreadableShellNotice, noteInboxDelivered, noteRootIdle, beginDrain, diff --git a/packages/gateway/src/execute/live-reconcile.test.ts b/packages/gateway/src/execute/live-reconcile.test.ts index 9e8b5ee985..8456c085df 100644 --- a/packages/gateway/src/execute/live-reconcile.test.ts +++ b/packages/gateway/src/execute/live-reconcile.test.ts @@ -193,4 +193,48 @@ describe('reconcileLivePass', () => { expect(logger.warning).not.toHaveBeenCalled() }) }) + + it('runs an injected pass through the same guard: inert once the run is closed', async () => { + // #given — a pass that answers after the run has moved on to teardown + const inner = createOwnershipLedger() + inner.adopt('child-1', 'task') + let closed = false + const pass = vi.fn(async (options: {readonly ledger: {settle: (id: string) => void}}) => { + options.ledger.settle('child-1') + }) + + // #when + await reconcileLivePass( + {ledger: inner, adapter: makeAdapter(), parentSessionId: PARENT, logger: makeLogger()}, + () => closed, + undefined, + async options => { + closed = true + await pass(options) + }, + ) + + // #then — the pass ran, and its settle was ignored + expect(pass).toHaveBeenCalledTimes(1) + expect(inner.outstanding()).toBe(1) + }) + + it('runs an injected pass that settles while the run is live', async () => { + // #given + const inner = createOwnershipLedger() + inner.adopt('child-1', 'task') + + // #when + await reconcileLivePass( + {ledger: inner, adapter: makeAdapter(), parentSessionId: PARENT, logger: makeLogger()}, + () => false, + undefined, + async options => { + options.ledger.settle('child-1') + }, + ) + + // #then + expect(inner.outstanding()).toBe(0) + }) }) diff --git a/packages/gateway/src/execute/live-reconcile.ts b/packages/gateway/src/execute/live-reconcile.ts index 21d90b5f40..a454b4345b 100644 --- a/packages/gateway/src/execute/live-reconcile.ts +++ b/packages/gateway/src/execute/live-reconcile.ts @@ -30,11 +30,15 @@ export const LIVE_RECONCILE_TIMEOUT_MS = DEFAULT_SETTLE_TIMEOUT_MS /** * Runs one reconcile pass under `LIVE_RECONCILE_TIMEOUT_MS`. Never rejects. `isClosed` reports that the run no * longer owns the ledger; a pass that is still running by then is inert whenever it answers. + * + * `reconcile` is the pass to run (default: the session pass). The V2 loop runs the background-shell pass through the + * same guard, so each kind of entry gets its own bound. */ export async function reconcileLivePass( options: ReconcileLedgerOptions, isClosed: () => boolean, timeoutMs: number = LIVE_RECONCILE_TIMEOUT_MS, + reconcile: (passOptions: ReconcileLedgerOptions) => Promise = reconcileLedgerOnce, ): Promise { const {ledger, logger, parentSessionId} = options if (isClosed()) return @@ -63,9 +67,7 @@ export async function reconcileLivePass( }) try { const outcome = await Promise.race([ - reconcileLedgerOnce({...options, ledger: guardedLedger, signal: controller.signal}).then( - () => 'finished' as const, - ), + reconcile({...options, ledger: guardedLedger, signal: controller.signal}).then(() => 'finished' as const), timedOut, ]) logger.debug('Ledger reconciliation pass finished', { diff --git a/packages/gateway/src/execute/repo-quiescence-v2.test.ts b/packages/gateway/src/execute/repo-quiescence-v2.test.ts index 0e12e4c55d..95f5e86b88 100644 --- a/packages/gateway/src/execute/repo-quiescence-v2.test.ts +++ b/packages/gateway/src/execute/repo-quiescence-v2.test.ts @@ -1,6 +1,7 @@ -import type {V2SessionApi, V2SessionInfoLike} from '@fro-bot/runtime' +import type {V2CallError, V2SessionApi, V2SessionInfoLike, V2ShellSummary} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' +import {err, ok} from '@fro-bot/runtime' import {afterEach, describe, expect, it, vi} from 'vitest' import {REPO_QUIESCENCE_TIMEOUT_MS} from './recovery-budget.js' @@ -16,12 +17,21 @@ interface Options { readonly active?: Readonly> readonly sessions?: readonly V2SessionInfoLike[] readonly active_?: () => Promise>> + /** Shells the server lists as running for the location, whoever owns them. */ + readonly shells?: readonly V2ShellSummary[] + readonly shellsError?: V2CallError + readonly shells_?: () => Promise } function makeChecker(options: Options = {}) { const list = vi.fn(async (input: {readonly directory?: string}) => ({ data: (options.sessions ?? []).filter(session => session.location?.directory === input.directory), })) + const listShells = vi.fn(async (_input: {readonly directory: string; readonly signal?: AbortSignal}) => { + if (options.shells_ !== undefined) return options.shells_() + if (options.shellsError !== undefined) return err(options.shellsError) + return ok(options.shells ?? []) + }) const api: V2SessionApi = { active: options.active_ ?? (async () => options.active ?? {}), list, @@ -31,10 +41,10 @@ function makeChecker(options: Options = {}) { workspaceOpencodeUrl: 'http://workspace:9200', workspaceOpencodeToken: 'secret', logger, - createClient: () => ({session: api}), + createClient: () => ({session: api, listShells}), now: () => new Date('2026-10-28T00:00:00.000Z'), }) - return {checker, list, logger} + return {checker, list, listShells, logger} } const context = (signal: AbortSignal = new AbortController().signal) => ({repo: 'o/r', signal}) @@ -160,4 +170,95 @@ describe('createRepoQuiescenceCheckerV2', () => { 'repo-quiescence: workspace busy', ) }) + + describe('background shells', () => { + const shell = (id: string, owner: string | null, status: V2ShellSummary['status'] = 'running'): V2ShellSummary => ({ + id, + status, + ownerSessionId: owner, + pid: 4242, + }) + + it('is busy while a shell runs in the repo directory, with every session idle', async () => { + // #given — the root finished, the lock holder is gone, and a background shell still runs (probe p20) + const {checker, listShells} = makeChecker({shells: [shell('sh_bg', 'ses_root')]}) + + // #when + const result = await checker(context()) + + // #then — a shell can write the checkout whether or not any session is active + expect(result).toMatchObject({kind: 'busy', directory: DIRECTORY, sessionIds: ['sh_bg']}) + expect(listShells).toHaveBeenCalledWith(expect.objectContaining({directory: DIRECTORY})) + }) + + it('is busy for a shell nobody tagged and one whose owner this check cannot name', async () => { + // #given — `POST /api/shell` has no owner, and the dead run's sessions are not recoverable from its lease + const {checker} = makeChecker({shells: [shell('sh_untagged', null), shell('sh_stranger', 'ses_unrelated')]}) + + // #when + const result = await checker(context()) + + // #then + expect(result).toMatchObject({kind: 'busy', sessionIds: ['sh_untagged', 'sh_stranger']}) + }) + + it('lists busy sessions and running shells together', async () => { + // #given + const {checker} = makeChecker({ + active: {ses_child: {type: 'running'}}, + sessions: [{id: 'ses_child', location: {directory: DIRECTORY}}], + shells: [shell('sh_bg', 'ses_child')], + }) + + // #when + const result = await checker(context()) + + // #then + expect(result).toMatchObject({kind: 'busy', sessionIds: ['ses_child', 'sh_bg']}) + }) + + it('is clear when the only shells are stopped ones', async () => { + // #given — a list that includes records with a stopped status is not a running shell + const {checker} = makeChecker({shells: [shell('sh_a', 'ses_root', 'exited'), shell('sh_b', null, 'killed')]}) + + // #when / #then + expect(await checker(context())).toMatchObject({kind: 'clear'}) + }) + + it('reads a shell with a status it does not know as running', async () => { + // #given + const {checker} = makeChecker({shells: [shell('sh_a', null, 'unknown')]}) + + // #when / #then + expect(await checker(context())).toMatchObject({kind: 'busy', sessionIds: ['sh_a']}) + }) + + it('is unknown, never clear, when the shell list cannot be read', async () => { + // #given — the session side answers, the shell side does not + const {checker} = makeChecker({shellsError: {kind: 'http', status: 503}}) + + // #when + const result = await checker(context()) + + // #then + expect(result).toMatchObject({ + kind: 'unknown', + source: 'opencode-session-status', + reason: 'status-request-failed', + }) + }) + + it('is unknown when the shell request outlives the bound', async () => { + // #given + vi.useFakeTimers() + const {checker} = makeChecker({shells_: async () => new Promise(() => undefined)}) + + // #when + const pending = checker(context()) + await vi.advanceTimersByTimeAsync(REPO_QUIESCENCE_TIMEOUT_MS + 1) + + // #then + await expect(pending).resolves.toMatchObject({kind: 'unknown', reason: 'status-request-timeout'}) + }) + }) }) diff --git a/packages/gateway/src/execute/repo-quiescence-v2.ts b/packages/gateway/src/execute/repo-quiescence-v2.ts index 786cc13525..3da981368d 100644 --- a/packages/gateway/src/execute/repo-quiescence-v2.ts +++ b/packages/gateway/src/execute/repo-quiescence-v2.ts @@ -11,14 +11,24 @@ * canonical workspace directory the run creates its sessions under (`canonicalWorkspaceDirectory`). The gateway cannot * `realpath` it: the checkout lives in the workspace's filesystem, not this one. That is why the canonicalizer handed to * the join is the identity. + * + * Background shells are part of the answer. A shell is a server job, not a session, so `session.active` never lists it, + * and it outlives the run that started it, writing the checkout after the lock expires (bgshell probes p20, p21). The + * repo is therefore not clear while ANY shell is running in its directory, whoever owns it. That is deliberately wider + * than "a shell of this repo's sessions": the lease check runs after a holder died, when its session ids are not + * recoverable (the lease carries none, and a session that moved is listed under its destination), and a shell nobody + * tagged (`POST /api/shell`) writes the checkout just the same. Two runs never share a checkout, so a running shell in + * the directory is a writer the next run must wait out. A status the client does not know counts as running, and a list + * that cannot be read is `unknown`. */ -import type {V2SessionApi} from '@fro-bot/runtime' +import type {Result} from '@bfra.me/es/result' +import type {RemoteOpenCodeV2Client, V2SessionApi} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' import type {RepoQuiescence} from '../runtime-effect.js' import type {RepoQuiescenceChecker} from './repo-quiescence.js' -import {listBusyV2SessionIdsInDirectory} from '@fro-bot/runtime' +import {err, listBusyV2SessionIdsInDirectory, ok, toErrorMessage} from '@fro-bot/runtime' import {attachOpencodeV2} from './opencode-attach-v2.js' import {REPO_QUIESCENCE_TIMEOUT_MS} from './recovery-budget.js' import {resolveRepoDirectory} from './repo-quiescence.js' @@ -29,6 +39,7 @@ const MAX_LOGGED_SESSION_IDS = 32 /** The one client surface this check needs; the real V2 client satisfies it. */ export interface ActiveSessionsClient { readonly session: V2SessionApi + readonly listShells: RemoteOpenCodeV2Client['listShells'] } export interface RepoQuiescenceCheckerV2Options { @@ -40,6 +51,23 @@ export interface RepoQuiescenceCheckerV2Options { readonly now?: () => Date } +/** Ids of the shells running in `directory`. A failed or unreadable list is an error: it must not read as "none". */ +async function listRunningShellIds( + client: ActiveSessionsClient, + directory: string, + signal: AbortSignal, +): Promise> { + try { + const listed = await client.listShells({directory, signal}) + if (!listed.success) return err(new Error(`shell.list failed: ${listed.error.kind}`)) + return ok( + listed.data.filter(shell => shell.status === 'running' || shell.status === 'unknown').map(shell => shell.id), + ) + } catch (error) { + return err(new Error(toErrorMessage(error))) + } +} + export function createRepoQuiescenceCheckerV2(options: RepoQuiescenceCheckerV2Options): RepoQuiescenceChecker { const {logger, now = () => new Date()} = options const client: ActiveSessionsClient = @@ -76,23 +104,32 @@ export function createRepoQuiescenceCheckerV2(options: RepoQuiescenceCheckerV2Op try { const outcome = await Promise.race([ - listBusyV2SessionIdsInDirectory( - client.session, - directory, - {realpath: async path => path}, - {signal: controller.signal}, - ), + Promise.all([ + listBusyV2SessionIdsInDirectory( + client.session, + directory, + {realpath: async path => path}, + {signal: controller.signal}, + ), + listRunningShellIds(client, directory, controller.signal), + ]), aborted, ]) if (outcome === 'aborted') return unknown(timedOut ? 'status-request-timeout' : 'status-request-aborted') - if (!outcome.success) { + const [sessions, shells] = outcome + if (!sessions.success) { + return unknown(controller.signal.aborted ? 'status-request-aborted' : 'status-request-failed', { + errorName: sessions.error.name, + }) + } + if (!shells.success) { return unknown(controller.signal.aborted ? 'status-request-aborted' : 'status-request-failed', { - errorName: outcome.error.name, + errorName: shells.error.name, }) } - const busyIds = [...outcome.data] + const busyIds = [...sessions.data, ...shells.data] if (busyIds.length > 0) { logger.info( {repo, directory, busyCount: busyIds.length, sessionIds: busyIds.slice(0, MAX_LOGGED_SESSION_IDS)}, diff --git a/packages/gateway/src/execute/root-stop-v2.test.ts b/packages/gateway/src/execute/root-stop-v2.test.ts index ff7832de37..f41764cde4 100644 --- a/packages/gateway/src/execute/root-stop-v2.test.ts +++ b/packages/gateway/src/execute/root-stop-v2.test.ts @@ -2,10 +2,11 @@ import type {LedgerReconcileAdapter, V2CallError, V2SessionOutcome} from '@fro-b import type {GatewayLogger} from '../discord/client.js' import type {RootStopClientV2, StreamTerminal} from './root-stop-v2.js' -import {err, ok} from '@fro-bot/runtime' +import {createOwnershipLedger, err, ok, shellLedgerKey} from '@fro-bot/runtime' import {afterEach, describe, expect, it, vi} from 'vitest' import {interruptSession, probeRootStopV2, startQuarantineRootWatchV2} from './root-stop-v2.js' +import {makeShellServer} from './shell-server-v2.fixture.js' const ROOT = 'ses_root' const DIRECTORY = '/workspace/repos/o/r' @@ -284,3 +285,111 @@ describe('startQuarantineRootWatchV2', () => { watch.stop() }) }) + +describe('startQuarantineRootWatchV2: background shells', () => { + const SHELL = 'sh_bg1' + const OWNERS = new Set([ROOT]) + + function startShellWatch( + setup: Setup, + server: ReturnType, + extra: {followUpPossible?: boolean; windowMs?: number; ledgerHoldsShell?: boolean} = {}, + ) { + vi.useFakeTimers() + const made = makeProbe(setup) + const ledger = createOwnershipLedger() + if (extra.ledgerHoldsShell !== false) ledger.adopt(shellLedgerKey(SHELL), 'background shell') + const stop = startQuarantineRootWatchV2({ + client: made.client, + adapter: made.adapter, + rootSessionId: ROOT, + streamTerminal: () => null, + logger: makeLogger(), + pollIntervalMs: 500, + shells: {api: server.routes, directory: DIRECTORY, ownerSessionIds: OWNERS, ledger}, + ...(extra.windowMs === undefined ? {} : {windowMs: extra.windowMs}), + ...(extra.followUpPossible === undefined ? {} : {followUpPossible: extra.followUpPossible}), + }) + return {...made, stop, ledger} + } + + it('re-deletes an owned shell it finds running during the hold', async () => { + // #given — the root is gone for good, but a shell survived the barrier's kill + const server = makeShellServer({shells: {[SHELL]: {status: 'running', owner: ROOT}}}) + const watch = startShellWatch({live: [[]], outcome: 'interrupted'}, server) + + // #when + await vi.advanceTimersByTimeAsync(600) + + // #then + expect(server.deleteShell).toHaveBeenCalledWith(expect.objectContaining({shellId: SHELL, directory: DIRECTORY})) + expect(server.shells[SHELL]).toBeUndefined() + watch.stop() + }) + + it('does not end on a confirmed root while a shell is still running', async () => { + // #given — the root confirms at once, and the shell shrugs off the DELETE + const server = makeShellServer({ + shells: {[SHELL]: {status: 'running', owner: ROOT}}, + deleteDoesNotKill: [SHELL], + }) + const watch = startShellWatch({live: [[]], outcome: 'interrupted'}, server) + + // #when + await vi.advanceTimersByTimeAsync(2_100) + + // #then — still watching and still deleting + expect(server.deleteShell.mock.calls.length).toBeGreaterThanOrEqual(3) + watch.stop() + }) + + it('ends once the root is confirmed and no shell is running', async () => { + // #given + const server = makeShellServer({shells: {[SHELL]: {status: 'running', owner: ROOT}}}) + const watch = startShellWatch({live: [[]], outcome: 'interrupted'}, server) + + // #when + await vi.advanceTimersByTimeAsync(5_000) + + // #then — one sweep killed it, and the watch stopped asking + expect(server.deleteShell).toHaveBeenCalledTimes(1) + const probes = watch.adapter.liveSessionIds as ReturnType + const callsAtEnd = probes.mock.calls.length + await vi.advanceTimersByTimeAsync(5_000) + expect(probes.mock.calls.length).toBe(callsAtEnd) + }) + + it('keeps watching for the whole window while follow-up work is open, deleting a late shell', async () => { + // #given — nothing runs yet + const server = makeShellServer() + const watch = startShellWatch({live: [[]], outcome: 'succeeded'}, server, { + followUpPossible: true, + windowMs: 3_000, + ledgerHoldsShell: false, + }) + await vi.advanceTimersByTimeAsync(1_100) + expect(server.deleteShell).not.toHaveBeenCalled() + + // #when — the woken root starts a shell + server.shells[SHELL] = {status: 'running', owner: ROOT} + await vi.advanceTimersByTimeAsync(1_000) + + // #then + expect(server.deleteShell).toHaveBeenCalledWith(expect.objectContaining({shellId: SHELL})) + watch.stop() + }) + + it('does not stall on a shell list that never answers', async () => { + // #given + const server = makeShellServer({shells: {[SHELL]: {status: 'running', owner: ROOT}}}) + server.listShells.mockImplementation(async () => new Promise(() => undefined)) + const watch = startShellWatch({live: [[ROOT]]}, server) + + // #when — past the per-request cap and a few polls + await vi.advanceTimersByTimeAsync(20_000) + + // #then — the root was still probed and interrupted + expect(watch.interrupt.mock.calls.length).toBeGreaterThan(1) + watch.stop() + }) +}) diff --git a/packages/gateway/src/execute/root-stop-v2.ts b/packages/gateway/src/execute/root-stop-v2.ts index c34379041f..f1b28a6e76 100644 --- a/packages/gateway/src/execute/root-stop-v2.ts +++ b/packages/gateway/src/execute/root-stop-v2.ts @@ -23,15 +23,21 @@ * The liveness reading is taken again after the evidence is read, so a cold root that starts in between reads as busy. */ -import type {LedgerReconcileAdapter, RemoteOpenCodeV2Client} from '@fro-bot/runtime' +import type { + KillOwnedShellsOptions, + KillOwnedShellsResult, + LedgerReconcileAdapter, + RemoteOpenCodeV2Client, +} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' -import {toErrorMessage} from '@fro-bot/runtime' +import {killOwnedShells, toErrorMessage} from '@fro-bot/runtime' import { QUARANTINE_HOLD_WINDOW_MS, ROOT_QUIESCENCE_POLL_INTERVAL_MS, ROOT_WATCH_REQUEST_TIMEOUT_MS, } from './root-stop.js' +import {toRuntimeLogger} from './runtime-logger.js' /** The two calls this module makes; the real V2 client satisfies it. */ export type RootStopClientV2 = Pick @@ -115,6 +121,12 @@ export async function probeRootStopV2(options: ProbeRootStopV2Options): Promise< } export interface QuarantineRootWatchV2Options extends Omit { + /** + * The background shells to keep killing. Each tick DELETEs any owned shell it finds running before it probes the root, + * and the watch does not end on a confirmed root while a shell is still running: a DELETE wakes the owner, and a shell + * that outlived the barrier must not outlive the hold. + */ + readonly shells?: Omit readonly logger: GatewayLogger readonly runId?: string readonly windowMs?: number @@ -123,7 +135,8 @@ export interface QuarantineRootWatchV2Options extends Omit { timer = undefined if (ended) return + let shellsClear = true + if (options.shells !== undefined) { + const shells = options.shells + const swept = await bounded( + async signal => + killOwnedShells({ + ...shells, + logger: toRuntimeLogger(logger), + signal, + rounds: 1, + pollIntervalMs: 0, + }), + unconfirmedSweep, + ) + if (ended) return + shellsClear = swept.confirmed + if (swept.confirmed && swept.deleted.length > 0) { + logger.warn( + {rootSessionId, shellCount: swept.deleted.length}, + 'root-watch: owned background shells were running during the quarantine hold — deleted them', + ) + } + } const probe = await bounded(async signal => probeRootStopV2({...options, signal}), 'unconfirmed') if (ended) return - if (probe === 'confirmed') { + if (probe === 'confirmed' && shellsClear) { logger.info({rootSessionId, interrupts}, 'root-watch: the root is confirmed stopped; ending the watch') end() return diff --git a/packages/gateway/src/execute/run-core-v2.e2e.test.ts b/packages/gateway/src/execute/run-core-v2.e2e.test.ts index 5b2497102e..2e5b0c72c0 100644 --- a/packages/gateway/src/execute/run-core-v2.e2e.test.ts +++ b/packages/gateway/src/execute/run-core-v2.e2e.test.ts @@ -10,6 +10,10 @@ * One prompt runs through to completion with a Code Mode `execute` call whose inner call raises an approval; the test * answers it through the same reply route the gateway uses (`permission-reply-v2.ts`), so a wrong route, a wrong key or * a stream that never connects fails here and not in a fixture. + * + * Two more runs background a short `shell` job (bgshell probes p20 and p22): one completes after the job's notice and + * the root turn it wakes, with the job's marker written; the other hits the wall-clock deadline while draining, and the + * job is killed by `DELETE /api/shell/:id` before it can write its marker. */ import type {AddressInfo} from 'node:net' @@ -23,21 +27,29 @@ import http from 'node:http' import os from 'node:os' import path from 'node:path' import process from 'node:process' -import {createRemoteOpenCodeV2Client, startOpenCodeV2Server} from '@fro-bot/runtime' +import {createOwnershipLedger, createRemoteOpenCodeV2Client, startOpenCodeV2Server} from '@fro-bot/runtime' import {afterAll, describe, expect, it, vi} from 'vitest' import {createPostReplyFactoryV2} from './permission-reply-v2.js' import {makeCoordinator, makeLogger, makeSink} from './run-core-v2.fixture.js' import {runOpenCodeCoreV2} from './run-core-v2.js' +import {RunCoreError} from './run-core.js' const BINARY = process.env.FRO_BOT_OPENCODE_V2_BIN const hasBinary = BINARY !== undefined && BINARY !== '' && existsSync(BINARY) const FINAL_TEXT = 'worktree removed, all done' +const SHELL_STARTED_TEXT = 'background job started' +const SHELL_DONE_TEXT = 'background job reported back' const EXECUTE_CODE = "const made = await tools.opencode.worktree_create({name: 'e2e-wt'}); " + "const dir = typeof made === 'string' ? JSON.parse(made).directory : made.directory; " + 'return await tools.opencode.worktree_remove({directory: dir})' +const EXECUTE_CALL = {name: 'execute', args: {code: EXECUTE_CODE}} as const + +/** One model turn: a single tool call, or plain text that ends the turn. */ +type Turn = + {readonly tool: {readonly name: string; readonly args: Readonly>}} | {readonly text: string} interface ScriptedProvider { readonly baseURL: string @@ -56,10 +68,13 @@ function sse(delta: Record, finish: string | null = null): stri })}\n\n` } -/** First chat request with tools: one `execute` call. Every later one: the final text. */ -async function startScriptedProvider(): Promise { +/** + * Each chat request WITH tools plays the next scripted turn (the last one repeats). A request without tools (a title + * generation) gets plain text and does not advance the script. + */ +async function startScriptedProvider(turns: readonly Turn[]): Promise { let requests = 0 - let toolTurnSent = false + let toolRequests = 0 const server = http.createServer((req, res) => { const chunks: Buffer[] = [] req.on('data', (chunk: Buffer) => chunks.push(chunk)) @@ -72,25 +87,28 @@ async function startScriptedProvider(): Promise { requests += 1 const body = JSON.parse(Buffer.concat(chunks).toString('utf8')) as {tools?: unknown[]} const hasTools = (body.tools?.length ?? 0) > 0 + const turn: Turn = hasTools + ? (turns[Math.min(toolRequests, turns.length - 1)] ?? {text: FINAL_TEXT}) + : {text: FINAL_TEXT} + if (hasTools) toolRequests += 1 res.writeHead(200, {'content-type': 'text/event-stream', 'cache-control': 'no-cache'}) res.write(sse({role: 'assistant', content: ''})) - if (hasTools && !toolTurnSent) { - toolTurnSent = true + if ('tool' in turn) { res.write( sse({ tool_calls: [ { index: 0, - id: 'call_e2e_0', + id: `call_e2e_${toolRequests}`, type: 'function', - function: {name: 'execute', arguments: JSON.stringify({code: EXECUTE_CODE})}, + function: {name: turn.tool.name, arguments: JSON.stringify(turn.tool.args)}, }, ], }), ) res.write(sse({}, 'tool_calls')) } else { - res.write(sse({content: FINAL_TEXT})) + res.write(sse({content: turn.text})) res.write(sse({}, 'stop')) } res.write('data: [DONE]\n\n') @@ -156,71 +174,101 @@ afterAll(async () => { for (const cleanup of cleanups.reverse()) await cleanup() }) -describe.skipIf(!hasBinary)('runOpenCodeCoreV2 against the real OpenCode v2.2.0 server', () => { - it('runs a prompt to completion through a Code Mode call and an approval answered by request id', async () => { - // #given — the stock server at a git repo, a provider that calls `execute` once, edits gated behind an approval - const root = mkdtempSync(path.join(os.tmpdir(), 'run-core-v2-e2e-')) - cleanups.push(() => rmSync(root, {recursive: true, force: true})) - const repo = createRepo(root) - const provider = await startScriptedProvider() - cleanups.push(provider.stop) - const started = await startOpenCodeV2Server( - { - binaryPath: BINARY as string, - directory: repo, - expectedPluginIds: [], - env: createEnv(root), - timeouts: {agentReadyTimeoutMs: 60_000, pluginGateTimeoutMs: 1500, exitTimeoutMs: 10_000}, - config: { - $schema: 'https://opencode.ai/config.json', - autoupdate: false, - share: 'disabled', - provider: { - fake: { - npm: '@ai-sdk/openai-compatible', - name: 'Fake', - options: {baseURL: provider.baseURL, apiKey: 'fake-e2e-key-not-a-credential'}, - models: {'fixture-model': {name: 'Fixture', tool_call: true, limit: {context: 100_000, output: 8000}}}, - }, +interface StockServer { + readonly repo: string + readonly provider: ScriptedProvider + readonly client: ReturnType +} + +/** + * The stock server at a fresh git repo, with a provider that plays the turns `script` returns (it is given the repo path, + * so a turn can name a file in it) and edits gated behind an approval. + */ +async function startStockServer(script: (repo: string) => readonly Turn[]): Promise { + const root = mkdtempSync(path.join(os.tmpdir(), 'run-core-v2-e2e-')) + cleanups.push(() => rmSync(root, {recursive: true, force: true})) + const repo = createRepo(root) + const provider = await startScriptedProvider(script(repo)) + cleanups.push(provider.stop) + const started = await startOpenCodeV2Server( + { + binaryPath: BINARY as string, + directory: repo, + expectedPluginIds: [], + env: createEnv(root), + timeouts: {agentReadyTimeoutMs: 60_000, pluginGateTimeoutMs: 1500, exitTimeoutMs: 10_000}, + config: { + $schema: 'https://opencode.ai/config.json', + autoupdate: false, + share: 'disabled', + provider: { + fake: { + npm: '@ai-sdk/openai-compatible', + name: 'Fake', + options: {baseURL: provider.baseURL, apiKey: 'fake-e2e-key-not-a-credential'}, + models: {'fixture-model': {name: 'Fixture', tool_call: true, limit: {context: 100_000, output: 8000}}}, }, - model: 'fake/fixture-model', - permissions: [{action: 'edit', resource: '*', effect: 'ask'}], }, + model: 'fake/fixture-model', + permissions: [{action: 'edit', resource: '*', effect: 'ask'}], }, - makeLogger() as never, - ) - expect(started.success).toBe(true) - if (!started.success) return - const server: OpenCodeV2ServerHandle = started.data - cleanups.push(async () => { - await server.shutdown() - }) + }, + makeLogger() as never, + ) + expect(started.success).toBe(true) + if (!started.success) throw new Error('the stock server did not start') + const server: OpenCodeV2ServerHandle = started.data + cleanups.push(async () => { + await server.shutdown() + }) + const client = createRemoteOpenCodeV2Client({ + baseUrl: server.url, + headers: {authorization: server.authorizationHeader()}, + }) + return {repo, provider, client} +} - const client = createRemoteOpenCodeV2Client({ - baseUrl: server.url, - headers: {authorization: server.authorizationHeader()}, - }) - const postReply = createPostReplyFactoryV2(client) - const base = makeCoordinator() - const replies: string[] = [] - const asked: {requestID: string; permission: string}[] = [] - const coordinator: PermissionCoordinator = { - ...base, - onPermissionAsked: vi.fn(async (request: PermissionRequest) => { - asked.push({requestID: request.requestID, permission: request.permission}) - // The same call the Discord decision makes: reply by request id on the asking session. - const result = await postReply(request.sessionID)(request.requestID, repo, 'once') - replies.push(result.ok ? 'ok' : (result.error ?? 'failed')) - return 'once' as const - }), - } +/** A coordinator that answers every approval `once` through the same reply route the gateway uses. */ +function answeringCoordinator(stock: StockServer): { + readonly coordinator: PermissionCoordinator + readonly asked: {requestID: string; permission: string}[] + readonly replies: string[] +} { + const postReply = createPostReplyFactoryV2(stock.client) + const base = makeCoordinator() + const replies: string[] = [] + const asked: {requestID: string; permission: string}[] = [] + const coordinator: PermissionCoordinator = { + ...base, + onPermissionAsked: vi.fn(async (request: PermissionRequest) => { + asked.push({requestID: request.requestID, permission: request.permission}) + // The same call the Discord decision makes: reply by request id on the asking session. + const result = await postReply(request.sessionID)(request.requestID, stock.repo, 'once') + replies.push(result.ok ? 'ok' : (result.error ?? 'failed')) + return 'once' as const + }), + } + return {coordinator, asked, replies} +} + +async function sleep(ms: number): Promise { + await new Promise(resolve => { + setTimeout(resolve, ms) + }) +} + +describe.skipIf(!hasBinary)('runOpenCodeCoreV2 against the real OpenCode v2.2.0 server', () => { + it('runs a prompt to completion through a Code Mode call and an approval answered by request id', async () => { + // #given — the stock server at a git repo, a provider that calls `execute` once, edits gated behind an approval + const stock = await startStockServer(() => [{tool: EXECUTE_CALL}, {text: FINAL_TEXT}]) + const {coordinator, asked, replies} = answeringCoordinator(stock) const sink = makeSink() const onActivity = vi.fn() // #when await runOpenCodeCoreV2({ - client, - directory: repo, + client: stock.client, + directory: stock.repo, promptText: 'remove the worktree', sink, signal: AbortSignal.timeout(90_000), @@ -236,6 +284,90 @@ describe.skipIf(!hasBinary)('runOpenCodeCoreV2 against the real OpenCode v2.2.0 expect(asked).toHaveLength(1) expect(replies).toEqual(['ok']) expect(onActivity).toHaveBeenCalledWith(expect.stringContaining('worktree')) - expect(provider.requests()).toBeGreaterThanOrEqual(2) + expect(stock.provider.requests()).toBeGreaterThanOrEqual(2) + }, 120_000) + + it('waits for a backgrounded shell, completes after its notice and the root turn it wakes, with its marker written', async () => { + // #given — the model backgrounds a 3 s job that writes a marker, then ends its turn; the notice wakes it again + let marker = '' + const stock = await startStockServer(repo => { + marker = path.join(repo, 'bg-marker.txt') + return [ + {tool: {name: 'shell', args: {command: `sleep 3 && touch ${marker}`, background: true}}}, + {text: SHELL_STARTED_TEXT}, + {text: SHELL_DONE_TEXT}, + ] + }) + const ledger = createOwnershipLedger() + const {coordinator} = answeringCoordinator(stock) + const sink = makeSink() + + // #when + await runOpenCodeCoreV2({ + client: stock.client, + directory: stock.repo, + promptText: 'run the background job', + sink, + signal: AbortSignal.timeout(90_000), + logger: makeLogger(), + coordinator, + ownershipLedger: ledger, + inactivityTimeoutMs: 60_000, + streamSilenceTimeoutMs: 45_000, + }) + + // #then — the run did not end on the first idle: the job finished, its marker is on disk, and the woken turn spoke + expect(existsSync(marker)).toBe(true) + expect(sink.text()).toContain(SHELL_STARTED_TEXT) + expect(sink.text()).toContain(SHELL_DONE_TEXT) + expect(ledger.snapshot().map(entry => [entry.sessionId.startsWith('shell:sh_'), entry.state])).toEqual([ + [true, 'settled'], + ]) + expect(await stock.client.listShells({directory: stock.repo})).toEqual({success: true, data: []}) + }, 120_000) + + it('kills the backgrounded shell at the wall-clock deadline: no marker is written', async () => { + // #given — an 8 s job and a 4 s deadline + let marker = '' + const stock = await startStockServer(repo => { + marker = path.join(repo, 'bg-marker.txt') + return [ + {tool: {name: 'shell', args: {command: `sleep 8 && touch ${marker}`, background: true}}}, + {text: SHELL_STARTED_TEXT}, + {text: SHELL_DONE_TEXT}, + ] + }) + const ledger = createOwnershipLedger() + const {coordinator} = answeringCoordinator(stock) + const controller = new AbortController() + const deadline = setTimeout(() => controller.abort(), 4_000) + + // #when + const outcome = await runOpenCodeCoreV2({ + client: stock.client, + directory: stock.repo, + promptText: 'run the background job', + sink: makeSink(), + signal: controller.signal, + logger: makeLogger(), + coordinator, + ownershipLedger: ledger, + }).then( + () => null, + (error: unknown) => error, + ) + clearTimeout(deadline) + + // #then — a drain that ran out of time, quarantined (the kill's notice wakes the root), and the job is gone + expect(outcome).toBeInstanceOf(RunCoreError) + expect((outcome as RunCoreError).kind).toBe('drain-timeout') + expect((outcome as RunCoreError).quarantined).toBe(true) + expect(await stock.client.listShells({directory: stock.repo})).toEqual({success: true, data: []}) + + // #when — long enough for the job to have finished had it been left alone + await sleep(8_000) + + // #then + expect(existsSync(marker)).toBe(false) }, 120_000) }) diff --git a/packages/gateway/src/execute/run-core-v2.fixture.ts b/packages/gateway/src/execute/run-core-v2.fixture.ts index 0ad53d0615..2adc471439 100644 --- a/packages/gateway/src/execute/run-core-v2.fixture.ts +++ b/packages/gateway/src/execute/run-core-v2.fixture.ts @@ -16,6 +16,7 @@ import type {QuestionCoordinator} from '../approvals/question-coordinator.js' import type {GatewayLogger} from '../discord/client.js' import type {RunCoreV2Params} from './run-core-v2.js' import type {RunCoreError} from './run-core.js' +import type {ShellServerOptions} from './shell-server-v2.fixture.js' import {err, ok} from '@fro-bot/runtime' import { @@ -29,6 +30,12 @@ import { RETRY_SCHEDULED_FRAME, SERVER_CONNECTED_FRAME, SESSION_MOVED_FRAME, + SHELL_BACKGROUND_SUCCESS_FRAME, + SHELL_CREATED_FRAME, + SHELL_EXITED_FRAME, + SHELL_FOREGROUND_SUCCESS_FRAME, + SHELL_NOTICE_ENQUEUED_FRAME, + SHELL_TOOL_PROGRESS_FRAME, SUBAGENT_BACKGROUND_SUCCESS_FRAME, SUBAGENT_NOTICE_ENQUEUED_FRAME, TEXT_DELTA_FRAME, @@ -38,12 +45,15 @@ import { import {vi} from 'vitest' import {runOpenCodeCoreV2} from './run-core-v2.js' +import {makeShellServer} from './shell-server-v2.fixture.js' export const ROOT = 'ses_root' export const CHILD = 'ses_child' export const OTHER_CHILD = 'ses_other_child' export const STRANGER = 'ses_stranger' export const DIRECTORY = '/workspace/repos/o/r' +export const SHELL = 'sh_bg1' +export const OTHER_SHELL = 'sh_bg2' // --------------------------------------------------------------------------- // Frames @@ -157,6 +167,67 @@ export const frames = { metadata: {sessionID: child, status: 'running', truncated: false}, }), + // Background shells: the real p20 frames (captured on stock v2.2.0) moved onto the ids under test. + + /** `shell.created` for `shellId`, tagged with `owner` (`metadata` extends the captured `{sessionID}` tag). */ + shellCreated: (shellId = SHELL, owner = ROOT, metadata: Record = {}) => { + const info = (SHELL_CREATED_FRAME.data as {info: Record}).info + return {...SHELL_CREATED_FRAME, data: {info: {...info, id: shellId, metadata: {sessionID: owner, ...metadata}}}} + }, + /** `session.tool.progress` of a `shell` call: it names the shell before the call finishes. */ + shellProgress: (callId = 'call_shell', shellId = SHELL, session = ROOT) => + withData(onSession(SHELL_TOOL_PROGRESS_FRAME, session) as Frame, {id: callId, metadata: {shellID: shellId}}), + /** The success of a call that backgrounded `shellId` (`status: running`). */ + shellBackgrounded: (callId = 'call_shell', shellId = SHELL, session = ROOT) => + withData(onSession(SHELL_BACKGROUND_SUCCESS_FRAME, session) as Frame, { + id: callId, + metadata: {status: 'running', truncated: false, shellID: shellId}, + }), + /** The success of a FOREGROUND call: it ran to completion inside the call. */ + shellForegroundDone: (callId = 'call_shell', shellId = SHELL, session = ROOT) => + withData(onSession(SHELL_FOREGROUND_SUCCESS_FRAME, session) as Frame, { + id: callId, + metadata: {status: 'completed', truncated: false, shellID: shellId}, + }), + shellExited: (shellId = SHELL, status = 'exited') => ({ + ...SHELL_EXITED_FRAME, + data: {id: shellId, ...(status === 'exited' ? {exit: 0} : {}), status}, + }), + /** The completion notice the owner receives (the captured p20 shape, `jobID` and `shellID` both set). */ + shellNotice: (shellId = SHELL, state = 'completed', inboxId = 'msg_shell', session = ROOT) => { + const data = SHELL_NOTICE_ENQUEUED_FRAME.data + return { + ...SHELL_NOTICE_ENQUEUED_FRAME, + data: { + inboxID: inboxId, + sessionID: session, + item: { + ...data.item, + payload: { + ...data.item.payload, + metadata: {...data.item.payload.metadata, shellID: shellId, jobID: shellId, state}, + }, + }, + }, + } + }, + /** A user shell command's notice: `source: shell` and no `jobID`. */ + userShellNotice: (inboxId = 'msg_user_shell', session = ROOT) => ({ + type: 'session.inbox.enqueued', + data: { + inboxID: inboxId, + sessionID: session, + item: { + type: 'synthetic', + payload: { + text: 'The following shell command was executed by the user:', + metadata: {source: 'shell', shellID: 'sh_user', state: 'completed'}, + }, + delivery: 'steer', + }, + }, + }), + permissionAsked: (requestId: string, session = ROOT, action = 'external_directory', resource = '/tmp/outside') => withData(onSession(ENV_PERMISSION_ASKED_FRAME, session) as Frame, { id: requestId, @@ -290,6 +361,8 @@ export interface StartOptions { readonly interrupt?: (sessionId: string) => ReturnType /** Called by every `sink.append`; throwing from it makes the event loop body throw. */ readonly onAppend?: () => void + /** The background shells the fake server holds, and how its shell routes misbehave. */ + readonly shellServer?: ShellServerOptions } export interface Run { @@ -310,6 +383,8 @@ export interface Run { readonly replyForm: ReturnType readonly cancelForm: ReturnType readonly subscribe: ReturnType + /** The shell server double: its routes, its table, and the ordered call log (shared with `interrupt`). */ + readonly shellServer: ReturnType readonly signalOfSubscription: () => AbortSignal | undefined } @@ -340,8 +415,11 @@ export function startRun(options: StartOptions = {}): Run { } } + const callLog = options.shellServer?.log ?? [] + const shellServer = makeShellServer({...options.shellServer, log: callLog}) const active = new Set(options.active ?? [ROOT]) const interrupt = vi.fn(async ({sessionId}: {sessionId: string}) => { + callLog.push(`interrupt:${sessionId}`) if (options.interrupt !== undefined) return options.interrupt(sessionId) active.delete(sessionId) return ok({interrupted: true}) @@ -388,6 +466,7 @@ export function startRun(options: StartOptions = {}): Run { replyPermission, replyForm, cancelForm, + ...shellServer.routes, } as unknown as RemoteOpenCodeV2Client const logger = makeLogger() @@ -455,6 +534,7 @@ export function startRun(options: StartOptions = {}): Run { replyForm, cancelForm, subscribe, + shellServer, signalOfSubscription: () => subscriptionSignal, } } diff --git a/packages/gateway/src/execute/run-core-v2.shell.test.ts b/packages/gateway/src/execute/run-core-v2.shell.test.ts new file mode 100644 index 0000000000..f654c4597c --- /dev/null +++ b/packages/gateway/src/execute/run-core-v2.shell.test.ts @@ -0,0 +1,670 @@ +/** + * Background `shell` jobs in the V2 run loop. A background shell is a server job, not a session: `session.active` never + * lists it, an interrupt does not stop it, and its completion notice wakes the root exactly as a child's does. So the + * run treats it like a background subagent: it adopts the shell, waits for it, and on every stop path kills it BEFORE the + * root is interrupted. + * + * The frames are the stock v2.2.0 captures from the bgshell probes (p20, p22), moved onto the ids under test. + */ + +import type {OwnershipLedger} from '@fro-bot/runtime' +import type {StartOptions} from './run-core-v2.fixture.js' + +import {createOwnershipLedger, shellLedgerKey} from '@fro-bot/runtime' +import {afterEach, describe, expect, it, vi} from 'vitest' + +import {CHILD, failure, frames, OTHER_SHELL, ROOT, SHELL, startRun, STRANGER, succeeded} from './run-core-v2.fixture.js' +import {getWaitReason} from './wait-reason-registry.js' + +const SHELL_KEY = shellLedgerKey(SHELL) +const OTHER_SHELL_KEY = shellLedgerKey(OTHER_SHELL) +const RUNNING_SHELL: StartOptions['shellServer'] = {shells: {[SHELL]: {status: 'running', owner: ROOT}}} +const PAST_SETTLE_BOUND_MS = 20_000 + +function states(ledger: OwnershipLedger): Record { + return Object.fromEntries(ledger.snapshot().map(entry => [entry.sessionId, entry.state])) +} + +/** The root backgrounds a shell (the p20 sequence) and finishes its first turn. */ +async function backgroundAndIdle(run: ReturnType, shellId = SHELL, callId = 'call_shell') { + run.emit( + frames.started(), + frames.toolStarted('shell', callId), + frames.toolCalled(callId, {command: 'sleep 8', background: true}), + frames.shellCreated(shellId), + frames.shellProgress(callId, shellId), + frames.shellBackgrounded(callId, shellId), + frames.delta('Started it.'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) +} + +/** The server enqueues the shell's notice, wakes the root to take it in, and the root answers (p20 order). */ +function noticeTurn(run: ReturnType, shellId = SHELL, state = 'completed', inbox = 'msg_shell') { + run.emit( + frames.shellExited(shellId), + frames.shellNotice(shellId, state, inbox), + frames.started(), + frames.delivered(inbox), + frames.delta('The shell finished.', ROOT, 0, 'msg_followup'), + frames.succeeded(), + ) +} + +/** Index of the first call that starts with `prefix`, or -1. */ +function firstIndex(log: readonly string[], prefix: string): number { + return log.findIndex(entry => entry.startsWith(prefix)) +} + +async function runningShellRun(options: StartOptions = {}) { + const log: string[] = [] + const run = startRun({ + ownershipLedger: createOwnershipLedger(), + shellServer: {shells: {[SHELL]: {status: 'running', owner: ROOT}}, log}, + ...options, + }) + await vi.advanceTimersByTimeAsync(10) + return {run, log} +} + +afterEach(() => { + vi.useRealTimers() +}) + +describe('runOpenCodeCoreV2: adopting a background shell', () => { + it('adopts a shell of the root when it is created, keyed apart from sessions', async () => { + // #given + const ledger = createOwnershipLedger() + const onOwnershipChange = vi.fn() + const run = startRun({ownershipLedger: ledger, onOwnershipChange, shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + + // #when — only the creation frame has arrived + run.emit(frames.started(), frames.shellCreated(SHELL)) + await vi.advanceTimersByTimeAsync(10) + + // #then — in the ledger, never registered as a session, never persisted as one + expect(states(ledger)).toEqual({[SHELL_KEY]: 'outstanding'}) + expect(run.coordinator.addOwnedSession).not.toHaveBeenCalledWith(SHELL_KEY) + expect(run.coordinator.addOwnedSession).not.toHaveBeenCalledWith(SHELL) + expect(onOwnershipChange).toHaveBeenLastCalledWith({rootSessionId: ROOT, ownedSessionIds: []}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('adopts a shell moved to the background, whose creation frame the run never saw', async () => { + // #given — a foreground call that the user moved to the background: only its `running` result arrives + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.started(), + frames.toolStarted('shell', 'call_fg'), + frames.toolCalled('call_fg', {command: 'make test'}), + frames.shellBackgrounded('call_fg', SHELL), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(states(ledger)).toEqual({[SHELL_KEY]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('adopts a shell once however many signals name it', async () => { + // #given + const ledger = createOwnershipLedger() + const onOwnershipChange = vi.fn() + const run = startRun({ownershipLedger: ledger, onOwnershipChange, shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + + // #when — created, then the same shell's backgrounded result, then created again + await backgroundAndIdle(run) + const changes = onOwnershipChange.mock.calls.length + run.emit(frames.shellCreated(SHELL)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(ledger.snapshot()).toHaveLength(1) + expect(onOwnershipChange.mock.calls.length).toBe(changes) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('adopts the shell of an owned child, and not the shell of a session this run does not own', async () => { + // #given — a dispatched child + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [CHILD], + children: [CHILD], + shellServer: {shells: {[SHELL]: {status: 'running', owner: CHILD}}}, + }) + await vi.advanceTimersByTimeAsync(10) + run.emit( + frames.started(), + frames.toolStarted('subagent', 'call_dispatch'), + frames.dispatch(CHILD), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit(frames.shellCreated(SHELL, CHILD), frames.shellCreated(OTHER_SHELL, STRANGER)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(states(ledger)).toEqual({[CHILD]: 'outstanding', [SHELL_KEY]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('does not adopt a shell nobody tagged, nor the shell of a user-run command', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when — `POST /api/shell` has no owner tag; `POST /api/session/:id/shell` is awaited and sends no job notice + run.emit( + frames.started(), + {...frames.shellCreated(SHELL), data: {info: {...frames.shellCreated(SHELL).data.info, metadata: {}}}}, + frames.shellCreated(OTHER_SHELL, ROOT, {background: true}), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then — nothing owned, so the root's success completes the run + expect(ledger.snapshot()).toEqual([]) + expect(succeeded(run)).toBe(true) + }) + + it('releases a foreground shell when its call ends, so the root completes on its own success', async () => { + // #given — created (adopted) and then finished inside its call: no notice will ever come for it + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.started(), + frames.toolStarted('shell', 'call_fg'), + frames.toolCalled('call_fg', {command: 'ls'}), + frames.shellCreated(SHELL), + frames.shellProgress('call_fg', SHELL), + frames.shellForegroundDone('call_fg', SHELL), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(ledger.snapshot()).toEqual([]) + expect(succeeded(run)).toBe(true) + }) + + it('releases a foreground shell whose call failed and kept no shell id, from the progress frame', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when + run.emit( + frames.started(), + frames.toolStarted('shell', 'call_fg'), + frames.shellCreated(SHELL), + frames.shellProgress('call_fg', SHELL), + frames.toolFailed('call_fg'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(ledger.snapshot()).toEqual([]) + expect(succeeded(run)).toBe(true) + }) + + it('does not release a backgrounded shell', async () => { + // #given / #when + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + + // #then + expect(states(ledger)).toEqual({[SHELL_KEY]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) +}) + +describe('runOpenCodeCoreV2: draining a background shell', () => { + it("waits for a running shell: the root's first success is not terminal", async () => { + // #given + const ledger = createOwnershipLedger() + const onBusy = vi.fn() + const run = startRun({ownershipLedger: ledger, onBusy, runId: 'run-shell', shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + + // #when + await backgroundAndIdle(run) + await vi.advanceTimersByTimeAsync(5_000) + + // #then — still running, not busy, waiting on the ledger + expect(run.outcome()).toBeUndefined() + expect(onBusy).toHaveBeenLastCalledWith(false) + expect(getWaitReason('run-shell')).toBe('ledger-not-drained') + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it.each([ + ['exit before notice (p20)', true], + ['notice before exit (p22)', false], + ])('completes after the shell notice and the woken root turn: %s', async (_label, exitFirst) => { + // #given — the shell runs while the root sits idle + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + expect(run.outcome()).toBeUndefined() + + // #when + if (exitFirst) { + noticeTurn(run) + } else { + run.emit( + frames.shellNotice(SHELL, 'completed', 'msg_shell'), + frames.shellExited(SHELL), + frames.started(), + frames.delivered('msg_shell'), + frames.delta('The shell finished.', ROOT, 0, 'msg_followup'), + frames.succeeded(), + ) + } + await vi.advanceTimersByTimeAsync(2_000) + + // #then — one reply carrying the follow-up, the shell settled by its notice, nothing killed or interrupted + expect(succeeded(run)).toBe(true) + expect(run.sink.text()).toContain('Started it.') + expect(run.sink.text()).toContain('The shell finished.') + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + expect(run.interrupt).not.toHaveBeenCalled() + expect(run.shellServer.deleteShell).not.toHaveBeenCalled() + }) + + it('completes on a DELETEd shell’s error notice as it does on a completed one (p22)', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + + // #when + noticeTurn(run, SHELL, 'error', 'msg_err') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(succeeded(run)).toBe(true) + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + }) + + it('does not complete on a notice alone: the root must run the turn that takes it in', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + + // #when — queued, not delivered + run.emit(frames.shellExited(SHELL), frames.shellNotice(SHELL)) + await vi.advanceTimersByTimeAsync(5_000) + + // #then + expect(run.outcome()).toBeUndefined() + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('waits for every shell: one notice of two does not complete the run', async () => { + // #given — two shells + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [], + shellServer: { + shells: {[SHELL]: {status: 'running', owner: ROOT}, [OTHER_SHELL]: {status: 'running', owner: ROOT}}, + }, + }) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run, SHELL, 'call_a') + run.emit( + frames.started(), + frames.toolStarted('shell', 'call_b'), + frames.shellCreated(OTHER_SHELL), + frames.shellBackgrounded('call_b', OTHER_SHELL), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + + // #when — the first ends and its turn runs + noticeTurn(run, SHELL, 'completed', 'msg_a') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(run.outcome()).toBeUndefined() + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled', [OTHER_SHELL_KEY]: 'outstanding'}) + + // #when — the second ends + noticeTurn(run, OTHER_SHELL, 'completed', 'msg_b') + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(succeeded(run)).toBe(true) + }) + + it('ignores a user shell command’s notice: it carries no jobID and settles nothing', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + + // #when + run.emit(frames.userShellNotice(), frames.started(), frames.delivered('msg_user_shell'), frames.succeeded()) + await vi.advanceTimersByTimeAsync(5_000) + + // #then + expect(states(ledger)).toEqual({[SHELL_KEY]: 'outstanding'}) + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('does not let a notice from another session settle the shell', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + + // #when — a stranger's session gets a notice that names this run's shell + run.emit(frames.shellNotice(SHELL, 'completed', 'msg_x', STRANGER)) + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(states(ledger)).toEqual({[SHELL_KEY]: 'outstanding'}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('fences a shell whose notice cannot be read: unknown, not settled, and the gate stops waiting for a readable one', async () => { + // #given — the shell ended; the server sends a job notice this client cannot read + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: RUNNING_SHELL}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + run.shellServer.shells[SHELL] = {status: 'exited', owner: ROOT} + + // #when + run.emit({ + type: 'session.inbox.enqueued', + data: { + inboxID: 'msg_bad', + sessionID: ROOT, + item: { + type: 'synthetic', + payload: {text: 'x', metadata: {source: 'shell', shellID: SHELL, jobID: SHELL, state: 'paused'}}, + delivery: 'steer', + }, + }, + }) + await vi.advanceTimersByTimeAsync(10) + + // #then — never settled by the notice itself + expect(states(ledger)).toEqual({[SHELL_KEY]: 'unknown'}) + + // #when — reconciliation sees the shell stop, and the turn that follows ends + await vi.advanceTimersByTimeAsync(31_000) + run.emit(frames.started(), frames.succeeded()) + await vi.advanceTimersByTimeAsync(2_000) + + // #then + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + expect(succeeded(run)).toBe(true) + }) + + it('fails the run on a shell.created of an owned session that cannot be read: a writer nobody can wait for', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger}) + await vi.advanceTimersByTimeAsync(10) + + // #when — no shell id, but the owner tag is readable + run.emit(frames.started(), { + type: 'shell.created', + data: {info: {status: 'running', metadata: {sessionID: ROOT}}}, + }) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(failure(run).kind).toBe('session-error') + }) +}) + +describe('runOpenCodeCoreV2: reconciling a background shell', () => { + it('settles a shell the server shows is gone, and still waits for its notice', async () => { + // #given — adopted, never noticed; the server no longer lists it as running and reads it as exited + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [], + runId: 'run-shell-gone', + shellServer: {shells: {[SHELL]: {status: 'exited', owner: ROOT}}}, + }) + await vi.advanceTimersByTimeAsync(10) + + // #when + await backgroundAndIdle(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then — the idle-time pass settled it; admission still needs the notice + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + expect(run.outcome()).toBeUndefined() + expect(getWaitReason('run-shell-gone')).toBe('notice-not-observed') + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('keeps a shell unknown when the server cannot be read', async () => { + // #given + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], shellServer: {shells: {}, listFails: true}}) + await vi.advanceTimersByTimeAsync(10) + + // #when + await backgroundAndIdle(run) + await vi.advanceTimersByTimeAsync(2_000) + + // #then — never settled on a failed read, and the run does not complete + expect(states(ledger)).toEqual({[SHELL_KEY]: 'unknown'}) + expect(run.outcome()).toBeUndefined() + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) + + it('reconciles on the periodic tick as well as on root idle', async () => { + // #given — the shell was still running at idle + const ledger = createOwnershipLedger() + const shellServer = {shells: {[SHELL]: {status: 'running' as const, owner: ROOT}}} + const run = startRun({ownershipLedger: ledger, active: [], shellServer}) + await vi.advanceTimersByTimeAsync(10) + await backgroundAndIdle(run) + expect(states(ledger)).toEqual({[SHELL_KEY]: 'outstanding'}) + + // #when — it exits quietly, and the interval elapses + run.shellServer.shells[SHELL] = {status: 'exited', owner: ROOT} + await vi.advanceTimersByTimeAsync(31_000) + + // #then + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + run.close() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + }) +}) + +describe('runOpenCodeCoreV2: stopping with a background shell owned', () => { + it('on the deadline while draining: DELETEs the shell before the root is interrupted, and quarantines', async () => { + // #given — the root is idle and the run is draining on a shell that never exits + const controller = new AbortController() + const {run, log} = await runningShellRun({controller, active: []}) + await backgroundAndIdle(run) + log.length = 0 + + // #when — the wall-clock deadline + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then — drain-timeout, the kill ahead of the root abort, the shell gone, the run quarantined + const error = failure(run) + expect(error.kind).toBe('drain-timeout') + expect(error.quarantined).toBe(true) + expect(firstIndex(log, `delete:${SHELL}`)).toBeGreaterThanOrEqual(0) + expect(firstIndex(log, `delete:${SHELL}`)).toBeLessThan(firstIndex(log, `interrupt:${ROOT}`)) + expect(run.shellServer.shells[SHELL]).toBeUndefined() + }) + + it('on operator cancel mid-turn: DELETEs the shell before the root is interrupted, and quarantines', async () => { + // #given — the root launched a shell and is still working + const controller = new AbortController() + const {run, log} = await runningShellRun({controller}) + run.emit( + frames.started(), + frames.toolStarted('shell', 'call_shell'), + frames.shellCreated(SHELL), + frames.shellBackgrounded('call_shell', SHELL), + frames.toolStarted('read', 'call_read'), + ) + await vi.advanceTimersByTimeAsync(10) + log.length = 0 + + // #when + controller.abort('operator cancel') + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + const error = failure(run) + expect(error.kind).toBe('timeout') + expect(error.quarantined).toBe(true) + expect(firstIndex(log, `delete:${SHELL}`)).toBeLessThan(firstIndex(log, `interrupt:${ROOT}`)) + expect(firstIndex(log, `delete:${SHELL}`)).toBeGreaterThanOrEqual(0) + }) + + it('on a provider failure: DELETEs the shell before the root is interrupted, and quarantines', async () => { + // #given + const {run, log} = await runningShellRun() + run.emit(frames.started(), frames.shellCreated(SHELL), frames.shellBackgrounded('call_shell', SHELL)) + await vi.advanceTimersByTimeAsync(10) + log.length = 0 + + // #when — the root's execution fails + run.emit(frames.failed(ROOT, {type: 'provider.auth', message: 'bad key', status: 401})) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then — the kill is not skipped because the root itself had halted + const error = failure(run) + expect(error.kind).toBe('session-error') + expect(error.quarantined).toBe(true) + expect(firstIndex(log, `delete:${SHELL}`)).toBeGreaterThanOrEqual(0) + expect(firstIndex(log, `delete:${SHELL}`)).toBeLessThan(firstIndex(log, `interrupt:${ROOT}`)) + }) + + it('kills a shell the stream never reported when it belongs to the root', async () => { + // #given — no ledger entry: the creation frame was lost + const controller = new AbortController() + const {run, log} = await runningShellRun({controller, ownershipLedger: createOwnershipLedger()}) + run.emit(frames.started()) + await vi.advanceTimersByTimeAsync(10) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(firstIndex(log, `delete:${SHELL}`)).toBeGreaterThanOrEqual(0) + expect(run.shellServer.shells[SHELL]).toBeUndefined() + }) + + it('quarantines when the kill cannot be confirmed, and keeps deleting through the hold', async () => { + // #given — the server accepts every DELETE and kills nothing + const controller = new AbortController() + const {run} = await runningShellRun({ + controller, + active: [], + shellServer: { + shells: {[SHELL]: {status: 'running', owner: ROOT}}, + deleteDoesNotKill: [SHELL], + log: [], + }, + }) + await backgroundAndIdle(run) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + const deletesAtQuarantine = run.shellServer.deleteShell.mock.calls.length + + // #then + expect(failure(run).quarantined).toBe(true) + expect(deletesAtQuarantine).toBeGreaterThanOrEqual(1) + + // #when — the hold goes on + await vi.advanceTimersByTimeAsync(5_000) + + // #then — the watch re-issued the DELETE + expect(run.shellServer.deleteShell.mock.calls.length).toBeGreaterThan(deletesAtQuarantine) + expect(run.shellServer.shells[SHELL]).toBeDefined() + }) + + it('keeps deleting through the hold when only a shell the stream never reported is left running', async () => { + // #given — nothing adopted, so no follow-up is open and the root confirms at once; a stray shell ignores the DELETE + const controller = new AbortController() + const run = startRun({ + controller, + ownershipLedger: createOwnershipLedger(), + shellServer: {shells: {[SHELL]: {status: 'running', owner: ROOT}}, deleteDoesNotKill: [SHELL], log: []}, + }) + await vi.advanceTimersByTimeAsync(100) + run.emit(frames.started()) + await vi.advanceTimersByTimeAsync(10) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + const deletesAtQuarantine = run.shellServer.deleteShell.mock.calls.length + await vi.advanceTimersByTimeAsync(5_000) + + // #then — the root was confirmed, the shell was not: quarantined, and the watch went on deleting + expect(failure(run).quarantined).toBe(true) + expect(run.shellServer.deleteShell.mock.calls.length).toBeGreaterThan(deletesAtQuarantine) + }) + + it('makes no shell DELETE when no shell is owned', async () => { + // #given + const controller = new AbortController() + const run = startRun({controller, ownershipLedger: createOwnershipLedger(), active: []}) + await vi.advanceTimersByTimeAsync(100) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(run.shellServer.deleteShell).not.toHaveBeenCalled() + expect(failure(run).quarantined).toBe(false) + }) +}) diff --git a/packages/gateway/src/execute/run-core-v2.ts b/packages/gateway/src/execute/run-core-v2.ts index c811b3d552..153bdc37a0 100644 --- a/packages/gateway/src/execute/run-core-v2.ts +++ b/packages/gateway/src/execute/run-core-v2.ts @@ -28,7 +28,14 @@ * and its wait reason, owned children marked `unknown` on error, and the human-wait gauge that pauses the watchdog. */ -import type {OwnershipLedger, RemoteOpenCodeV2Client, V2CallError, V2DomainEvent, V2FormField} from '@fro-bot/runtime' +import type { + OwnershipLedger, + ReconcileLedgerOptions, + RemoteOpenCodeV2Client, + V2CallError, + V2DomainEvent, + V2FormField, +} from '@fro-bot/runtime' import type {PermissionCoordinator} from '../approvals/coordinator.js' import type {QuestionAskedRequest, QuestionCoordinator} from '../approvals/question-coordinator.js' import type {TerminalListener} from '../approvals/request-gate.js' @@ -40,14 +47,21 @@ import type {FormDirectoryV2} from './question-client-v2.js' import type {StreamTerminal} from './root-stop-v2.js' import type {CoreStreamSink, RunCoreErrorKind} from './run-core.js' import { + collectOwnerSessionIds, createInactivityTimer, createLedgerReconciler, createOwnershipLedger, createV2LedgerReconcileAdapter, + isShellLedgerKey, mapV2Event, mapV2EventStream, readBackgroundDispatch, + readBackgroundShellDispatch, + readToolShellId, + reconcileShellsOnce, + settleLedgerFromShellNotice, settleLedgerFromSubagentNotice, + shellLedgerKey, toErrorMessage, } from '@fro-bot/runtime' import {parsePermissionReply, parsePermissionRequest} from '../approvals/coordinator.js' @@ -321,9 +335,10 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise function persistOwnership(): void { if (ownershipLedger === undefined) return + // Sessions only: recovery reads these as session ids, and a background shell is not one. const ownedSessionIds = ownershipLedger .snapshot() - .filter(entry => entry.state !== 'settled') + .filter(entry => entry.state !== 'settled' && !isShellLedgerKey(entry.sessionId)) .map(entry => entry.sessionId) onOwnershipChange?.({rootSessionId: sessionId, ownedSessionIds}) } @@ -331,6 +346,8 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // Children whose completion notice was seen. A notice can precede the dispatch result on the stream; the child is then // settled the moment it is adopted. const noticedChildIds = new Set() + // The same for background shells, by shell id. + const noticedShellIds = new Set() const ledger: OwnershipLedger | undefined = ownershipLedger === undefined @@ -342,8 +359,11 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise drainCompletion?.requestValidation() }, // The single place a directly observed dispatch reaches the coordinator, so its events and approvals route - // from the moment it is adopted. Reconciliation never adopts. - adoptedSessionId => ownershipCoordinator.addOwnedSession(adoptedSessionId), + // from the moment it is adopted. Reconciliation never adopts. A background shell is not a session: it has + // no events or approvals of its own to route. + adoptedKey => { + if (!isShellLedgerKey(adoptedKey)) ownershipCoordinator.addOwnedSession(adoptedKey) + }, ) const reconcileAdapter = ledger === undefined ? undefined : createV2LedgerReconcileAdapter(client.session) @@ -355,12 +375,31 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise ledger === undefined || reconcileAdapter === undefined || runtimeLogger === undefined ? undefined : {ledger, adapter: reconcileAdapter, parentSessionId: sessionId, logger: runtimeLogger} + // The shell entries get their own pass: sessions are asked about through the session API, shells through the shell + // routes, and a failing or slow one must not hold the other back. + async function reconcileShellPass(passOptions: ReconcileLedgerOptions): Promise { + return reconcileShellsOnce({ + ledger: passOptions.ledger, + api: client, + directory, + logger: passOptions.logger, + ...(passOptions.signal === undefined ? {} : {signal: passOptions.signal}), + }) + } + + async function runLivePasses(passOptions: ReconcileLedgerOptions): Promise { + await Promise.all([ + reconcileLivePass(passOptions, () => liveReconcileClosed), + reconcileLivePass(passOptions, () => liveReconcileClosed, undefined, reconcileShellPass), + ]) + } + const reconciler = liveReconcileOptions === undefined ? undefined : createLedgerReconciler({ ...liveReconcileOptions, - runPass: async () => reconcileLivePass(liveReconcileOptions, () => liveReconcileClosed), + runPass: async () => runLivePasses(liveReconcileOptions), }) if (ledger !== undefined && reconcileAdapter !== undefined) { @@ -442,6 +481,7 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted)) const settlement = await settleOwnedSessionsV2({ client, + directory, rootSessionId: sessionId, ledger: barrierLedger, logger, @@ -456,11 +496,19 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // A root the barrier could not confirm stopped may still be preparing a prompt (an interrupt sent before the // execution is admitted does nothing). Keep probing it for the quarantine hold, interrupting it whenever it shows // up busy. - if (settlement.rootUnconfirmed) { + if (settlement.rootUnconfirmed || settlement.shellsUnconfirmed) { startQuarantineRootWatchV2({ client, adapter: createV2LedgerReconcileAdapter(client.session), rootSessionId: sessionId, + // The watch keeps killing owned shells it finds running: a DELETEd shell's notice wakes its owner, and a shell + // that survived the barrier's kill must not outlive the hold. + shells: { + api: client, + directory, + ownerSessionIds: collectOwnerSessionIds(sessionId, barrierLedger), + ledger: barrierLedger, + }, streamTerminal: () => rootTerminal, ...(followUpPossible ? {followUpPossible: true} : {}), logger, @@ -608,6 +656,9 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // ── 4. Consume event stream ──────────────────────────────────────────────── // Tool name and input by call id: `session.tool.success` carries neither. const toolCalls = new Map> | null}>() + // The shell a tool call started, by call id: `session.tool.progress` names it before the call finishes, and a failed + // call may not repeat it. + const shellByCall = new Map() // Inner calls of `execute` calls already shown, by `v2InnerCallKey`. const shownInnerCalls = new Set() // Text parts that received at least one delta, by message and ordinal: an end event repeats their text. @@ -704,6 +755,22 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise ) } + /** + * Adopt a background shell into the ledger. Idempotent by shell id: a shell is seen at creation, and again when its + * tool call returns `running`. A notice that preceded the adoption settles it at once. + */ + function adoptShell(shellId: string, source: 'shell-created' | 'tool-result'): void { + if (ledger === undefined) return + const key = shellLedgerKey(shellId) + const fresh = !ledger.isTracked(key) + // The command is model-controlled text and stays out of the ledger label and the logs. + ledger.adopt(key, 'background shell') + if (noticedShellIds.has(shellId)) ledger.settle(key) + if (fresh) { + logger.info({sessionId, shellId, source}, 'run-core: background shell adopted into ownership ledger') + } + } + // The silence watchdog starts here (the primitive arms on creation), immediately before the `try` whose `finally` // disposes it, so nothing can throw in between and leak it. It feeds only the loop's own abort: the wall-clock and // activity signals keep their meaning for every check on `combinedSignal`. @@ -836,6 +903,8 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise case 'tool_progress': { if (!isOwnedSession(event.sessionId)) break + const progressShellId = readToolShellId(event.metadata) + if (progressShellId !== null) shellByCall.set(event.callId, progressShellId) showInnerCalls(event) noteActivity(event.sessionId) break @@ -845,6 +914,8 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise if (!isOwnedSession(event.sessionId)) break const info = toolCalls.get(event.callId) toolCalls.delete(event.callId) + const callShellId = readToolShellId(event.metadata) ?? shellByCall.get(event.callId) ?? null + shellByCall.delete(event.callId) const name = info?.name ?? null logger.debug({callId: event.callId, tool: name, outcome: event.outcome}, 'run-core: tool finished') @@ -866,6 +937,17 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise 'run-core: background dispatch observed -- adopted into ownership ledger', ) } + if (ledger !== undefined && name === 'shell') { + // A shell is adopted when it is created, before anyone knows whether it will outlive its call. Only a + // call that returns `running` did: it sends a notice and wakes its owner. A call that ended any other + // way ran in the foreground and is over, so its entry would wait for a notice that never comes. + const shellDispatch = readBackgroundShellDispatch(name, event) + if (shellDispatch !== null) { + adoptShell(shellDispatch.shellId, 'tool-result') + } else if (callShellId !== null) { + ledger.release(shellLedgerKey(callShellId)) + } + } const title = titleFromInput(info?.input ?? null) appendToolSummary( { @@ -1026,6 +1108,36 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise break } + case 'shell_started': { + // The earliest signal that an owned session started a shell. A shell nobody tagged (`POST /api/shell`), one + // a stranger's session started, and a user-run command (awaited by its request, no notice) are not owned. + if (event.userCommand || event.ownerSessionId === null || !isOwnedSession(event.ownerSessionId)) break + adoptShell(event.shellId, 'shell-created') + break + } + + case 'shell_exited': { + // Informational only. The process ending is not the job ending: the notice is, and it can arrive on either + // side of this frame (probes p20 and p22). + logger.debug({shellId: event.shellId, status: event.status}, 'run-core: shell exited') + break + } + + case 'shell_notice': { + // The server's own statement that a background shell ended, read from metadata and never from text. It + // wakes the owner, so the gate waits for the turn it triggers exactly as it does for a child. + if (!isOwnedSession(event.ownerSessionId)) break + noticedShellIds.add(event.shellId) + drainCompletion?.noteShellNotice(event.shellId, event.state, event.inboxId) + if (ledger !== undefined) settleLedgerFromShellNotice(ledger, {shellId: event.shellId, state: event.state}) + markActivity() + logger.info( + {sessionId, shellId: event.shellId, state: event.state}, + 'run-core: background shell completion notice observed', + ) + break + } + case 'inbox_delivered': { // Any owned session: a notice can be queued into a busy child, and is delivered there. Inbox ids are unique // message ids, so a delivery can only match the notice it names. @@ -1082,7 +1194,7 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // Fire-and-forget: its mutations (via the wrapped ledger) trigger persistence and validation on their own. if (!ledgerSettled && liveReconcileOptions !== undefined) { // eslint-disable-next-line no-void - void reconcileLivePass(liveReconcileOptions, () => liveReconcileClosed) + void runLivePasses(liveReconcileOptions) } // Validate now that this generation has idle evidence. Coalesced: at most one in flight. @@ -1177,7 +1289,9 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise const safetyRelevant = event.eventType === 'permission.asked' || event.eventType === 'form.created' || - event.eventType === 'session.moved' + event.eventType === 'session.moved' || + // A shell of an owned session that cannot be identified is a writer nobody can wait for or stop. + event.eventType === 'shell.created' if (event.childSessionId !== undefined && isOwnedSession(event.sessionId)) { // A child's notice the server sent and this client cannot read. It proves nothing about the child, so the // child is fenced rather than waited on: the gate stops expecting a readable notice, and the entry is @@ -1191,6 +1305,19 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise ) break } + if (event.shellId !== undefined && isOwnedSession(event.sessionId)) { + // A shell job's notice the server sent and this client cannot read: fenced like a child's. The gate stops + // expecting a readable notice, and the entry is `unknown` (never `settled`) until reconciliation sees the + // shell stop. + drainCompletion?.noteUnreadableShellNotice(event.shellId) + ledger?.markUnknown(shellLedgerKey(event.shellId)) + markActivity() + logger.warn( + {sessionId, shellId: event.shellId, eventType: event.eventType}, + 'run-core: a background shell notice could not be read — shell fenced and marked unknown', + ) + break + } if (safetyRelevant && isOwnedSession(event.sessionId)) { logger.error( {sessionId, eventType: event.eventType}, diff --git a/packages/gateway/src/execute/run-core.ts b/packages/gateway/src/execute/run-core.ts index a4b1d87ed4..3f86df8f97 100644 --- a/packages/gateway/src/execute/run-core.ts +++ b/packages/gateway/src/execute/run-core.ts @@ -376,6 +376,13 @@ export function wrapLedgerWithHooks( if (statesEqual(before, after)) return onChange() }, + release: sessionId => { + const before = snapshotStates(ledger) + ledger.release(sessionId) + const after = snapshotStates(ledger) + if (statesEqual(before, after)) return + onChange() + }, outstanding: () => ledger.outstanding(), unknown: () => ledger.unknown(), isDrainComplete: () => ledger.isDrainComplete(), diff --git a/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts b/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts index 4e1eb787a9..8699a9bcbd 100644 --- a/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts +++ b/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts @@ -1,15 +1,18 @@ import type {RemoteOpenCodeV2Client, V2SessionOutcome} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' import type {StreamTerminal} from './root-stop-v2.js' +import type {ShellServerOptions} from './shell-server-v2.fixture.js' -import {createOwnershipLedger, err, ok} from '@fro-bot/runtime' +import {createOwnershipLedger, err, ok, shellLedgerKey} from '@fro-bot/runtime' import {afterEach, describe, expect, it, vi} from 'vitest' import {DEFAULT_SETTLE_TIMEOUT_MS, settleOwnedSessionsV2} from './settle-owned-sessions-v2.js' +import {makeShellServer} from './shell-server-v2.fixture.js' const ROOT = 'ses_root' const CHILD = 'ses_child' const OTHER_CHILD = 'ses_other' +const DIR = '/workspace/repos/o/r' function makeLogger(): GatewayLogger { return {debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn()} @@ -24,12 +27,15 @@ interface ServerOptions { readonly outcome?: V2SessionOutcome | null readonly interrupt?: (sessionId: string) => Promise readonly activeFails?: boolean + readonly shellServer?: ShellServerOptions } function makeServer(options: ServerOptions = {}) { + const shellServer = makeShellServer(options.shellServer) const active = new Set(options.active ?? []) const stoppable = new Set(options.stoppable ?? [ROOT, CHILD, OTHER_CHILD]) const interrupt = vi.fn(async ({sessionId}: {sessionId: string}) => { + shellServer.log.push(`interrupt:${sessionId}`) if (options.interrupt !== undefined) return options.interrupt(sessionId) as never if (stoppable.has(sessionId)) active.delete(sessionId) return ok({interrupted: true}) @@ -45,8 +51,9 @@ function makeServer(options: ServerOptions = {}) { }, interrupt, getSession: vi.fn(async () => ok({id: ROOT, parentId: null, directory: '/d', outcome: options.outcome ?? null})), + ...shellServer.routes, } as unknown as RemoteOpenCodeV2Client - return {client, interrupt, activeCalls, active} + return {client, interrupt, activeCalls, active, shellServer} } function unknownIds(ledger: ReturnType): string[] { @@ -74,6 +81,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -93,6 +101,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -112,6 +121,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -134,6 +144,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -152,6 +163,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -172,6 +184,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -190,6 +203,7 @@ describe('settleOwnedSessionsV2', () => { const server = makeServer({active: [ROOT], outcome: 'interrupted'}) const pending = settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -211,6 +225,7 @@ describe('settleOwnedSessionsV2', () => { const server = makeServer({active: [ROOT], stoppable: [], outcome: 'succeeded'}) const pending = settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -232,6 +247,7 @@ describe('settleOwnedSessionsV2', () => { const server = makeServer({outcome: null}) const pending = settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -254,6 +270,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -276,6 +293,7 @@ describe('settleOwnedSessionsV2', () => { const server = makeServer({active: [CHILD], interrupt: async () => new Promise(() => undefined)}) const pending = settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -302,6 +320,7 @@ describe('settleOwnedSessionsV2', () => { }) const pending = settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -326,6 +345,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -344,6 +364,7 @@ describe('settleOwnedSessionsV2', () => { // #when await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger: ledgerWith(CHILD), logger, @@ -372,6 +393,7 @@ describe('settleOwnedSessionsV2', () => { // #when const result = await settleOwnedSessionsV2({ client: server.client, + directory: DIR, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -381,3 +403,243 @@ describe('settleOwnedSessionsV2', () => { expect(result).toEqual({settled: true}) }) }) + +describe('settleOwnedSessionsV2: background shells', () => { + const SHELL = 'sh_bg1' + const SHELL_KEY = shellLedgerKey(SHELL) + const RUNNING = {shells: {[SHELL]: {status: 'running' as const, owner: ROOT}}} + + function shellLedger() { + const ledger = createOwnershipLedger() + ledger.adopt(SHELL_KEY, 'background shell') + return ledger + } + + function stateOf(ledger: ReturnType): string | undefined { + return ledger.snapshot().find(entry => entry.sessionId === SHELL_KEY)?.state + } + + it('dELETEs an owned shell before it interrupts the root, then confirms and settles it', async () => { + // #given — a stop where the root is not confirmable by the stream + const ledger = shellLedger() + const server = makeServer({shellServer: RUNNING}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then — kill, confirm by re-list, and only then the root interrupt + const log = server.shellServer.log + expect(log.indexOf(`delete:${SHELL}`)).toBeGreaterThanOrEqual(0) + expect(log.indexOf(`delete:${SHELL}`)).toBeLessThan(log.indexOf(`interrupt:${ROOT}`)) + expect(log.slice(log.indexOf(`delete:${SHELL}`) + 1, log.indexOf(`interrupt:${ROOT}`))).toContain('list') + expect(stateOf(ledger)).toBe('settled') + expect(result).toEqual({settled: true}) + }) + + it('keeps the stop unconfirmed when the shell is still running after the kill', async () => { + // #given — the same stop, but the server accepts the DELETE and kills nothing + const ledger = shellLedger() + const server = makeServer({shellServer: {...RUNNING, deleteDoesNotKill: [SHELL]}}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then — never settled, downgraded to unknown, and reported so the caller keeps killing through the hold + expect(result).toMatchObject({settled: false, shellsUnconfirmed: true}) + expect(stateOf(ledger)).toBe('unknown') + }) + + it('still interrupts the root when the kill is unconfirmed', async () => { + // #given + const server = makeServer({shellServer: {...RUNNING, deleteFails: true}}) + + // #when + await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: shellLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + }) + + // #then + expect(server.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('does not confirm the root while the shell is open work, even when the kill is confirmed', async () => { + // #given — the DELETE queues an error notice that wakes the root + const ledger = shellLedger() + const server = makeServer({shellServer: RUNNING}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + streamTerminal: () => 'succeeded', + }) + + // #then — quarantine, with the shell itself no longer the problem + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, shellsUnconfirmed: false}) + expect(stateOf(ledger)).toBe('settled') + }) + + it('reports a shell it could not kill even when the root is not confirmed either', async () => { + // #given — follow-up work is open, so the root cannot be confirmed; the shell ignores the DELETE + const ledger = shellLedger() + const server = makeServer({shellServer: {...RUNNING, deleteDoesNotKill: [SHELL]}}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + }) + + // #then — both are unresolved, and the caller must watch for both + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, shellsUnconfirmed: true}) + }) + + it('does not settle while a shell the ledger never heard of survives the kill, whatever the root did', async () => { + // #given — an empty ledger and a root that stops at once; only a stray shell ignores the DELETE + const server = makeServer({shellServer: {...RUNNING, deleteDoesNotKill: [SHELL]}}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then — the root is fine, the shell is the reason + expect(result).toMatchObject({settled: false, rootUnconfirmed: false, shellsUnconfirmed: true}) + expect(result.settled === false && result.reason.includes(SHELL)).toBe(true) + }) + + it('reports a stray shell it could not kill when the root is unconfirmed as well', async () => { + // #given — follow-up work is open, and the only shell is one the ledger never heard of + const server = makeServer({shellServer: {...RUNNING, deleteDoesNotKill: [SHELL]}}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + }) + + // #then + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, shellsUnconfirmed: true}) + }) + + it('kills a shell of the root that the ledger never heard of, and leaves a stranger’s alone', async () => { + // #given — nothing adopted + const server = makeServer({ + shellServer: { + shells: { + [SHELL]: {status: 'running', owner: ROOT}, + sh_stranger: {status: 'running', owner: 'ses_stranger'}, + }, + }, + }) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then + expect(result).toEqual({settled: true}) + expect(server.shellServer.deleteShell).toHaveBeenCalledTimes(1) + expect(server.shellServer.shells[SHELL]).toBeUndefined() + expect(server.shellServer.shells.sh_stranger).toBeDefined() + }) + + it('never treats a shell entry as a session to interrupt', async () => { + // #given + const server = makeServer({shellServer: RUNNING}) + + // #when + await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: shellLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + }) + + // #then + expect(server.interrupt.mock.calls.map(([input]) => input.sessionId)).toEqual([ROOT]) + }) + + it('reports shells unconfirmed on the bound, and settles nothing late', async () => { + // #given — the list never answers + vi.useFakeTimers() + const ledger = shellLedger() + const server = makeServer({shellServer: RUNNING}) + ;( + server.shellServer.listShells as unknown as {mockImplementation: (fn: () => Promise) => void} + ).mockImplementation(async () => new Promise(() => undefined)) + const pending = settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger, + logger: makeLogger(), + confirmRootQuiescent: true, + timeoutMs: 1_000, + }) + + // #when + await vi.advanceTimersByTimeAsync(1_001) + + // #then + await expect(pending).resolves.toMatchObject({settled: false, shellsUnconfirmed: true}) + expect(stateOf(ledger)).toBe('unknown') + }) +}) diff --git a/packages/gateway/src/execute/settle-owned-sessions-v2.ts b/packages/gateway/src/execute/settle-owned-sessions-v2.ts index edc3517bb1..d5436daaa4 100644 --- a/packages/gateway/src/execute/settle-owned-sessions-v2.ts +++ b/packages/gateway/src/execute/settle-owned-sessions-v2.ts @@ -15,6 +15,12 @@ * fresh teardown signal, because the run's own signal is already aborted by the time a failure reaches here. Anything * still unresolved when the attempt ends is downgraded to `unknown`, and the caller quarantines. * + * Background shells: a session interrupt does not stop them (`Job.cancel(sessionID)` finds no job under a session id), and + * they outlive the run's lock. So BEFORE the root is interrupted, every owned shell is killed with + * `DELETE /api/shell/:id` and the stop is confirmed by `GET /api/shell` no longer listing it. A shell that cannot be + * confirmed gone keeps the stop unconfirmed. The kill queues an `error` notice that wakes the root, which is why the + * root interrupt comes after it, and why an owned shell counts as background work open (`followUpPossible`). + * * Background work open (`followUpPossible`): the server then starts root turns by itself, so the root is never * confirmed. The barrier interrupts the root and the owned children once, settles the children, and reports * `rootUnconfirmed` without waiting out its budget; the quarantine watch does the polling. @@ -26,7 +32,14 @@ import type {OwnershipLedger, RemoteOpenCodeV2Client} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' import type {StreamTerminal} from './root-stop-v2.js' -import {createV2LedgerReconcileAdapter, reconcileLedgerOnce, toErrorMessage} from '@fro-bot/runtime' +import { + collectOwnerSessionIds, + createV2LedgerReconcileAdapter, + isShellLedgerKey, + killOwnedShells, + reconcileLedgerOnce, + toErrorMessage, +} from '@fro-bot/runtime' import {interruptSession, probeRootStopV2} from './root-stop-v2.js' import {ROOT_QUIESCENCE_POLL_INTERVAL_MS} from './root-stop.js' import {toRuntimeLogger} from './runtime-logger.js' @@ -42,6 +55,8 @@ export const DEFAULT_SETTLE_TIMEOUT_MS = 15_000 export interface SettleOwnedSessionsV2Params { /** Client for the workspace OpenCode V2 server this run is attached to. */ readonly client: RemoteOpenCodeV2Client + /** The location the run's sessions and shells live in: the directory the root was created at. */ + readonly directory: string /** The root session this run created. */ readonly rootSessionId: string /** The run's ownership ledger. Mutated in place (`markUnknown`/`settle` via reconciliation). */ @@ -68,6 +83,8 @@ export type SettleOwnedSessionsV2Result = readonly reason: string /** The root was to be confirmed stopped and was not. The caller keeps watching it through the hold. */ readonly rootUnconfirmed: boolean + /** An owned background shell is not confirmed stopped. The caller keeps killing it through the hold. */ + readonly shellsUnconfirmed: boolean } function withRunId(logger: GatewayLogger, runId: string | undefined): GatewayLogger { @@ -80,6 +97,10 @@ function withRunId(logger: GatewayLogger, runId: string | undefined): GatewayLog } } +function hasUnsettledShells(ledger: OwnershipLedger): boolean { + return ledger.snapshot().some(entry => isShellLedgerKey(entry.sessionId) && entry.state !== 'settled') +} + /** Race `work` against its own timer, so work that ignores cancellation still resolves into a decision. */ async function withBound(ms: number, work: () => Promise, onTimeout: () => T): Promise { let timer: ReturnType | undefined @@ -96,6 +117,7 @@ async function withBound(ms: number, work: () => Promise, onTimeout: () => export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params): Promise { const { client, + directory, rootSessionId, ledger, timeoutMs = DEFAULT_SETTLE_TIMEOUT_MS, @@ -105,6 +127,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) streamTerminal = (): StreamTerminal | null => null, } = params const logger = withRunId(params.logger, params.runId) + const runtimeLogger = toRuntimeLogger(logger) if (ledger.isDrainComplete() && !confirmRootQuiescent) { return {settled: true} @@ -121,6 +144,10 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) const isFinished = (): boolean => finished // Whether the root was confirmed stopped, readable from the bound's timeout path too. let rootConfirmed = !confirmRootQuiescent + // Whether every owned shell was confirmed stopped. False until the kill has answered: a bound that passes first has + // not ruled out a shell the ledger never heard of. + let shellsConfirmed = false + let unconfirmedShellIds: readonly string[] = [] return withBound( timeoutMs, @@ -129,13 +156,6 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) try { const teardownSignal = AbortSignal.timeout(timeoutMs) - // Stop the root from producing more work. Confirmed below only when `confirmRootQuiescent`. - await interruptSession(client, rootSessionId, teardownSignal, logger, 'root') - - await Promise.allSettled( - unsettled.map(async entry => interruptSession(client, entry.sessionId, teardownSignal, logger, 'owned')), - ) - const adapter = createV2LedgerReconcileAdapter(client.session) // Once the bound has passed this attempt is abandoned: whatever it still has in flight must not change the // ledger the caller has already read the decision from. @@ -148,12 +168,36 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) if (!isFinished()) ledger.markUnknown(sessionId) }, } - if (unsettled.length > 0) { + + // Owned background shells first. A session interrupt does not stop them, and the kill wakes the root with an + // error notice, so the root is interrupted AFTER it, never before. Confirmed ones are settled in the ledger. + const shellKill = await killOwnedShells({ + api: client, + directory, + ownerSessionIds: collectOwnerSessionIds(rootSessionId, attemptLedger), + ledger: attemptLedger, + logger: runtimeLogger, + signal: teardownSignal, + }) + shellsConfirmed = shellKill.confirmed + unconfirmedShellIds = shellKill.confirmed ? [] : shellKill.stillRunning + + // Stop the root from producing more work. Confirmed below only when `confirmRootQuiescent`. + await interruptSession(client, rootSessionId, teardownSignal, logger, 'root') + + const unsettledSessions = unsettled.filter(entry => !isShellLedgerKey(entry.sessionId)) + await Promise.allSettled( + unsettledSessions.map(async entry => + interruptSession(client, entry.sessionId, teardownSignal, logger, 'owned'), + ), + ) + + if (unsettledSessions.length > 0) { const reconcileResult = await reconcileLedgerOnce({ ledger: attemptLedger, adapter, parentSessionId: rootSessionId, - logger: toRuntimeLogger(logger), + logger: runtimeLogger, signal: teardownSignal, }) if (!reconcileResult.success) { @@ -200,7 +244,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) } } - if (ledger.isDrainComplete() && rootQuiescent) { + if (ledger.isDrainComplete() && rootQuiescent && shellsConfirmed) { logger.info( {rootSessionId, confirmRootQuiescent}, confirmRootQuiescent @@ -217,25 +261,31 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) attemptLedger.markUnknown(entry.sessionId) } const stillUnresolvedIds = stillUnresolved.map(entry => entry.sessionId) + const unresolvedNotes = [ + ...(stillUnresolvedIds.length > 0 + ? [`owned sessions not confirmed settled: ${stillUnresolvedIds.join(', ')}`] + : []), + ...(shellsConfirmed + ? [] + : [`owned shells not confirmed stopped: ${unconfirmedShellIds.join(', ') || 'unknown'}`]), + ].join('; ') logger.error( - {rootSessionId, stillUnresolvedIds, rootQuiescent}, + {rootSessionId, stillUnresolvedIds, unconfirmedShellIds, rootQuiescent}, 'settle-owned-sessions: owned work could not be confirmed settled', ) if (!rootQuiescent) { return { settled: false as const, - reason: `root session not confirmed stopped after interrupt${ - stillUnresolvedIds.length > 0 - ? `; owned sessions not confirmed settled: ${stillUnresolvedIds.join(', ')}` - : '' - }`, + reason: `root session not confirmed stopped after interrupt${unresolvedNotes === '' ? '' : `; ${unresolvedNotes}`}`, rootUnconfirmed: true, + shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(attemptLedger), } } return { settled: false as const, - reason: `owned sessions not confirmed settled: ${stillUnresolvedIds.join(', ')}`, + reason: unresolvedNotes, rootUnconfirmed: false, + shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(attemptLedger), } } catch (error) { const message = toErrorMessage(error) @@ -247,6 +297,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) settled: false as const, reason: `settle attempt threw unexpectedly: ${message}`, rootUnconfirmed: !rootConfirmed, + shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(ledger), } } finally { finished = true @@ -267,6 +318,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) settled: false as const, reason: `settle attempt exceeded its ${timeoutMs}ms bound`, rootUnconfirmed: !rootConfirmed, + shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(ledger), } }, ) diff --git a/packages/gateway/src/execute/settle-owned-sessions.test.ts b/packages/gateway/src/execute/settle-owned-sessions.test.ts index 815fcf43f7..0333a84620 100644 --- a/packages/gateway/src/execute/settle-owned-sessions.test.ts +++ b/packages/gateway/src/execute/settle-owned-sessions.test.ts @@ -395,6 +395,7 @@ describe('settleOwnedSessions', () => { adopt: () => {}, settle: () => {}, markUnknown: () => {}, + release: () => {}, outstanding: () => 1, unknown: () => 0, isDrainComplete: () => false, @@ -446,6 +447,7 @@ describe('settleOwnedSessions', () => { adopt: () => {}, settle: () => {}, markUnknown: () => {}, + release: () => {}, outstanding: () => 1, unknown: () => 0, isDrainComplete: () => false, @@ -920,6 +922,7 @@ describe('settleOwnedSessions: run correlation in logs', () => { adopt: () => {}, settle: () => {}, markUnknown: () => {}, + release: () => {}, outstanding: () => 1, unknown: () => 0, isDrainComplete: () => false, diff --git a/packages/gateway/src/execute/shell-server-v2.fixture.ts b/packages/gateway/src/execute/shell-server-v2.fixture.ts new file mode 100644 index 0000000000..123daad48c --- /dev/null +++ b/packages/gateway/src/execute/shell-server-v2.fixture.ts @@ -0,0 +1,84 @@ +/** + * A stateful double for the background-shell routes of a V2 server (`GET /api/shell`, `GET /api/shell/:id`, + * `DELETE /api/shell/:id`), shared by the gateway tests. Behaviour follows the bgshell probes: the list shows RUNNING + * shells only, a DELETE kills the shell and removes its record (a later GET is 404), and an unknown id deletes as a no-op. + */ + +import type {RemoteOpenCodeV2Client, V2CallError, V2ShellSummary} from '@fro-bot/runtime' + +import {err, ok} from '@fro-bot/runtime' +import {vi} from 'vitest' + +export interface FakeShell { + status: V2ShellSummary['status'] + owner: string | null +} + +export interface ShellServerOptions { + readonly shells?: Readonly> + /** Every call is appended here as `list`, `get:` or `delete:`, so a test can order it against other calls. */ + readonly log?: string[] + /** A DELETE that is accepted and kills nothing. */ + readonly deleteDoesNotKill?: readonly string[] + /** Fail every list call. */ + readonly listFails?: boolean + /** Fail the nth list call (1-based). */ + readonly listFailsOn?: readonly number[] + /** Fail every DELETE. */ + readonly deleteFails?: boolean + /** Fail the per-shell read with this error. */ + readonly getFails?: Readonly> +} + +export type ShellRoutes = Pick + +export function makeShellServer(options: ShellServerOptions = {}) { + const shells: Record = Object.fromEntries( + Object.entries(options.shells ?? {}).map(([id, shell]) => [id, {...shell}]), + ) + const log = options.log ?? [] + let listCount = 0 + const summary = (id: string, shell: FakeShell): V2ShellSummary => ({ + id, + status: shell.status, + ownerSessionId: shell.owner, + pid: shell.status === 'running' ? 4242 : null, + }) + + const listShells = vi.fn(async () => { + listCount += 1 + log.push('list') + if (options.listFails === true || options.listFailsOn?.includes(listCount) === true) { + return err({kind: 'network', message: 'down'}) + } + return ok( + Object.entries(shells) + .filter(([, shell]) => shell.status === 'running' || shell.status === 'unknown') + .map(([id, shell]) => summary(id, shell)), + ) + }) + const getShell = vi.fn(async ({shellId}: {readonly shellId: string}) => { + log.push(`get:${shellId}`) + const failure = options.getFails?.[shellId] + if (failure !== undefined) return err(failure) + const shell = shells[shellId] + return shell === undefined ? err({kind: 'http', status: 404}) : ok(summary(shellId, shell)) + }) + const deleteShell = vi.fn(async ({shellId}: {readonly shellId: string}) => { + log.push(`delete:${shellId}`) + if (options.deleteFails === true) return err({kind: 'network', message: 'down'}) + if (options.deleteDoesNotKill?.includes(shellId) !== true) { + delete shells[shellId] + } + return ok(undefined) + }) + + return { + routes: {listShells, getShell, deleteShell} as unknown as ShellRoutes, + listShells, + getShell, + deleteShell, + shells, + log, + } +} diff --git a/packages/runtime/src/agent/event-v2.fixtures.ts b/packages/runtime/src/agent/event-v2.fixtures.ts index bb896463fb..e42c58bc64 100644 --- a/packages/runtime/src/agent/event-v2.fixtures.ts +++ b/packages/runtime/src/agent/event-v2.fixtures.ts @@ -543,3 +543,286 @@ export const SUBAGENT_PROMPT_FAILED_FRAME = frame('session.tool.failed', { metadata: SUBAGENT_BACKGROUND_METADATA, executed: false, }) + +// --- Background `shell` jobs: captured on stock v2.2.0 (bgshell probes p20 and p22) ----------------------------------- +// +// Captured verbatim from `/tmp/v2-plan/bgshell/logs/p20.sse.raw.jsonl` and `p22-0.sse.raw.jsonl` (same binary, sha256 +// `c71b1cd9…db3d`). `data` is untouched, including ids and paths. Only the envelope `location` is kept where the +// capture had it. The user-shell notice and the unreadable variants are derived and labelled so. + +export const SHELL_SESSION_ID = 'ses_e7a179c05ffeZRtvviWr7imnQn' +export const SHELL_ID = 'sh_185e8678e001OVuLXzTBhwDmUx' +export const SHELL_CALL_ID = 'call_2_0' +export const SHELL_DIRECTORY = '/tmp/v2-plan/bgshell/work/p20-repo' +export const SHELL_COMMAND = + 'sleep 8 && echo job-output-line && touch /tmp/v2-plan/bgshell/work/p20-repo/p20-marker.txt' + +const SHELL_TOOL_ENVELOPE = { + sessionID: SHELL_SESSION_ID, + assistantMessageID: 'msg_185e8672c001GymJIPp1OAqSng', + id: SHELL_CALL_ID, +} as const + +/** p20: the model's call. `input.background` is how a backgrounded launch reads before it runs. */ +export const SHELL_TOOL_CALLED_FRAME = { + id: 'evt_185e867530029x6liDzri4mZnq', + created: 1793247962963, + type: 'session.tool.called', + location: {directory: SHELL_DIRECTORY}, + data: {...SHELL_TOOL_ENVELOPE, input: {command: SHELL_COMMAND, background: true}, executed: false}, +} as const + +/** p20: ephemeral (no `durable` envelope), the full `Shell.Info` of the new shell, owner in `info.metadata.sessionID`. */ +export const SHELL_CREATED_FRAME = { + id: 'evt_185e86791001Xju8nWQr5akQeZ', + created: 1793247963025, + type: 'shell.created', + location: {directory: SHELL_DIRECTORY}, + data: { + info: { + id: SHELL_ID, + status: 'running', + command: SHELL_COMMAND, + cwd: SHELL_DIRECTORY, + shell: '/bin/zsh', + file: '/tmp/v2-plan/bgshell/work/p20/home/.local/share/opencode/shell/61bfacef230eefd6f7413bab7af63a82ae4dffc2/sh_185e8678e001OVuLXzTBhwDmUx.out', + metadata: {sessionID: SHELL_SESSION_ID}, + time: {started: 1793247963022}, + }, + }, +} as const + +/** p20: `context.progress({shellID})`, emitted for foreground and background calls alike. */ +export const SHELL_TOOL_PROGRESS_FRAME = { + id: 'evt_185e86791002aufEhTIkaoTZgN', + created: 1793247963025, + type: 'session.tool.progress', + location: {directory: SHELL_DIRECTORY}, + data: {...SHELL_TOOL_ENVELOPE, metadata: {shellID: SHELL_ID}}, +} as const + +/** p20: the success of the backgrounded call. `metadata.status` is `running`; there is no `jobID`, only `shellID`. */ +export const SHELL_BACKGROUND_SUCCESS_FRAME = { + id: 'evt_185e867920015svLVO3obT1Qz7', + created: 1793247963026, + type: 'session.tool.success', + location: {directory: SHELL_DIRECTORY}, + data: { + ...SHELL_TOOL_ENVELOPE, + content: [ + { + type: 'text', + text: 'Command moved to the background (shell ID: sh_185e8678e001OVuLXzTBhwDmUx).\nOutput is streaming to: /tmp/v2-plan/bgshell/work/p20/home/.local/share/opencode/shell/61bfacef230eefd6f7413bab7af63a82ae4dffc2/sh_185e8678e001OVuLXzTBhwDmUx.out', + }, + { + type: 'text', + text: "You will be notified automatically when the command finishes. The notification will include the command's output.", + }, + ], + metadata: {status: 'running', truncated: false, shellID: SHELL_ID}, + executed: false, + }, + durable: {aggregateID: SHELL_SESSION_ID, seq: 12, version: 2}, +} as const + +/** + * Derived: the success of a FOREGROUND `shell` call. A foreground call returns `status: "completed"` + * (`packages/core/src/tool/plugin/shell.ts`, `Deferred.await(settled)` branch), and carries the progress `shellID`. + */ +export const SHELL_FOREGROUND_SUCCESS_FRAME = { + type: 'session.tool.success', + data: { + ...SHELL_TOOL_ENVELOPE, + content: [{type: 'text', text: 'job-output-line'}], + metadata: {status: 'completed', truncated: false, shellID: SHELL_ID}, + executed: false, + }, +} as const + +/** p20: ephemeral. Arrives BEFORE the notice here and after it in p22, so the order is not a contract. */ +export const SHELL_EXITED_FRAME = { + id: 'evt_185e886ea001wjJJ7Vp758844T', + created: 1793247971050, + type: 'shell.exited', + location: {directory: SHELL_DIRECTORY}, + data: {id: SHELL_ID, exit: 0, status: 'exited'}, +} as const + +export const SHELL_INBOX_ID = 'msg_185e867910037tyFxgDGN4vtxX' + +/** p20: the completion notice. `jobID` equals `shellID`; `source` is `shell`. It wakes the owning session. */ +export const SHELL_NOTICE_ENQUEUED_FRAME = { + id: 'evt_185e886ed001IXHLcLmGc8H6P4', + created: 1793247971053, + type: 'session.inbox.enqueued', + location: {directory: SHELL_DIRECTORY}, + data: { + inboxID: SHELL_INBOX_ID, + sessionID: SHELL_SESSION_ID, + item: { + type: 'synthetic', + payload: { + text: `\njob-output-line\n\n`, + description: SHELL_COMMAND, + metadata: { + source: 'shell', + shellID: SHELL_ID, + jobID: SHELL_ID, + state: 'completed', + truncated: false, + exit: 0, + }, + }, + delivery: 'steer', + }, + }, + durable: {aggregateID: SHELL_SESSION_ID, seq: 20, version: 1}, +} as const + +/** p20: the server delivers the notice into the woken turn. */ +export const SHELL_INBOX_DELIVERED_FRAME = { + type: 'session.inbox.delivered', + data: {sessionID: SHELL_SESSION_ID, inboxID: SHELL_INBOX_ID}, +} as const + +/** p20: `GET /api/shell` while the shell runs. Unlike `shell.created`, each element carries `pid`. */ +export const SHELL_LIST_RUNNING_RESPONSE = { + location: {directory: SHELL_DIRECTORY}, + data: [ + { + id: SHELL_ID, + status: 'running', + command: SHELL_COMMAND, + cwd: SHELL_DIRECTORY, + shell: '/bin/zsh', + file: '/tmp/v2-plan/bgshell/work/p20/home/.local/share/opencode/shell/61bfacef230eefd6f7413bab7af63a82ae4dffc2/sh_185e8678e001OVuLXzTBhwDmUx.out', + pid: 67593, + metadata: {sessionID: SHELL_SESSION_ID}, + time: {started: 1793247963022}, + }, + ], +} as const + +/** p20: `GET /api/shell` once the shell exited. */ +export const SHELL_LIST_EMPTY_RESPONSE = {location: {directory: SHELL_DIRECTORY}, data: []} as const + +/** p20: `GET /api/shell/:id` after the exit. Derived from the listed element plus the fields the exit adds. */ +export const SHELL_GET_EXITED_RESPONSE = { + location: {directory: SHELL_DIRECTORY}, + data: { + ...SHELL_LIST_RUNNING_RESPONSE.data[0], + status: 'exited', + exit: 0, + time: {started: 1793247963022, completed: 1793247971050}, + }, +} as const + +// p22: a DELETE of a running background shell. The job ends as `error` and the notice wakes the owner. + +export const KILLED_SHELL_SESSION_ID = 'ses_e7a075cf8ffeSlUo7N396E1CGq' +export const KILLED_SHELL_ID = 'sh_185f8a788001iLe3eMww69Jts2' +export const KILLED_SHELL_INBOX_ID = 'msg_185f8a78e001AxX17ueFdq6MsK' +const KILLED_SHELL_DIRECTORY = '/tmp/v2-plan/bgshell/work/p22-0-repo' + +/** p22: the notice a DELETE produces: `state: "error"`, body `Shell.NotFoundError`, no `exit`. */ +export const KILLED_SHELL_NOTICE_ENQUEUED_FRAME = { + id: 'evt_185f8aed40016XFJJnEs6Ua5Ed', + created: 1793249029844, + type: 'session.inbox.enqueued', + location: {directory: KILLED_SHELL_DIRECTORY}, + data: { + inboxID: KILLED_SHELL_INBOX_ID, + sessionID: KILLED_SHELL_SESSION_ID, + item: { + type: 'synthetic', + payload: { + text: `\nShell.NotFoundError\n`, + description: 'sleep 20 && touch /tmp/v2-plan/bgshell/work/p22-0-repo/mkA1', + metadata: {source: 'shell', shellID: KILLED_SHELL_ID, jobID: KILLED_SHELL_ID, state: 'error'}, + }, + delivery: 'steer', + }, + }, + durable: {aggregateID: KILLED_SHELL_SESSION_ID, seq: 27, version: 1}, +} as const + +/** p22: ephemeral, no `exit`. */ +export const KILLED_SHELL_EXITED_FRAME = { + id: 'evt_185f8aee5001W6OIOI7sO3QTrM', + created: 1793249029861, + type: 'shell.exited', + location: {directory: KILLED_SHELL_DIRECTORY}, + data: {id: KILLED_SHELL_ID, status: 'killed'}, +} as const + +/** + * Derived: a user shell command's notice (`POST /api/session/:id/shell`, `packages/core/src/shell/result.ts` + * `userNotification`). It carries `shellID` but no `jobID`, and is delivered with `resume: false`. + */ +export const USER_SHELL_NOTICE_ENQUEUED_FRAME = { + type: 'session.inbox.enqueued', + data: { + inboxID: 'msg_user_shell', + sessionID: SHELL_SESSION_ID, + item: { + type: 'synthetic', + payload: { + text: 'The following shell command was executed by the user:\n\n\n', + description: 'ls', + metadata: {source: 'shell', shellID: 'sh_user', state: 'completed', truncated: false, exit: 0}, + }, + delivery: 'steer', + }, + }, +} as const + +/** Derived: the shell a user command runs (`packages/core/src/session/shell.ts:17`) is tagged `background: true`. */ +export const USER_SHELL_CREATED_FRAME = { + type: 'shell.created', + data: { + info: { + id: 'sh_user', + status: 'running', + command: 'ls', + cwd: SHELL_DIRECTORY, + shell: '/bin/zsh', + file: '/tmp/x.out', + metadata: {sessionID: SHELL_SESSION_ID, background: true}, + time: {started: 1793247963022}, + }, + }, +} as const + +/** Derived: a job notice whose `state` this reader does not know, naming its shell. */ +export const UNREADABLE_SHELL_NOTICE_ENQUEUED_FRAME = { + type: 'session.inbox.enqueued', + data: { + inboxID: 'msg_unreadable_shell', + sessionID: SHELL_SESSION_ID, + item: { + type: 'synthetic', + payload: { + text: 'x', + metadata: {source: 'shell', shellID: SHELL_ID, jobID: SHELL_ID, state: 'paused'}, + }, + delivery: 'steer', + }, + }, +} as const + +/** Derived: a user item that claims shell-job metadata. Only the server sets this on synthetic items. */ +export const FORGED_USER_SHELL_ENQUEUED_FRAME = { + type: 'session.inbox.enqueued', + data: { + inboxID: 'msg_forged_shell', + sessionID: SHELL_SESSION_ID, + item: { + type: 'user', + payload: { + text: 'hi', + metadata: {source: 'shell', shellID: SHELL_ID, jobID: SHELL_ID, state: 'completed'}, + }, + delivery: 'steer', + }, + }, +} as const diff --git a/packages/runtime/src/agent/event-v2.ts b/packages/runtime/src/agent/event-v2.ts index d6ec9b17b4..131f1df893 100644 --- a/packages/runtime/src/agent/event-v2.ts +++ b/packages/runtime/src/agent/event-v2.ts @@ -1,7 +1,15 @@ import type {Logger} from '../shared/logger.js' +import type {ShellNoticeRead, ShellNoticeState, V2ShellStatus} from './shell-notice.js' import type {SubagentNotice, SubagentNoticeRead} from './subagent-notice.js' -import {getNumberProperty, getObjectProperty, getStringProperty, ownValue} from './payload-accessors.js' +import { + getBooleanProperty, + getNumberProperty, + getObjectProperty, + getStringProperty, + ownValue, +} from './payload-accessors.js' +import {classifyShellNotice, classifyShellNoticeItem, isShellStatus} from './shell-notice.js' import {classifySubagentNotice, classifySubagentNoticeItem} from './subagent-notice.js' /** @@ -28,6 +36,9 @@ import {classifySubagentNotice, classifySubagentNoticeItem} from './subagent-not * Events that need no consumer are ignored (mapped to `null`): `session.text.started`, `session.tool.input.delta` and * `.ended` (superseded by `session.tool.called`, which carries the parsed input), `session.step.started/streamed/ended`, * usage, rename, inbox delivered/cancelled, compaction, and the project, VCS, plugin and agent update families. + * + * Background `shell` jobs are not sessions and ride two streams: `shell.created` / `shell.exited` (ephemeral, keyed by + * shell id, owner in `info.metadata.sessionID`) and the owner's completion notice (`shell-notice.ts`). */ /** Error fields a loop may classify on. The upstream `response.body` is deliberately not carried. */ @@ -180,6 +191,36 @@ export type V2DomainEvent = readonly notice: SubagentNotice readonly inboxId: string | null } + /** + * A shell was created (`shell.created`, ephemeral). `ownerSessionId` is the session that started it, read from + * `info.metadata.sessionID`: an opaque tag the creator sets, `null` for a shell nobody tagged (`POST /api/shell`). + * `userCommand` is set for the shell of a user command (`POST /api/session/:id/shell`), which is awaited by the + * request and never sends a job notice. The frame carries no pid. + */ + | { + readonly kind: 'shell_started' + readonly shellId: string + readonly ownerSessionId: string | null + readonly userCommand: boolean + } + /** A shell process ended (`shell.exited`, ephemeral). It can arrive before or after the notice, and settles nothing. */ + | { + readonly kind: 'shell_exited' + readonly shellId: string + readonly status: V2ShellStatus + readonly exit: number | null + } + /** + * The session `ownerSessionId` received the completion notice of a background shell job. Read from event `metadata`, + * never text; `inboxId` as for `subagent_notice`. A user shell command's notice (no `jobID`) is not mapped. + */ + | { + readonly kind: 'shell_notice' + readonly shellId: string + readonly ownerSessionId: string + readonly state: ShellNoticeState + readonly inboxId: string | null + } /** A queued inbox item of `sessionId` entered a model turn (`session.inbox.delivered`). */ | {readonly kind: 'inbox_delivered'; readonly sessionId: string; readonly inboxId: string} /** The run must fail. Produced by `mapV2EventStream` for an owned session that moved. */ @@ -197,6 +238,8 @@ export type V2DomainEvent = readonly reason: string /** Set for a subagent notice that could not be read and still named its child; the loop fences that child. */ readonly childSessionId?: string + /** Set for a shell job notice that could not be read and still named its shell; the loop fences that shell. */ + readonly shellId?: string } /** Stable identity of an inner call of an `execute` tool call. */ @@ -491,6 +534,62 @@ function mapNotice( } } +function mapShellNotice( + type: string, + data: unknown, + read: ShellNoticeRead, + inboxId: string | null, +): V2DomainEvent | null { + const sessionId = getStringProperty(data, 'sessionID') + if (read.kind === 'none') return null + if (read.kind === 'notice') { + return sessionId === null + ? null + : { + kind: 'shell_notice', + shellId: read.notice.shellId, + ownerSessionId: sessionId, + state: read.notice.state, + inboxId, + } + } + // A job notice the server sent that this reader cannot take. Dropping it would leave its shell unaccounted for. + return { + kind: 'malformed', + eventType: type, + sessionId, + reason: 'unreadable shell notice', + ...(read.shellId === null ? {} : {shellId: read.shellId}), + } +} + +function mapShellCreated(data: unknown): V2DomainEvent { + const type = 'shell.created' + const info = getObjectProperty(data, 'info') + const metadata = getObjectProperty(info, 'metadata') + const ownerSessionId = getStringProperty(metadata, 'sessionID') + const shellId = getStringProperty(info, 'id') + if (shellId === null || shellId.length === 0) { + return {kind: 'malformed', eventType: type, sessionId: ownerSessionId, reason: 'unreadable shell'} + } + return { + kind: 'shell_started', + shellId, + ownerSessionId, + userCommand: getBooleanProperty(metadata, 'background') === true, + } +} + +function mapShellExited(data: unknown): V2DomainEvent { + const type = 'shell.exited' + const shellId = getStringProperty(data, 'id') + const status = getStringProperty(data, 'status') + if (shellId === null || !isShellStatus(status)) { + return {kind: 'malformed', eventType: type, sessionId: null, reason: 'unreadable shell exit'} + } + return {kind: 'shell_exited', shellId, status, exit: getNumberProperty(data, 'exit')} +} + /** * Map one parsed V2 event frame (`{type, data, …}`) to a domain event. Returns `null` for frames no consumer needs * (see the module doc) and for anything that is not an event frame, such as a keepalive. @@ -567,13 +666,20 @@ export function mapV2Event(frame: unknown): V2DomainEvent | null { } } - case 'session.inbox.enqueued': - return mapNotice( - type, - data, - classifySubagentNoticeItem(getObjectProperty(data, 'item')), - getStringProperty(data, 'inboxID'), - ) + case 'shell.created': + return mapShellCreated(data) + + case 'shell.exited': + return mapShellExited(data) + + case 'session.inbox.enqueued': { + const item = getObjectProperty(data, 'item') + const inboxId = getStringProperty(data, 'inboxID') + const subagent = classifySubagentNoticeItem(item) + return subagent.kind === 'none' + ? mapShellNotice(type, data, classifyShellNoticeItem(item), inboxId) + : mapNotice(type, data, subagent, inboxId) + } case 'session.inbox.delivered': { const sessionId = getStringProperty(data, 'sessionID') @@ -581,8 +687,12 @@ export function mapV2Event(frame: unknown): V2DomainEvent | null { return sessionId === null || inboxId === null ? null : {kind: 'inbox_delivered', sessionId, inboxId} } - case 'session.synthetic': - return mapNotice(type, data, classifySubagentNotice(data), null) + case 'session.synthetic': { + const subagent = classifySubagentNotice(data) + return subagent.kind === 'none' + ? mapShellNotice(type, data, classifyShellNotice(data), null) + : mapNotice(type, data, subagent, null) + } default: return null diff --git a/packages/runtime/src/agent/index.ts b/packages/runtime/src/agent/index.ts index 5fa488f9ee..36d6ab8ae2 100644 --- a/packages/runtime/src/agent/index.ts +++ b/packages/runtime/src/agent/index.ts @@ -75,7 +75,7 @@ export type { } from './ledger-reconcile.js' export {hasBlockingToolPart} from './message-facts.js' export {resolveOutputMode} from './output-mode.js' -export {createOwnershipLedger} from './ownership-ledger.js' +export {createOwnershipLedger, isShellLedgerKey, shellIdFromLedgerKey, shellLedgerKey} from './ownership-ledger.js' export type {OwnershipEntryState, OwnershipLedger, OwnershipLedgerEntry} from './ownership-ledger.js' export { getBooleanProperty, @@ -124,6 +124,7 @@ export type { V2PermissionDecision, V2SessionOutcome, V2SessionSummary, + V2ShellSummary, } from './remote-client-v2.js' export {createRemoteOpenCodeHandle} from './remote-client.js' export {buildQuestionFormAnswer, createRemoteQuestionClientV2} from './remote-question-client-v2.js' @@ -170,6 +171,36 @@ export type {OpenCodeServerHandle, ShutdownResult} from './server.js' export {createSessionTools, info, list, read, search} from './session-tools.js' export type {SessionToolDefinition, SessionTools} from './session-tools.js' export type {SetupAdapter} from './setup-adapter.js' +export { + collectOwnerSessionIds, + DEFAULT_SHELL_KILL_POLL_INTERVAL_MS, + DEFAULT_SHELL_KILL_ROUNDS, + killOwnedShells, + reconcileShellsOnce, +} from './shell-jobs-v2.js' +export type { + KillOwnedShellsOptions, + KillOwnedShellsResult, + ReconcileShellsOptions, + ShellApi, + ShellReconcileObservation, +} from './shell-jobs-v2.js' +export { + classifyShellNotice, + classifyShellNoticeItem, + isShellStatus, + readBackgroundShellDispatch, + readToolShellId, + settleLedgerFromShellNotice, +} from './shell-notice.js' +export type { + BackgroundShellDispatch, + ShellNotice, + ShellNoticeRead, + ShellNoticeSettlement, + ShellNoticeState, + V2ShellStatus, +} from './shell-notice.js' export { readBackgroundDispatch, readSubagentNotice, diff --git a/packages/runtime/src/agent/ledger-reconcile.test.ts b/packages/runtime/src/agent/ledger-reconcile.test.ts index 9304a08100..7bc2938649 100644 --- a/packages/runtime/src/agent/ledger-reconcile.test.ts +++ b/packages/runtime/src/agent/ledger-reconcile.test.ts @@ -11,7 +11,7 @@ import { DEFAULT_LEDGER_RECONCILE_INTERVAL_MS, reconcileLedgerOnce, } from './ledger-reconcile.js' -import {createOwnershipLedger} from './ownership-ledger.js' +import {createOwnershipLedger, shellLedgerKey} from './ownership-ledger.js' const PARENT_SESSION_ID = 'parent-session' @@ -166,6 +166,61 @@ describe('reconcileLedgerOnce', () => { expect(ledger.isTracked('foreground-child')).toBe(false) }) + it('shell entries are not sessions: a ledger of only shells performs no remote calls', async () => { + // #given + const ledger = createOwnershipLedger() + ledger.adopt(shellLedgerKey('sh_1'), 'sleep 8') + const adapter = makeAdapter({ + children: vi.fn(async () => ok([])), + liveSessionIds: vi.fn(async () => ok(new Set())), + }) + + // #when + const result = await reconcileLedgerOnce({ + ledger, + adapter, + parentSessionId: PARENT_SESSION_ID, + logger: makeLogger(), + }) + + // #then + expect(result.success).toBe(true) + expect(adapter.children).not.toHaveBeenCalled() + expect(adapter.liveSessionIds).not.toHaveBeenCalled() + expect(ledger.outstanding()).toBe(1) + }) + + it('shell entries are left alone beside a session entry: not downgraded as a non-child, not settled as not-live', async () => { + // #given + const ledger = createOwnershipLedger() + ledger.adopt('child-1', 'task') + ledger.adopt(shellLedgerKey('sh_1'), 'sleep 8') + const adapter = makeAdapter({children: async () => ok([{id: 'child-1'}])}) + + // #when + await reconcileLedgerOnce({ledger, adapter, parentSessionId: PARENT_SESSION_ID, logger: makeLogger()}) + + // #then — the child settled (not live); the shell is exactly as it was + expect(ledger.snapshot()).toEqual([ + {sessionId: 'child-1', label: 'task', state: 'settled'}, + {sessionId: shellLedgerKey('sh_1'), label: 'sleep 8', state: 'outstanding'}, + ]) + }) + + it('a failed session pass does not mark a shell unknown: the shell pass owns it', async () => { + // #given + const ledger = createOwnershipLedger() + ledger.adopt('child-1', 'task') + ledger.adopt(shellLedgerKey('sh_1'), 'sleep 8') + const adapter = makeAdapter({children: async () => err(new Error('down'))}) + + // #when + await reconcileLedgerOnce({ledger, adapter, parentSessionId: PARENT_SESSION_ID, logger: makeLogger()}) + + // #then + expect(ledger.snapshot().map(entry => entry.state)).toEqual(['unknown', 'outstanding']) + }) + it('empty ledger: performs no remote calls at all', async () => { // #given — a ledger with nothing tracked, and an adapter that fails the test if called const ledger = createOwnershipLedger() diff --git a/packages/runtime/src/agent/ledger-reconcile.ts b/packages/runtime/src/agent/ledger-reconcile.ts index 7c6e987ab4..5bbc526fd1 100644 --- a/packages/runtime/src/agent/ledger-reconcile.ts +++ b/packages/runtime/src/agent/ledger-reconcile.ts @@ -129,6 +129,7 @@ import type {OwnershipLedger} from './ownership-ledger.js' import {err, ok} from '@bfra.me/es/result' import {toError} from '../shared/errors.js' +import {isShellLedgerKey} from './ownership-ledger.js' /** Bounded interval between reconciliation passes run only because the interval elapsed. */ export const DEFAULT_LEDGER_RECONCILE_INTERVAL_MS = 30_000 @@ -207,7 +208,12 @@ export async function reconcileLedgerOnce( ): Promise> { const {ledger, adapter, parentSessionId, logger, signal} = options - if (ledger.snapshot().length === 0) { + // Background shells share the ledger and are not sessions: `shell-jobs-v2.ts` reconciles them. Everything below + // reads sessions only, so a shell entry is never downgraded as "not a child" or settled as "not live". + const sessionEntries = (): ReturnType => + ledger.snapshot().filter(entry => !isShellLedgerKey(entry.sessionId)) + + if (sessionEntries().length === 0) { return ok({liveTrackedSessionIds: new Set()}) } @@ -219,7 +225,7 @@ export async function reconcileLedgerOnce( if (childrenResult.success === false || liveResult.success === false) { const error = childrenResult.success === false ? childrenResult.error : (liveResult as {error: Error}).error - const previouslyOutstanding = ledger.snapshot().filter(entry => entry.state === 'outstanding') + const previouslyOutstanding = sessionEntries().filter(entry => entry.state === 'outstanding') for (const entry of previouslyOutstanding) { ledger.markUnknown(entry.sessionId) } @@ -239,7 +245,7 @@ export async function reconcileLedgerOnce( const settled: string[] = [] const downgradedToUnknown: string[] = [] const liveTrackedSessionIds = new Set() - for (const entry of ledger.snapshot()) { + for (const entry of sessionEntries()) { if (entry.state !== 'outstanding' && entry.state !== 'unknown') continue if (childSessionIds.has(entry.sessionId) === false) { diff --git a/packages/runtime/src/agent/ownership-ledger.test.ts b/packages/runtime/src/agent/ownership-ledger.test.ts index f5fd47ea0a..409a06a0f0 100644 --- a/packages/runtime/src/agent/ownership-ledger.test.ts +++ b/packages/runtime/src/agent/ownership-ledger.test.ts @@ -173,4 +173,35 @@ describe('createOwnershipLedger', () => { expect(ledger.isDrainComplete()).toBe(true) expect(ledger.isPersistenceSafe()).toBe(true) }) + it('release drops an entry in any state, so a released entry no longer blocks the drain', () => { + // #given — one entry per state + const ledger = createOwnershipLedger() + ledger.adopt('shell:sh_outstanding', 'sleep 1') + ledger.adopt('shell:sh_unknown', 'sleep 2') + ledger.markUnknown('shell:sh_unknown') + ledger.adopt('shell:sh_settled', 'sleep 3') + ledger.settle('shell:sh_settled') + + // #when + ledger.release('shell:sh_outstanding') + ledger.release('shell:sh_unknown') + ledger.release('shell:sh_settled') + + // #then + expect(ledger.snapshot()).toEqual([]) + expect(ledger.isDrainComplete()).toBe(true) + expect(ledger.isTracked('shell:sh_outstanding')).toBe(false) + }) + + it('release of an entry that was never adopted is a no-op', () => { + // #given + const ledger = createOwnershipLedger() + ledger.adopt('session-1', 'reviewer-subagent') + + // #when + ledger.release('session-never-adopted') + + // #then + expect(ledger.snapshot()).toEqual([{sessionId: 'session-1', label: 'reviewer-subagent', state: 'outstanding'}]) + }) }) diff --git a/packages/runtime/src/agent/ownership-ledger.ts b/packages/runtime/src/agent/ownership-ledger.ts index 537db611b2..c10e49b7c9 100644 --- a/packages/runtime/src/agent/ownership-ledger.ts +++ b/packages/runtime/src/agent/ownership-ledger.ts @@ -63,6 +63,12 @@ export interface OwnershipLedger { * a safe no-op. */ readonly markUnknown: (sessionId: string) => void + /** + * Drop the entry for `sessionId`, in any state. For an entry adopted on a tentative signal that turned out not to be + * owned work: a foreground shell is adopted when it is created and released when its tool call ends, because only a + * backgrounded shell outlives the call and sends a notice. A no-op when the entry was never adopted. + */ + readonly release: (sessionId: string) => void /** Count of entries currently `outstanding`. Zero means nothing left to drain. */ readonly outstanding: () => number /** Count of entries currently `unknown`. Zero means nothing unconfirmed remains. */ @@ -158,6 +164,10 @@ export function createOwnershipLedger(): OwnershipLedger { entries.set(sessionId, {label: entry.label, state: 'unknown'}) }, + release: (sessionId: string): void => { + entries.delete(sessionId) + }, + outstanding: (): number => countByState('outstanding'), unknown: (): number => countByState('unknown'), @@ -176,3 +186,24 @@ export function createOwnershipLedger(): OwnershipLedger { isTracked: (sessionId: string): boolean => entries.has(sessionId), } } + +const SHELL_LEDGER_KEY_PREFIX = 'shell:' + +/** + * The ledger key of a background shell. A shell is not a session, so it is keyed in a separate key space: no session id + * can equal it, and a notice that names a bare id can never settle a shell's entry or the other way round. Callers + * that walk the ledger as sessions (interrupt, reconcile by parent, ownership checks) skip these keys. + */ +export function shellLedgerKey(shellId: string): string { + return `${SHELL_LEDGER_KEY_PREFIX}${shellId}` +} + +/** Whether a ledger key was made by `shellLedgerKey`. */ +export function isShellLedgerKey(key: string): boolean { + return key.startsWith(SHELL_LEDGER_KEY_PREFIX) +} + +/** The shell id a shell ledger key was made from. Only meaningful when `isShellLedgerKey(key)`. */ +export function shellIdFromLedgerKey(key: string): string { + return key.slice(SHELL_LEDGER_KEY_PREFIX.length) +} diff --git a/packages/runtime/src/agent/remote-client-v2.test.ts b/packages/runtime/src/agent/remote-client-v2.test.ts index 4d764bf08d..97f1bd3534 100644 --- a/packages/runtime/src/agent/remote-client-v2.test.ts +++ b/packages/runtime/src/agent/remote-client-v2.test.ts @@ -1,5 +1,13 @@ import {describe, expect, it, vi} from 'vitest' +import { + SHELL_DIRECTORY, + SHELL_GET_EXITED_RESPONSE, + SHELL_ID, + SHELL_LIST_EMPTY_RESPONSE, + SHELL_LIST_RUNNING_RESPONSE, + SHELL_SESSION_ID, +} from './event-v2.fixtures.js' import {createRemoteOpenCodeV2Client, V2_HEARTBEAT_FRAME} from './remote-client-v2.js' interface RecordedRequest { @@ -365,4 +373,166 @@ describe('createRemoteOpenCodeV2Client', () => { await expect(reading).resolves.toEqual([]) }) }) + describe('background shells', () => { + it('lists the running shells of a location, reading owner, status and pid from the real response (p20)', async () => { + // #given + const {fetch, requests} = makeFetch(() => json(200, SHELL_LIST_RUNNING_RESPONSE)) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w:9200/', headers: AUTH, fetch}) + + // #when + const result = await client.listShells({directory: SHELL_DIRECTORY}) + + // #then + expect(result).toEqual({ + success: true, + data: [{id: SHELL_ID, status: 'running', ownerSessionId: SHELL_SESSION_ID, pid: 67593}], + }) + expect(requests).toHaveLength(1) + expect(requests[0]).toMatchObject({url: 'http://w:9200/api/shell', method: 'GET'}) + expect(requests[0]?.headers).toMatchObject({...AUTH, 'x-opencode-directory': SHELL_DIRECTORY}) + }) + + it('reads an empty list and an untagged shell', async () => { + // #given + const empty = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, SHELL_LIST_EMPTY_RESPONSE)).fetch, + }) + const untagged = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: [{id: 'sh_1', status: 'running', metadata: {}}]})).fetch, + }) + + // #when / #then + expect(await empty.listShells({directory: '/d'})).toEqual({success: true, data: []}) + expect(await untagged.listShells({directory: '/d'})).toEqual({ + success: true, + data: [{id: 'sh_1', status: 'running', ownerSessionId: null, pid: null}], + }) + }) + + it('fails closed on a list it cannot read: a hidden shell would read as stopped', async () => { + // #given + const notArray = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: {}})).fetch, + }) + const noId = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: [{status: 'running'}]})).fetch, + }) + + // #when / #then + expect(await notArray.listShells({directory: '/d'})).toEqual({success: false, error: {kind: 'parse'}}) + expect(await noId.listShells({directory: '/d'})).toEqual({success: false, error: {kind: 'parse'}}) + }) + + it('reads a status it does not know as unknown rather than stopped', async () => { + // #given + const client = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(200, {data: [{id: 'sh_1', status: 'suspended'}]})).fetch, + }) + + // #when + const result = await client.listShells({directory: '/d'}) + + // #then + expect(result).toEqual({ + success: true, + data: [{id: 'sh_1', status: 'unknown', ownerSessionId: null, pid: null}], + }) + }) + + it('gets one shell by id, including an exited one', async () => { + // #given + const {fetch, requests} = makeFetch(() => json(200, SHELL_GET_EXITED_RESPONSE)) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch}) + + // #when + const result = await client.getShell({directory: SHELL_DIRECTORY, shellId: SHELL_ID}) + + // #then + expect(result).toEqual({ + success: true, + data: {id: SHELL_ID, status: 'exited', ownerSessionId: SHELL_SESSION_ID, pid: 67593}, + }) + expect(requests[0]).toMatchObject({url: `http://w/api/shell/${SHELL_ID}`, method: 'GET'}) + expect(requests[0]?.headers).toMatchObject({'x-opencode-directory': SHELL_DIRECTORY}) + }) + + it('reports an unknown shell as http 404', async () => { + // #given + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch: makeFetch(() => json(404, {})).fetch}) + + // #when / #then + expect(await client.getShell({directory: '/d', shellId: 'sh_gone'})).toEqual({ + success: false, + error: {kind: 'http', status: 404}, + }) + }) + + it('deletes a shell with a DELETE in the shell location and reads 204 as success', async () => { + // #given + const {fetch, requests} = makeFetch(() => new Response(null, {status: 204})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', headers: AUTH, fetch}) + + // #when + const result = await client.deleteShell({directory: SHELL_DIRECTORY, shellId: SHELL_ID}) + + // #then + expect(result).toEqual({success: true, data: undefined}) + expect(requests[0]).toMatchObject({url: `http://w/api/shell/${SHELL_ID}`, method: 'DELETE'}) + expect(requests[0]?.headers).toMatchObject({...AUTH, 'x-opencode-directory': SHELL_DIRECTORY}) + }) + + it('encodes the shell id in the path', async () => { + // #given + const {fetch, requests} = makeFetch(() => new Response(null, {status: 204})) + const client = createRemoteOpenCodeV2Client({baseUrl: 'http://w', fetch}) + + // #when + await client.deleteShell({directory: '/d', shellId: 'sh_a/b?c'}) + + // #then + expect(requests[0]?.url).toBe('http://w/api/shell/sh_a%2Fb%3Fc') + }) + + it('maps auth, transport and abort failures without leaking a body, and passes the signal through', async () => { + // #given + const controller = new AbortController() + const unauthorized = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: makeFetch(() => json(401, {})).fetch, + }) + const down = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: async () => { + throw new Error('connect refused') + }, + }) + const aborting = createRemoteOpenCodeV2Client({ + baseUrl: 'http://w', + fetch: async (_input, init) => { + controller.abort() + if (init?.signal?.aborted === true) throw new DOMException('aborted', 'AbortError') + return json(200, {data: []}) + }, + }) + + // #when / #then + expect(await unauthorized.deleteShell({directory: '/d', shellId: 'sh_1'})).toEqual({ + success: false, + error: {kind: 'auth', status: 401}, + }) + expect(await down.listShells({directory: '/d'})).toEqual({ + success: false, + error: {kind: 'network', message: 'connect refused'}, + }) + expect(await aborting.getShell({directory: '/d', shellId: 'sh_1', signal: controller.signal})).toEqual({ + success: false, + error: {kind: 'aborted'}, + }) + }) + }) }) diff --git a/packages/runtime/src/agent/remote-client-v2.ts b/packages/runtime/src/agent/remote-client-v2.ts index 06731618bc..9931067ad0 100644 --- a/packages/runtime/src/agent/remote-client-v2.ts +++ b/packages/runtime/src/agent/remote-client-v2.ts @@ -1,8 +1,10 @@ import type {Result} from '@bfra.me/es/result' import type {V2RequestOptions, V2SessionApi, V2SessionListInput, V2SessionListPage} from './ledger-reconcile-v2.js' +import type {V2ShellStatus} from './shell-notice.js' import {err, ok} from '@bfra.me/es/result' -import {getObjectProperty, getStringProperty} from './payload-accessors.js' +import {getNumberProperty, getObjectProperty, getStringProperty} from './payload-accessors.js' +import {isShellStatus} from './shell-notice.js' /** * Client for an OpenCode V2 (v2.2.0) server reached through a proxy that injects the server's own credentials. @@ -22,6 +24,9 @@ import {getObjectProperty, getStringProperty} from './payload-accessors.js' * - `GET /api/session/active` and `GET /api/session` back the ledger adapter (`ledger-reconcile-v2.ts`). * - `POST /api/session/:id/permission/:requestID/reply` takes `{decision: 'once' | 'always' | 'reject'}`. * - `POST /api/session/:id/form/:formID/reply` takes `{answer}`; `DELETE /api/session/:id/form/:formID?message=` cancels. + * - `GET /api/shell`, `GET /api/shell/:id` and `DELETE /api/shell/:id` (`groups/shell.ts`) read and stop background shells. + * They are location-scoped: the location rides in `x-opencode-directory`, and a DELETE in another location is a + * silent 204 that kills nothing. * - `GET /api/event` is the SSE stream for every location on the server; it starts with `server.connected`. * * Failures come back as a `V2CallError`. The error never carries a response body, a header or the request URL: a body @@ -49,6 +54,16 @@ export interface V2SessionSummary { readonly outcome: V2SessionOutcome | null } +export interface V2ShellSummary { + readonly id: string + /** `unknown` for a status this client does not know: never read as stopped. */ + readonly status: V2ShellStatus | 'unknown' + /** `info.metadata.sessionID`: the session that started the shell. `null` when nobody tagged it. */ + readonly ownerSessionId: string | null + /** Present on `GET /api/shell` and `GET /api/shell/:id`; absent on the `shell.created` frame. */ + readonly pid: number | null +} + /** * Stand-in frame for an SSE comment line (the server sends `: heartbeat` every 15 s, probe P14). A comment carries no * event but proves the stream is alive, so the transport surfaces it. The event mapper ignores it. @@ -115,6 +130,29 @@ export interface RemoteOpenCodeV2Client { readonly message?: string readonly signal?: AbortSignal }) => Promise> + /** + * The RUNNING shells of a location (exited ones are not listed). A list that cannot be read in full is a `parse` + * failure, never a shorter list: a shell that did not make it into the answer would read as stopped. + */ + readonly listShells: (input: { + readonly directory: string + readonly signal?: AbortSignal + }) => Promise> + /** One shell, running or exited (the server retains the last 25 exited per location). Unknown or evicted: `http 404`. */ + readonly getShell: (input: { + readonly directory: string + readonly shellId: string + readonly signal?: AbortSignal + }) => Promise> + /** + * Kill and remove a shell. Answers 204 for an unknown id too, so success means "the request was accepted", never + * "the process is gone": confirm with `listShells`. The job ends as `error` and its notice WAKES the owning session. + */ + readonly deleteShell: (input: { + readonly directory: string + readonly shellId: string + readonly signal?: AbortSignal + }) => Promise> } interface RequestInput { @@ -144,6 +182,18 @@ function isRecord(value: unknown): value is Readonly> { return value !== null && typeof value === 'object' && !Array.isArray(value) } +function readShell(value: unknown): V2ShellSummary | null { + const id = getStringProperty(value, 'id') + if (id === null || id.length === 0) return null + const status = getStringProperty(value, 'status') + return { + id, + status: isShellStatus(status) ? status : 'unknown', + ownerSessionId: getStringProperty(getObjectProperty(value, 'metadata'), 'sessionID'), + pid: getNumberProperty(value, 'pid'), + } +} + function readOutcome(value: unknown): V2SessionOutcome | null { const outcome = getStringProperty(value, 'outcome') return outcome === 'succeeded' || outcome === 'failed' || outcome === 'interrupted' ? outcome : null @@ -368,5 +418,44 @@ export function createRemoteOpenCodeV2Client(options: RemoteOpenCodeV2ClientOpti ...(message === undefined ? {} : {query: {message}}), ...(signal === undefined ? {} : {signal}), }), + + listShells: async ({directory, signal}) => { + const result = await sendJson({ + method: 'GET', + path: '/api/shell', + directory, + ...(signal === undefined ? {} : {signal}), + }) + if (!result.success) return result + const data = getObjectProperty(result.data, 'data') + if (!Array.isArray(data)) return err({kind: 'parse'}) + const shells: V2ShellSummary[] = [] + for (const entry of data) { + const shell = readShell(entry) + if (shell === null) return err({kind: 'parse'}) + shells.push(shell) + } + return ok(shells) + }, + + getShell: async ({directory, shellId, signal}) => { + const result = await sendJson({ + method: 'GET', + path: `/api/shell/${encodeURIComponent(shellId)}`, + directory, + ...(signal === undefined ? {} : {signal}), + }) + if (!result.success) return result + const shell = readShell(getObjectProperty(result.data, 'data')) + return shell === null ? err({kind: 'parse'}) : ok(shell) + }, + + deleteShell: async ({directory, shellId, signal}) => + sendNoContent({ + method: 'DELETE', + path: `/api/shell/${encodeURIComponent(shellId)}`, + directory, + ...(signal === undefined ? {} : {signal}), + }), } } diff --git a/packages/runtime/src/agent/shell-jobs-v2.test.ts b/packages/runtime/src/agent/shell-jobs-v2.test.ts new file mode 100644 index 0000000000..3cd3da15f2 --- /dev/null +++ b/packages/runtime/src/agent/shell-jobs-v2.test.ts @@ -0,0 +1,373 @@ +import type {Result} from '@bfra.me/es/result' +import type {Logger} from '../shared/logger.js' +import type {V2CallError, V2ShellSummary} from './remote-client-v2.js' +import type {ShellApi} from './shell-jobs-v2.js' + +import {err, ok} from '@bfra.me/es/result' +import {describe, expect, it, vi} from 'vitest' + +import {createOwnershipLedger, shellLedgerKey} from './ownership-ledger.js' +import {collectOwnerSessionIds, killOwnedShells, reconcileShellsOnce} from './shell-jobs-v2.js' + +const DIR = '/workspace/repo' +const ROOT = 'ses_root' +const CHILD = 'ses_child' +const OTHER = 'ses_other' + +const logger: Logger = {debug: vi.fn(), info: vi.fn(), warning: vi.fn(), error: vi.fn()} + +type Status = V2ShellSummary['status'] + +interface FakeShell { + status: Status + owner: string | null +} + +/** A shell API over a mutable table. `deleteBehavior` decides what a DELETE does to the table. */ +function makeApi( + shells: Record, + options: { + readonly listFails?: readonly number[] + readonly getFails?: Readonly> + readonly deleteDoesNotKill?: readonly string[] + readonly deleteFails?: boolean + } = {}, +) { + const calls: string[] = [] + let listCount = 0 + const summary = (id: string, shell: FakeShell): V2ShellSummary => ({ + id, + status: shell.status, + ownerSessionId: shell.owner, + pid: shell.status === 'running' ? 1 : null, + }) + const api: ShellApi = { + listShells: async () => { + listCount += 1 + calls.push('list') + if (options.listFails?.includes(listCount) === true) return err({kind: 'network', message: 'down'}) + return ok( + Object.entries(shells) + .filter(([, shell]) => shell.status === 'running' || shell.status === 'unknown') + .map(([id, shell]) => summary(id, shell)), + ) + }, + getShell: async ({shellId}): Promise> => { + calls.push(`get:${shellId}`) + const failure = options.getFails?.[shellId] + if (failure !== undefined) return err(failure) + const shell = shells[shellId] + return shell === undefined ? err({kind: 'http', status: 404}) : ok(summary(shellId, shell)) + }, + deleteShell: async ({shellId}) => { + calls.push(`delete:${shellId}`) + if (options.deleteFails === true) return err({kind: 'network', message: 'down'}) + if (options.deleteDoesNotKill?.includes(shellId) !== true) { + // The real server removes the record: a later GET is a 404. + + delete shells[shellId] + } + return ok(undefined) + }, + } + return {api, calls} +} + +function ledgerWith(...shellIds: string[]) { + const ledger = createOwnershipLedger() + for (const id of shellIds) ledger.adopt(shellLedgerKey(id), 'sleep') + return ledger +} + +describe('reconcileShellsOnce', () => { + it('makes no request when the ledger holds no unsettled shell', async () => { + // #given — a session entry and a settled shell + const ledger = createOwnershipLedger() + ledger.adopt(CHILD, 'child') + ledger.adopt(shellLedgerKey('sh_done'), 'done') + ledger.settle(shellLedgerKey('sh_done')) + const {api, calls} = makeApi({}) + + // #when + const result = await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(result.success).toBe(true) + expect(calls).toEqual([]) + }) + + it('leaves a shell that is still running outstanding', async () => { + // #given + const ledger = ledgerWith('sh_1') + const {api, calls} = makeApi({sh_1: {status: 'running', owner: ROOT}}) + + // #when + const result = await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.outstanding()).toBe(1) + expect(result).toEqual({success: true, data: {liveShellIds: new Set(['sh_1'])}}) + expect(calls).toEqual(['list']) + }) + + it.each(['exited', 'timeout', 'killed'] as const)( + 'settles a shell absent from the list that reads %s', + async status => { + // #given + const ledger = ledgerWith('sh_1') + const {api} = makeApi({sh_1: {status, owner: ROOT}}) + + // #when + await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.isDrainComplete()).toBe(true) + }, + ) + + it('settles a shell the server no longer knows (404 after retention)', async () => { + // #given + const ledger = ledgerWith('sh_1') + const {api} = makeApi({}) + + // #when + await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.snapshot()).toEqual([{sessionId: shellLedgerKey('sh_1'), label: 'sleep', state: 'settled'}]) + }) + + it('keeps a shell it cannot read unknown, never settled', async () => { + // #given — absent from the list, and the per-shell read fails in every non-404 way + for (const error of [ + {kind: 'network', message: 'down'}, + {kind: 'http', status: 500}, + {kind: 'auth', status: 401}, + {kind: 'parse'}, + {kind: 'aborted'}, + ] as const) { + const ledger = ledgerWith('sh_1') + const {api} = makeApi({sh_1: {status: 'exited', owner: ROOT}}, {getFails: {sh_1: error}}) + + // #when + await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.snapshot()[0]?.state).toBe('unknown') + expect(ledger.isDrainComplete()).toBe(false) + } + }) + + it('marks every outstanding shell unknown when the list cannot be read, and settles nothing', async () => { + // #given + const ledger = ledgerWith('sh_1', 'sh_2') + const {api} = makeApi({sh_1: {status: 'exited', owner: ROOT}}, {listFails: [1]}) + + // #when + const result = await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(result.success).toBe(false) + expect(ledger.snapshot().map(entry => entry.state)).toEqual(['unknown', 'unknown']) + }) + + it('treats a status it does not know as running', async () => { + // #given + const ledger = ledgerWith('sh_1') + const {api} = makeApi({sh_1: {status: 'unknown', owner: ROOT}}) + + // #when + await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.outstanding()).toBe(1) + }) + + it('can settle an unknown entry once the shell is seen stopped', async () => { + // #given + const ledger = ledgerWith('sh_1') + ledger.markUnknown(shellLedgerKey('sh_1')) + const {api} = makeApi({sh_1: {status: 'exited', owner: ROOT}}) + + // #when + await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.isDrainComplete()).toBe(true) + }) + + it('does not touch session entries', async () => { + // #given + const ledger = ledgerWith('sh_1') + ledger.adopt(CHILD, 'child') + const {api} = makeApi({sh_1: {status: 'exited', owner: ROOT}}) + + // #when + await reconcileShellsOnce({ledger, api, directory: DIR, logger}) + + // #then + expect(ledger.snapshot().find(entry => entry.sessionId === CHILD)?.state).toBe('outstanding') + }) +}) + +describe('collectOwnerSessionIds', () => { + it('returns the root and every session entry in any state, and no shell key', () => { + // #given + const ledger = ledgerWith('sh_1') + ledger.adopt(CHILD, 'child') + ledger.settle(CHILD) + + // #when / #then + expect(collectOwnerSessionIds(ROOT, ledger)).toEqual(new Set([ROOT, CHILD])) + }) +}) + +describe('killOwnedShells', () => { + const owners = new Set([ROOT, CHILD]) + + it('does nothing when no owned shell is running: one request, confirmed', async () => { + // #given — only a stranger's shell + const ledger = createOwnershipLedger() + const {api, calls} = makeApi({sh_x: {status: 'running', owner: OTHER}}) + + // #when + const result = await killOwnedShells({api, directory: DIR, ownerSessionIds: owners, ledger, logger}) + + // #then + expect(result).toEqual({confirmed: true, deleted: []}) + expect(calls).toEqual(['list']) + }) + + it('deletes a ledger shell and a listed shell of the root or an owned child, then confirms with a re-list', async () => { + // #given + const ledger = ledgerWith('sh_ledger') + const shells: Record = { + sh_ledger: {status: 'running', owner: ROOT}, + sh_root: {status: 'running', owner: ROOT}, + sh_child: {status: 'running', owner: CHILD}, + sh_stranger: {status: 'running', owner: OTHER}, + sh_untagged: {status: 'running', owner: null}, + } + const {api, calls} = makeApi(shells) + + // #when + const result = await killOwnedShells({api, directory: DIR, ownerSessionIds: owners, ledger, logger}) + + // #then — the stranger's and the untagged shell are left alone + expect(result.confirmed).toBe(true) + expect(calls.filter(call => call.startsWith('delete:')).sort()).toEqual([ + 'delete:sh_child', + 'delete:sh_ledger', + 'delete:sh_root', + ]) + expect(calls.at(-1)).toBe('list') + expect(Object.keys(shells).sort()).toEqual(['sh_stranger', 'sh_untagged']) + expect(ledger.isDrainComplete()).toBe(true) + }) + + it('still deletes the ledger shells when the first list fails', async () => { + // #given + const ledger = ledgerWith('sh_1') + const {api, calls} = makeApi({sh_1: {status: 'running', owner: ROOT}}, {listFails: [1]}) + + // #when + const result = await killOwnedShells({api, directory: DIR, ownerSessionIds: owners, ledger, logger}) + + // #then + expect(calls).toContain('delete:sh_1') + expect(result.confirmed).toBe(true) + }) + + it('is unconfirmed when the confirming list cannot be read, and settles nothing', async () => { + // #given + const ledger = ledgerWith('sh_1') + const {api} = makeApi({sh_1: {status: 'running', owner: ROOT}}, {listFails: [2]}) + + // #when + const result = await killOwnedShells({api, directory: DIR, ownerSessionIds: owners, ledger, logger, rounds: 1}) + + // #then + expect(result.confirmed).toBe(false) + expect(ledger.outstanding()).toBe(1) + }) + + it('is unconfirmed when a shell survives every round, and says which', async () => { + // #given — a DELETE that is accepted and kills nothing + const ledger = ledgerWith('sh_stuck') + const {api, calls} = makeApi({sh_stuck: {status: 'running', owner: ROOT}}, {deleteDoesNotKill: ['sh_stuck']}) + + // #when + const result = await killOwnedShells({ + api, + directory: DIR, + ownerSessionIds: owners, + ledger, + logger, + rounds: 3, + pollIntervalMs: 0, + }) + + // #then + expect(result).toEqual({confirmed: false, stillRunning: ['sh_stuck']}) + expect(calls.filter(call => call === 'delete:sh_stuck')).toHaveLength(3) + expect(ledger.outstanding()).toBe(1) + }) + + it('is unconfirmed when the DELETE itself fails and the shell is still running', async () => { + // #given + const ledger = ledgerWith('sh_1') + const {api} = makeApi({sh_1: {status: 'running', owner: ROOT}}, {deleteFails: true}) + + // #when + const result = await killOwnedShells({ + api, + directory: DIR, + ownerSessionIds: owners, + ledger, + logger, + rounds: 2, + pollIntervalMs: 0, + }) + + // #then + expect(result).toEqual({confirmed: false, stillRunning: ['sh_1']}) + }) + + it('settles only the shells it confirmed gone', async () => { + // #given + const ledger = ledgerWith('sh_dies', 'sh_stuck') + const {api} = makeApi( + {sh_dies: {status: 'running', owner: ROOT}, sh_stuck: {status: 'running', owner: ROOT}}, + {deleteDoesNotKill: ['sh_stuck']}, + ) + + // #when + await killOwnedShells({api, directory: DIR, ownerSessionIds: owners, ledger, logger, rounds: 1}) + + // #then + expect(ledger.snapshot().map(entry => [entry.sessionId, entry.state])).toEqual([ + [shellLedgerKey('sh_dies'), 'settled'], + [shellLedgerKey('sh_stuck'), 'outstanding'], + ]) + }) + + it('does not abort the stop on a throwing client', async () => { + // #given + const ledger = ledgerWith('sh_1') + const api: ShellApi = { + listShells: async () => { + throw new Error('boom') + }, + getShell: async () => err({kind: 'parse'}), + deleteShell: async () => { + throw new Error('boom') + }, + } + + // #when + const result = await killOwnedShells({api, directory: DIR, ownerSessionIds: owners, ledger, logger, rounds: 1}) + + // #then + expect(result.confirmed).toBe(false) + }) +}) diff --git a/packages/runtime/src/agent/shell-jobs-v2.ts b/packages/runtime/src/agent/shell-jobs-v2.ts new file mode 100644 index 0000000000..f3ea0056e3 --- /dev/null +++ b/packages/runtime/src/agent/shell-jobs-v2.ts @@ -0,0 +1,245 @@ +import type {Result} from '@bfra.me/es/result' +import type {Logger} from '../shared/logger.js' +import type {OwnershipLedger} from './ownership-ledger.js' +import type {RemoteOpenCodeV2Client, V2ShellSummary} from './remote-client-v2.js' + +import {err, ok} from '@bfra.me/es/result' +import {toError} from '../shared/errors.js' +import {isShellLedgerKey, shellIdFromLedgerKey} from './ownership-ledger.js' + +/** + * Ownership of background `shell` jobs on OpenCode V2 (v2.2.0): reconciling the ledger's shell entries against the + * server, and killing the shells a run owns when the run stops. See `shell-notice.ts` for what a background shell is. + * + * Why the kill is explicit: a session interrupt does not stop a background shell (`Job.cancel(sessionID)` matches no job + * under a session id, bgshell probe p21-b), and the shell outlives the run's lock. `DELETE /api/shell/:id` is the one + * route that stops it (probe p22). It is location-scoped and answers 204 for an unknown id, so a stop is confirmed only + * by `GET /api/shell` (running shells) no longer listing the shell. The job ends as `error` and its notice WAKES the + * owning session, so a caller that kills must still keep the session from running (it interrupts it afterwards). + */ + +/** The three shell calls these functions need; the real V2 client satisfies it. */ +export type ShellApi = Pick + +function isStopped(shell: V2ShellSummary): boolean { + return shell.status === 'exited' || shell.status === 'timeout' || shell.status === 'killed' +} + +function describe(error: {readonly kind: string}): string { + return error.kind +} + +function unsettledShellEntries(ledger: OwnershipLedger): readonly {readonly key: string; readonly shellId: string}[] { + return ledger + .snapshot() + .filter(entry => isShellLedgerKey(entry.sessionId) && entry.state !== 'settled') + .map(entry => ({key: entry.sessionId, shellId: shellIdFromLedgerKey(entry.sessionId)})) +} + +/** The root and every session the ledger tracks, in any state: the sessions whose shells belong to this run. */ +export function collectOwnerSessionIds(rootSessionId: string, ledger: OwnershipLedger): ReadonlySet { + const owners = new Set([rootSessionId]) + for (const entry of ledger.snapshot()) { + if (!isShellLedgerKey(entry.sessionId)) owners.add(entry.sessionId) + } + return owners +} + +export interface ReconcileShellsOptions { + readonly ledger: OwnershipLedger + readonly api: ShellApi + /** The location the shells run in: the directory the run's sessions were created at. */ + readonly directory: string + readonly logger: Logger + readonly signal?: AbortSignal +} + +export interface ShellReconcileObservation { + /** Unsettled shell ids this pass saw running. */ + readonly liveShellIds: ReadonlySet +} + +/** + * One reconcile pass over the ledger's unsettled shell entries. Settles what it can prove stopped, never adopts. + * + * - Listed as running: left as it is. + * - Absent from the list and `GET /api/shell/:id` reads `exited`, `timeout` or `killed`: settled. + * - Absent from the list and `GET /api/shell/:id` is 404: settled. The server keeps the last 25 exited shells per + * location, so an old one is gone from the record, and a shell removed by a DELETE is too. Not running now is what + * the ledger needs; whether its notice arrived is the drain gate's separate question. + * - Any other read failure: the entry is marked `unknown`, never settled. + * - The list itself cannot be read: every outstanding shell becomes `unknown` and the pass fails. + * + * Makes no request when the ledger has no unsettled shell. Never throws. + */ +export async function reconcileShellsOnce( + options: ReconcileShellsOptions, +): Promise> { + const {ledger, api, directory, logger, signal} = options + const entries = unsettledShellEntries(ledger) + if (entries.length === 0) return ok({liveShellIds: new Set()}) + + const signalArg = signal === undefined ? {} : {signal} + try { + const listed = await api.listShells({directory, ...signalArg}) + if (!listed.success) { + for (const entry of entries) ledger.markUnknown(entry.key) + logger.warning('Shell reconciliation failed; marking outstanding shells unknown rather than settling them', { + source: 'reconcileShellsOnce', + unknownCount: entries.length, + error: describe(listed.error), + }) + return err(new Error(`shell.list failed: ${describe(listed.error)}`)) + } + + const running = new Set(listed.data.filter(shell => !isStopped(shell)).map(shell => shell.id)) + const liveShellIds = new Set() + const settled: string[] = [] + const unreadable: string[] = [] + for (const entry of entries) { + if (running.has(entry.shellId)) { + liveShellIds.add(entry.shellId) + continue + } + const read = await api.getShell({directory, shellId: entry.shellId, ...signalArg}) + if (read.success && isStopped(read.data)) { + ledger.settle(entry.key) + settled.push(entry.shellId) + } else if (read.success) { + // Running after all: it started between the list and this read. + liveShellIds.add(entry.shellId) + } else if (read.error.kind === 'http' && read.error.status === 404) { + ledger.settle(entry.key) + settled.push(entry.shellId) + } else { + ledger.markUnknown(entry.key) + unreadable.push(entry.shellId) + } + } + if (settled.length > 0 || unreadable.length > 0) { + logger.debug('Shell reconciliation adjusted ownership', {source: 'reconcileShellsOnce', settled, unreadable}) + } + return ok({liveShellIds}) + } catch (error) { + for (const entry of entries) ledger.markUnknown(entry.key) + return err(toError(error)) + } +} + +/** Pause between kill rounds. A killed process leaves the running list within a second (probe p22). */ +export const DEFAULT_SHELL_KILL_POLL_INTERVAL_MS = 250 +/** Kill rounds before a shell is reported as still running. */ +export const DEFAULT_SHELL_KILL_ROUNDS = 3 + +export interface KillOwnedShellsOptions { + readonly api: ShellApi + readonly directory: string + /** The root and the sessions this run owns (`collectOwnerSessionIds`). A running shell tagged with one is killed. */ + readonly ownerSessionIds: ReadonlySet + /** Its unsettled shell entries are killed whether or not the list shows them; confirmed ones are settled. */ + readonly ledger: OwnershipLedger + readonly logger: Logger + readonly signal?: AbortSignal + readonly rounds?: number + readonly pollIntervalMs?: number +} + +export type KillOwnedShellsResult = + | {readonly confirmed: true; readonly deleted: readonly string[]} + /** `stillRunning` is the shells not shown gone; every target when the confirming list could not be read. */ + | {readonly confirmed: false; readonly stillRunning: readonly string[]} + +/** + * Kill every shell this run owns: the ledger's unsettled shells plus any running shell of the location that is tagged + * with the root or an owned session (a shell whose creation the stream never delivered). Each round sends a DELETE per + * target and re-lists to confirm; the stop is confirmed only when no target is listed running. A listed shell of a + * stranger, or one nobody tagged, is left alone. + * + * Confirmed ledger entries are settled. A DELETE queues an `error` notice that wakes the owning session, so settling + * here does not mean the owner is quiet. Never throws; every failure is an unconfirmed result. + */ +export async function killOwnedShells(options: KillOwnedShellsOptions): Promise { + const { + api, + directory, + ownerSessionIds, + ledger, + logger, + signal, + rounds = DEFAULT_SHELL_KILL_ROUNDS, + pollIntervalMs = DEFAULT_SHELL_KILL_POLL_INTERVAL_MS, + } = options + const signalArg = signal === undefined ? {} : {signal} + const ledgerEntries = unsettledShellEntries(ledger) + const targets = new Set(ledgerEntries.map(entry => entry.shellId)) + const deleted = new Set() + let stillRunning: readonly string[] = [...targets] + + function addOwnedRunning(shells: readonly V2ShellSummary[]): void { + for (const shell of shells) { + if (isStopped(shell)) continue + if (shell.ownerSessionId !== null && ownerSessionIds.has(shell.ownerSessionId)) targets.add(shell.id) + } + } + + async function list(): Promise { + try { + const listed = await api.listShells({directory, ...signalArg}) + if (listed.success) return listed.data + logger.warning('Owned shell stop: the shell list could not be read', {error: describe(listed.error)}) + } catch (error) { + logger.warning('Owned shell stop: the shell list threw', {detail: toError(error).message}) + } + return null + } + + for (let round = 1; round <= rounds; round++) { + if (signal?.aborted === true) break + const before = await list() + if (before !== null) addOwnedRunning(before) + if (before !== null && targets.size === 0) return {confirmed: true, deleted: []} + if (before === null && targets.size === 0) { + // Nothing is known to kill and the list is unreadable: no owned shell can be ruled out. + return {confirmed: false, stillRunning: []} + } + + await Promise.all( + [...targets].map(async shellId => { + try { + const result = await api.deleteShell({directory, shellId, ...signalArg}) + if (result.success) deleted.add(shellId) + else + logger.warning('Owned shell stop: a shell DELETE returned an error', { + shellId, + error: describe(result.error), + }) + } catch (error) { + logger.warning('Owned shell stop: a shell DELETE threw', {shellId, detail: toError(error).message}) + } + }), + ) + + const after = await list() + if (after === null) { + stillRunning = [...targets] + } else { + // A shell an owned session started since the first reading is a target of the next round. + addOwnedRunning(after) + const running = new Set(after.filter(shell => !isStopped(shell)).map(shell => shell.id)) + for (const entry of ledgerEntries) { + if (!running.has(entry.shellId)) ledger.settle(entry.key) + } + stillRunning = [...targets].filter(shellId => running.has(shellId)) + if (stillRunning.length === 0) return {confirmed: true, deleted: [...deleted]} + } + + if (round < rounds && pollIntervalMs > 0) { + await new Promise(resolve => { + setTimeout(resolve, pollIntervalMs) + }) + } + } + + logger.error('Owned shell stop: shells could not be confirmed stopped', {stillRunning}) + return {confirmed: false, stillRunning} +} diff --git a/packages/runtime/src/agent/shell-notice.test.ts b/packages/runtime/src/agent/shell-notice.test.ts new file mode 100644 index 0000000000..1c570588bb --- /dev/null +++ b/packages/runtime/src/agent/shell-notice.test.ts @@ -0,0 +1,343 @@ +import {describe, expect, it} from 'vitest' + +import { + FORGED_USER_SHELL_ENQUEUED_FRAME, + KILLED_SHELL_EXITED_FRAME, + KILLED_SHELL_ID, + KILLED_SHELL_NOTICE_ENQUEUED_FRAME, + SHELL_BACKGROUND_SUCCESS_FRAME, + SHELL_CREATED_FRAME, + SHELL_EXITED_FRAME, + SHELL_FOREGROUND_SUCCESS_FRAME, + SHELL_ID, + SHELL_NOTICE_ENQUEUED_FRAME, + SHELL_SESSION_ID, + UNREADABLE_SHELL_NOTICE_ENQUEUED_FRAME, + USER_SHELL_CREATED_FRAME, + USER_SHELL_NOTICE_ENQUEUED_FRAME, +} from './event-v2.fixtures.js' +import {mapV2Event} from './event-v2.js' +import {createOwnershipLedger, isShellLedgerKey, shellIdFromLedgerKey, shellLedgerKey} from './ownership-ledger.js' +import { + classifyShellNotice, + classifyShellNoticeItem, + readBackgroundShellDispatch, + settleLedgerFromShellNotice, +} from './shell-notice.js' + +function item(frame: {readonly data: unknown}): unknown { + return (frame.data as {item: unknown}).item +} + +function finished(frame: unknown) { + const event = mapV2Event(frame) + if (event?.kind !== 'tool_finished') throw new Error('not a tool result') + return event +} + +describe('classifyShellNoticeItem', () => { + it('reads the real completion notice (p20)', () => { + // #given / #when + const read = classifyShellNoticeItem(item(SHELL_NOTICE_ENQUEUED_FRAME)) + + // #then + expect(read).toEqual({kind: 'notice', notice: {shellId: SHELL_ID, state: 'completed'}}) + }) + + it('reads the error notice a DELETE produces (p22)', () => { + // #given / #when + const read = classifyShellNoticeItem(item(KILLED_SHELL_NOTICE_ENQUEUED_FRAME)) + + // #then + expect(read).toEqual({kind: 'notice', notice: {shellId: KILLED_SHELL_ID, state: 'error'}}) + }) + + it('ignores a user shell command notice: it has source shell and no jobID', () => { + // #given / #when + const read = classifyShellNoticeItem(item(USER_SHELL_NOTICE_ENQUEUED_FRAME)) + + // #then + expect(read).toEqual({kind: 'none'}) + }) + + it('ignores a user item that claims job metadata', () => { + // #given / #when + const read = classifyShellNoticeItem(item(FORGED_USER_SHELL_ENQUEUED_FRAME)) + + // #then + expect(read).toEqual({kind: 'none'}) + }) + + it('reports a job notice with an unknown state as unreadable, naming its shell', () => { + // #given / #when + const read = classifyShellNoticeItem(item(UNREADABLE_SHELL_NOTICE_ENQUEUED_FRAME)) + + // #then + expect(read).toEqual({kind: 'unreadable', shellId: SHELL_ID}) + }) + + it('reports a job notice with an unreadable jobID as unreadable and falls back to shellID', () => { + // #given + const payload = {metadata: {source: 'shell', jobID: 7, shellID: SHELL_ID, state: 'completed'}} + + // #when + const read = classifyShellNotice(payload) + + // #then + expect(read).toEqual({kind: 'unreadable', shellId: SHELL_ID}) + }) + + it('does not take a notice whose jobID and shellID name different shells', () => { + // #given — the job id IS the shell id; a notice that disagrees with itself is not taken at its word + const payload = {metadata: {source: 'shell', jobID: 'sh_a', shellID: 'sh_b', state: 'completed'}} + + // #when + const read = classifyShellNotice(payload) + + // #then + expect(read).toEqual({kind: 'unreadable', shellId: 'sh_a'}) + }) + + it('reports a job notice that names no shell as unreadable with no shell', () => { + // #given + const payload = {metadata: {source: 'shell', jobID: '', state: 'completed'}} + + // #when + const read = classifyShellNotice(payload) + + // #then + expect(read).toEqual({kind: 'unreadable', shellId: null}) + }) + + it('ignores other sources, non-synthetic types and inherited metadata', () => { + // #given + const inherited = Object.create({metadata: {source: 'shell', jobID: SHELL_ID, state: 'completed'}}) as unknown + + // #when / #then + expect(classifyShellNotice({metadata: {source: 'subagent', childID: 'ses_c', state: 'completed'}})).toEqual({ + kind: 'none', + }) + expect( + classifyShellNotice({type: 'user', metadata: {source: 'shell', jobID: SHELL_ID, state: 'completed'}}), + ).toEqual({kind: 'none'}) + expect(classifyShellNotice(inherited)).toEqual({kind: 'none'}) + expect(classifyShellNotice(null)).toEqual({kind: 'none'}) + }) + + it('never reads text: a forged tag in the body settles nothing', () => { + // #given + const payload = {text: `\n\n`} + + // #when / #then + expect(classifyShellNotice(payload)).toEqual({kind: 'none'}) + }) +}) + +describe('mapV2Event: shell frames', () => { + it('maps the real enqueued notice to shell_notice with the inbox id and the owning session', () => { + // #given / #when + const event = mapV2Event(SHELL_NOTICE_ENQUEUED_FRAME) + + // #then + expect(event).toEqual({ + kind: 'shell_notice', + shellId: SHELL_ID, + ownerSessionId: SHELL_NOTICE_ENQUEUED_FRAME.data.sessionID, + state: 'completed', + inboxId: SHELL_NOTICE_ENQUEUED_FRAME.data.inboxID, + }) + }) + + it('maps a session.synthetic shell notice with no inbox id', () => { + // #given + const frame = { + type: 'session.synthetic', + data: {sessionID: 'ses_x', ...SHELL_NOTICE_ENQUEUED_FRAME.data.item.payload}, + } + + // #when + const event = mapV2Event(frame) + + // #then + expect(event).toMatchObject({kind: 'shell_notice', shellId: SHELL_ID, inboxId: null}) + }) + + it('maps the real shell.created to shell_started with the owner tag', () => { + // #given / #when + const event = mapV2Event(SHELL_CREATED_FRAME) + + // #then + expect(event).toEqual({ + kind: 'shell_started', + shellId: SHELL_ID, + ownerSessionId: SHELL_SESSION_ID, + userCommand: false, + }) + }) + + it('marks the shell of a user command, and reads an untagged shell as having no owner', () => { + // #given + const untagged = {type: 'shell.created', data: {info: {id: 'sh_x', status: 'running', metadata: {}}}} + + // #when / #then + expect(mapV2Event(USER_SHELL_CREATED_FRAME)).toMatchObject({kind: 'shell_started', userCommand: true}) + expect(mapV2Event(untagged)).toEqual({ + kind: 'shell_started', + shellId: 'sh_x', + ownerSessionId: null, + userCommand: false, + }) + }) + + it('maps a shell.created with no readable id to malformed, naming the owner when it has one', () => { + // #given + const frame = {type: 'shell.created', data: {info: {status: 'running', metadata: {sessionID: SHELL_SESSION_ID}}}} + + // #when + const event = mapV2Event(frame) + + // #then + expect(event).toEqual({ + kind: 'malformed', + eventType: 'shell.created', + sessionId: SHELL_SESSION_ID, + reason: 'unreadable shell', + }) + }) + + it('maps the real shell.exited frames, with and without an exit code', () => { + // #given / #when / #then + expect(mapV2Event(SHELL_EXITED_FRAME)).toEqual({kind: 'shell_exited', shellId: SHELL_ID, status: 'exited', exit: 0}) + expect(mapV2Event(KILLED_SHELL_EXITED_FRAME)).toEqual({ + kind: 'shell_exited', + shellId: KILLED_SHELL_ID, + status: 'killed', + exit: null, + }) + }) + + it('maps a shell.exited it cannot read to malformed', () => { + // #given / #when + const event = mapV2Event({type: 'shell.exited', data: {id: SHELL_ID, status: 'vanished'}}) + + // #then + expect(event).toMatchObject({kind: 'malformed', eventType: 'shell.exited'}) + }) + + it('maps a user shell notice to nothing', () => { + // #given / #when / #then + expect(mapV2Event(USER_SHELL_NOTICE_ENQUEUED_FRAME)).toBeNull() + }) + + it('maps an unreadable job notice to malformed carrying the shell id', () => { + // #given / #when + const event = mapV2Event(UNREADABLE_SHELL_NOTICE_ENQUEUED_FRAME) + + // #then + expect(event).toEqual({ + kind: 'malformed', + eventType: 'session.inbox.enqueued', + sessionId: UNREADABLE_SHELL_NOTICE_ENQUEUED_FRAME.data.sessionID, + reason: 'unreadable shell notice', + shellId: SHELL_ID, + }) + }) +}) + +describe('readBackgroundShellDispatch', () => { + it('reads the real backgrounded success (p20) as a background shell', () => { + // #given / #when + const dispatch = readBackgroundShellDispatch('shell', finished(SHELL_BACKGROUND_SUCCESS_FRAME)) + + // #then + expect(dispatch).toEqual({shellId: SHELL_ID}) + }) + + it('reads no dispatch from a foreground call that completed', () => { + // #given / #when / #then + expect(readBackgroundShellDispatch('shell', finished(SHELL_FOREGROUND_SUCCESS_FRAME))).toBeNull() + }) + + it('reads no dispatch from another tool or from a success that names no shell', () => { + // #given + const noShell = finished({ + type: 'session.tool.success', + data: {sessionID: 'ses_a', id: 'call_1', content: [], metadata: {status: 'running'}}, + }) + + // #when / #then + expect(readBackgroundShellDispatch('read', finished(SHELL_BACKGROUND_SUCCESS_FRAME))).toBeNull() + expect(readBackgroundShellDispatch('shell', noShell)).toBeNull() + }) + + it('reads no dispatch from a failed call', () => { + // #given + const failed = finished({ + type: 'session.tool.failed', + data: { + sessionID: 'ses_a', + id: 'call_1', + error: {type: 'tool.execution', message: 'x'}, + metadata: {status: 'running', shellID: SHELL_ID}, + }, + }) + + // #when / #then + expect(readBackgroundShellDispatch('shell', failed)).toBeNull() + }) +}) + +describe('settleLedgerFromShellNotice', () => { + it('settles an adopted shell on every terminal state', () => { + for (const state of ['completed', 'error', 'cancelled'] as const) { + // #given + const ledger = createOwnershipLedger() + ledger.adopt(shellLedgerKey(SHELL_ID), 'sleep 8') + + // #when + const settlement = settleLedgerFromShellNotice(ledger, {shellId: SHELL_ID, state}) + + // #then + expect(settlement).toEqual({shellId: SHELL_ID, state, tracked: true}) + expect(ledger.isDrainComplete()).toBe(true) + } + }) + + it('does not adopt a shell the ledger never tracked', () => { + // #given + const ledger = createOwnershipLedger() + + // #when + const settlement = settleLedgerFromShellNotice(ledger, {shellId: SHELL_ID, state: 'completed'}) + + // #then + expect(settlement.tracked).toBe(false) + expect(ledger.snapshot()).toEqual([]) + }) + + it('cannot settle a session entry that happens to share the id', () => { + // #given — a session entry keyed by the bare id, as a hostile notice would name it + const ledger = createOwnershipLedger() + ledger.adopt(SHELL_ID, 'a session') + + // #when + const settlement = settleLedgerFromShellNotice(ledger, {shellId: SHELL_ID, state: 'completed'}) + + // #then + expect(settlement.tracked).toBe(false) + expect(ledger.outstanding()).toBe(1) + }) +}) + +describe('shell ledger keys', () => { + it('round-trips a shell id and never matches a session id', () => { + // #given / #when + const key = shellLedgerKey(SHELL_ID) + + // #then + expect(isShellLedgerKey(key)).toBe(true) + expect(shellIdFromLedgerKey(key)).toBe(SHELL_ID) + expect(isShellLedgerKey('ses_e7a179c05ffeZRtvviWr7imnQn')).toBe(false) + expect(key).not.toBe(SHELL_ID) + }) +}) diff --git a/packages/runtime/src/agent/shell-notice.ts b/packages/runtime/src/agent/shell-notice.ts new file mode 100644 index 0000000000..ff3813ce45 --- /dev/null +++ b/packages/runtime/src/agent/shell-notice.ts @@ -0,0 +1,128 @@ +import type {V2DomainEvent} from './event-v2.js' +import type {OwnershipLedger} from './ownership-ledger.js' + +import {shellLedgerKey} from './ownership-ledger.js' +import {getObjectProperty, getStringProperty, ownValue} from './payload-accessors.js' + +/** + * Background `shell` job notices for OpenCode V2 (v2.2.0): the sibling of `subagent-notice.ts`. + * + * A background shell is a server job whose id is the shell id (`sh_…`). It is not a session, so `session.active` never + * lists it, and a session interrupt does not stop it (`Job.cancel(sessionID)` finds no job under a session id). When it + * ends, the tool enqueues a synthetic message on the CALLING session and wakes it, exactly as a subagent does + * (`packages/core/src/tool/plugin/shell.ts` `notifyWhenDone`, `shell/result.ts` `notification`). Its structured + * `metadata` is `{source: "shell", shellID, jobID, state, …}` and the model-visible text embeds command output, so this + * reader NEVER parses text. Captured on stock v2.2.0 in the bgshell probes p20 and p22. + * + * A notice with `source: "shell"` and NO `jobID` is the notice of a user-initiated shell command + * (`POST /api/session/:id/shell`, `userNotification`). That is not a job and is delivered with `resume: false`; it is + * not a notice here. + */ + +/** `Job.status` minus `running`, which is never delivered as a notice. A DELETEd shell ends as `error`. */ +export type ShellNoticeState = 'cancelled' | 'completed' | 'error' + +export interface ShellNotice { + /** The shell (and job) that ended. */ + readonly shellId: string + readonly state: ShellNoticeState +} + +/** `Shell.Status` (`packages/schema/src/shell.ts`). */ +export type V2ShellStatus = 'exited' | 'killed' | 'running' | 'timeout' + +export function isShellStatus(value: string | null): value is V2ShellStatus { + return value === 'running' || value === 'exited' || value === 'timeout' || value === 'killed' +} + +function isNoticeState(value: string | null): value is ShellNoticeState { + return value === 'completed' || value === 'error' || value === 'cancelled' +} + +/** How a synthetic message or inbox item reads as a shell job notice. */ +export type ShellNoticeRead = + | {readonly kind: 'none'} + | {readonly kind: 'notice'; readonly notice: ShellNotice} + /** + * The server marked it as a job notice (`source: "shell"` with a `jobID`), but this reader cannot take it: an unknown + * state or a changed shape. The shell it names, when readable, is no longer known to be running or ended. + */ + | {readonly kind: 'unreadable'; readonly shellId: string | null} + +function nonEmpty(value: string | null): string | null { + return value === null || value.length === 0 ? null : value +} + +/** + * Read a shell job notice from any object that carries the server's `metadata`: a `session.synthetic` event's `data`, + * or a synthetic inbox item's `payload`. A `type` property, when present, must be `synthetic`. + */ +export function classifyShellNotice(value: unknown): ShellNoticeRead { + const type = getStringProperty(value, 'type') + if (type !== null && type !== 'synthetic') return {kind: 'none'} + const metadata = getObjectProperty(value, 'metadata') + if (getStringProperty(metadata, 'source') !== 'shell') return {kind: 'none'} + // No `jobID` key: the notice of a user shell command, which is not a job. + if (ownValue(metadata, 'jobID') === undefined) return {kind: 'none'} + + const jobId = nonEmpty(getStringProperty(metadata, 'jobID')) + const shellId = nonEmpty(getStringProperty(metadata, 'shellID')) + const state = getStringProperty(metadata, 'state') + // The job id IS the shell id. A notice that disagrees with itself is not taken at its word. + if (jobId !== null && (shellId === null || shellId === jobId) && isNoticeState(state)) { + return {kind: 'notice', notice: {shellId: jobId, state}} + } + return {kind: 'unreadable', shellId: jobId ?? shellId} +} + +/** Like `classifyShellNotice` for a `session.inbox.enqueued` item. Only `synthetic` items are considered. */ +export function classifyShellNoticeItem(item: unknown): ShellNoticeRead { + if (getStringProperty(item, 'type') !== 'synthetic') return {kind: 'none'} + return classifyShellNotice(getObjectProperty(item, 'payload')) +} + +export interface ShellNoticeSettlement { + readonly shellId: string + readonly state: ShellNoticeState + /** `false` when the ledger never tracked the shell; nothing was changed. */ + readonly tracked: boolean +} + +/** + * Apply a notice to the ownership ledger. Every terminal state settles the entry: the notice is the server's own + * statement that the job ended. A shell the ledger never adopted is NOT adopted here: a notice proves a shell ended, not + * that this run owns it. The entry is looked up in the shell key space, so a notice can never settle a session. + */ +export function settleLedgerFromShellNotice(ledger: OwnershipLedger, notice: ShellNotice): ShellNoticeSettlement { + const key = shellLedgerKey(notice.shellId) + const tracked = ledger.isTracked(key) + if (tracked) ledger.settle(key) + return {shellId: notice.shellId, state: notice.state, tracked} +} + +/** The `shellID` a `shell` tool call's progress or terminal `metadata` carries, or `null`. */ +export function readToolShellId(metadata: unknown): string | null { + return nonEmpty(getStringProperty(metadata, 'shellID')) +} + +export interface BackgroundShellDispatch { + readonly shellId: string +} + +/** + * Whether a `shell` tool event is the result of a backgrounded call. Only a successful terminal event with + * `metadata.status === "running"` and a `shellID` proves it: a call that was backgrounded at launch, or moved there + * later by `POST /api/session/:id/background`, returns `backgroundResult` as its tool result + * (`packages/core/src/tool/plugin/shell.ts`); a foreground call that finishes returns `status: "completed"`. The progress + * event carries a `shellID` for both, so it proves nothing. + * + * The caller supplies the tool name (correlated from `session.tool.input.started`); the success event does not carry it. + */ +export function readBackgroundShellDispatch(toolName: string, event: V2DomainEvent): BackgroundShellDispatch | null { + if (toolName !== 'shell') return null + if (event.kind !== 'tool_finished' || event.outcome !== 'success') return null + if (getStringProperty(event.metadata, 'status') !== 'running') return null + + const shellId = readToolShellId(event.metadata) + return shellId === null ? null : {shellId} +} From 4dbec6692ca30036a1629bd65e362dee1d0d9082 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Thu, 29 Oct 2026 08:44:17 -0700 Subject: [PATCH 5/9] fix(gateway): keep the V2 stop barrier from confirming while a shell can still wake the root - A stop that deleted any shell, tracked or not, never confirms the root: the DELETE's error notice wakes it. Any stop with a live owned shell therefore quarantines, even after a clean kill (accepted cost). - A final sweep after the root confirms deletes or reports a shell started during the barrier, and leaves the stop unconfirmed. - Follow-up work stays open until an adopted child's or shell's notice (or its fence) has been observed, not until reconciliation settles the entry. - The drain commit point reads the running owned shells from the server before the commit and does not admit while one runs or the list cannot be read. - A fatal move of an owned session is never confirmed. - The shell kill waits six rounds of 500 ms. --- .../src/execute/drain-completion-v2.test.ts | 112 +++++++++- .../src/execute/drain-completion-v2.ts | 25 +++ .../src/execute/run-core-v2.shell.test.ts | 196 ++++++++++++++++++ .../gateway/src/execute/run-core-v2.test.ts | 6 +- packages/gateway/src/execute/run-core-v2.ts | 43 +++- .../execute/settle-owned-sessions-v2.test.ts | 168 ++++++++++++++- .../src/execute/settle-owned-sessions-v2.ts | 81 ++++++-- packages/runtime/src/agent/index.ts | 2 + .../runtime/src/agent/shell-jobs-v2.test.ts | 58 +++++- packages/runtime/src/agent/shell-jobs-v2.ts | 45 +++- 10 files changed, 698 insertions(+), 38 deletions(-) diff --git a/packages/gateway/src/execute/drain-completion-v2.test.ts b/packages/gateway/src/execute/drain-completion-v2.test.ts index 4b3c85db03..525bb943df 100644 --- a/packages/gateway/src/execute/drain-completion-v2.test.ts +++ b/packages/gateway/src/execute/drain-completion-v2.test.ts @@ -21,7 +21,16 @@ function makeLogger(): GatewayLogger { type Live = readonly string[] | 'fail' | 'hang' -function setup(options: {readonly live?: readonly Live[]; readonly children?: readonly string[]} = {}) { +type Shells = readonly string[] | 'fail' + +function setup( + options: { + readonly live?: readonly Live[] + readonly children?: readonly string[] + /** Running owned shells per read (the last entry repeats). Absent: the gate is not given the read. */ + readonly shells?: readonly Shells[] + } = {}, +) { const ledger = createOwnershipLedger() for (const child of options.children ?? [CHILD]) ledger.adopt(child, child) const readings = options.live ?? [[]] @@ -42,6 +51,13 @@ function setup(options: {readonly live?: readonly Live[]; readonly children?: re const controller = new AbortController() const onAdmitted = vi.fn() const reasons: DrainRejectCode[] = [] + const shellReadings = options.shells + let shellCall = 0 + const ownedRunningShells = vi.fn(async () => { + const reading = shellReadings?.[Math.min(shellCall, shellReadings.length - 1)] ?? [] + shellCall += 1 + return reading === 'fail' ? err(new Error('shell.list failed')) : ok(reading) + }) const drain = createDrainCompletionV2({ rootSessionId: ROOT, ledger, @@ -52,8 +68,9 @@ function setup(options: {readonly live?: readonly Live[]; readonly children?: re onNotAdmitted: code => reasons.push(code), validationIntervalMs: 1_000, requestTimeoutMs: 5_000, + ...(shellReadings === undefined ? {} : {ownedRunningShells}), }) - return {ledger, adapter, controller, onAdmitted, reasons, drain} + return {ledger, adapter, controller, onAdmitted, reasons, drain, ownedRunningShells} } /** The server's own statement that a child ended: the ledger settles and the gate hears the notice. */ @@ -535,3 +552,94 @@ describe('createDrainCompletionV2: background shells', () => { expect(s.reasons.at(-1)).toBe('notice-not-observed') }) }) + +/** A child that ended and a root turn that took its notice in: everything else says the run may finish. */ +function readyToAdmit(s: ReturnType) { + s.drain.noteRootIdle() + s.drain.beginDrain() + childEnds(s) + noticeTurn(s) +} + +describe('createDrainCompletionV2: running shells at the commit point', () => { + it('does not admit while a running shell tagged with an owned session is listed, whatever the ledger says', async () => { + // #given — the ledger is drained and every notice is in, but the server lists a child's shell nobody adopted + const s = setup({shells: [['sh_dropped']]}) + readyToAdmit(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then — the run keeps draining, and the wait reason is the outstanding background work + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('ledger-not-drained') + }) + + it('admits on a later pass once the listed shell has stopped', async () => { + // #given + const s = setup({shells: [['sh_dropped'], []]}) + readyToAdmit(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + expect(s.onAdmitted).not.toHaveBeenCalled() + + // #when — the retry timer asks again + await vi.advanceTimersByTimeAsync(1_500) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + }) + + it('does not admit when the shell list cannot be read', async () => { + // #given + const s = setup({shells: ['fail']}) + readyToAdmit(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('root-liveness-unavailable') + }) + + it('admits when no owned shell is running', async () => { + // #given + const s = setup({shells: [[]]}) + readyToAdmit(s) + + // #when + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).toHaveBeenCalledTimes(1) + expect(s.ownedRunningShells).toHaveBeenCalled() + }) + + it('reads the shells before the commit point: root activity while the read is in flight blocks admission', async () => { + // #given — the read answers only after the root has started working again + const s = setup({shells: [[]]}) + let release: (() => void) | undefined + s.ownedRunningShells.mockImplementationOnce( + async () => + new Promise(resolve => { + release = () => resolve(ok([])) + }), + ) + readyToAdmit(s) + s.drain.requestValidation() + await vi.advanceTimersByTimeAsync(10) + + // #when + s.drain.noteRootActivity() + release?.() + await vi.advanceTimersByTimeAsync(10) + + // #then + expect(s.onAdmitted).not.toHaveBeenCalled() + expect(s.reasons.at(-1)).toBe('revision-drift') + }) +}) diff --git a/packages/gateway/src/execute/drain-completion-v2.ts b/packages/gateway/src/execute/drain-completion-v2.ts index 35d8d1fa43..adc4d38909 100644 --- a/packages/gateway/src/execute/drain-completion-v2.ts +++ b/packages/gateway/src/execute/drain-completion-v2.ts @@ -20,6 +20,9 @@ * notice since the root's last `execution.succeeded`, which is how "idle after the last turn a notice triggered" reads * on this stream; * - the active list shows the root is not live; + * - no running shell of the location is tagged with the root or an owned session. The ledger only knows the shells whose + * creation frame arrived after their owner was adopted; the server's own list is read for the rest, so a shell the + * stream dropped still holds the drain open. A list that cannot be read admits nothing; * - the revision captured before that request still equals the current one. * * No notice never admits: the run's hard deadline reports it incomplete. The stream is trusted as the run's own record: @@ -29,6 +32,7 @@ * Not a state machine framework: a revision counter, an idle stamp, the notices seen, and one validation in flight. */ +import type {Result} from '@bfra.me/es/result' import type {LedgerReconcileAdapter, OwnershipLedger, ShellNoticeState, SubagentNotice} from '@fro-bot/runtime' import type {GatewayLogger} from '../discord/client.js' import type {DrainRejectCode} from './drain-completion.js' @@ -43,6 +47,12 @@ export interface DrainCompletionV2Options { readonly ledger: OwnershipLedger /** Global liveness: the V2 reconcile adapter's `liveSessionIds`. */ readonly adapter: LedgerReconcileAdapter + /** + * The running shells of the location tagged with the root or an owned session (`listOwnedRunningShells`, with the + * owner set read at call time). Read BEFORE the commit point like the liveness read, so the commit stays one + * synchronous block. Absent: no shell read, for a run that does not track shells. + */ + readonly ownedRunningShells?: (signal: AbortSignal) => Promise> /** The run's combined signal: deadline, inactivity, cancel. Aborting it ends validation. */ readonly signal: AbortSignal readonly logger: GatewayLogger @@ -101,6 +111,7 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai logger, onAdmitted, onNotAdmitted, + ownedRunningShells, validationIntervalMs = DRAIN_VALIDATION_INTERVAL_MS, requestTimeoutMs = DRAIN_REQUEST_TIMEOUT_MS, } = options @@ -232,6 +243,14 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai return result.value.data.has(rootSessionId) } + /** The owned running shells, or `null` when they cannot be told. No `ownedRunningShells`: none. */ + async function runningShells(): Promise { + if (ownedRunningShells === undefined) return [] + const result = await bounded(async requestSignal => ownedRunningShells(requestSignal)) + if (!result.ok || !result.value.success) return null + return result.value.data + } + function reject(reason: DrainRejectCode, context: Record = {}): void { logger.debug({sessionId: rootSessionId, reason, ...context}, 'run-core: drain completion not admitted') onNotAdmitted?.(reason) @@ -247,6 +266,12 @@ export function createDrainCompletionV2(options: DrainCompletionV2Options): Drai if (live === null) return reject('root-liveness-unavailable') if (live) return reject('root-live') + // Read here, before the commit point: nothing may be awaited after it. + const shells = await runningShells() + if (closed || signal.aborted) return + if (shells === null) return reject('root-liveness-unavailable', {read: 'shells'}) + if (shells.length > 0) return reject('ledger-not-drained', {runningShells: shells}) + const unfenced = ledger .snapshot() .map(entry => entry.sessionId) diff --git a/packages/gateway/src/execute/run-core-v2.shell.test.ts b/packages/gateway/src/execute/run-core-v2.shell.test.ts index f654c4597c..d4dfc4c580 100644 --- a/packages/gateway/src/execute/run-core-v2.shell.test.ts +++ b/packages/gateway/src/execute/run-core-v2.shell.test.ts @@ -40,8 +40,24 @@ async function backgroundAndIdle(run: ReturnType, shellId = SHE await vi.advanceTimersByTimeAsync(10) } +/** The root backgrounds a shell and keeps working: no idle yet, so the run is not draining. */ +async function backgroundMidTurn(run: ReturnType, shellId = SHELL, callId = 'call_shell') { + run.emit( + frames.started(), + frames.toolStarted('shell', callId), + frames.toolCalled(callId, {command: 'sleep 8', background: true}), + frames.shellCreated(shellId), + frames.shellProgress(callId, shellId), + frames.shellBackgrounded(callId, shellId), + frames.delta('Started it.'), + ) + await vi.advanceTimersByTimeAsync(10) +} + /** The server enqueues the shell's notice, wakes the root to take it in, and the root answers (p20 order). */ function noticeTurn(run: ReturnType, shellId = SHELL, state = 'completed', inbox = 'msg_shell') { + // The process has ended by the time its notice is sent, so the server no longer lists it as running. + run.shellServer.shells[shellId] = {status: 'exited', owner: ROOT} run.emit( frames.shellExited(shellId), frames.shellNotice(shellId, state, inbox), @@ -276,6 +292,7 @@ describe('runOpenCodeCoreV2: draining a background shell', () => { if (exitFirst) { noticeTurn(run) } else { + run.shellServer.shells[SHELL] = {status: 'exited', owner: ROOT} run.emit( frames.shellNotice(SHELL, 'completed', 'msg_shell'), frames.shellExited(SHELL), @@ -630,6 +647,185 @@ describe('runOpenCodeCoreV2: stopping with a background shell owned', () => { expect(run.shellServer.shells[SHELL]).toBeDefined() }) + it('quarantines when the barrier deleted a shell the ledger never heard of: its error notice wakes the root', async () => { + // #given — probe A: an owned running shell whose creation frame was lost, and a wall-clock failure + const controller = new AbortController() + const {run, log} = await runningShellRun({controller, active: []}) + run.emit(frames.started()) + await vi.advanceTimersByTimeAsync(10) + + // #when + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then — killed, the root interrupted anyway, and the run quarantined rather than released + expect(firstIndex(log, `delete:${SHELL}`)).toBeGreaterThanOrEqual(0) + expect(firstIndex(log, `interrupt:${ROOT}`)).toBeGreaterThan(firstIndex(log, `delete:${SHELL}`)) + const error = failure(run) + expect(error.kind).toBe('timeout') + expect(error.quarantined).toBe(true) + }) + + it('keeps the quarantine watch open after the barrier deleted a shell: the woken root can start another', async () => { + // #given — probe A, then a wall-clock failure; the root is confirmed stopped at once, but a DELETE woke it + const controller = new AbortController() + const {run} = await runningShellRun({controller, active: []}) + run.emit(frames.started()) + await vi.advanceTimersByTimeAsync(10) + controller.abort() + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + expect(failure(run).quarantined).toBe(true) + const deletesBefore = run.shellServer.deleteShell.mock.calls.length + + // #when — the woken root starts a new shell well into the hold + run.shellServer.shells[OTHER_SHELL] = {status: 'running', owner: ROOT} + await vi.advanceTimersByTimeAsync(5_000) + + // #then — the watch is still sweeping and kills it + expect(run.shellServer.deleteShell.mock.calls.length).toBeGreaterThan(deletesBefore) + expect(run.shellServer.shells[OTHER_SHELL]).toBeUndefined() + }) + + it('quarantines a provider failure after reconcile settled a shell whose notice is still in flight', async () => { + // #given — the shell is gone from the server, so reconcile settles it at the root idle; no notice has arrived + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [], + shellServer: {shells: {[SHELL]: {status: 'exited', owner: ROOT}}}, + }) + await vi.advanceTimersByTimeAsync(10) + await backgroundMidTurn(run) + await vi.advanceTimersByTimeAsync(31_000) + expect(states(ledger)).toEqual({[SHELL_KEY]: 'settled'}) + + // #when — the root's turn fails before the notice shows + run.emit(frames.failed(ROOT, {type: 'provider.auth', message: 'bad key', status: 401})) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then — the notice can still wake the root, so the stop is not confirmed + const error = failure(run) + expect(error.kind).toBe('session-error') + expect(error.quarantined).toBe(true) + }) + + it('quarantines a provider failure after reconcile settled a child whose notice is still in flight', async () => { + // #given — the same for a background child (the round-1 residual) + const ledger = createOwnershipLedger() + const run = startRun({ownershipLedger: ledger, active: [], children: [CHILD]}) + await vi.advanceTimersByTimeAsync(10) + run.emit(frames.started(), frames.toolStarted('subagent', 'call_dispatch'), frames.dispatch(CHILD)) + await vi.advanceTimersByTimeAsync(31_000) + expect(states(ledger)).toEqual({[CHILD]: 'settled'}) + + // #when + run.emit(frames.failed(ROOT, {type: 'provider.auth', message: 'bad key', status: 401})) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(failure(run).quarantined).toBe(true) + }) + + it('does not quarantine a provider failure once the shell notice has been observed', async () => { + // #given — the notice arrived and settled the shell, the woken root turn then fails; nothing is left running + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [], + shellServer: {shells: {[SHELL]: {status: 'exited', owner: ROOT}}}, + }) + await vi.advanceTimersByTimeAsync(10) + await backgroundMidTurn(run) + + // #when — the shell ends while the root works, and the root's turn then fails + run.emit( + frames.shellExited(SHELL), + frames.shellNotice(SHELL), + frames.delivered('msg_shell'), + frames.failed(ROOT, {type: 'provider.auth', message: 'bad key', status: 401}), + ) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then — the stop confirms: no notice is owed, and no shell was deleted + const error = failure(run) + expect(error.kind).toBe('session-error') + expect(error.quarantined).toBe(false) + expect(run.shellServer.deleteShell).not.toHaveBeenCalled() + }) + + it('treats an unreadable notice as accounted for, so the fence closes the follow-up window', async () => { + // #given — the shell stopped, and its job notice cannot be read + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [], + shellServer: {shells: {[SHELL]: {status: 'exited', owner: ROOT}}}, + }) + await vi.advanceTimersByTimeAsync(10) + await backgroundMidTurn(run) + run.emit({ + type: 'session.inbox.enqueued', + data: { + inboxID: 'msg_bad', + sessionID: ROOT, + item: { + type: 'synthetic', + payload: {text: 'x', metadata: {source: 'shell', shellID: SHELL, jobID: SHELL, state: 'paused'}}, + delivery: 'steer', + }, + }, + }) + await vi.advanceTimersByTimeAsync(31_000) + + // #when + run.emit(frames.failed(ROOT, {type: 'provider.auth', message: 'bad key', status: 401})) + await vi.advanceTimersByTimeAsync(PAST_SETTLE_BOUND_MS) + + // #then + expect(failure(run).quarantined).toBe(false) + }) + + it('does not admit the drain while a child’s shell runs whose creation frame was dropped (child not adopted yet)', async () => { + // #given — the child's shell is created before the dispatch result adopts the child, so the loop ignores it + const ledger = createOwnershipLedger() + const run = startRun({ + ownershipLedger: ledger, + active: [], + children: [CHILD], + shellServer: {shells: {[SHELL]: {status: 'running', owner: CHILD}}}, + }) + await vi.advanceTimersByTimeAsync(10) + run.emit( + frames.started(), + frames.shellCreated(SHELL, CHILD), + frames.toolStarted('subagent', 'call_dispatch'), + frames.dispatch(CHILD), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(10) + expect(Object.keys(states(ledger))).toEqual([CHILD]) + + // #when — the child ends and the root takes its notice in; everything the ledger tracks is done + run.emit( + frames.notice(CHILD, 'completed', 'msg_notice'), + frames.started(), + frames.delivered('msg_notice'), + frames.succeeded(), + ) + await vi.advanceTimersByTimeAsync(5_000) + + // #then — the server still lists the shell, so the run keeps draining + expect(states(ledger)).toEqual({[CHILD]: 'settled'}) + expect(run.outcome()).toBeUndefined() + + // #when — the shell stops + run.shellServer.shells[SHELL] = {status: 'exited', owner: CHILD} + await vi.advanceTimersByTimeAsync(3_000) + + // #then + expect(succeeded(run)).toBe(true) + }) + it('keeps deleting through the hold when only a shell the stream never reported is left running', async () => { // #given — nothing adopted, so no follow-up is open and the root confirms at once; a stray shell ignores the DELETE const controller = new AbortController() diff --git a/packages/gateway/src/execute/run-core-v2.test.ts b/packages/gateway/src/execute/run-core-v2.test.ts index f362e52ab7..28a92ef06e 100644 --- a/packages/gateway/src/execute/run-core-v2.test.ts +++ b/packages/gateway/src/execute/run-core-v2.test.ts @@ -563,8 +563,10 @@ describe('runOpenCodeCoreV2: failures the server reports', () => { run.emit(frames.moved(ROOT)) await vi.advanceTimersByTimeAsync(20_000) - // #then - expect(failure(run).kind).toBe('session-error') + // #then — and never confirmed: the destination's shells cannot be seen from the directory the run lists + const error = failure(run) + expect(error.kind).toBe('session-error') + expect(error.quarantined).toBe(true) expect(run.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) }) diff --git a/packages/gateway/src/execute/run-core-v2.ts b/packages/gateway/src/execute/run-core-v2.ts index 153bdc37a0..44b21b67d8 100644 --- a/packages/gateway/src/execute/run-core-v2.ts +++ b/packages/gateway/src/execute/run-core-v2.ts @@ -53,6 +53,7 @@ import { createOwnershipLedger, createV2LedgerReconcileAdapter, isShellLedgerKey, + listOwnedRunningShells, mapV2Event, mapV2EventStream, readBackgroundDispatch, @@ -61,6 +62,7 @@ import { reconcileShellsOnce, settleLedgerFromShellNotice, settleLedgerFromSubagentNotice, + shellIdFromLedgerKey, shellLedgerKey, toErrorMessage, } from '@fro-bot/runtime' @@ -348,6 +350,18 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise const noticedChildIds = new Set() // The same for background shells, by shell id. const noticedShellIds = new Set() + // Ledger keys whose notice could not be read: the server did send one, so it is accounted for (and fenced `unknown`). + const fencedLedgerKeys = new Set() + + /** + * Whether the server's completion notice for a ledger entry has been seen (or fenced as unreadable). Until it has, the + * entry can still wake the root, whatever the ledger says: reconciliation can settle an entry from the server's + * answer while its notice is in flight. + */ + function noticeAccountedFor(key: string): boolean { + if (fencedLedgerKeys.has(key)) return true + return isShellLedgerKey(key) ? noticedShellIds.has(shellIdFromLedgerKey(key)) : noticedChildIds.has(key) + } const ledger: OwnershipLedger | undefined = ownershipLedger === undefined @@ -407,6 +421,15 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise rootSessionId: sessionId, ledger, adapter: reconcileAdapter, + // The shells the server lists for the location tagged with the root or an owned session, read at the commit point: + // the ledger only knows a shell whose creation frame arrived after its owner was adopted. + ownedRunningShells: async signal => + listOwnedRunningShells({ + api: client, + directory, + ownerSessionIds: collectOwnerSessionIds(sessionId, ledger), + signal, + }), signal: combinedSignal, logger, // The only path that completes a drain: an admitted validation unblocks the stream. @@ -445,11 +468,13 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise message: string, options: { readonly rootMayBeRunning?: boolean + /** The root can be woken from somewhere this run cannot see, so it is never confirmed stopped. */ + readonly neverConfirm?: boolean readonly providerFailureReason?: ProviderFailureReason readonly cause?: unknown } = {}, ): Promise { - const {rootMayBeRunning = false, providerFailureReason, cause} = options + const {rootMayBeRunning = false, neverConfirm = false, providerFailureReason, cause} = options // Fail-close the human waits FIRST: the barrier can take up to 15 s, and until the waits are settled an `always` // press could still persist a permission rule. Neither call is awaited; their replies are bounded by their own // timeouts and must not delay the root interrupt. @@ -467,6 +492,7 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise const hasAdoptedWork = ledger !== undefined && ledger.snapshot().length > 0 const rootFollowUpOpen = rootMayBeRunning || + neverConfirm || hasAdoptedWork || (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted) const barrierLedger = ledger ?? (rootMayBeRunning ? createOwnershipLedger() : undefined) @@ -474,10 +500,13 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise throw new RunCoreError(kind, message, false, providerFailureReason, cause) } // Background work can start root turns by itself, so nothing seen so far rules out a turn that is not on the stream - // yet. Read before settlement, which itself cancels children and so can trigger notices. + // yet. An entry is open until its notice (or its fence) has been seen, not until the ledger settles it: + // reconciliation can settle an entry from the server's answer while the notice that wakes the root is in flight. + // Read before settlement, which itself cancels children and so can trigger notices. const followUpPossible = rootFollowUpOpen && - (barrierLedger.snapshot().some(entry => entry.state !== 'settled') || + (neverConfirm || + barrierLedger.snapshot().some(entry => entry.state !== 'settled' || !noticeAccountedFor(entry.sessionId)) || (drainCompletion !== undefined && draining && !drainDoneController.signal.aborted)) const settlement = await settleOwnedSessionsV2({ client, @@ -510,7 +539,8 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise ledger: barrierLedger, }, streamTerminal: () => rootTerminal, - ...(followUpPossible ? {followUpPossible: true} : {}), + // A shell the barrier deleted wakes the root too, which the pre-barrier reading could not know. + ...(followUpPossible || settlement.followUpPossible ? {followUpPossible: true} : {}), logger, ...(runId === undefined ? {} : {runId}), }) @@ -1277,8 +1307,11 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // stay inside its sandbox. The barrier interrupts the root and every owned child, then the run fails. logger.error({sessionId, movedSessionId: event.sessionId}, 'run-core: an owned session moved — failing run') clearInactivity() + // Never confirmed: the destination's shells cannot be seen from the directory this run lists, so nothing says + // the root cannot be woken from there. throw await throwWithBarrier('session-error', 'An owned session changed location during the run', { rootMayBeRunning: true, + neverConfirm: true, }) } @@ -1297,6 +1330,7 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // child is fenced rather than waited on: the gate stops expecting a readable notice, and the entry is // `unknown` (never `settled`) until reconciliation sees it stop. drainCompletion?.noteUnreadableNotice(event.childSessionId) + fencedLedgerKeys.add(event.childSessionId) ledger?.markUnknown(event.childSessionId) markActivity() logger.warn( @@ -1310,6 +1344,7 @@ export async function runOpenCodeCoreV2(params: RunCoreV2Params): Promise // expecting a readable notice, and the entry is `unknown` (never `settled`) until reconciliation sees the // shell stop. drainCompletion?.noteUnreadableShellNotice(event.shellId) + fencedLedgerKeys.add(shellLedgerKey(event.shellId)) ledger?.markUnknown(shellLedgerKey(event.shellId)) markActivity() logger.warn( diff --git a/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts b/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts index 8699a9bcbd..b84543df3c 100644 --- a/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts +++ b/packages/gateway/src/execute/settle-owned-sessions-v2.test.ts @@ -419,7 +419,7 @@ describe('settleOwnedSessionsV2: background shells', () => { return ledger.snapshot().find(entry => entry.sessionId === SHELL_KEY)?.state } - it('dELETEs an owned shell before it interrupts the root, then confirms and settles it', async () => { + it('kills an owned shell, confirms and settles it, and interrupts the root anyway', async () => { // #given — a stop where the root is not confirmable by the stream const ledger = shellLedger() const server = makeServer({shellServer: RUNNING}) @@ -436,13 +436,159 @@ describe('settleOwnedSessionsV2: background shells', () => { rootPollIntervalMs: 1, }) - // #then — kill, confirm by re-list, and only then the root interrupt + // #then — the kill and its confirming re-list come first, the root is interrupted either way, and the DELETE's error + // notice can wake the root, so the root is not confirmed and the stop quarantines const log = server.shellServer.log expect(log.indexOf(`delete:${SHELL}`)).toBeGreaterThanOrEqual(0) expect(log.indexOf(`delete:${SHELL}`)).toBeLessThan(log.indexOf(`interrupt:${ROOT}`)) expect(log.slice(log.indexOf(`delete:${SHELL}`) + 1, log.indexOf(`interrupt:${ROOT}`))).toContain('list') expect(stateOf(ledger)).toBe('settled') + expect(result).toMatchObject({ + settled: false, + rootUnconfirmed: true, + followUpPossible: true, + shellsUnconfirmed: false, + }) + }) + + it('interrupts the root whether or not the kill is confirmed', async () => { + // #given — every DELETE fails, so no kill can be confirmed + const server = makeServer({shellServer: {...RUNNING, deleteFails: true}}) + + // #when + await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: shellLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + rootPollIntervalMs: 1, + shellKillRounds: 2, + shellKillPollIntervalMs: 0, + }) + + // #then + expect(server.interrupt).toHaveBeenCalledWith(expect.objectContaining({sessionId: ROOT})) + }) + + it('does not confirm the root after it deleted a shell the ledger never heard of (probe A)', async () => { + // #given — an owned running shell whose creation frame was lost, and a root that stops at once + const server = makeServer({shellServer: RUNNING}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: false, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then — the DELETE queued an error notice that wakes the root, which nothing on the stream will show + expect(server.shellServer.deleteShell).toHaveBeenCalledTimes(1) + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, followUpPossible: true}) + }) + + it('settles clean, with a sweep before and after, when no shell is owned', async () => { + // #given + const server = makeServer({shellServer: {shells: {sh_stranger: {status: 'running', owner: 'ses_stranger'}}}}) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then expect(result).toEqual({settled: true}) + expect(server.shellServer.listShells).toHaveBeenCalledTimes(2) + expect(server.shellServer.deleteShell).not.toHaveBeenCalled() + }) + + it('sweeps again after the root is confirmed: a shell started during the barrier does not survive the release', async () => { + // #given — nothing runs at the first sweep; the shell appears while the root is being interrupted + const server = makeServer({ + interrupt: async () => { + server.shellServer.shells[SHELL] = {status: 'running', owner: ROOT} + return ok({interrupted: true}) + }, + }) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + }) + + // #then — the final sweep killed it, and its error notice means the root is no longer confirmed + expect(server.shellServer.deleteShell).toHaveBeenCalledWith(expect.objectContaining({shellId: SHELL})) + expect(server.shellServer.shells[SHELL]).toBeUndefined() + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, followUpPossible: true}) + }) + + it('reports a shell the final sweep still lists as unconfirmed', async () => { + // #given — the late shell shrugs off the DELETE + const server = makeServer({ + shellServer: {deleteDoesNotKill: [SHELL]}, + interrupt: async () => { + server.shellServer.shells[SHELL] = {status: 'running', owner: ROOT} + return ok({interrupted: true}) + }, + }) + + // #when + const result = await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + shellKillRounds: 1, + shellKillPollIntervalMs: 0, + rootSessionId: ROOT, + ledger: createOwnershipLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + streamTerminal: () => 'user', + rootPollIntervalMs: 1, + timeoutMs: 3_000, + }) + + // #then + expect(result).toMatchObject({settled: false, shellsUnconfirmed: true}) + }) + + it('does not sweep for a late shell when the stop was already unconfirmed', async () => { + // #given — follow-up work is open, so the root is not confirmed and the watch owns the polling + const server = makeServer({shellServer: RUNNING}) + + // #when + await settleOwnedSessionsV2({ + client: server.client, + directory: DIR, + rootSessionId: ROOT, + ledger: shellLedger(), + logger: makeLogger(), + confirmRootQuiescent: true, + followUpPossible: true, + }) + + // #then — one sweep: the kill and its confirming list, no second + expect(server.shellServer.listShells).toHaveBeenCalledTimes(2) }) it('keeps the stop unconfirmed when the shell is still running after the kill', async () => { @@ -454,6 +600,8 @@ describe('settleOwnedSessionsV2: background shells', () => { const result = await settleOwnedSessionsV2({ client: server.client, directory: DIR, + shellKillRounds: 1, + shellKillPollIntervalMs: 0, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -475,6 +623,8 @@ describe('settleOwnedSessionsV2: background shells', () => { await settleOwnedSessionsV2({ client: server.client, directory: DIR, + shellKillRounds: 1, + shellKillPollIntervalMs: 0, rootSessionId: ROOT, ledger: shellLedger(), logger: makeLogger(), @@ -517,6 +667,8 @@ describe('settleOwnedSessionsV2: background shells', () => { const result = await settleOwnedSessionsV2({ client: server.client, directory: DIR, + shellKillRounds: 1, + shellKillPollIntervalMs: 0, rootSessionId: ROOT, ledger, logger: makeLogger(), @@ -536,6 +688,8 @@ describe('settleOwnedSessionsV2: background shells', () => { const result = await settleOwnedSessionsV2({ client: server.client, directory: DIR, + shellKillRounds: 1, + shellKillPollIntervalMs: 0, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -544,8 +698,8 @@ describe('settleOwnedSessionsV2: background shells', () => { rootPollIntervalMs: 1, }) - // #then — the root is fine, the shell is the reason - expect(result).toMatchObject({settled: false, rootUnconfirmed: false, shellsUnconfirmed: true}) + // #then — the shell is the reason; the DELETE was accepted, so its notice can wake the root as well + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, shellsUnconfirmed: true}) expect(result.settled === false && result.reason.includes(SHELL)).toBe(true) }) @@ -557,6 +711,8 @@ describe('settleOwnedSessionsV2: background shells', () => { const result = await settleOwnedSessionsV2({ client: server.client, directory: DIR, + shellKillRounds: 1, + shellKillPollIntervalMs: 0, rootSessionId: ROOT, ledger: createOwnershipLedger(), logger: makeLogger(), @@ -591,8 +747,8 @@ describe('settleOwnedSessionsV2: background shells', () => { rootPollIntervalMs: 1, }) - // #then - expect(result).toEqual({settled: true}) + // #then — the root's stray shell is handled and the stranger's left alone; the root is not confirmed + expect(result).toMatchObject({settled: false, rootUnconfirmed: true, followUpPossible: true}) expect(server.shellServer.deleteShell).toHaveBeenCalledTimes(1) expect(server.shellServer.shells[SHELL]).toBeUndefined() expect(server.shellServer.shells.sh_stranger).toBeDefined() diff --git a/packages/gateway/src/execute/settle-owned-sessions-v2.ts b/packages/gateway/src/execute/settle-owned-sessions-v2.ts index d5436daaa4..fecbd6dbf9 100644 --- a/packages/gateway/src/execute/settle-owned-sessions-v2.ts +++ b/packages/gateway/src/execute/settle-owned-sessions-v2.ts @@ -16,10 +16,15 @@ * still unresolved when the attempt ends is downgraded to `unknown`, and the caller quarantines. * * Background shells: a session interrupt does not stop them (`Job.cancel(sessionID)` finds no job under a session id), and - * they outlive the run's lock. So BEFORE the root is interrupted, every owned shell is killed with - * `DELETE /api/shell/:id` and the stop is confirmed by `GET /api/shell` no longer listing it. A shell that cannot be - * confirmed gone keeps the stop unconfirmed. The kill queues an `error` notice that wakes the root, which is why the - * root interrupt comes after it, and why an owned shell counts as background work open (`followUpPossible`). + * they outlive the run's lock. So the barrier first kills every owned shell with `DELETE /api/shell/:id` and confirms it + * by `GET /api/shell` no longer listing it. The root is interrupted next WHETHER OR NOT that kill was confirmed: the + * interrupt stops the root producing more work, and nothing about a shell that survives makes that wait. + * + * A DELETE queues an `error` notice that wakes the owning session, so a stop that deleted any shell, tracked or not, + * never confirms the root: it reports `followUpPossible` and the caller quarantines. That is the accepted cost: any stop + * with a live owned shell quarantines, even after a clean kill. After the root is confirmed the barrier sweeps once + * more, because the root may have started a shell while it was being stopped; a sweep that deletes or sees anything is an + * unconfirmed stop. A shell that cannot be confirmed gone keeps the stop unconfirmed. * * Background work open (`followUpPossible`): the server then starts root turns by itself, so the root is never * confirmed. The barrier interrupts the root and the owned children once, settles the children, and reports @@ -72,6 +77,9 @@ export interface SettleOwnedSessionsV2Params { readonly followUpPossible?: boolean /** Overrides `ROOT_QUIESCENCE_POLL_INTERVAL_MS` — for tests only. */ readonly rootPollIntervalMs?: number + /** Overrides the shell kill's rounds and pause (`DEFAULT_SHELL_KILL_*`) — for tests only. */ + readonly shellKillRounds?: number + readonly shellKillPollIntervalMs?: number /** How the root's latest execution ended on the stream, or `null`. Absent: the server's persisted outcome decides. */ readonly streamTerminal?: () => StreamTerminal | null } @@ -85,6 +93,11 @@ export type SettleOwnedSessionsV2Result = readonly rootUnconfirmed: boolean /** An owned background shell is not confirmed stopped. The caller keeps killing it through the hold. */ readonly shellsUnconfirmed: boolean + /** + * A root turn the stream has not shown can still start: background work was open, or the barrier deleted a shell + * whose error notice wakes the root. The caller's quarantine watch must not treat the root as confirmable. + */ + readonly followUpPossible: boolean } function withRunId(logger: GatewayLogger, runId: string | undefined): GatewayLogger { @@ -124,6 +137,8 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) confirmRootQuiescent = false, followUpPossible = false, rootPollIntervalMs = ROOT_QUIESCENCE_POLL_INTERVAL_MS, + shellKillRounds, + shellKillPollIntervalMs, streamTerminal = (): StreamTerminal | null => null, } = params const logger = withRunId(params.logger, params.runId) @@ -148,6 +163,12 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) // not ruled out a shell the ledger never heard of. let shellsConfirmed = false let unconfirmedShellIds: readonly string[] = [] + // Whether the barrier deleted a shell (or could not tell): its error notice wakes the root, off the stream we read. + let shellWake = false + const killTuning = { + ...(shellKillRounds === undefined ? {} : {rounds: shellKillRounds}), + ...(shellKillPollIntervalMs === undefined ? {} : {pollIntervalMs: shellKillPollIntervalMs}), + } return withBound( timeoutMs, @@ -169,20 +190,26 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) }, } - // Owned background shells first. A session interrupt does not stop them, and the kill wakes the root with an - // error notice, so the root is interrupted AFTER it, never before. Confirmed ones are settled in the ledger. - const shellKill = await killOwnedShells({ - api: client, - directory, - ownerSessionIds: collectOwnerSessionIds(rootSessionId, attemptLedger), - ledger: attemptLedger, - logger: runtimeLogger, - signal: teardownSignal, - }) + // Owned background shells first. A session interrupt does not stop them. Confirmed ones are settled in the ledger. + const sweepShells = async () => + killOwnedShells({ + api: client, + directory, + ownerSessionIds: collectOwnerSessionIds(rootSessionId, attemptLedger), + ledger: attemptLedger, + logger: runtimeLogger, + signal: teardownSignal, + ...killTuning, + }) + const shellKill = await sweepShells() shellsConfirmed = shellKill.confirmed unconfirmedShellIds = shellKill.confirmed ? [] : shellKill.stillRunning + // A DELETE's error notice wakes the owner, tracked or not, so the root cannot be confirmed from here on. + shellWake = !shellKill.confirmed || shellKill.deleted.length > 0 + const followUp = followUpPossible || shellWake - // Stop the root from producing more work. Confirmed below only when `confirmRootQuiescent`. + // Stop the root from producing more work, whether or not the kill was confirmed. Confirmed below only when + // `confirmRootQuiescent`. await interruptSession(client, rootSessionId, teardownSignal, logger, 'root') const unsettledSessions = unsettled.filter(entry => !isShellLedgerKey(entry.sessionId)) @@ -214,7 +241,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) let reinterrupts = 0 while (!rootQuiescent && !isFinished() && !teardownSignal.aborted) { // Nothing can confirm the root with background work open; the quarantine watch does the polling. - if (followUpPossible) break + if (followUp) break const probe = await probeRootStopV2({ client, adapter, @@ -244,7 +271,20 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) } } - if (ledger.isDrainComplete() && rootQuiescent && shellsConfirmed) { + if (ledger.isDrainComplete() && rootQuiescent && shellsConfirmed && !shellWake) { + // The root may have started a shell while it was being stopped. One more sweep before anything is released; + // anything it deletes or still lists leaves the stop unconfirmed. + const finalSweep = await sweepShells() + if (!finalSweep.confirmed) { + shellsConfirmed = false + unconfirmedShellIds = finalSweep.stillRunning + shellWake = true + } else if (finalSweep.deleted.length > 0) { + shellWake = true + } + } + + if (ledger.isDrainComplete() && rootQuiescent && shellsConfirmed && !shellWake) { logger.info( {rootSessionId, confirmRootQuiescent}, confirmRootQuiescent @@ -268,6 +308,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) ...(shellsConfirmed ? [] : [`owned shells not confirmed stopped: ${unconfirmedShellIds.join(', ') || 'unknown'}`]), + ...(shellWake ? ['a deleted shell’s error notice can wake the root'] : []), ].join('; ') logger.error( {rootSessionId, stillUnresolvedIds, unconfirmedShellIds, rootQuiescent}, @@ -279,13 +320,15 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) reason: `root session not confirmed stopped after interrupt${unresolvedNotes === '' ? '' : `; ${unresolvedNotes}`}`, rootUnconfirmed: true, shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(attemptLedger), + followUpPossible: followUpPossible || shellWake, } } return { settled: false as const, reason: unresolvedNotes, - rootUnconfirmed: false, + rootUnconfirmed: shellWake, shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(attemptLedger), + followUpPossible: followUpPossible || shellWake, } } catch (error) { const message = toErrorMessage(error) @@ -298,6 +341,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) reason: `settle attempt threw unexpectedly: ${message}`, rootUnconfirmed: !rootConfirmed, shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(ledger), + followUpPossible: true, } } finally { finished = true @@ -319,6 +363,7 @@ export async function settleOwnedSessionsV2(params: SettleOwnedSessionsV2Params) reason: `settle attempt exceeded its ${timeoutMs}ms bound`, rootUnconfirmed: !rootConfirmed, shellsUnconfirmed: !shellsConfirmed || hasUnsettledShells(ledger), + followUpPossible: true, } }, ) diff --git a/packages/runtime/src/agent/index.ts b/packages/runtime/src/agent/index.ts index 36d6ab8ae2..21566adfbf 100644 --- a/packages/runtime/src/agent/index.ts +++ b/packages/runtime/src/agent/index.ts @@ -176,11 +176,13 @@ export { DEFAULT_SHELL_KILL_POLL_INTERVAL_MS, DEFAULT_SHELL_KILL_ROUNDS, killOwnedShells, + listOwnedRunningShells, reconcileShellsOnce, } from './shell-jobs-v2.js' export type { KillOwnedShellsOptions, KillOwnedShellsResult, + ListOwnedRunningShellsOptions, ReconcileShellsOptions, ShellApi, ShellReconcileObservation, diff --git a/packages/runtime/src/agent/shell-jobs-v2.test.ts b/packages/runtime/src/agent/shell-jobs-v2.test.ts index 3cd3da15f2..403aa5bed4 100644 --- a/packages/runtime/src/agent/shell-jobs-v2.test.ts +++ b/packages/runtime/src/agent/shell-jobs-v2.test.ts @@ -7,7 +7,14 @@ import {err, ok} from '@bfra.me/es/result' import {describe, expect, it, vi} from 'vitest' import {createOwnershipLedger, shellLedgerKey} from './ownership-ledger.js' -import {collectOwnerSessionIds, killOwnedShells, reconcileShellsOnce} from './shell-jobs-v2.js' +import { + collectOwnerSessionIds, + DEFAULT_SHELL_KILL_POLL_INTERVAL_MS, + DEFAULT_SHELL_KILL_ROUNDS, + killOwnedShells, + listOwnedRunningShells, + reconcileShellsOnce, +} from './shell-jobs-v2.js' const DIR = '/workspace/repo' const ROOT = 'ses_root' @@ -371,3 +378,52 @@ describe('killOwnedShells', () => { expect(result.confirmed).toBe(false) }) }) + +describe('kill budget', () => { + it('allows six rounds half a second apart: a kill takes about a second to leave the running list (p22)', () => { + // #given / #when / #then + expect(DEFAULT_SHELL_KILL_ROUNDS).toBe(6) + expect(DEFAULT_SHELL_KILL_POLL_INTERVAL_MS).toBe(500) + }) +}) + +describe('listOwnedRunningShells', () => { + const owners = new Set([ROOT, CHILD]) + + it('lists the running shells tagged with the root or an owned session, and no others', async () => { + // #given + const {api, calls} = makeApi({ + sh_root: {status: 'running', owner: ROOT}, + sh_child: {status: 'running', owner: CHILD}, + sh_stranger: {status: 'running', owner: OTHER}, + sh_untagged: {status: 'running', owner: null}, + sh_done: {status: 'exited', owner: ROOT}, + sh_unknown: {status: 'unknown', owner: ROOT}, + }) + + // #when + const result = await listOwnedRunningShells({api, directory: DIR, ownerSessionIds: owners}) + + // #then — a status the client does not know is read as running; the list is one request + expect(result).toEqual({success: true, data: ['sh_root', 'sh_child', 'sh_unknown']}) + expect(calls).toEqual(['list']) + }) + + it('fails when the list cannot be read or throws, never reading it as empty', async () => { + // #given + const failing = makeApi({}, {listFails: [1]}) + const throwing: ShellApi = { + listShells: async () => { + throw new Error('boom') + }, + getShell: async () => err({kind: 'parse'}), + deleteShell: async () => err({kind: 'parse'}), + } + + // #when / #then + expect((await listOwnedRunningShells({api: failing.api, directory: DIR, ownerSessionIds: owners})).success).toBe( + false, + ) + expect((await listOwnedRunningShells({api: throwing, directory: DIR, ownerSessionIds: owners})).success).toBe(false) + }) +}) diff --git a/packages/runtime/src/agent/shell-jobs-v2.ts b/packages/runtime/src/agent/shell-jobs-v2.ts index f3ea0056e3..7f4fe5b433 100644 --- a/packages/runtime/src/agent/shell-jobs-v2.ts +++ b/packages/runtime/src/agent/shell-jobs-v2.ts @@ -45,6 +45,39 @@ export function collectOwnerSessionIds(rootSessionId: string, ledger: OwnershipL return owners } +export interface ListOwnedRunningShellsOptions { + readonly api: ShellApi + readonly directory: string + /** The root and the sessions this run owns (`collectOwnerSessionIds`). */ + readonly ownerSessionIds: ReadonlySet + readonly signal?: AbortSignal +} + +/** + * Ids of the running shells in `directory` tagged with an owned session, straight from the server and not from the + * ledger. A shell whose creation frame arrived before its owner was adopted, or never arrived, is invisible to the + * ledger and visible here. A status the client does not know counts as running. A list that cannot be read is an error, + * never an empty answer. Never throws. + */ +export async function listOwnedRunningShells( + options: ListOwnedRunningShellsOptions, +): Promise> { + const {api, directory, ownerSessionIds, signal} = options + try { + const listed = await api.listShells({directory, ...(signal === undefined ? {} : {signal})}) + if (!listed.success) return err(new Error(`shell.list failed: ${describe(listed.error)}`)) + return ok( + listed.data + .filter( + shell => !isStopped(shell) && shell.ownerSessionId !== null && ownerSessionIds.has(shell.ownerSessionId), + ) + .map(shell => shell.id), + ) + } catch (error) { + return err(toError(error)) + } +} + export interface ReconcileShellsOptions { readonly ledger: OwnershipLedger readonly api: ShellApi @@ -126,10 +159,10 @@ export async function reconcileShellsOnce( } } -/** Pause between kill rounds. A killed process leaves the running list within a second (probe p22). */ -export const DEFAULT_SHELL_KILL_POLL_INTERVAL_MS = 250 -/** Kill rounds before a shell is reported as still running. */ -export const DEFAULT_SHELL_KILL_ROUNDS = 3 +/** Pause between kill rounds. A killed process leaves the running list in about a second (probe p22). */ +export const DEFAULT_SHELL_KILL_POLL_INTERVAL_MS = 500 +/** Kill rounds before a shell is reported as still running: about three seconds, three times the observed kill. */ +export const DEFAULT_SHELL_KILL_ROUNDS = 6 export interface KillOwnedShellsOptions { readonly api: ShellApi @@ -156,7 +189,9 @@ export type KillOwnedShellsResult = * stranger, or one nobody tagged, is left alone. * * Confirmed ledger entries are settled. A DELETE queues an `error` notice that wakes the owning session, so settling - * here does not mean the owner is quiet. Never throws; every failure is an unconfirmed result. + * here does not mean the owner is quiet: a caller that deleted anything (`deleted` is non-empty) must not confirm the + * root. The accepted cost is that every stop with a live owned shell quarantines, even after a clean kill. Never + * throws; every failure is an unconfirmed result. */ export async function killOwnedShells(options: KillOwnedShellsOptions): Promise { const { From 2a52aa03c285f0577d1d1a3cbacd5be4abbff5d2 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Thu, 29 Oct 2026 08:47:53 -0700 Subject: [PATCH 6/9] build: rebuild dist --- dist/main.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/dist/main.js b/dist/main.js index 24800d08dc..a485ffe543 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,6 +1,6 @@ import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r,B as i,Bt as a,C as o,Ct as s,D as c,E as l,Et as u,F as d,Ft as f,G as p,Gt as m,Ht as h,I as g,It as _,J as v,Jt as y,K as b,Kt as x,L as S,Lt as C,M as w,Mt as T,N as E,Nt as D,O,Ot as k,P as A,Pt as ee,Q as te,Qt as j,R as M,Rt as ne,S as re,St as ie,T as ae,Tt as N,U as oe,Ut as P,V as se,Vt as ce,W as F,Wt as I,X as le,Xt as L,Y as ue,Yt as de,Z as fe,Zt as pe,_ as me,_t as he,a as ge,an as R,at as _e,b as ve,bt as ye,c as be,cn as xe,ct as Se,d as Ce,dn as we,dt as Te,en as Ee,et as De,fn as Oe,ft as ke,g as Ae,gt as je,h as z,hn as Me,ht as Ne,i as Pe,in as B,it as Fe,j as Ie,jt as Le,k as Re,kt as ze,l as Be,ln as Ve,lt as He,mn as Ue,mt as We,n as Ge,nn as Ke,nt as qe,o as Je,on as Ye,ot as Xe,p as Ze,pn as Qe,pt as $e,q as et,qt as V,r as tt,rn as H,rt as nt,s as rt,sn as it,st as at,t as ot,tn as st,tt as ct,un as lt,ut,v as dt,vt as ft,wt as pt,x as mt,xt as ht,y as gt,yt as _t,z as vt,zt as yt}from"./artifact-btV3Nd6h.js";import U from"node:process";import*as bt from"os";import*as xt from"crypto";import*as W from"fs";import*as St from"path";import{ok as Ct}from"assert";import*as wt from"util";import{TextDecoder as Tt}from"node:util";import{Buffer as Et}from"node:buffer";import*as Dt from"node:crypto";import{createHash as Ot}from"node:crypto";import{pathToFileURL as kt}from"node:url";import*as G from"node:fs/promises";import{access as At,chmod as jt,lstat as Mt,mkdir as Nt,mkdtemp as Pt,readdir as Ft,rm as It,stat as Lt,writeFile as Rt}from"node:fs/promises";import*as K from"node:path";import zt,{dirname as Bt,join as Vt,resolve as Ht,sep as Ut}from"node:path";import{constants as Wt}from"node:fs";import{spawn as Gt}from"node:child_process";import*as Kt from"node:os";import qt,{homedir as Jt,tmpdir as Yt}from"node:os";import*as Xt from"stream";const Zt={api_error:`API Error`,configuration:`Configuration Error`,context_overflow:`Context Overflow`,internal:`Internal Error`,llm_fetch_error:`LLM Fetch Error`,llm_timeout:`LLM Timeout`,model_not_found:`Model Not Found`,permission:`Permission Error`,provider_auth_error:`Provider Authentication Error`,quota_exceeded:`Quota Exceeded`,rate_limit:`Rate Limit`,validation:`Validation Error`};function Qt(e){return e.type===`rate_limit`?`:warning:`:e.type===`llm_timeout`?`:hourglass:`:e.type===`llm_fetch_error`||e.retryable?`:warning:`:`:x:`}function $t(e){let t=Qt(e),n=Zt[e.type],r=[];return r.push(`${t} **${n}**`),r.push(``),r.push(e.message),e.details!=null&&(r.push(``),r.push(`> ${e.details}`)),e.suggestedAction!=null&&(r.push(``),r.push(`**Suggested action:** ${e.suggestedAction}`)),e.retryable&&(r.push(``),r.push(`_This error is retryable._`)),e.resetTime!=null&&(r.push(``),r.push(`_Rate limit resets at: ${e.resetTime.toISOString()}_`)),r.join(` -`)}function en(e,t,n,r){return{type:e,message:t,retryable:n,details:r?.details,suggestedAction:r?.suggestedAction,resetTime:r?.resetTime}}const tn=[/fetch failed/i,/connect\s*timeout/i,/connecttimeouterror/i,/timed?\s*out/i,/econnrefused/i,/econnreset/i,/etimedout/i,/network error/i];function nn(e){if(e==null)return!1;let t=``;if(typeof e==`string`)t=e;else if(e instanceof Error)t=e.message,`cause`in e&&typeof e.cause==`string`&&(t+=` ${e.cause}`);else if(typeof e==`object`){let n=e;typeof n.message==`string`&&(t=n.message),typeof n.cause==`string`&&(t+=` ${n.cause}`)}return tn.some(e=>e.test(t))}function rn(e,t){return en(`llm_fetch_error`,`LLM request failed: ${e}`,!0,{details:t==null?void 0:`Model: ${t}`,suggestedAction:`This is a transient network error. The request may succeed on retry, or try a different model.`})}function an(e,t){return en(`api_error`,`Provider request failed: ${e}`,!0,{details:t==null?void 0:`Model: ${t}`,suggestedAction:`The provider reported this failure as retryable. The request may succeed on retry.`})}function on(e,t){return en(`configuration`,`Agent error: ${e}`,!1,{details:t==null?void 0:`Requested agent: ${t}`,suggestedAction:`Verify the agent name is correct and the agent is defined in your OpenCode config or provided by a plugin you configured.`})}const sn=/Model not found: ([\w.:@+-]+\/[\w.:@+/-]+?)\.(?=\s|$)(?: Did you mean: ([^\n?]*)\?)?/,cn=/^[\w.:@+/-]{1,128}$/;function ln(e){if(typeof e.message!=`string`)return null;let t=sn.exec(e.message),n=t?.[1];if(n==null)return null;let r=(t?.[2]??``).split(`,`).map(e=>e.trim()).filter(e=>cn.test(e)).slice(0,5);return en(`model_not_found`,`Model not found: ${n}.${r.length>0?` Did you mean: ${r.join(`, `)}?`:``}`,!1,{suggestedAction:`Check that the configured model id is correct. If it is, the OpenCode model catalog may not have loaded: make sure the job can reach models.opencode.ai (egress/firewall) or define the model explicitly in the OpenCode config.`})}function un(){return en(`provider_auth_error`,`The model provider rejected authentication for this run.`,!1,{details:`Authentication with the configured model provider is unavailable.`,suggestedAction:`Check the model provider credentials and configuration, then try again.`})}function dn(e){if(typeof e==`string`&&!(e.length===0||e.length>128))return e}function fn(e){return e.kind===`retry-status`?dn(e.reason)===`auth_unavailable`?un():null:dn(e.name)===`ProviderAuthError`?un():null}function pn(){return en(`context_overflow`,`The model context window was exceeded while processing this run.`,!1,{details:`The current session reached the model context limit.`,suggestedAction:`Retry the run with a fresh session or reduce the prompt size.`})}function mn(e){return dn(e.name)===`ContextOverflowError`?pn():null}const hn=/* @__PURE__ */ new Set([`insufficient_quota`,`usage_not_included`]),gn=[/exhausted (your|the) credits/i,/top up your available balance/i],_n=/usage limit reached\./i,vn=/enable usage from your available balance/i,yn=/[\n\r\u2028\u2029]/;function bn(e){return e.split(yn).some(e=>{let t=_n.exec(e);return t!==null&&vn.test(e.slice(t.index+t[0].length))})}function xn(e){return bn(e)||gn.some(t=>t.test(e))}function Sn(e){if(e.kind===`retry-status`)return e.reason===`account_rate_limit`?Cn({resetTime:e.resetAt}):null;let t=e.status;if(t!==void 0&&Number.isFinite(t)&&t===402)return Cn();let n=e.code;if(n!==void 0&&hn.has(n))return Cn();let r=e.message;return typeof r==`string`&&r.length>0&&xn(r)?Cn():null}function Cn(e){return en(`quota_exceeded`,`Provider quota exceeded. This run has stopped because the configured model has reached its usage limit.`,!1,{details:e?.provider==null?void 0:`Provider: ${e.provider}`,suggestedAction:`Check the provider account/billing settings, wait for the quota to reset, or switch to a different model or provider.`,resetTime:e?.resetTime})}function q(e,t){if(typeof e==`object`&&e)return Object.getOwnPropertyDescriptor(e,t)?.value}function J(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`string`?n.value:null}function Y(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`number`?n.value:null}function wn(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`boolean`?n.value:null}function X(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}const Tn=/* @__PURE__ */ new Set([`model_not_found`,`model_not_supported`]),En=[/\bauth_unavailable\b/i,/\bno auth available\b/i],Dn=[/\bmodel_not_found\b/i,/\bmodel (?:is )?not (?:supported|found)\b/i];function On(e,t){return e.some(e=>e.test(t))}function kn(e){if(e===void 0)return;let t=typeof e==`number`?Number.isFinite(e)?new Date(e):void 0:e;if(!(t===void 0||Number.isNaN(t.getTime())))return t}function An(){return en(`model_not_found`,`The configured model is not available from the provider.`,!1,{suggestedAction:`Check that the configured model id is correct and supported by the provider, or choose another.`})}function jn(e,t){let n=Nn(t).errorInfo.retryable;return n===e.retryable?e:{...e,retryable:n}}function Z(e,t,n,r,i){return{kind:e,evidence:t,stop:n,errorInfo:r,classificationPath:i}}function Mn(e){let t=e.reason;if(t===void 0)return null;let n=fn({kind:`retry-status`,reason:t});if(n!==null)return Z(`auth`,`structured`,!0,n,`structured`);let r=Sn({kind:`retry-status`,reason:t,resetAt:kn(e.resetAt)});return r===null?Tn.has(t)?Z(`model-not-found`,`structured`,!0,An(),`structured`):null:Z(`quota`,`structured`,!0,r,`structured`)}function Nn(e){let t=e.detail??`Unknown session error`;return nn(t)?{errorInfo:rn(t,e.model),classificationPath:`fallback`}:e.status===429?{errorInfo:en(`rate_limit`,t,!0),classificationPath:`name`}:e.isRetryable===!0?{errorInfo:an(t,e.model),classificationPath:`structured`}:e.isRetryable===!1?{errorInfo:on(t),classificationPath:`structured`}:{errorInfo:on(t),classificationPath:e.name!==void 0||e.status!==void 0||e.code!==void 0?`name`:`unclassified`}}function Pn(e){let{name:t,status:n,code:r}=e,i=e.message!==void 0&&e.message.length>0?e.message:void 0,a=fn({kind:`session-error`,name:t});if(a!==null)return Z(`auth`,`structured`,!0,a,`structured`);let o=mn({kind:`session-error`,name:t});if(o!==null)return Z(`context-overflow`,`structured`,!1,o,`structured`);if(t===`MessageAbortedError`){let t=Nn(e);return Z(`aborted`,`structured`,!1,t.errorInfo,t.classificationPath)}let s=Sn({kind:`session-error`,status:n,code:r});if(s!==null)return Z(`quota`,`structured`,!0,s,`structured`);if(i!==void 0){let t=Sn({kind:`session-error`,message:i});if(t!==null)return Z(`quota`,`text`,!0,t,`structured`);let n=ln({kind:`session-error`,message:i});if(n!==null)return Z(`model-not-found`,`text`,!0,n,`fallback`);let r=i.slice(0,2048);if(On(En,r))return Z(`auth`,`hint`,!1,jn(un(),e),`fallback`);if(On(Dn,r))return Z(`model-not-found`,`hint`,!1,jn(An(),e),`fallback`)}let c=Nn(e);return Z(`unclassified`,`none`,!1,c.errorInfo,c.classificationPath)}function Fn(e){return e.find(e=>typeof e==`string`&&e.length>0)}function In(e){return e.find(e=>typeof e==`number`)}function Ln(e){return e.find(e=>typeof e==`boolean`)}function Rn(e,t={}){let n=q(e,`data`),r=typeof e==`string`?e:Fn([q(n,`message`),q(e,`message`)]);return{source:`terminal-payload`,name:Fn([q(e,`name`),q(n,`name`)]),status:In([q(n,`status`),q(n,`statusCode`),q(e,`status`),q(e,`statusCode`)]),code:Fn([q(n,`code`),q(e,`code`)]),message:r,isRetryable:Ln([q(n,`isRetryable`),q(e,`isRetryable`)]),detail:t.detail,model:t.model}}function zn(e){return q(e,`type`)===`retry`?{source:`retry-status`,reason:Fn([q(q(e,`action`),`reason`)]),resetAt:In([q(e,`next`)])}:null}function Bn(e){return e.source===`retry-status`?Mn(e):Pn(e)}function Vn(e){return K.join(e.runnerTemp,`fro-bot-attachments`,`${e.runId}-${e.runAttempt}`)}function Hn(e){return e instanceof Error&&`code`in e}async function Un(e){try{await G.mkdir(e);return}catch(e){if(!Hn(e)||e.code!==`EEXIST`)throw e}let t=await G.lstat(e);if(t.isSymbolicLink())throw Error(`Refusing to use attachment directory ${e}: a symlink already exists at this path`);if(!t.isDirectory())throw Error(`Refusing to use attachment directory ${e}: a non-directory entry already exists at this path`)}async function Wn(e){await Un(K.dirname(e)),await Un(e)}function Q(e){return J(e,`sessionID`)}function Gn(e){let t=J(e,`type`);return t===`sync`?J(e,`name`)?.replace(/\.\d+$/,``)??t:t}function Kn(e){return X(e,`properties`)??X(e,`data`)}function qn(e){return Q(X(e,`properties`))??Q(X(e,`data`))}const Jn=[`OWNER`,`MEMBER`,`COLLABORATOR`];async function Yn(e){let{ledger:t,adapter:n,parentSessionId:r,logger:i,signal:a}=e;if(t.snapshot().length===0)return I({liveTrackedSessionIds:/* @__PURE__ */ new Set});let o=a===void 0?[]:[a],[s,c]=await Promise.all([n.children(r,...o),n.liveSessionIds(...o)]);if(s.success===!1||c.success===!1){let e=s.success===!1?s.error:c.error,n=t.snapshot().filter(e=>e.state===`outstanding`);for(let e of n)t.markUnknown(e.sessionId);return i.warning(`Ledger reconciliation failed; marking outstanding entries unknown rather than settling them`,{source:`reconcileLedgerOnce`,parentSessionId:r,unknownCount:n.length,error:e.message}),P(e)}let l=s.data,u=c.data,d=new Set(l.map(e=>e.id)),f=[],p=[],m=/* @__PURE__ */ new Set;for(let e of t.snapshot())(e.state===`outstanding`||e.state===`unknown`)&&(d.has(e.sessionId)===!1?(t.markUnknown(e.sessionId),p.push(e.sessionId)):u.has(e.sessionId)===!0?m.add(e.sessionId):(t.settle(e.sessionId),f.push(e.sessionId)));return(f.length>0||p.length>0)&&i.debug(`Ledger reconciliation adjusted ownership`,{source:`reconcileLedgerOnce`,parentSessionId:r,settled:f,downgradedToUnknown:p}),I({liveTrackedSessionIds:m})}function Xn(e){let{intervalMs:t=3e4,runPass:n,...r}=e,i=!1,a=!1,o=setInterval(()=>{i||a||(a=!0,(n===void 0?Yn(r):(async()=>n())()).catch(()=>{}).finally(()=>{a=!1}))},t);return{dispose:()=>{i||(i=!0,clearInterval(o))}}}function Zn(e,t){return{children:async(n,r)=>{try{let i=await e.session.children({path:{id:n},query:{directory:t},...r===void 0?{}:{signal:r}});return i.error!=null||i.data==null?P(x(i.error??`session.children returned no data`)):Array.isArray(i.data)?I(i.data.map(e=>({id:e.id}))):P(/* @__PURE__ */ Error(`session.children returned a non-array payload`))}catch(e){return P(x(e))}},liveSessionIds:async n=>{try{let r=await e.session.status({query:{directory:t},...n===void 0?{}:{signal:n}});return r.error!=null||r.data==null?P(x(r.error??`session.status returned no data`)):I(new Set(Object.keys(r.data)))}catch(e){return P(x(e))}}}}function Qn(e){return Array.isArray(e)?e.some(e=>{if(J(e,`type`)!==`tool`||wn(X(e,`metadata`),`providerExecuted`)===!0)return!1;let t=X(e,`state`),n=wn(X(t,`metadata`),`interrupted`);return J(t,`status`)!==`error`||n!==!0}):!1}function $n(e,t){switch(e){case`discussion_comment`:case`issue_comment`:case`issues`:case`pull_request`:case`pull_request_review_comment`:case`unsupported`:return null;case`schedule`:case`workflow_dispatch`:switch(t){case`working-dir`:return`working-dir`;case`branch-pr`:return`branch-pr`;case`auto`:return`working-dir`;default:return t}default:return e}}function er(){let e=/* @__PURE__ */ new Map;function t(t){let n=0;for(let r of e.values())r.state===t&&n++;return n}function n(){return t(`outstanding`)===0&&t(`unknown`)===0}return{adopt:(t,n)=>{e.has(t)!==!0&&e.set(t,{label:n,state:`outstanding`})},settle:t=>{let n=e.get(t);n!==void 0&&n.state!==`settled`&&e.set(t,{label:n.label,state:`settled`})},markUnknown:t=>{let n=e.get(t);n!==void 0&&n.state===`outstanding`&&e.set(t,{label:n.label,state:`unknown`})},outstanding:()=>t(`outstanding`),unknown:()=>t(`unknown`),isDrainComplete:()=>n(),isPersistenceSafe:()=>n(),snapshot:()=>Array.from(e.entries()).map(([e,t])=>({sessionId:e,label:t.label,state:t.state})),isTracked:t=>e.has(t)}}async function tr(e,t,n,r=async(e,t)=>G.writeFile(e,t,`utf8`)){let i=[];for(let a of e){let e=K.join(t,a.filename);try{await r(e,a.content),i.push({type:`file`,mime:`text/plain`,url:kt(e).toString(),filename:a.filename})}catch(t){n.warning(`Failed to materialize reference file`,{error:V(t),filename:a.filename,path:e})}}return i}function nr(e){switch(e){case`pull_request`:case`issue_comment`:case`issues`:return`affected`;case`workflow_dispatch`:case`schedule`:return`autonomous`;default:return`deferred-or-unknown`}}function rr(e){throw Error(`Unexpected value: ${String(e)}`)}function ir(e){switch(e){case`affected`:return`withhold`;case`autonomous`:case`deferred-or-unknown`:return`provision`;default:return rr(e)}}function ar(e){switch(e){case`affected`:return`file-convention`;case`autonomous`:case`deferred-or-unknown`:return`model-gh`;default:return rr(e)}}function or(e,t){let n=nr(e),r=ir(n);return t===`none`?{delivery:`none`,credential:r}:{delivery:ar(n),credential:r}}function sr(e){let t=zt.resolve(zt.normalize(e));return t.endsWith(zt.sep)&&t.length>1?t.slice(0,-1):t}async function cr(e,t,n){let r=await e.project.list({query:{directory:t}});if(r.error!=null||r.data==null)return n.warning(`SDK project list failed`,{error:V(r.error)}),[];if(!Array.isArray(r.data))return n.warning(`SDK project list returned a non-array payload`,{type:typeof r.data}),[];let i=0,a=[];for(let e of r.data){if(!he(e)){i+=1;continue}let t=ft(e.id),n=ft(e.worktree);t==null||n==null?i+=1:a.push({id:t,worktree:n})}return n.debug(`Discovered projects via SDK`,{total:r.data.length,skipped:i,retained:a.length}),a}async function lr(e,t,n){let r=sr(t),i=await cr(e,t,n);for(let e of i)if(sr(e.worktree)===r)return e;return null}function ur(e,t){return{key:`${e}-${t}`,entityType:e,entityId:t}}function dr(e){return Ot(`sha256`).update(e).digest(`hex`).slice(0,8)}function fr(e,t){return t==null?e:`${e}-${t}`}function pr(e,t){if(e.eventType===`unsupported`)return null;if(e.eventType===`schedule`){let n=typeof e.raw==`object`&&e.raw!=null&&`event`in e.raw?e.raw.event:void 0,r=typeof n==`object`&&n&&`type`in n&&n.type===`schedule`&&`schedule`in n&&typeof n.schedule==`string`?n.schedule:void 0;return ur(`schedule`,fr(`${dr((r!=null&&r.trim().length>0?r:e.action)??`default`)}-${e.runId}`,t))}return e.eventType===`workflow_dispatch`?ur(`dispatch`,fr(String(e.runId),t)):e.target==null?null:e.eventType===`issue_comment`?e.target.kind===`issue`?ur(`issue`,String(e.target.number)):e.target.kind===`pr`?ur(`pr`,String(e.target.number)):null:e.eventType===`discussion_comment`?e.target.kind===`discussion`?ur(`discussion`,String(e.target.number)):null:e.eventType===`issues`?e.target.kind===`issue`?ur(`issue`,String(e.target.number)):null:(e.eventType===`pull_request`||e.eventType===`pull_request_review_comment`)&&e.target.kind===`pr`?ur(`pr`,String(e.target.number)):null}function mr(e){return`fro-bot: ${e.key}`}function hr(e,t){let n=e.filter(e=>e.title===t);return n.length===0?null:n.reduce((e,t)=>t.time.updated>e.time.updated?t:e)}function gr(e){let t=K.resolve(e);return t.endsWith(K.sep)&&t.length>1?t.slice(0,-1):t}async function _r(e,t,n,r){try{let i=await je(e,t,r),a=mr(n),o=gr(t),s=hr(i.filter(e=>gr(e.directory)===o).filter(e=>e.time.archived==null&&e.time.compacting==null),a);if(s==null){let e=hr(i.filter(e=>e.time.archived==null&&e.time.compacting==null),a);return e!=null&&r.warning(`Session continuity: matching session has different workspace directory, ignoring`,{sessionId:e.id,sessionDirectory:e.directory,workspacePath:t}),{status:`not-found`}}return{status:`found`,session:s}}catch(e){return{status:`error`,error:V(e)}}}const vr={maxSessions:50,maxAgeDays:30};async function yr(e,t,n,r){let{maxSessions:i,maxAgeDays:a}=n;if(r.info(`Starting session pruning`,{workspacePath:t,maxSessions:i,maxAgeDays:a}),await lr(e,t,r)==null)return r.debug(`No project found for pruning`,{workspacePath:t}),{prunedCount:0,prunedSessionIds:[],remainingCount:0,freedBytes:0};let o=await je(e,t,r),s=o.filter(e=>e.parentID==null);if(s.length===0)return{prunedCount:0,prunedSessionIds:[],remainingCount:0,freedBytes:0};let c=[...s].sort((e,t)=>t.time.updated-e.time.updated),l=/* @__PURE__ */ new Date;l.setDate(l.getDate()-a);let u=l.getTime(),d=/* @__PURE__ */ new Set;for(let e of c)e.time.updated>=u&&d.add(e.id);for(let e=0;e!d.has(e.id)),p=/* @__PURE__ */ new Set;for(let e of f){p.add(e.id);for(let t of o)t.parentID===e.id&&p.add(t.id)}if(p.size===0)return r.info(`No sessions to prune`),{prunedCount:0,prunedSessionIds:[],remainingCount:s.length,freedBytes:0};let m=[];for(let t of p)try{await We(e,t,r),m.push(t),r.debug(`Pruned session`,{sessionId:t})}catch(e){r.warning(`Failed to prune session`,{sessionId:t,error:V(e)})}let h=s.length-f.length;return r.info(`Session pruning complete`,{prunedCount:m.length,remainingCount:h}),{prunedCount:m.length,prunedSessionIds:m,remainingCount:h,freedBytes:0}}async function br(e,t,n,r,i){if(n!=null&&i?.isExpired()!==!0&&i?.remainingMs()!==0)try{let a,o=i==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`Session title re-assertion aborted`)),i.signal.addEventListener(`abort`,a,{once:!0})});try{let a=e.session.update({path:{id:t},body:{title:n},...i==null?{}:{signal:i.signal}}),s=await Promise.race([a,...o==null?[]:[o]]);if(i?.isExpired()===!0)return;s.error!=null&&r.warning(`Best-effort session title re-assertion failed`,{sessionId:t,sessionTitle:n,error:m(s.error)})}finally{i!=null&&a!=null&&i.signal.removeEventListener(`abort`,a)}}catch(e){if(i?.isExpired()===!0)return;r.warning(`Best-effort session title re-assertion failed`,{sessionId:t,sessionTitle:n,error:V(e)})}}function xr(e){let t=[`--- Fro Bot Run Summary ---`,`Event: ${e.eventType}`,`Repo: ${e.repo}`,`Ref: ${e.ref}`,`Run ID: ${e.runId}`,`Cache: ${e.cacheStatus}`,`Duration: ${e.duration}s`];return e.sessionIds.length>0&&t.push(`Sessions used: ${e.sessionIds.join(`, `)}`),e.logicalKey!=null&&t.push(`Logical Thread: ${e.logicalKey}`),e.createdPRs.length>0&&t.push(`PRs created: ${e.createdPRs.join(`, `)}`),e.createdCommits.length>0&&t.push(`Commits: ${e.createdCommits.join(`, `)}`),e.tokenUsage!=null&&t.push(`Tokens: ${e.tokenUsage.input} in / ${e.tokenUsage.output} out`),t.join(` -`)}async function Sr(e,t,n,r){let i=xr(t);try{let t=await n.session.prompt({path:{id:e},body:{noReply:!0,parts:[{type:`text`,text:i}]}});if(t.error!=null){r.warning(`SDK prompt writeback failed`,{sessionId:e,error:m(t.error)});return}r.info(`Session summary written via SDK`,{sessionId:e})}catch(t){r.warning(`SDK prompt writeback failed`,{sessionId:e,error:V(t)})}}const Cr=//;function wr(e){let t=Cr.exec(e),n=t?.[1],r=t?.[2];return n===void 0||r!==`completed`&&r!==`error`?null:{childSessionId:n,state:r}}function Tr(e){if(J(e,`type`)!==`text`||wn(e,`synthetic`)!==!0)return null;let t=J(e,`text`);return t===null?null:wr(t)}const Er=`agent: working`,Dr=/^\d{12}$/;function Or(e){let t=e.value?.trim();return t!=null&&t.length>0?t:void 0}function kr(e,t){return P(He(`${e}: ${t}`))}function Ar(e){let[t,...n]=e,r=n.pop();return r===void 0?t.source:`${[t,...n].map(e=>e.source).join(`, `)} or ${r.source}`}function jr(e){let t=Or(e);return t===void 0?I(void 0):t===`aws:kms`||t===`AES256`?I(t):kr(e.source,`must be either 'aws:kms' or 'AES256'`)}function Mr(e,n){let r=jr(e.sseEncryption);if(r.success===!1)return r;let i=r.data,a=Or(e.bucket),o=e.region.map(Or).find(e=>e!==void 0),s=Or(e.endpoint),c=Or(e.expectedBucketOwner),l=Or(e.sseKmsKeyId),u=Or(e.prefix)??`fro-bot-state`;if(e.enabled){if(a===void 0)return P(He(`${e.bucket.source} is required`));if(o===void 0&&n.region===`required`)return P(He(`${Ar(e.region)} is required`));if(s!==void 0){let t=at(s,e.allowInsecureEndpoint);if(t.success===!1)return kr(e.endpoint.source,t.error.message)}let t=Se(u);if(t.success===!1)return kr(e.prefix.source,t.error.message);if(u=t.data,c!==void 0&&Dr.test(c)===!1)return kr(e.expectedBucketOwner.source,`must be a 12-digit AWS account ID`)}let d={enabled:e.enabled,bucket:a??``,region:o??``,prefix:u,allowInsecureEndpoint:e.allowInsecureEndpoint,...s===void 0?{}:{endpoint:s},...c===void 0?{}:{expectedBucketOwner:c},...i===void 0?{}:{sseEncryption:i},...l===void 0?{}:{sseKmsKeyId:l}};return e.enabled&&l!==void 0&&t(d)!==`aws:kms`?kr(e.sseKmsKeyId.source,`requires the server-side encryption mode to be aws:kms; set ${e.sseEncryption.source} to aws:kms`):I(d)}const Nr={todowrite:[`Todo`,`\x1B[33m\x1B[1m`],todoread:[`Todo`,`\x1B[33m\x1B[1m`],bash:[`Bash`,`\x1B[31m\x1B[1m`],edit:[`Edit`,`\x1B[32m\x1B[1m`],glob:[`Glob`,`\x1B[34m\x1B[1m`],grep:[`Grep`,`\x1B[34m\x1B[1m`],list:[`List`,`\x1B[34m\x1B[1m`],read:[`Read`,`\x1B[35m\x1B[1m`],write:[`Write`,`\x1B[32m\x1B[1m`],websearch:[`Search`,`\x1B[2m\x1B[1m`]},Pr=`\x1B[0m`;function Fr(){return U.env.NO_COLOR==null}function Ir(e,t){let[n,r]=Nr[e.toLowerCase()]??[e,`\x1B[36m\x1B[1m`],i=n.padEnd(10,` `);Fr()?U.stdout.write(`\n${r}|${Pr} ${i} ${Pr}${t}\n`):U.stdout.write(`\n| ${i} ${t}\n`)}function Lr(e){U.stdout.write(`\n${e}\n`)}function Rr(e){let[t,n]=e.split(`/`);if(t==null||n==null||t.length===0||n.length===0)throw Error(`Invalid repository string: ${e}`);return{owner:t,repo:n}}async function zr(e,t,n,r,i){try{let{owner:a,repo:o}=Rr(t),{data:s}=await e.rest.reactions.createForIssueComment({owner:a,repo:o,comment_id:n,content:r});return i.debug(`Created comment reaction`,{commentId:n,content:r,reactionId:s.id}),{id:s.id}}catch(e){return i.warning(`Failed to create comment reaction`,{commentId:n,content:r,error:V(e)}),null}}async function Br(e,t,n,r){try{let{owner:r,repo:i}=Rr(t),{data:a}=await e.rest.reactions.listForIssueComment({owner:r,repo:i,comment_id:n,per_page:100});return a.map(e=>({id:e.id,content:e.content,userLogin:e.user?.login??null}))}catch(e){return r.warning(`Failed to list comment reactions`,{commentId:n,error:V(e)}),[]}}async function Vr(e,t,n,r,i){try{let{owner:a,repo:o}=Rr(t);return await e.rest.reactions.deleteForIssueComment({owner:a,repo:o,comment_id:n,reaction_id:r}),i.debug(`Deleted comment reaction`,{commentId:n,reactionId:r}),!0}catch(e){return i.warning(`Failed to delete comment reaction`,{commentId:n,reactionId:r,error:V(e)}),!1}}async function Hr(e,t,n,r,i,a){let{owner:o,repo:s}=Rr(t);try{return await e.rest.issues.createLabel({owner:o,repo:s,name:n,color:r,description:i}),a.debug(`Created label`,{name:n,color:r}),!0}catch(e){return e instanceof Error&&`status`in e&&e.status===422?(a.debug(`Label already exists`,{name:n}),!0):(a.warning(`Failed to create label`,{name:n,error:V(e)}),!1)}}async function Ur(e,t,n,r,i){try{let{owner:a,repo:o}=Rr(t);return await e.rest.issues.addLabels({owner:a,repo:o,issue_number:n,labels:[...r]}),i.debug(`Added labels to issue`,{issueNumber:n,labels:r}),!0}catch(e){return i.warning(`Failed to add labels to issue`,{issueNumber:n,labels:r,error:V(e)}),!1}}function Wr(e){return e==null?{}:{request:{signal:e}}}async function Gr(e,t,n,r,i,a){try{let{owner:o,repo:s}=Rr(t);return await e.rest.issues.removeLabel({owner:o,repo:s,issue_number:n,name:r,...Wr(a)}),i.debug(`Removed label from issue`,{issueNumber:n,label:r}),`removed`}catch(e){return e instanceof Error&&`status`in e&&e.status===404?(i.debug(`Label was not present on issue`,{issueNumber:n,label:r}),`absent`):(i.warning(`Failed to remove label from issue`,{issueNumber:n,label:r,error:V(e)}),`failed`)}}async function Kr(e,t,n,r,i,a){return await Gr(e,t,n,r,i,a)!==`failed`}async function qr(e,t,n,r,i){try{let{owner:r,repo:a}=Rr(t),{data:o}=await e.rest.issues.listLabelsOnIssue({owner:r,repo:a,issue_number:n,per_page:100,...Wr(i)});return o.map(e=>e.name)}catch(e){return r.warning(`Failed to list labels on issue`,{issueNumber:n,error:V(e)}),null}}function Jr(e){if(typeof e!=`string`)return null;for(let t of e.split(`,`)){if(t.includes(`rel="last"`)===!1)continue;let e=/[?&]page=(\d+)/.exec(t);if(e?.[1]!=null)return Number(e[1])}return null}async function Yr(e,t,n,r,i,a){try{let{owner:i,repo:o}=Rr(t),s=async t=>e.rest.issues.listEvents({owner:i,repo:o,issue_number:n,per_page:100,page:t,...Wr(a)}),c=new Map(r.map(e=>[e.toLowerCase(),e])),l=/* @__PURE__ */ new Map,u=await s(1),d=Jr(u.headers.link)??1,f=d,p=d===1?u:await s(d);for(let e=0;e<3;e++){let t=/* @__PURE__ */ new Map;for(let e of p.data){let n=e.event===`labeled`?c.get(e.label?.name.toLowerCase()??``):void 0;if(n==null)continue;let r=Date.parse(e.created_at);Number.isNaN(r)||r>(t.get(n)??-1/0)&&t.set(n,r)}for(let[e,n]of t)l.has(e)===!1&&l.set(e,n);if(l.size===c.size||f<=1||e+1>=3)break;if(a?.aborted===!0)return null;--f,p=f===1?u:await s(f)}return l}catch(e){return i.warning(`Failed to read issue events`,{issueNumber:n,labels:r,error:V(e)}),null}}async function Xr(e,t,n){try{let{owner:n,repo:r}=Rr(t),{data:i}=await e.rest.repos.get({owner:n,repo:r});return i.default_branch}catch(e){return n.warning(`Failed to get default branch`,{repo:t,error:V(e)}),`main`}}const Zr={admin:`OWNER`,maintain:`MEMBER`,write:`COLLABORATOR`,triage:`COLLABORATOR`};async function Qr(e,t,n,r,i){try{let{data:a}=await e.rest.repos.getCollaboratorPermissionLevel({owner:t,repo:n,username:r}),o=Zr[a.permission]??null;return i.debug(`Resolved sender permission`,{username:r,permission:a.permission,association:o}),o}catch(e){return i.warning(`Failed to resolve sender permission`,{username:r,error:V(e)}),null}}async function $r(e,t,n){try{let{data:n}=await e.rest.users.getByUsername({username:t});return{id:n.id,login:n.login}}catch(e){return n.debug(`Failed to get user by username`,{username:t,error:V(e)}),null}}const ei={maxComments:50,maxCommits:100,maxFiles:100,maxReviews:100,maxBodyBytes:10240,maxTotalBytes:102400},ti=`…[truncated]`;function ni(e,t){if(e.length===0)return{text:``,truncated:!1};let n=new TextEncoder,r=n.encode(e);if(r.length<=t)return{text:e,truncated:!1};let i=t-n.encode(ti).length;if(i<=0)return{text:ti,truncated:!0};let a=r.slice(0,i),o=new TextDecoder(`utf-8`,{fatal:!1}).decode(a);for(;o.length>0&&o.charCodeAt(o.length-1)===65533;)a=a.slice(0,-1),o=new TextDecoder(`utf-8`,{fatal:!1}).decode(a);return{text:o+ti,truncated:!0}}async function ri(e,t,n){let r=[];for(let t=1;t<=50;t++){let n=await e(t);if(r.push(...n),n.length<100)return r}return n.warning(`REST collection pagination limit reached`,{collection:t,maxPages:50}),r}async function ii(e,t,n,r,i,a){try{let[o,s]=await Promise.all([e.rest.issues.get({owner:t,repo:n,issue_number:r}),ri(async i=>(await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:i})).data,`issue comments`,a)]),c=o.data,l=ni(c.body??``,i.maxBodyBytes),u=s.slice(Math.max(0,s.length-i.maxComments)).map(e=>({id:e.node_id??String(e.id),author:e.user?.login??null,body:e.body??``,createdAt:e.created_at,authorAssociation:e.author_association,isMinimized:!1})),d=(c.labels??[]).filter(e=>typeof e==`object`&&!!e&&`name`in e).map(e=>({name:e.name??``,color:e.color})),f=(c.assignees??[]).map(e=>({login:e?.login??``}));return{type:`issue`,number:c.number,title:c.title,body:l.text,bodyTruncated:l.truncated,state:c.state,author:c.user?.login??null,createdAt:c.created_at,labels:d,assignees:f,comments:u,commentsTruncated:s.length>u.length,totalComments:s.length}}catch(e){return a.warning(`REST issue fallback failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function ai(e,t,n,r,i,a){try{let o=await e.rest.pulls.get({owner:t,repo:n,pull_number:r}),[s,c,l,u]=await Promise.all([ri(async i=>(await e.rest.pulls.listCommits({owner:t,repo:n,pull_number:r,per_page:100,page:i})).data,`pull request commits`,a),e.rest.pulls.listFiles({owner:t,repo:n,pull_number:r,per_page:i.maxFiles+1}),ri(async i=>(await e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:i})).data,`pull request reviews`,a),ri(async i=>(await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:i})).data,`pull request comments`,a)]),d=await e.rest.pulls.listRequestedReviewers({owner:t,repo:n,pull_number:r}).catch(e=>(a.warning(`Failed to fetch requested reviewers, defaulting to empty`,{owner:t,repo:n,number:r,error:V(e)}),{data:{users:[],teams:[]}})),f=o.data,p=ni(f.body??``,i.maxBodyBytes),m=f.base.repo?.owner.login,h=f.head.repo?.owner.login,g=h==null||m!==h,_=u.slice(Math.max(0,u.length-i.maxComments)).map(e=>({id:e.node_id??String(e.id),author:e.user?.login??null,body:e.body??``,createdAt:e.created_at,authorAssociation:e.author_association,isMinimized:!1})),v=s.slice(Math.max(0,s.length-i.maxCommits)).map(e=>({oid:e.sha,message:e.commit.message,author:e.commit.author?.name??null})),y=c.data.slice(0,i.maxFiles).map(e=>({path:e.filename,additions:e.additions,deletions:e.deletions,status:e.status})),b=l.slice(Math.max(0,l.length-i.maxReviews)).map(e=>({author:e.user?.login??null,state:e.state,body:e.body??``,createdAt:e.submitted_at??``,comments:[]})),x=(f.labels??[]).map(e=>({name:e.name??``,color:e.color})),S=(f.assignees??[]).map(e=>({login:e?.login??``})),C=(d.data.users??[]).map(e=>e.login),w=(d.data.teams??[]).map(e=>e.name);return{type:`pull_request`,number:f.number,title:f.title,body:p.text,bodyTruncated:p.truncated,state:f.state,author:f.user?.login??null,createdAt:f.created_at,baseBranch:f.base.ref,headBranch:f.head.ref,isFork:g,labels:x,assignees:S,comments:_,commentsTruncated:u.length>_.length,totalComments:u.length,commits:v,commitsTruncated:s.length>v.length,totalCommits:s.length,files:y,filesTruncated:c.data.length>y.length,totalFiles:c.data.length,reviews:b,reviewsTruncated:l.length>b.length,totalReviews:l.length,authorAssociation:f.author_association,requestedReviewers:C,requestedReviewerTeams:w}}catch(e){return a.warning(`REST pull request fallback failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function oi(e,t,n,r,i,a){try{return await e.graphql(` +`)}function en(e,t,n,r){return{type:e,message:t,retryable:n,details:r?.details,suggestedAction:r?.suggestedAction,resetTime:r?.resetTime}}const tn=[/fetch failed/i,/connect\s*timeout/i,/connecttimeouterror/i,/timed?\s*out/i,/econnrefused/i,/econnreset/i,/etimedout/i,/network error/i];function nn(e){if(e==null)return!1;let t=``;if(typeof e==`string`)t=e;else if(e instanceof Error)t=e.message,`cause`in e&&typeof e.cause==`string`&&(t+=` ${e.cause}`);else if(typeof e==`object`){let n=e;typeof n.message==`string`&&(t=n.message),typeof n.cause==`string`&&(t+=` ${n.cause}`)}return tn.some(e=>e.test(t))}function rn(e,t){return en(`llm_fetch_error`,`LLM request failed: ${e}`,!0,{details:t==null?void 0:`Model: ${t}`,suggestedAction:`This is a transient network error. The request may succeed on retry, or try a different model.`})}function an(e,t){return en(`api_error`,`Provider request failed: ${e}`,!0,{details:t==null?void 0:`Model: ${t}`,suggestedAction:`The provider reported this failure as retryable. The request may succeed on retry.`})}function on(e,t){return en(`configuration`,`Agent error: ${e}`,!1,{details:t==null?void 0:`Requested agent: ${t}`,suggestedAction:`Verify the agent name is correct and the agent is defined in your OpenCode config or provided by a plugin you configured.`})}const sn=/Model not found: ([\w.:@+-]+\/[\w.:@+/-]+?)\.(?=\s|$)(?: Did you mean: ([^\n?]*)\?)?/,cn=/^[\w.:@+/-]{1,128}$/;function ln(e){if(typeof e.message!=`string`)return null;let t=sn.exec(e.message),n=t?.[1];if(n==null)return null;let r=(t?.[2]??``).split(`,`).map(e=>e.trim()).filter(e=>cn.test(e)).slice(0,5);return en(`model_not_found`,`Model not found: ${n}.${r.length>0?` Did you mean: ${r.join(`, `)}?`:``}`,!1,{suggestedAction:`Check that the configured model id is correct. If it is, the OpenCode model catalog may not have loaded: make sure the job can reach models.opencode.ai (egress/firewall) or define the model explicitly in the OpenCode config.`})}function un(){return en(`provider_auth_error`,`The model provider rejected authentication for this run.`,!1,{details:`Authentication with the configured model provider is unavailable.`,suggestedAction:`Check the model provider credentials and configuration, then try again.`})}function dn(e){if(typeof e==`string`&&!(e.length===0||e.length>128))return e}function fn(e){return e.kind===`retry-status`?dn(e.reason)===`auth_unavailable`?un():null:dn(e.name)===`ProviderAuthError`?un():null}function pn(){return en(`context_overflow`,`The model context window was exceeded while processing this run.`,!1,{details:`The current session reached the model context limit.`,suggestedAction:`Retry the run with a fresh session or reduce the prompt size.`})}function mn(e){return dn(e.name)===`ContextOverflowError`?pn():null}const hn=/* @__PURE__ */ new Set([`insufficient_quota`,`usage_not_included`]),gn=[/exhausted (your|the) credits/i,/top up your available balance/i],_n=/usage limit reached\./i,vn=/enable usage from your available balance/i,yn=/[\n\r\u2028\u2029]/;function bn(e){return e.split(yn).some(e=>{let t=_n.exec(e);return t!==null&&vn.test(e.slice(t.index+t[0].length))})}function xn(e){return bn(e)||gn.some(t=>t.test(e))}function Sn(e){if(e.kind===`retry-status`)return e.reason===`account_rate_limit`?Cn({resetTime:e.resetAt}):null;let t=e.status;if(t!==void 0&&Number.isFinite(t)&&t===402)return Cn();let n=e.code;if(n!==void 0&&hn.has(n))return Cn();let r=e.message;return typeof r==`string`&&r.length>0&&xn(r)?Cn():null}function Cn(e){return en(`quota_exceeded`,`Provider quota exceeded. This run has stopped because the configured model has reached its usage limit.`,!1,{details:e?.provider==null?void 0:`Provider: ${e.provider}`,suggestedAction:`Check the provider account/billing settings, wait for the quota to reset, or switch to a different model or provider.`,resetTime:e?.resetTime})}function q(e,t){if(typeof e==`object`&&e)return Object.getOwnPropertyDescriptor(e,t)?.value}function J(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`string`?n.value:null}function Y(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`number`?n.value:null}function wn(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`boolean`?n.value:null}function X(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}const Tn=/* @__PURE__ */ new Set([`model_not_found`,`model_not_supported`]),En=[/\bauth_unavailable\b/i,/\bno auth available\b/i],Dn=[/\bmodel_not_found\b/i,/\bmodel (?:is )?not (?:supported|found)\b/i];function On(e,t){return e.some(e=>e.test(t))}function kn(e){if(e===void 0)return;let t=typeof e==`number`?Number.isFinite(e)?new Date(e):void 0:e;if(!(t===void 0||Number.isNaN(t.getTime())))return t}function An(){return en(`model_not_found`,`The configured model is not available from the provider.`,!1,{suggestedAction:`Check that the configured model id is correct and supported by the provider, or choose another.`})}function jn(e,t){let n=Nn(t).errorInfo.retryable;return n===e.retryable?e:{...e,retryable:n}}function Z(e,t,n,r,i){return{kind:e,evidence:t,stop:n,errorInfo:r,classificationPath:i}}function Mn(e){let t=e.reason;if(t===void 0)return null;let n=fn({kind:`retry-status`,reason:t});if(n!==null)return Z(`auth`,`structured`,!0,n,`structured`);let r=Sn({kind:`retry-status`,reason:t,resetAt:kn(e.resetAt)});return r===null?Tn.has(t)?Z(`model-not-found`,`structured`,!0,An(),`structured`):null:Z(`quota`,`structured`,!0,r,`structured`)}function Nn(e){let t=e.detail??`Unknown session error`;return nn(t)?{errorInfo:rn(t,e.model),classificationPath:`fallback`}:e.status===429?{errorInfo:en(`rate_limit`,t,!0),classificationPath:`name`}:e.isRetryable===!0?{errorInfo:an(t,e.model),classificationPath:`structured`}:e.isRetryable===!1?{errorInfo:on(t),classificationPath:`structured`}:{errorInfo:on(t),classificationPath:e.name!==void 0||e.status!==void 0||e.code!==void 0?`name`:`unclassified`}}function Pn(e){let{name:t,status:n,code:r}=e,i=e.message!==void 0&&e.message.length>0?e.message:void 0,a=fn({kind:`session-error`,name:t});if(a!==null)return Z(`auth`,`structured`,!0,a,`structured`);let o=mn({kind:`session-error`,name:t});if(o!==null)return Z(`context-overflow`,`structured`,!1,o,`structured`);if(t===`MessageAbortedError`){let t=Nn(e);return Z(`aborted`,`structured`,!1,t.errorInfo,t.classificationPath)}let s=Sn({kind:`session-error`,status:n,code:r});if(s!==null)return Z(`quota`,`structured`,!0,s,`structured`);if(i!==void 0){let t=Sn({kind:`session-error`,message:i});if(t!==null)return Z(`quota`,`text`,!0,t,`structured`);let n=ln({kind:`session-error`,message:i});if(n!==null)return Z(`model-not-found`,`text`,!0,n,`fallback`);let r=i.slice(0,2048);if(On(En,r))return Z(`auth`,`hint`,!1,jn(un(),e),`fallback`);if(On(Dn,r))return Z(`model-not-found`,`hint`,!1,jn(An(),e),`fallback`)}let c=Nn(e);return Z(`unclassified`,`none`,!1,c.errorInfo,c.classificationPath)}function Fn(e){return e.find(e=>typeof e==`string`&&e.length>0)}function In(e){return e.find(e=>typeof e==`number`)}function Ln(e){return e.find(e=>typeof e==`boolean`)}function Rn(e,t={}){let n=q(e,`data`),r=typeof e==`string`?e:Fn([q(n,`message`),q(e,`message`)]);return{source:`terminal-payload`,name:Fn([q(e,`name`),q(n,`name`)]),status:In([q(n,`status`),q(n,`statusCode`),q(e,`status`),q(e,`statusCode`)]),code:Fn([q(n,`code`),q(e,`code`)]),message:r,isRetryable:Ln([q(n,`isRetryable`),q(e,`isRetryable`)]),detail:t.detail,model:t.model}}function zn(e){return q(e,`type`)===`retry`?{source:`retry-status`,reason:Fn([q(q(e,`action`),`reason`)]),resetAt:In([q(e,`next`)])}:null}function Bn(e){return e.source===`retry-status`?Mn(e):Pn(e)}function Vn(e){return K.join(e.runnerTemp,`fro-bot-attachments`,`${e.runId}-${e.runAttempt}`)}function Hn(e){return e instanceof Error&&`code`in e}async function Un(e){try{await G.mkdir(e);return}catch(e){if(!Hn(e)||e.code!==`EEXIST`)throw e}let t=await G.lstat(e);if(t.isSymbolicLink())throw Error(`Refusing to use attachment directory ${e}: a symlink already exists at this path`);if(!t.isDirectory())throw Error(`Refusing to use attachment directory ${e}: a non-directory entry already exists at this path`)}async function Wn(e){await Un(K.dirname(e)),await Un(e)}function Q(e){return J(e,`sessionID`)}function Gn(e){let t=J(e,`type`);return t===`sync`?J(e,`name`)?.replace(/\.\d+$/,``)??t:t}function Kn(e){return X(e,`properties`)??X(e,`data`)}function qn(e){return Q(X(e,`properties`))??Q(X(e,`data`))}function Jn(){let e=/* @__PURE__ */ new Map;function t(t){let n=0;for(let r of e.values())r.state===t&&n++;return n}function n(){return t(`outstanding`)===0&&t(`unknown`)===0}return{adopt:(t,n)=>{e.has(t)!==!0&&e.set(t,{label:n,state:`outstanding`})},settle:t=>{let n=e.get(t);n!==void 0&&n.state!==`settled`&&e.set(t,{label:n.label,state:`settled`})},markUnknown:t=>{let n=e.get(t);n!==void 0&&n.state===`outstanding`&&e.set(t,{label:n.label,state:`unknown`})},release:t=>{e.delete(t)},outstanding:()=>t(`outstanding`),unknown:()=>t(`unknown`),isDrainComplete:()=>n(),isPersistenceSafe:()=>n(),snapshot:()=>Array.from(e.entries()).map(([e,t])=>({sessionId:e,label:t.label,state:t.state})),isTracked:t=>e.has(t)}}function Yn(e){return e.startsWith(`shell:`)}const Xn=[`OWNER`,`MEMBER`,`COLLABORATOR`];async function Zn(e){let{ledger:t,adapter:n,parentSessionId:r,logger:i,signal:a}=e,o=()=>t.snapshot().filter(e=>!Yn(e.sessionId));if(o().length===0)return I({liveTrackedSessionIds:/* @__PURE__ */ new Set});let s=a===void 0?[]:[a],[c,l]=await Promise.all([n.children(r,...s),n.liveSessionIds(...s)]);if(c.success===!1||l.success===!1){let e=c.success===!1?c.error:l.error,n=o().filter(e=>e.state===`outstanding`);for(let e of n)t.markUnknown(e.sessionId);return i.warning(`Ledger reconciliation failed; marking outstanding entries unknown rather than settling them`,{source:`reconcileLedgerOnce`,parentSessionId:r,unknownCount:n.length,error:e.message}),P(e)}let u=c.data,d=l.data,f=new Set(u.map(e=>e.id)),p=[],m=[],h=/* @__PURE__ */ new Set;for(let e of o())(e.state===`outstanding`||e.state===`unknown`)&&(f.has(e.sessionId)===!1?(t.markUnknown(e.sessionId),m.push(e.sessionId)):d.has(e.sessionId)===!0?h.add(e.sessionId):(t.settle(e.sessionId),p.push(e.sessionId)));return(p.length>0||m.length>0)&&i.debug(`Ledger reconciliation adjusted ownership`,{source:`reconcileLedgerOnce`,parentSessionId:r,settled:p,downgradedToUnknown:m}),I({liveTrackedSessionIds:h})}function Qn(e){let{intervalMs:t=3e4,runPass:n,...r}=e,i=!1,a=!1,o=setInterval(()=>{i||a||(a=!0,(n===void 0?Zn(r):(async()=>n())()).catch(()=>{}).finally(()=>{a=!1}))},t);return{dispose:()=>{i||(i=!0,clearInterval(o))}}}function $n(e,t){return{children:async(n,r)=>{try{let i=await e.session.children({path:{id:n},query:{directory:t},...r===void 0?{}:{signal:r}});return i.error!=null||i.data==null?P(x(i.error??`session.children returned no data`)):Array.isArray(i.data)?I(i.data.map(e=>({id:e.id}))):P(/* @__PURE__ */ Error(`session.children returned a non-array payload`))}catch(e){return P(x(e))}},liveSessionIds:async n=>{try{let r=await e.session.status({query:{directory:t},...n===void 0?{}:{signal:n}});return r.error!=null||r.data==null?P(x(r.error??`session.status returned no data`)):I(new Set(Object.keys(r.data)))}catch(e){return P(x(e))}}}}function er(e){return Array.isArray(e)?e.some(e=>{if(J(e,`type`)!==`tool`||wn(X(e,`metadata`),`providerExecuted`)===!0)return!1;let t=X(e,`state`),n=wn(X(t,`metadata`),`interrupted`);return J(t,`status`)!==`error`||n!==!0}):!1}function tr(e,t){switch(e){case`discussion_comment`:case`issue_comment`:case`issues`:case`pull_request`:case`pull_request_review_comment`:case`unsupported`:return null;case`schedule`:case`workflow_dispatch`:switch(t){case`working-dir`:return`working-dir`;case`branch-pr`:return`branch-pr`;case`auto`:return`working-dir`;default:return t}default:return e}}async function nr(e,t,n,r=async(e,t)=>G.writeFile(e,t,`utf8`)){let i=[];for(let a of e){let e=K.join(t,a.filename);try{await r(e,a.content),i.push({type:`file`,mime:`text/plain`,url:kt(e).toString(),filename:a.filename})}catch(t){n.warning(`Failed to materialize reference file`,{error:V(t),filename:a.filename,path:e})}}return i}function rr(e){switch(e){case`pull_request`:case`issue_comment`:case`issues`:return`affected`;case`workflow_dispatch`:case`schedule`:return`autonomous`;default:return`deferred-or-unknown`}}function ir(e){throw Error(`Unexpected value: ${String(e)}`)}function ar(e){switch(e){case`affected`:return`withhold`;case`autonomous`:case`deferred-or-unknown`:return`provision`;default:return ir(e)}}function or(e){switch(e){case`affected`:return`file-convention`;case`autonomous`:case`deferred-or-unknown`:return`model-gh`;default:return ir(e)}}function sr(e,t){let n=rr(e),r=ar(n);return t===`none`?{delivery:`none`,credential:r}:{delivery:or(n),credential:r}}function cr(e){let t=zt.resolve(zt.normalize(e));return t.endsWith(zt.sep)&&t.length>1?t.slice(0,-1):t}async function lr(e,t,n){let r=await e.project.list({query:{directory:t}});if(r.error!=null||r.data==null)return n.warning(`SDK project list failed`,{error:V(r.error)}),[];if(!Array.isArray(r.data))return n.warning(`SDK project list returned a non-array payload`,{type:typeof r.data}),[];let i=0,a=[];for(let e of r.data){if(!he(e)){i+=1;continue}let t=ft(e.id),n=ft(e.worktree);t==null||n==null?i+=1:a.push({id:t,worktree:n})}return n.debug(`Discovered projects via SDK`,{total:r.data.length,skipped:i,retained:a.length}),a}async function ur(e,t,n){let r=cr(t),i=await lr(e,t,n);for(let e of i)if(cr(e.worktree)===r)return e;return null}function dr(e,t){return{key:`${e}-${t}`,entityType:e,entityId:t}}function fr(e){return Ot(`sha256`).update(e).digest(`hex`).slice(0,8)}function pr(e,t){return t==null?e:`${e}-${t}`}function mr(e,t){if(e.eventType===`unsupported`)return null;if(e.eventType===`schedule`){let n=typeof e.raw==`object`&&e.raw!=null&&`event`in e.raw?e.raw.event:void 0,r=typeof n==`object`&&n&&`type`in n&&n.type===`schedule`&&`schedule`in n&&typeof n.schedule==`string`?n.schedule:void 0;return dr(`schedule`,pr(`${fr((r!=null&&r.trim().length>0?r:e.action)??`default`)}-${e.runId}`,t))}return e.eventType===`workflow_dispatch`?dr(`dispatch`,pr(String(e.runId),t)):e.target==null?null:e.eventType===`issue_comment`?e.target.kind===`issue`?dr(`issue`,String(e.target.number)):e.target.kind===`pr`?dr(`pr`,String(e.target.number)):null:e.eventType===`discussion_comment`?e.target.kind===`discussion`?dr(`discussion`,String(e.target.number)):null:e.eventType===`issues`?e.target.kind===`issue`?dr(`issue`,String(e.target.number)):null:(e.eventType===`pull_request`||e.eventType===`pull_request_review_comment`)&&e.target.kind===`pr`?dr(`pr`,String(e.target.number)):null}function hr(e){return`fro-bot: ${e.key}`}function gr(e,t){let n=e.filter(e=>e.title===t);return n.length===0?null:n.reduce((e,t)=>t.time.updated>e.time.updated?t:e)}function _r(e){let t=K.resolve(e);return t.endsWith(K.sep)&&t.length>1?t.slice(0,-1):t}async function vr(e,t,n,r){try{let i=await je(e,t,r),a=hr(n),o=_r(t),s=gr(i.filter(e=>_r(e.directory)===o).filter(e=>e.time.archived==null&&e.time.compacting==null),a);if(s==null){let e=gr(i.filter(e=>e.time.archived==null&&e.time.compacting==null),a);return e!=null&&r.warning(`Session continuity: matching session has different workspace directory, ignoring`,{sessionId:e.id,sessionDirectory:e.directory,workspacePath:t}),{status:`not-found`}}return{status:`found`,session:s}}catch(e){return{status:`error`,error:V(e)}}}const yr={maxSessions:50,maxAgeDays:30};async function br(e,t,n,r){let{maxSessions:i,maxAgeDays:a}=n;if(r.info(`Starting session pruning`,{workspacePath:t,maxSessions:i,maxAgeDays:a}),await ur(e,t,r)==null)return r.debug(`No project found for pruning`,{workspacePath:t}),{prunedCount:0,prunedSessionIds:[],remainingCount:0,freedBytes:0};let o=await je(e,t,r),s=o.filter(e=>e.parentID==null);if(s.length===0)return{prunedCount:0,prunedSessionIds:[],remainingCount:0,freedBytes:0};let c=[...s].sort((e,t)=>t.time.updated-e.time.updated),l=/* @__PURE__ */ new Date;l.setDate(l.getDate()-a);let u=l.getTime(),d=/* @__PURE__ */ new Set;for(let e of c)e.time.updated>=u&&d.add(e.id);for(let e=0;e!d.has(e.id)),p=/* @__PURE__ */ new Set;for(let e of f){p.add(e.id);for(let t of o)t.parentID===e.id&&p.add(t.id)}if(p.size===0)return r.info(`No sessions to prune`),{prunedCount:0,prunedSessionIds:[],remainingCount:s.length,freedBytes:0};let m=[];for(let t of p)try{await We(e,t,r),m.push(t),r.debug(`Pruned session`,{sessionId:t})}catch(e){r.warning(`Failed to prune session`,{sessionId:t,error:V(e)})}let h=s.length-f.length;return r.info(`Session pruning complete`,{prunedCount:m.length,remainingCount:h}),{prunedCount:m.length,prunedSessionIds:m,remainingCount:h,freedBytes:0}}async function xr(e,t,n,r,i){if(n!=null&&i?.isExpired()!==!0&&i?.remainingMs()!==0)try{let a,o=i==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`Session title re-assertion aborted`)),i.signal.addEventListener(`abort`,a,{once:!0})});try{let a=e.session.update({path:{id:t},body:{title:n},...i==null?{}:{signal:i.signal}}),s=await Promise.race([a,...o==null?[]:[o]]);if(i?.isExpired()===!0)return;s.error!=null&&r.warning(`Best-effort session title re-assertion failed`,{sessionId:t,sessionTitle:n,error:m(s.error)})}finally{i!=null&&a!=null&&i.signal.removeEventListener(`abort`,a)}}catch(e){if(i?.isExpired()===!0)return;r.warning(`Best-effort session title re-assertion failed`,{sessionId:t,sessionTitle:n,error:V(e)})}}function Sr(e){let t=[`--- Fro Bot Run Summary ---`,`Event: ${e.eventType}`,`Repo: ${e.repo}`,`Ref: ${e.ref}`,`Run ID: ${e.runId}`,`Cache: ${e.cacheStatus}`,`Duration: ${e.duration}s`];return e.sessionIds.length>0&&t.push(`Sessions used: ${e.sessionIds.join(`, `)}`),e.logicalKey!=null&&t.push(`Logical Thread: ${e.logicalKey}`),e.createdPRs.length>0&&t.push(`PRs created: ${e.createdPRs.join(`, `)}`),e.createdCommits.length>0&&t.push(`Commits: ${e.createdCommits.join(`, `)}`),e.tokenUsage!=null&&t.push(`Tokens: ${e.tokenUsage.input} in / ${e.tokenUsage.output} out`),t.join(` +`)}async function Cr(e,t,n,r){let i=Sr(t);try{let t=await n.session.prompt({path:{id:e},body:{noReply:!0,parts:[{type:`text`,text:i}]}});if(t.error!=null){r.warning(`SDK prompt writeback failed`,{sessionId:e,error:m(t.error)});return}r.info(`Session summary written via SDK`,{sessionId:e})}catch(t){r.warning(`SDK prompt writeback failed`,{sessionId:e,error:V(t)})}}const wr=//;function Tr(e){let t=wr.exec(e),n=t?.[1],r=t?.[2];return n===void 0||r!==`completed`&&r!==`error`?null:{childSessionId:n,state:r}}function Er(e){if(J(e,`type`)!==`text`||wn(e,`synthetic`)!==!0)return null;let t=J(e,`text`);return t===null?null:Tr(t)}const Dr=`agent: working`,Or=/^\d{12}$/;function kr(e){let t=e.value?.trim();return t!=null&&t.length>0?t:void 0}function Ar(e,t){return P(He(`${e}: ${t}`))}function jr(e){let[t,...n]=e,r=n.pop();return r===void 0?t.source:`${[t,...n].map(e=>e.source).join(`, `)} or ${r.source}`}function Mr(e){let t=kr(e);return t===void 0?I(void 0):t===`aws:kms`||t===`AES256`?I(t):Ar(e.source,`must be either 'aws:kms' or 'AES256'`)}function Nr(e,n){let r=Mr(e.sseEncryption);if(r.success===!1)return r;let i=r.data,a=kr(e.bucket),o=e.region.map(kr).find(e=>e!==void 0),s=kr(e.endpoint),c=kr(e.expectedBucketOwner),l=kr(e.sseKmsKeyId),u=kr(e.prefix)??`fro-bot-state`;if(e.enabled){if(a===void 0)return P(He(`${e.bucket.source} is required`));if(o===void 0&&n.region===`required`)return P(He(`${jr(e.region)} is required`));if(s!==void 0){let t=at(s,e.allowInsecureEndpoint);if(t.success===!1)return Ar(e.endpoint.source,t.error.message)}let t=Se(u);if(t.success===!1)return Ar(e.prefix.source,t.error.message);if(u=t.data,c!==void 0&&Or.test(c)===!1)return Ar(e.expectedBucketOwner.source,`must be a 12-digit AWS account ID`)}let d={enabled:e.enabled,bucket:a??``,region:o??``,prefix:u,allowInsecureEndpoint:e.allowInsecureEndpoint,...s===void 0?{}:{endpoint:s},...c===void 0?{}:{expectedBucketOwner:c},...i===void 0?{}:{sseEncryption:i},...l===void 0?{}:{sseKmsKeyId:l}};return e.enabled&&l!==void 0&&t(d)!==`aws:kms`?Ar(e.sseKmsKeyId.source,`requires the server-side encryption mode to be aws:kms; set ${e.sseEncryption.source} to aws:kms`):I(d)}const Pr={todowrite:[`Todo`,`\x1B[33m\x1B[1m`],todoread:[`Todo`,`\x1B[33m\x1B[1m`],bash:[`Bash`,`\x1B[31m\x1B[1m`],edit:[`Edit`,`\x1B[32m\x1B[1m`],glob:[`Glob`,`\x1B[34m\x1B[1m`],grep:[`Grep`,`\x1B[34m\x1B[1m`],list:[`List`,`\x1B[34m\x1B[1m`],read:[`Read`,`\x1B[35m\x1B[1m`],write:[`Write`,`\x1B[32m\x1B[1m`],websearch:[`Search`,`\x1B[2m\x1B[1m`]},Fr=`\x1B[0m`;function Ir(){return U.env.NO_COLOR==null}function Lr(e,t){let[n,r]=Pr[e.toLowerCase()]??[e,`\x1B[36m\x1B[1m`],i=n.padEnd(10,` `);Ir()?U.stdout.write(`\n${r}|${Fr} ${i} ${Fr}${t}\n`):U.stdout.write(`\n| ${i} ${t}\n`)}function Rr(e){U.stdout.write(`\n${e}\n`)}function zr(e){let[t,n]=e.split(`/`);if(t==null||n==null||t.length===0||n.length===0)throw Error(`Invalid repository string: ${e}`);return{owner:t,repo:n}}async function Br(e,t,n,r,i){try{let{owner:a,repo:o}=zr(t),{data:s}=await e.rest.reactions.createForIssueComment({owner:a,repo:o,comment_id:n,content:r});return i.debug(`Created comment reaction`,{commentId:n,content:r,reactionId:s.id}),{id:s.id}}catch(e){return i.warning(`Failed to create comment reaction`,{commentId:n,content:r,error:V(e)}),null}}async function Vr(e,t,n,r){try{let{owner:r,repo:i}=zr(t),{data:a}=await e.rest.reactions.listForIssueComment({owner:r,repo:i,comment_id:n,per_page:100});return a.map(e=>({id:e.id,content:e.content,userLogin:e.user?.login??null}))}catch(e){return r.warning(`Failed to list comment reactions`,{commentId:n,error:V(e)}),[]}}async function Hr(e,t,n,r,i){try{let{owner:a,repo:o}=zr(t);return await e.rest.reactions.deleteForIssueComment({owner:a,repo:o,comment_id:n,reaction_id:r}),i.debug(`Deleted comment reaction`,{commentId:n,reactionId:r}),!0}catch(e){return i.warning(`Failed to delete comment reaction`,{commentId:n,reactionId:r,error:V(e)}),!1}}async function Ur(e,t,n,r,i,a){let{owner:o,repo:s}=zr(t);try{return await e.rest.issues.createLabel({owner:o,repo:s,name:n,color:r,description:i}),a.debug(`Created label`,{name:n,color:r}),!0}catch(e){return e instanceof Error&&`status`in e&&e.status===422?(a.debug(`Label already exists`,{name:n}),!0):(a.warning(`Failed to create label`,{name:n,error:V(e)}),!1)}}async function Wr(e,t,n,r,i){try{let{owner:a,repo:o}=zr(t);return await e.rest.issues.addLabels({owner:a,repo:o,issue_number:n,labels:[...r]}),i.debug(`Added labels to issue`,{issueNumber:n,labels:r}),!0}catch(e){return i.warning(`Failed to add labels to issue`,{issueNumber:n,labels:r,error:V(e)}),!1}}function Gr(e){return e==null?{}:{request:{signal:e}}}async function Kr(e,t,n,r,i,a){try{let{owner:o,repo:s}=zr(t);return await e.rest.issues.removeLabel({owner:o,repo:s,issue_number:n,name:r,...Gr(a)}),i.debug(`Removed label from issue`,{issueNumber:n,label:r}),`removed`}catch(e){return e instanceof Error&&`status`in e&&e.status===404?(i.debug(`Label was not present on issue`,{issueNumber:n,label:r}),`absent`):(i.warning(`Failed to remove label from issue`,{issueNumber:n,label:r,error:V(e)}),`failed`)}}async function qr(e,t,n,r,i,a){return await Kr(e,t,n,r,i,a)!==`failed`}async function Jr(e,t,n,r,i){try{let{owner:r,repo:a}=zr(t),{data:o}=await e.rest.issues.listLabelsOnIssue({owner:r,repo:a,issue_number:n,per_page:100,...Gr(i)});return o.map(e=>e.name)}catch(e){return r.warning(`Failed to list labels on issue`,{issueNumber:n,error:V(e)}),null}}function Yr(e){if(typeof e!=`string`)return null;for(let t of e.split(`,`)){if(t.includes(`rel="last"`)===!1)continue;let e=/[?&]page=(\d+)/.exec(t);if(e?.[1]!=null)return Number(e[1])}return null}async function Xr(e,t,n,r,i,a){try{let{owner:i,repo:o}=zr(t),s=async t=>e.rest.issues.listEvents({owner:i,repo:o,issue_number:n,per_page:100,page:t,...Gr(a)}),c=new Map(r.map(e=>[e.toLowerCase(),e])),l=/* @__PURE__ */ new Map,u=await s(1),d=Yr(u.headers.link)??1,f=d,p=d===1?u:await s(d);for(let e=0;e<3;e++){let t=/* @__PURE__ */ new Map;for(let e of p.data){let n=e.event===`labeled`?c.get(e.label?.name.toLowerCase()??``):void 0;if(n==null)continue;let r=Date.parse(e.created_at);Number.isNaN(r)||r>(t.get(n)??-1/0)&&t.set(n,r)}for(let[e,n]of t)l.has(e)===!1&&l.set(e,n);if(l.size===c.size||f<=1||e+1>=3)break;if(a?.aborted===!0)return null;--f,p=f===1?u:await s(f)}return l}catch(e){return i.warning(`Failed to read issue events`,{issueNumber:n,labels:r,error:V(e)}),null}}async function Zr(e,t,n){try{let{owner:n,repo:r}=zr(t),{data:i}=await e.rest.repos.get({owner:n,repo:r});return i.default_branch}catch(e){return n.warning(`Failed to get default branch`,{repo:t,error:V(e)}),`main`}}const Qr={admin:`OWNER`,maintain:`MEMBER`,write:`COLLABORATOR`,triage:`COLLABORATOR`};async function $r(e,t,n,r,i){try{let{data:a}=await e.rest.repos.getCollaboratorPermissionLevel({owner:t,repo:n,username:r}),o=Qr[a.permission]??null;return i.debug(`Resolved sender permission`,{username:r,permission:a.permission,association:o}),o}catch(e){return i.warning(`Failed to resolve sender permission`,{username:r,error:V(e)}),null}}async function ei(e,t,n){try{let{data:n}=await e.rest.users.getByUsername({username:t});return{id:n.id,login:n.login}}catch(e){return n.debug(`Failed to get user by username`,{username:t,error:V(e)}),null}}const ti={maxComments:50,maxCommits:100,maxFiles:100,maxReviews:100,maxBodyBytes:10240,maxTotalBytes:102400},ni=`…[truncated]`;function ri(e,t){if(e.length===0)return{text:``,truncated:!1};let n=new TextEncoder,r=n.encode(e);if(r.length<=t)return{text:e,truncated:!1};let i=t-n.encode(ni).length;if(i<=0)return{text:ni,truncated:!0};let a=r.slice(0,i),o=new TextDecoder(`utf-8`,{fatal:!1}).decode(a);for(;o.length>0&&o.charCodeAt(o.length-1)===65533;)a=a.slice(0,-1),o=new TextDecoder(`utf-8`,{fatal:!1}).decode(a);return{text:o+ni,truncated:!0}}async function ii(e,t,n){let r=[];for(let t=1;t<=50;t++){let n=await e(t);if(r.push(...n),n.length<100)return r}return n.warning(`REST collection pagination limit reached`,{collection:t,maxPages:50}),r}async function ai(e,t,n,r,i,a){try{let[o,s]=await Promise.all([e.rest.issues.get({owner:t,repo:n,issue_number:r}),ii(async i=>(await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:i})).data,`issue comments`,a)]),c=o.data,l=ri(c.body??``,i.maxBodyBytes),u=s.slice(Math.max(0,s.length-i.maxComments)).map(e=>({id:e.node_id??String(e.id),author:e.user?.login??null,body:e.body??``,createdAt:e.created_at,authorAssociation:e.author_association,isMinimized:!1})),d=(c.labels??[]).filter(e=>typeof e==`object`&&!!e&&`name`in e).map(e=>({name:e.name??``,color:e.color})),f=(c.assignees??[]).map(e=>({login:e?.login??``}));return{type:`issue`,number:c.number,title:c.title,body:l.text,bodyTruncated:l.truncated,state:c.state,author:c.user?.login??null,createdAt:c.created_at,labels:d,assignees:f,comments:u,commentsTruncated:s.length>u.length,totalComments:s.length}}catch(e){return a.warning(`REST issue fallback failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function oi(e,t,n,r,i,a){try{let o=await e.rest.pulls.get({owner:t,repo:n,pull_number:r}),[s,c,l,u]=await Promise.all([ii(async i=>(await e.rest.pulls.listCommits({owner:t,repo:n,pull_number:r,per_page:100,page:i})).data,`pull request commits`,a),e.rest.pulls.listFiles({owner:t,repo:n,pull_number:r,per_page:i.maxFiles+1}),ii(async i=>(await e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:i})).data,`pull request reviews`,a),ii(async i=>(await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:i})).data,`pull request comments`,a)]),d=await e.rest.pulls.listRequestedReviewers({owner:t,repo:n,pull_number:r}).catch(e=>(a.warning(`Failed to fetch requested reviewers, defaulting to empty`,{owner:t,repo:n,number:r,error:V(e)}),{data:{users:[],teams:[]}})),f=o.data,p=ri(f.body??``,i.maxBodyBytes),m=f.base.repo?.owner.login,h=f.head.repo?.owner.login,g=h==null||m!==h,_=u.slice(Math.max(0,u.length-i.maxComments)).map(e=>({id:e.node_id??String(e.id),author:e.user?.login??null,body:e.body??``,createdAt:e.created_at,authorAssociation:e.author_association,isMinimized:!1})),v=s.slice(Math.max(0,s.length-i.maxCommits)).map(e=>({oid:e.sha,message:e.commit.message,author:e.commit.author?.name??null})),y=c.data.slice(0,i.maxFiles).map(e=>({path:e.filename,additions:e.additions,deletions:e.deletions,status:e.status})),b=l.slice(Math.max(0,l.length-i.maxReviews)).map(e=>({author:e.user?.login??null,state:e.state,body:e.body??``,createdAt:e.submitted_at??``,comments:[]})),x=(f.labels??[]).map(e=>({name:e.name??``,color:e.color})),S=(f.assignees??[]).map(e=>({login:e?.login??``})),C=(d.data.users??[]).map(e=>e.login),w=(d.data.teams??[]).map(e=>e.name);return{type:`pull_request`,number:f.number,title:f.title,body:p.text,bodyTruncated:p.truncated,state:f.state,author:f.user?.login??null,createdAt:f.created_at,baseBranch:f.base.ref,headBranch:f.head.ref,isFork:g,labels:x,assignees:S,comments:_,commentsTruncated:u.length>_.length,totalComments:u.length,commits:v,commitsTruncated:s.length>v.length,totalCommits:s.length,files:y,filesTruncated:c.data.length>y.length,totalFiles:c.data.length,reviews:b,reviewsTruncated:l.length>b.length,totalReviews:l.length,authorAssociation:f.author_association,requestedReviewers:C,requestedReviewerTeams:w}}catch(e){return a.warning(`REST pull request fallback failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function si(e,t,n,r,i,a){try{return await e.graphql(` query GetIssue($owner: String!, $repo: String!, $number: Int!, $maxComments: Int!) { repository(owner: $owner, name: $repo) { issue(number: $number) { @@ -30,7 +30,7 @@ import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r, } } } -`,{owner:t,repo:n,number:r,maxComments:i})}catch(e){return a.warning(`GraphQL issue query failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function si(e,t,n,r,i,a,o,s,c){try{return await e.graphql(` +`,{owner:t,repo:n,number:r,maxComments:i})}catch(e){return a.warning(`GraphQL issue query failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function ci(e,t,n,r,i,a,o,s,c){try{return await e.graphql(` query GetPullRequest( $owner: String!, $repo: String!, @@ -118,11 +118,11 @@ import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r, } } } -`,{owner:t,repo:n,number:r,maxComments:i,maxCommits:a,maxFiles:o,maxReviews:s})}catch(e){return c.warning(`GraphQL pull request query failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function ci(e,t,n,r,i,a){let o=await oi(e,t,n,r,i.maxComments,a);if(o==null)return null;let s=o.repository.issue;if(s==null)return a.debug(`Issue not found`,{owner:t,repo:n,number:r}),null;let c=ni(s.body??``,i.maxBodyBytes),l=s.comments.nodes,u=l.slice(Math.max(0,l.length-i.maxComments)),d=s.comments.totalCount>u.length,f=u.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,createdAt:e.createdAt,authorAssociation:e.authorAssociation,isMinimized:e.isMinimized})),p=s.labels.nodes.map(e=>({name:e.name,color:e.color})),m=s.assignees.nodes.map(e=>({login:e.login}));return{type:`issue`,number:s.number,title:s.title,body:c.text,bodyTruncated:c.truncated,state:s.state,author:s.author?.login??null,createdAt:s.createdAt,labels:p,assignees:m,comments:f,commentsTruncated:d,totalComments:s.comments.totalCount}}async function li(e,t,n,r,i,a){let o=await si(e,t,n,r,i.maxComments,i.maxCommits,i.maxFiles,i.maxReviews,a);if(o==null)return null;let s=o.repository.pullRequest;if(s==null)return a.debug(`Pull request not found`,{owner:t,repo:n,number:r}),null;let c=ni(s.body??``,i.maxBodyBytes),l=s.baseRepository?.owner.login,u=s.headRepository?.owner.login,d=u==null||l!==u,f=s.comments.nodes,p=f.slice(Math.max(0,f.length-i.maxComments)),m=s.comments.totalCount>p.length,h=p.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,createdAt:e.createdAt,authorAssociation:e.authorAssociation,isMinimized:e.isMinimized})),g=s.commits.nodes,_=g.slice(Math.max(0,g.length-i.maxCommits)),v=s.commits.totalCount>_.length,y=_.map(e=>({oid:e.commit.oid,message:e.commit.message,author:e.commit.author?.name??null})),b=s.files.nodes.slice(0,i.maxFiles),x=s.files.totalCount>b.length,S=b.map(e=>({path:e.path,additions:e.additions,deletions:e.deletions})),C=s.reviews.nodes,w=C.slice(Math.max(0,C.length-i.maxReviews)),T=s.reviews.totalCount>w.length,E=w.map(e=>({author:e.author?.login??null,state:e.state,body:e.body,createdAt:e.createdAt,comments:e.comments.nodes.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,path:e.path,line:e.line,createdAt:e.createdAt}))})),D=s.labels.nodes.map(e=>({name:e.name,color:e.color})),O=s.assignees.nodes.map(e=>({login:e.login})),k=s.reviewRequests.nodes.map(e=>`login`in e.requestedReviewer?e.requestedReviewer.login:null).filter(e=>e!=null),A=s.reviewRequests.nodes.map(e=>`name`in e.requestedReviewer?e.requestedReviewer.name:null).filter(e=>e!=null);return{type:`pull_request`,number:s.number,title:s.title,body:c.text,bodyTruncated:c.truncated,state:s.state,author:s.author?.login??null,createdAt:s.createdAt,baseBranch:s.baseRefName,headBranch:s.headRefName,isFork:d,labels:D,assignees:O,comments:h,commentsTruncated:m,totalComments:s.comments.totalCount,commits:y,commitsTruncated:v,totalCommits:s.commits.totalCount,files:S,filesTruncated:x,totalFiles:s.files.totalCount,reviews:E,reviewsTruncated:T,totalReviews:s.reviews.totalCount,authorAssociation:s.authorAssociation,requestedReviewers:k,requestedReviewerTeams:A}}const ui={PER_PAGE:100,MAX_PAGES:50};async function di(e,t,n,r,i){i.debug(`Fetching PR diff`,{prNumber:r});let a=[],o=1,s=!1;for(;o<=ui.MAX_PAGES;){let{data:c}=await e.rest.pulls.listFiles({owner:t,repo:n,pull_number:r,per_page:ui.PER_PAGE,page:o}),l=c.map(e=>({filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions,patch:e.patch??null,previousFilename:e.previous_filename??null}));if(a.push(...l),c.lengthui.MAX_PAGES&&(s=!0,i.warning(`PR diff pagination limit reached`,{filesLoaded:a.length,maxPages:ui.MAX_PAGES}))}let c=a.reduce((e,t)=>({additions:e.additions+t.additions,deletions:e.deletions+t.deletions}),{additions:0,deletions:0});return i.debug(`Fetched diff`,{files:a.length,additions:c.additions,deletions:c.deletions,truncated:s}),{files:a,additions:c.additions,deletions:c.deletions,changedFiles:a.length,truncated:s}}function fi(e,t,n){let r=[],i=[];for(let a of e){let e=t.files.find(e=>e.filename===a.path);if(e==null){n.warning(`File not in diff, skipping comment`,{path:a.path}),i.push({comment:a,reason:`file_not_in_diff`});continue}if(e.patch==null){n.warning(`File has no patch, skipping comment`,{path:a.path}),i.push({comment:a,reason:`patch_missing`});continue}let o={path:a.path,body:a.body,line:a.line,side:a.side};a.startLine!=null&&a.startLine!==a.line&&(o.start_line=a.startLine,o.start_side=a.startSide??a.side),r.push(o)}return{ready:r,skipped:i}}async function pi(e,t,n){let{prNumber:r,owner:i,repo:a,event:o,body:s,comments:c,commitSha:l}=t;n.info(`Submitting review`,{prNumber:r,event:o,commentCount:c.length});let u=[],d=0;if(c.length>0){let t=fi(c,await di(e,i,a,r,n),n);u=t.ready,d=t.skipped.length}let{data:f}=await e.rest.pulls.createReview({owner:i,repo:a,pull_number:r,event:o,body:s,...l===void 0?{}:{commit_id:l},comments:u.map(e=>({path:e.path,body:e.body,line:e.line,side:e.side,start_line:e.start_line,start_side:e.start_side}))});return n.info(`Review submitted`,{reviewId:f.id,state:f.state,commentsPosted:u.length,commentsSkipped:d}),{reviewId:f.id,state:f.state??``,commentsPosted:u.length,commentsSkipped:d,url:f.html_url??``}}async function mi(e,t,n,r){if(e.eventType!==`pull_request`)return null;let i=e.target?.number;if(i==null)return r.debug(`No PR number in trigger context, skipping diff collection`),null;let[a,o]=n.split(`/`);if(a==null||o==null)return r.warning(`Invalid repo format, skipping diff collection`,{repo:n}),null;try{let e=await di(t,a,o,i,r),n={changedFiles:e.changedFiles,additions:e.additions,deletions:e.deletions,truncated:e.truncated,files:e.files.slice(0,50).map(e=>({filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions}))};return r.debug(`Collected diff context`,{files:n.changedFiles,additions:n.additions,deletions:n.deletions,truncated:n.truncated}),n}catch(e){return r.warning(`Failed to fetch PR diff`,{error:V(e)}),null}}async function hi(e){let{logger:t,octokit:n,triggerContext:r,botLogin:i}=e,{repo:a,ref:o,actor:s,runId:c,target:l,author:u,commentBody:d,commentId:f}=r,p=`${a.owner}/${a.repo}`,m=l?.kind===`issue`||l?.kind===`pr`?l.kind:null,h=l!=null&&l.kind!==`manual`?l.number:null,g=l?.title??null,_=u?.login??null,v=await mi(r,n,p,t),y=await gi(n,a.owner,a.repo,h,m,t),b=y?.type===`pull_request`?y:null,x=b?.authorAssociation??null,S=i!=null&&b!=null&&b.requestedReviewers.includes(i);return t.info(`Collected agent context`,{eventName:r.eventName,repo:p,issueNumber:h,issueType:m,hasComment:d!=null,hasDiffContext:v!=null,hasHydratedContext:y!=null}),{eventName:r.eventName,repo:p,ref:o,actor:s,runId:String(c),issueNumber:h,issueTitle:g,issueType:m,commentBody:d,commentAuthor:_,commentId:f,defaultBranch:await Xr(n,p,t),diffContext:v,hydratedContext:y,authorAssociation:x,isRequestedReviewer:S}}async function gi(e,t,n,r,i,a){if(r==null||i==null)return null;let o=ei;return i===`issue`?await ci(e,t,n,r,o,a)??ii(e,t,n,r,o,a):await li(e,t,n,r,o,a)??ai(e,t,n,r,o,a)}function _i(e){return e===`turn_failed_retryable`}function vi(e,t){return e.find(e=>e.source===`provider`)??e.find(e=>e.source===`session`)??e.find(e=>e.source===`submission`)??t??null}function yi(e,t){return e.source===`provider`?`turn_failed_terminal`:e.source===`session`||t.accepted?e.llmError?.retryable===!0?`turn_failed_retryable`:`turn_failed_terminal`:`submit_failed`}function bi(e){switch(e.kind){case`deadline`:return{outcome:`timeout`,message:`Attempt did not settle before the execution deadline`};case`cancelled`:return{outcome:`turn_failed_terminal`,message:e.reason??`Attempt observation was cancelled`};case`watchdog`:return{outcome:`turn_failed_terminal`,message:e.message};case`failure-observed`:return{outcome:`turn_failed_terminal`,message:`Attempt failed with no recorded failure detail`};case`completion-observed`:return{outcome:`completed`,message:``}}}function xi(e){if(e.success===!0&&(e.outcome!==`completed`||e.llmError!==null||e.settlement.kind!==`completion-observed`))throw Error(`attempt-outcome invariant violated: success implies outcome=completed, llmError=null, settlement.kind=completion-observed`);return e}function Si(e,t,n){let r=vi(e.failures,t);if(r!=null){let t=yi(r,n);return xi({success:!1,error:r.message,llmError:r.llmError,classificationPath:r.classificationPath,outcome:t,settlement:e.settlement,shouldRetry:_i(t)})}if(e.settlement.kind===`completion-observed`)return xi({success:!0,error:null,llmError:null,classificationPath:void 0,outcome:`completed`,settlement:e.settlement,shouldRetry:_i(`completed`)});let i=bi(e.settlement);return xi({success:!1,error:i.message,llmError:null,classificationPath:void 0,outcome:i.outcome,settlement:e.settlement,shouldRetry:_i(i.outcome)})}function Ci(e){try{let t=new URL(e);return t.hostname===`github.com`||t.hostname===`api.github.com`}catch{return!1}}function wi(e){try{let t=new URL(e);return t.hostname===`github.com`&&(t.pathname.startsWith(`/user-attachments/assets/`)||t.pathname.startsWith(`/user-attachments/files/`))}catch{return!1}}function Ti(e){let t=e.match(/https:\/\/github\.com\/[a-zA-Z0-9-]+\/[\w.-]+\/(?:pull|issues)\/\d+(?:#issuecomment-\d+)?/g)??[];return[...new Set(t)].filter(Ci)}function Ei(e){let t=/\[[\w-]+\s+([a-f0-9]{7,40})\]/g,n=[];for(let r of e.matchAll(t))r[1]!=null&&n.push(r[1]);return[...new Set(n)]}function Di(){return{state:`unarmed`,revision:0,latestRootUserMessageId:null,idleCandidateRevision:null,pendingParentMessageId:null,restConfirmationRequired:!1}}function Oi(e){e.state=`awaiting-activity`,e.idleCandidateRevision=null}function $(e,t){if(e.state===`unarmed`)return;let n=e.state===`idle-candidate`;e.state=`active`,e.idleCandidateRevision=null,e.revision+=1,n&&(e.restConfirmationRequired=!0),t!=null&&(e.latestRootUserMessageId=t)}function ki(e){e.state!==`unarmed`&&(e.state=`idle-candidate`,e.idleCandidateRevision=e.revision)}function Ai(e){return e.state===`idle-candidate`&&e.idleCandidateRevision===e.revision&&e.pendingParentMessageId==null&&!e.restConfirmationRequired}function ji(e,t){(t==null||e.pendingParentMessageId!==t)&&($(e,t??void 0),t!=null&&(e.pendingParentMessageId=t))}function Mi(e,t){t!=null&&e.pendingParentMessageId===t&&(e.pendingParentMessageId=null)}function Ni(e){e.restConfirmationRequired=!0}function Pi(e){e.restConfirmationRequired=!1}function Fi(e){let t=zn(e);return t===null?null:Bn(t)}function Ii(e,t){let n=Yi(e);return{classification:Bn(Rn(e,{detail:n,model:t??void 0})),detail:n}}function Li(e){return{error:e.errorInfo,terminal:e.stop||e.kind===`context-overflow`}}function Ri(e,t){return t.aborted||e instanceof Error&&e.name===`AbortError`}function zi(e,t,n,r,i){let a=n?.terminalProviderError;if(a!=null)return{error:a,terminal:!0};let o=e??t;return e?.terminal===!0?o=e:t.terminal&&(o=t),n!=null&&o.terminal?(n.terminalProviderError=o.error,n.sessionError=o.error.message,i!=null&&(n.classificationPath=i),n.genericError=void 0,o):(n!=null&&n.sessionError==null&&r!=null&&(n.sessionError=r,n.genericError=o.error,i!=null&&(n.classificationPath=i)),o)}function Bi(e){let t=e.terminalProviderError??e.genericError;return t==null?null:{error:t,terminal:e.terminalProviderError!=null,classificationPath:e.classificationPath}}function Vi(e,t){let n=J(e,`type`);if(n===`sync`){let n=J(e,`name`)?.replace(/\.\d+$/,``)??`sync`,r=Q(X(e,`data`));t.debug(`Server event`,{eventKind:n,sessionID:r})}else{let r=X(e,`properties`),i=Q(r)??Q(X(r,`part`));t.debug(`Server event`,i==null?{eventType:n}:{eventType:n,sessionId:i})}}function Hi(e,t,n,r,i,a){let o=Ti(t);if(e.includes(`gh pr create`)){let e=o.filter(e=>e.includes(`/pull/`)&&!e.includes(`#`));for(let t of e)n.includes(t)||n.push(t)}if(e.includes(`git commit`)){let e=Ei(t);for(let t of e)r.includes(t)||r.push(t)}if(e.includes(`gh issue comment`)||e.includes(`gh pr comment`)){let e=o.filter(e=>e.includes(`#issuecomment`));for(let t of e)a!=null&&a.includes(t)||(a?.push(t),i())}}function Ui(e){if(e.size===0)return{tokens:null,cost:null};let t=0,n=0,r=0,i=0,a=0,o=null;for(let s of e.values())t+=s.tokens.input,n+=s.tokens.output,r+=s.tokens.reasoning,i+=s.tokens.cache.read,a+=s.tokens.cache.write,s.cost!==null&&(o=(o??0)+s.cost);return{tokens:{input:t,output:n,reasoning:r,cache:{read:i,write:a}},cost:o}}function Wi(e,t){return new Map([...e??[],...t??[]])}function Gi(e,t){let n=Wi(t.usageByMessage,e.usageByMessage);if(n.size===0)return{...e,model:e.model??t.model};let{tokens:r,cost:i}=Ui(n);return{...e,tokens:r,cost:i,model:e.model??t.model,usageByMessage:n}}const Ki=`Unknown session error`;function qi(e,t){let n=J(e,t);if(n==null||n.length===0)return null;let r=n.replaceAll(/[\r\n]+/g,`; `).trim();return r.length===0?null:r.length<=256?r:`${r.slice(0,253)}...`}function Ji(e,t,n){return qi(e,n)??qi(t,n)}function Yi(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e)return Ki;let t=X(e,`data`),n=Ji(e,t,`provider`),r=Ji(e,t,`name`),i=Ji(e,t,`code`),a=Y(e,`status`)??Y(e,`statusCode`)??Y(t,`status`)??Y(t,`statusCode`),o=[];return n!=null&&o.push(`provider=${n}`),r!=null&&o.push(`name=${r}`),a!=null&&Number.isFinite(a)&&o.push(`status=${a}`),i!=null&&o.push(`code=${i}`),o.length>0?o.join(`; `):Ki}function Xi(e){return e===`message.part.delta`||e?.startsWith(`session.next.`)===!0}function Zi(e,t,n){return e===null?!1:e===t||n!==void 0&&n.isTracked(e)}async function Qi(e,t,n,r,i,a,o,s,c){let l=``,u=/* @__PURE__ */ new Set,d=/* @__PURE__ */ new Map,f=null,p=[],m=[],h=[],g=0,_=null,v=()=>_?.error??null,y,b=/* @__PURE__ */ new Map;async function x(){for await(let v of e){if(n.aborted)break;Vi(v,r);let e=Gn(v),x=Kn(v);if(e===`server.connected`&&c?.(),e===`permission.asked`){let e=qn(v);if(e===null)continue;let n=J(x,`id`),i=J(x,`permission`)??`unknown`,a=X(x,`patterns`),s=Array.isArray(a)?a.filter(e=>typeof e==`string`):[],c={sessionId:t,eventSessionID:e,permission:i,patterns:s};if(n==null){r.warning(`OpenCode permission request missing request id`,c);continue}let l={requestID:n,sessionID:e,permission:i,patterns:s};o===void 0?r.warning(`OpenCode permission request observed but no responder is configured`,c):(r.warning(`Rejecting OpenCode permission request`,c),o(l).catch(e=>{r.warning(`Failed to reject OpenCode permission request`,{...c,error:V(e)})}))}else if(i?.currentTurnArmed!==!1){if(i!=null&&Xi(e)){let e=qn(v);Zi(e,t,s)&&(i.firstMeaningfulEventReceived=!0,e===t&&i.rootFreshness!=null&&$(i.rootFreshness))}if(e===`message.part.delta`){let e=qn(v);if(Zi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=J(x,`partID`),r=X(x,`delta`),a=J(r,`type`),o=J(r,`text`);n!==null&&u.has(n)||(a===`text`&&o!=null?l+=o:typeof r==`string`&&J(x,`field`)===`text`&&(l+=r))}}else if(e===`session.next.text.delta`){let e=qn(v);if(Zi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=X(x,`delta`),r=typeof n==`string`?n:J(n,`text`)??null;r!=null&&(l+=r)}}else if(e===`session.next.tool.called`){let e=qn(v);if(Zi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=J(x,`callID`),a=J(x,`tool`),o=X(x,`input`);n!=null&&a!=null&&(b.set(n,{tool:a,input:o}),r.debug(`Tool called`,{callID:n,tool:a}))}}else if(e===`session.next.tool.success`){let e=qn(v);if(Zi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=J(x,`callID`);if(n===null)continue;let r=b.get(n);if(r!==void 0){b.delete(n);let{tool:e,input:t}=r;if(Ir(e,J(X(x,`structured`),`title`)??J(t,`title`)??(e.toLowerCase()===`bash`?String(X(t,`command`)??X(t,`cmd`)??e):e)),e.toLowerCase()===`bash`){let e=String(X(t,`command`)??X(t,`cmd`)??``),n=X(x,`content`);Hi(e,Array.isArray(n)?n.map(e=>J(e,`type`)===`text`?J(e,`text`)??``:``).join(` -`):``,p,m,()=>{g++},h)}}}}else if(e===`message.part.updated`){let e=X(x,`part`),n=Q(x)??Q(e);if(!Zi(n,t,s))continue;if(i!=null&&(i.firstMeaningfulEventReceived=!0),n===t&&i?.rootFreshness!=null){let t=J(e,`messageID`);(t==null||t!==i.rootFreshness.pendingParentMessageId)&&$(i.rootFreshness)}let a=J(e,`type`);if(a===`reasoning`){let t=J(e,`id`);t!==null&&u.add(t)}else if(a===`text`){let a=J(e,`text`),o=n===t?Tr(e):null;if(o===null)a!=null&&(l=a),Y(X(e,`time`),`end`)!=null&&(Lr(l),l=``);else{if(i?.rootFreshness!=null){let t=J(e,`messageID`);ji(i.rootFreshness,t)}s?.isTracked(o.childSessionId)===!0&&(s.settle(o.childSessionId),r.info(`Background task completion turn observed — settled ownership entry`,{sessionId:t,childSessionId:o.childSessionId,state:o.state}))}}else if(a===`tool`){let n=X(e,`state`);if(J(n,`status`)===`completed`){let i=J(e,`tool`)??``;if(s!==void 0&&i===`task`){let e=X(n,`metadata`),i=J(e,`jobId`),a=wn(e,`background`);if(i!==null&&a===!0){let e=J(n,`title`)??`background task`;s.adopt(i,e),r.info(`Background dispatch observed — adopted into ownership ledger`,{sessionId:t,jobId:i,label:e})}}if(Ir(i,String(X(n,`title`)??``)),i.toLowerCase()===`bash`){let e=X(n,`input`);Hi(String(X(e,`command`)??X(e,`cmd`)??``),String(X(n,`output`)??``),p,m,()=>{g++},h)}}}}else if(e===`message.updated`){let e=X(x,`info`),n=Q(x)??Q(e),a=X(e,`tokens`);if(Zi(n,t,s)&&J(e,`role`)===`assistant`&&a!=null){i!=null&&(i.firstMeaningfulEventReceived=!0),n===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let o={input:Y(a,`input`)??0,output:Y(a,`output`)??0,reasoning:Y(a,`reasoning`)??0,cache:{read:Y(X(a,`cache`),`read`)??0,write:Y(X(a,`cache`),`write`)??0}},s=Y(e,`cost`),c=J(e,`id`)??`unidentified:${n}`;d.set(c,{tokens:o,cost:s}),f=J(e,`modelID`),r.debug(`Token usage received`,{messageKey:c,tokens:o,model:f,cost:s})}}else if(e===`session.status`){let e=Q(x);if(Zi(e,t,s)){let n=X(x,`status`),o=J(n,`type`);e===t&&(o===`busy`||o===`retry`)&&i?.rootFreshness!=null&&$(i.rootFreshness);let c=Fi(n);if(c!=null){let n=Li(c);if(e!==t){r.error(`Session status retry classified as terminal provider error on a descendant session`,{sessionId:t,type:n.error.type}),s?.markUnknown(e);continue}if(a?.isExpired()===!0&&i?.terminalProviderError==null)continue;r.error(`Session status retry classified as terminal provider error`,{sessionId:t,type:n.error.type}),y=c.classificationPath,_=zi(_,n,i,void 0,y)}}}else if(e===`session.error`){let e=Q(x);if(Zi(e,t,s)){let n=X(x,`error`);if(r.error(`Session error received`,{sessionType:typeof n}),e!==t){e!=null&&s?.markUnknown(e);continue}let{classification:o,detail:c}=Ii(n,f),l=Li(o);if(l.terminal){if(a?.isExpired()===!0&&i?.terminalProviderError==null)continue;o.kind===`model-not-found`?r.error(`Session error classified as model not found`,{sessionId:t,error:l.error.message}):r.error(`Session error classified as terminal provider error`,{sessionId:t,type:l.error.type}),y=o.classificationPath,_=zi(_,l,i,void 0,y)}else _?.terminal!==!0&&(y??=o.classificationPath,_=zi(_,l,i,c,y))}}else e===`session.idle`&&Q(x)===t&&(i!=null&&(i.sessionIdle=!0,i.currentTurnTerminalSignalReceived=!0,i.rootFreshness!=null&&ki(i.rootFreshness)),l.length>0&&(Lr(l),l=``))}}}let S;function C(e,n){if(S=n==null?{message:e}:{message:e,errorName:n},r.warning(`Event stream discontinuity — observation channel closed unexpectedly`,{sessionId:t,error:e}),i?.rootFreshness!=null&&Ni(i.rootFreshness),s!==void 0){let e=s.snapshot().filter(e=>e.state===`outstanding`);for(let t of e)s.markUnknown(t.sessionId);r.warning(`Event stream discontinuity — marked outstanding owned entries unknown`,{sessionId:t,unknownCount:e.length})}}try{await x(),n.aborted||C(`Event stream ended unexpectedly`)}catch(e){Ri(e,n)||C(V(e),e instanceof Error?e.name:void 0)}l.length>0&&Lr(l);let w=Ui(d);return{tokens:w.tokens,model:f,cost:w.cost,usageByMessage:d,prsCreated:p,commitsCreated:m,commentsPostedUrls:h,commentsPosted:g,llmError:v(),classificationPath:y,...S==null?{}:{discontinuity:S}}}function $i(e,t){let n=[],r=[],i=[],a=0;for(let o of e)if(J(o,`type`)===`tool`){let e=X(o,`state`);if(J(e,`status`)===`completed`&&(J(o,`tool`)??``).toLowerCase()===`bash`){let o=X(e,`input`),s=String(X(o,`command`)??X(o,`cmd`)??``),c=String(X(e,`output`)??``);t.debug(`Artifact scan: bash tool part`,{command:s.slice(0,80)}),Hi(s,c,n,r,()=>{a++},i)}}return{prsCreated:n,commitsCreated:r,commentsPostedUrls:i,commentsPosted:a}}const ea=5e3,ta=1e4;function na(e){return e==null?null:Bi(e)}function ra(e){let t=na(e);return t==null?[]:[{source:`session`,message:t.error.message,llmError:t.error,classificationPath:t.classificationPath}]}function ia(e){return{settlement:{kind:`completion-observed`},failures:ra(e)}}function aa(e){return{settlement:{kind:`failure-observed`},failures:[{source:`provider`,message:e.message,llmError:e}]}}function oa(e,t){let n=na(t);return{settlement:{kind:`failure-observed`},failures:[{source:`session`,message:e,llmError:n?.error??null,classificationPath:n?.classificationPath}]}}function sa(e){return{settlement:{kind:`deadline`},failures:ra(e)}}function ca(e){return{settlement:{kind:`cancelled`,reason:`Aborted`},failures:ra(e)}}function la(e,t){return{settlement:{kind:`watchdog`,message:e},failures:ra(t)}}function ua(e){return e!==void 0&&e.isDrainComplete()===!1}async function da(e,t){return t?.aborted===!0?Promise.resolve():new Promise(n=>{let r,i,a=()=>{r!=null&&clearTimeout(r),t!=null&&i!=null&&t.removeEventListener(`abort`,i),n()};r=setTimeout(a,e),t!=null&&(i=a,t.addEventListener(`abort`,i,{once:!0}))})}async function fa(e,t,n,r){let i,a;try{let o=r==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`${n} aborted`)),r.addEventListener(`abort`,a,{once:!0})});return await Promise.race([e,new Promise((e,r)=>{i=setTimeout(()=>{r(/* @__PURE__ */ Error(`${n} timed out after ${t}ms`))},t)}),...o==null?[]:[o]])}finally{i!=null&&clearTimeout(i),r!=null&&a!=null&&r.removeEventListener(`abort`,a)}}async function pa(e,t,n,r){let i=async()=>fa(e(),Math.min(ea,r?.remainingMs()??ea),t,n);return r==null?i():r.run(i,t)}function ma(e){let t=er(),n=/* @__PURE__ */ new Map;for(let r of e.snapshot())n.set(r.sessionId,r.state),t.adopt(r.sessionId,r.label),r.state===`unknown`&&t.markUnknown(r.sessionId),r.state===`settled`&&t.settle(r.sessionId);return{ledger:t,baselineStates:n}}function ha(e,t){let n=new Map(e.snapshot().map(e=>[e.sessionId,e.state]));for(let r of t.ledger.snapshot()){let i=t.baselineStates.get(r.sessionId);i!==void 0&&n.get(r.sessionId)===i&&(r.state===`settled`?e.settle(r.sessionId):r.state===`unknown`&&e.markUnknown(r.sessionId))}}function ga(e){let{client:t,directory:n,sessionId:r,ledger:i,logger:a,signal:o,deadline:s}=e,c=Zn(t,n),l=null,u=!1;return{reconcileIfDue:async()=>{if(u||i.snapshot().length===0)return!1;let e=Date.now();if(l==null)return l=e+ta,!1;if(e{u=!1});try{await pa(async()=>n,`ledger reconciliation`,o,s),ha(i,t)}catch(e){a.debug(`Ledger reconciliation did not finish within its bound; treating as no progress`,{sessionId:r,error:V(e)})}return!0}}}async function _a(e,t,n,r,i,a,o){if(r?.baselineMessageIds==null)return null;if(typeof e.session.messages!=`function`)return i.debug(`session.messages() unavailable; skipping message activity poll`,{sessionId:t}),null;let s=r.rootFreshness,c=s?.revision,l=await pa(async()=>e.session.messages({path:{id:t},query:{directory:n},signal:a}),`session.messages()`,a,o),u=s!=null&&s.revision!==c,d=Array.isArray(l.data)?l.data:[],f=null,p=null,m=null,h=null;for(let e of d){let t=X(e,`info`),n=J(t,`id`);if(n==null)continue;let i=J(t,`role`);i===`user`&&(m=n,h==null&&!r.baselineMessageIds.has(n)&&(h=n)),!r.baselineMessageIds.has(n)&&i===`assistant`&&(f=e,p=t)}if(!u&&s!=null&&m!=null&&m!==h&&!r.baselineMessageIds.has(m)&&s.latestRootUserMessageId!==m&&ji(s,m),p==null)return r.completedAssistantMessageId=void 0,null;let g=J(p,`id`);if(g==null)return r.completedAssistantMessageId=void 0,null;let _=X(p,`error`);if(_!=null){r.firstMeaningfulEventReceived=!0,r.completedAssistantMessageId=void 0;let{classification:e}=Ii(_,J(p,`modelID`)),n=Li(e);i.error(`Completed assistant message carries an error — classified as failure evidence`,{sessionId:t,messageId:g,type:n.error.type});let a=zi(Bi(r),n,r,n.error.message,e.classificationPath).error;return{settlement:{kind:`failure-observed`},failures:[{source:`session`,message:a.message,llmError:a,classificationPath:r.classificationPath}]}}if(u||(r.firstMeaningfulEventReceived=!0,Y(X(p,`time`),`completed`)==null))return r.completedAssistantMessageId=void 0,null;let v=J(p,`finish`);if(v==null||v===`tool-calls`||v===`unknown`)return r.completedAssistantMessageId=void 0,null;let y=J(p,`parentID`);if(m!=null&&y!==m)return s!=null&&s.latestRootUserMessageId!==m&&ji(s,m),r.completedAssistantMessageId=void 0,null;if(s!=null&&(s.latestRootUserMessageId!=null&&y!==s.latestRootUserMessageId||s.pendingParentMessageId!=null&&(y==null||y!==s.pendingParentMessageId))||Qn(X(f,`parts`))||s!=null&&s.revision!==c)return r.completedAssistantMessageId=void 0,null;let b=s?.revision??null,x=r.completedAssistantMessageId;return x==null||x.messageId!==g||x.revision!==b?(r.completedAssistantMessageId={messageId:g,revision:b},i.debug(`Completed assistant message observed; waiting for confirmation poll`,{sessionId:t,messageId:g,revision:b}),null):(i.debug(`Qualified completed assistant message observed — awaiting status corroboration`,{sessionId:t,messageId:g}),{messageId:g,revision:s?.revision??null,answeredParentId:y})}async function va(e,t,n,i,a,o=r,s,c,l){let u=Date.now(),d=0,f=null,p=l===void 0?null:ga({client:e,directory:n,sessionId:t,ledger:l,logger:a,signal:i,deadline:c});for(;!i.aborted;){let r=!1,m=s?.terminalProviderError;if(m!=null)return aa(m);if(c?.isExpired()===!0)return sa(s);try{let e=async()=>{await da(500,i)};c==null?await e():await c.run(e,`poll interval`)}catch{let e=s?.terminalProviderError;return e==null?sa(s):aa(e)}if(i.aborted){let e=s?.terminalProviderError;return e==null?c?.isExpired()===!0?sa(s):ca(s):aa(e)}let h=s?.sessionError;f==null&&h!=null&&(f=h);let g=s?.terminalProviderError;if(g!=null)return aa(g);let _=f;if(_==null)d=0;else{if(d++,d>=3)return a.error(`Session error persisted through grace period`,{sessionId:t,error:_,graceCycles:d}),oa(`Session error: ${_}`,s);continue}let v=s?.rootFreshness;if(v==null?s?.sessionIdle===!0&&s.currentTurnTerminalSignalReceived===!0:Ai(v)){if(ua(l))r=!0,a.debug(`Session idle detected via event stream but owned work outstanding — deferring completion`,{sessionId:t,outstanding:l?.outstanding()});else if(c?.isExpired()===!0)return sa(s);else return a.debug(`Session idle detected via event stream`,{sessionId:t}),ia(s)}let y=Date.now()-u;if(c==null&&o>0&&y>=o)return a.warning(`Poll timeout reached`,{elapsedMs:y,maxPollTimeMs:o}),la(`Poll timeout after ${y}ms`,s);try{let o;try{o=await _a(e,t,n,s,a,i,c)}catch(e){throw s!=null&&(s.completedAssistantMessageId=void 0),e}if(o!=null&&`settlement`in o)return o;let d=s?.rootFreshness?.revision,f=((await pa(async()=>e.session.status({query:{directory:n},signal:i}),`session.status()`,i,c)).data??{})[t],p=s?.rootFreshness,m=p!=null&&p.revision!==d,h=p!=null&&p.pendingParentMessageId!=null,g=o!=null&&p!=null&&o.revision!==p.revision,_=o!=null&&p!=null&&p.pendingParentMessageId!=null&&o.answeredParentId===p.pendingParentMessageId,v=f==null||f.type===`idle`;if(o!=null&&v&&!m&&!g&&(!h||_)&&o!=null){if(ua(l))r=!0,a.debug(`Qualified completed-assistant message observed but owned work outstanding — deferring completion`,{sessionId:t,outstanding:l?.outstanding()});else if(c?.isExpired()===!0)return sa(s);else return p!=null&&(Mi(p,o.answeredParentId),Pi(p)),s!=null&&(s.currentTurnTerminalSignalReceived=!0),a.debug(`Session completion detected via qualified completed assistant message`,{sessionId:t,messageId:o.messageId}),ia(s)}else o!=null&&s!=null&&(s.completedAssistantMessageId=void 0);if(f==null)a.debug(`Session status not found in poll response`,{sessionId:t});else if(f.type===`idle`){if(p==null?s==null||s.currentTurnTerminalSignalReceived===!0:p.state===`idle-candidate`&&p.idleCandidateRevision===p.revision){if(m||h)a.debug(`Session idle observed via polling but invalidated by renewed root activity since the request was issued`,{sessionId:t});else if(ua(l))r=!0,a.debug(`Session idle detected via polling but owned work outstanding — deferring completion`,{sessionId:t,outstanding:l?.outstanding()});else if(c?.isExpired()===!0)return sa(s);else return p!=null&&Pi(p),a.debug(`Session idle detected via polling`,{sessionId:t}),ia(s)}else a.debug(`Session idle detected before terminal signal; continuing watchdog`,{sessionId:t})}else if(f.type===`retry`){s?.rootFreshness!=null&&$(s.rootFreshness);let e=Fi(f);if(e!=null){let n=Li(e);return c?.isExpired()===!0&&s?.terminalProviderError==null?sa(s):(a.error(`Session status retry classified as terminal provider error via poll`,{sessionId:t,type:f.type}),s!=null&&zi(null,n,s,void 0,e.classificationPath),aa(s?.terminalProviderError??n.error))}a.debug(`Session status`,{sessionId:t,type:f.type})}else f.type===`busy`&&s?.rootFreshness!=null&&$(s.rootFreshness),a.debug(`Session status`,{sessionId:t,type:f.type});if(s!=null&&!s.firstMeaningfulEventReceived){let e=Date.now()-u;if(e>=9e4)return a.error(`No agent activity detected — server may have crashed during prompt processing`,{elapsedMs:e,sessionId:t}),la(`No agent activity detected after ${e}ms — server may have crashed during prompt processing`,s)}}catch(e){a.debug(`Poll request failed`,{error:V(e)})}r&&p!=null&&await p.reconcileIfDue()&&s?.rootFreshness!=null&&Ni(s.rootFreshness)}let m=s?.terminalProviderError;return m==null?c?.isExpired()===!0?sa(s):ca(s):aa(m)}async function ya(e,t=2e3,n){if(n?.aborted===!0)return;let r,i,a=n==null?null:new Promise(e=>{i=()=>e(),n.addEventListener(`abort`,i,{once:!0})});try{await Promise.race([e,new Promise(e=>{r=setTimeout(e,t)}),...a==null?[]:[a]])}finally{r!=null&&clearTimeout(r),n!=null&&i!=null&&n.removeEventListener(`abort`,i)}}const ba=1e4;function xa(e){let t=/* @__PURE__ */ Error(`${e} exceeded the execution deadline`);return t.name=`DeadlineExceededError`,t}function Sa(e,t){let n=new AbortController,r=e>0?Date.now()+e:null,i=null,a=!1,o=()=>{a||(a=!0,t.warning(`Execution timeout reached`,{timeoutMs:e}),n.abort())},s=()=>a?!0:r!=null&&Date.now()>=r&&(o(),!0);return r!=null&&(i=setTimeout(o,e)),{timeoutMs:e,signal:n.signal,isExpired:s,isTimedOut:()=>a,remainingMs:()=>{if(r==null)return 1/0;let e=Math.max(0,r-Date.now());return e===0&&o(),e},run:async(e,t)=>{if(s())throw xa(t);if(r==null)return e();let i=null,a=new Promise(e=>{i=()=>e({source:`deadline`}),n.signal.addEventListener(`abort`,i,{once:!0})}),o=Promise.resolve().then(e).then(e=>({source:`operation`,success:!0,value:e}),e=>({source:`operation`,success:!1,error:e}));try{let e=await Promise.race([o,a]);if(e.source===`deadline`)throw xa(t);if(e.success)return e.value;throw e.error}finally{i!=null&&n.signal.removeEventListener(`abort`,i)}},dispose:()=>{i!=null&&clearTimeout(i)}}}function Ca(e){if(typeof e!=`object`||!e)return null;let t=Object.getOwnPropertyDescriptor(e,`id`);return typeof t?.value==`string`?t.value:null}const wa=5e3;function Ta(e,t){return[...e,...t.filter(t=>!e.includes(t))]}async function Ea(e,t,n,r){let i,a;try{let o=r==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`${n} aborted`)),r.addEventListener(`abort`,a,{once:!0})});return await Promise.race([e,new Promise((e,r)=>{i=setTimeout(()=>{r(/* @__PURE__ */ Error(`${n} timed out after ${t}ms`))},t)}),...o==null?[]:[o]])}finally{i!=null&&clearTimeout(i),r!=null&&a!=null&&r.removeEventListener(`abort`,a)}}async function Da(e,t,n,r,i){if(typeof e.session.messages!=`function`)return null;try{let r=async()=>Ea(e.session.messages({path:{id:t},query:{directory:n},signal:i?.signal}),Math.min(wa,i?.remainingMs()??wa),`baseline session.messages()`,i?.signal),a=i==null?await r():await i.run(r,`baseline session.messages()`),o=Array.isArray(a.data)?a.data:[];return new Set(o.flatMap(e=>Ca(X(e,`info`))??[]))}catch(e){return r.debug(`Unable to read baseline session messages; disabling message activity fallback`,{sessionId:t,error:V(e)}),null}}async function Oa(e,t,n,r,i,a){if(r==null||typeof e.session.messages!=`function`)return null;try{let i=async()=>Ea(e.session.messages({path:{id:t},query:{directory:n},signal:a?.signal}),Math.min(wa,a?.remainingMs()??wa),`completed assistant session.messages()`,a?.signal),o=a==null?await i():await a.run(i,`completed assistant session.messages()`),s=Array.isArray(o.data)?o.data:[],c=null,l=-1/0;for(let e of s){let t=X(e,`info`),n=J(t,`id`);if(n==null||r.has(n)||J(t,`role`)!==`assistant`)continue;let i=X(t,`time`);if(Y(i,`completed`)==null)continue;let a=Y(i,`created`)??0;(c==null||a>=l)&&(c=e,l=a)}if(c!=null){let e=X(c,`parts`);if(Array.isArray(e))return Array.from(e,e=>e)}return null}catch(e){return i.debug(`Unable to read completed assistant message parts`,{sessionId:t,error:V(e)}),null}}function ka(e,t){let n=Ta(e.commentsPostedUrls??[],t.commentsPostedUrls??[]);return{...e,prsCreated:Ta(e.prsCreated,t.prsCreated),commitsCreated:Ta(e.commitsCreated,t.commitsCreated),commentsPostedUrls:n,commentsPosted:n.length>0?n.length:Math.max(e.commentsPosted,t.commentsPosted)}}const Aa=[5e3,15e3,3e4,6e4];async function ja(e){if(e==null)return null;try{let{createOpencodeClient:t}=await import(`./v2-DNsUmXx2.js`);return t({baseUrl:e})}catch{return null}}async function Ma(e,t,n,r,i,a,o){let s=a==null?await ja(e):await a.run(async()=>ja(e),`v2 client creation`);if(s==null)return{kind:`fallback-to-poll`};try{let e=a==null?await s.v2.session.wait({sessionID:t},{signal:i}):await a.run(async()=>s.v2.session.wait({sessionID:t},{signal:i}),`v2 session wait`);if(e.error!=null)return r.debug(`v2.session.wait() returned error, relying on poll watchdog`,{sessionId:t,error:m(e.error)}),{kind:`fallback-to-poll`};let c=()=>n.rootFreshness==null?n.currentTurnTerminalSignalReceived===!0:Ai(n.rootFreshness),l=Date.now()+500;for(;!c()&&Date.now(){await da(10,i)};a==null?await e():await a.run(e,`v2 terminal grace wait`)}if(!c())return r.debug(`v2.session.wait() resolved without a fresh terminal signal — deferring to poll watchdog`,{sessionId:t}),{kind:`fallback-to-poll`};if(n.terminalProviderError!=null){r.debug(`v2.session.wait() resolved after terminal provider error — reporting failure, not success`,{sessionId:t});let e=n.terminalProviderError;return{settlement:{kind:`failure-observed`},failures:[{source:`provider`,message:e.message,llmError:e}]}}if(ua(o))return r.debug(`v2.session.wait() resolved with terminal signal but owned work outstanding — deferring to poll watchdog`,{sessionId:t,outstanding:o?.outstanding()}),{kind:`fallback-to-poll`};r.debug(`v2.session.wait() resolved with terminal signal — session is done`,{sessionId:t});let u=Bi(n);return{settlement:{kind:`completion-observed`},failures:u==null?[]:[{source:`session`,message:u.error.message,llmError:u.error,classificationPath:u.classificationPath}]}}catch(e){return r.debug(`v2.session.wait() threw, relying on poll watchdog`,{sessionId:t,error:V(e)}),{kind:`fallback-to-poll`}}}async function Na(e){let{connected:t,streamEnded:n,signal:r,deadline:i}=e;if(i!=null&&(i.signal.aborted||i.isExpired()||i.remainingMs()<=0))return`deadline`;if(r.aborted)return`stream-ended`;let a=i?.remainingMs()??1/0,o=a{s=setTimeout(()=>{e(o||i?.isExpired()===!0?`deadline`:`timeout`)},Math.min(ba,a))}),l=new Promise(e=>{c=()=>{e(i?.signal.aborted===!0?`deadline`:`stream-ended`)},r.addEventListener(`abort`,c,{once:!0})});return await Promise.race([t.then(()=>`connected`),n.then(()=>`stream-ended`),e,l])}finally{s!==void 0&&clearTimeout(s),c!==void 0&&r.removeEventListener(`abort`,c)}}function Pa(e,t,n,r){let i=r?.errorName==null?void 0:{errorName:r.errorName,errorMessage:r.message},a=i==null?``:` (${i.errorName}: ${i.errorMessage})`,o=e===`timeout`?`Event stream did not connect within ${ba/1e3}s; the prompt was not sent`:`Event stream ended before it connected${a}; the prompt was not sent`;t.warning(`Event stream did not connect before the prompt`,{sessionId:n,reason:e,...i});let s=rn(o),c=`submit_failed`;return{success:!1,error:o,llmError:s,outcome:c,shouldRetry:_i(c),settlement:{kind:`failure-observed`},eventStreamResult:{tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:s,classificationPath:`fallback`}}}async function Fa(e,t,n,r,i,a,o,s,c,l,u,d){let f=l??new AbortController,p=new AbortController,m=new AbortController,h=c==null?p.signal:AbortSignal.any([p.signal,c.signal]),g=c==null?m.signal:AbortSignal.any([m.signal,c.signal]),_={firstMeaningfulEventReceived:!1,currentTurnTerminalSignalReceived:!1,currentTurnArmed:s==null,baselineMessageIds:void 0,sessionIdle:!1,sessionError:null,rootFreshness:Di()};s==null&&_.rootFreshness!=null&&Oi(_.rootFreshness);let v=c==null?f.signal:AbortSignal.any([f.signal,c.signal]),y=async()=>e.event.subscribe({signal:v}),b=a??(c==null?(await y()).stream:(await c.run(y,`event subscription`)).stream),x={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},S=()=>{},C=new Promise(e=>{S=e}),w=Qi(b,t,h,i,_,c,u,d,S).then(e=>{x=e}).catch(e=>{e instanceof Error&&e.name!==`AbortError`&&i.debug(`Event stream error`,{error:e.message})}),T=null,E=async()=>(T??=(f.abort(),m.abort(),p.abort(),ya(w)),T),D=async()=>{await E()},O=null;try{if(s!=null){let r=await Na({connected:C,streamEnded:w,signal:v,deadline:c});if(r!==`connected`){if(r===`deadline`)throw xa(`event stream connection`);return Pa(r,i,t,x.discontinuity)}_.baselineMessageIds=await Da(e,t,n,i,c)??void 0,_.currentTurnArmed=!0,_.rootFreshness!=null&&Oi(_.rootFreshness);let a=c==null?await s():await c.run(s,`prompt submission`);if(a!=null){if(ua(d))a.success===!1&&(O={source:`submission`,message:a.error??`Prompt submission failed`,llmError:a.llmError}),i.debug(`Prompt start result observed but owned work outstanding — deferring completion`,{sessionId:t,outstanding:d?.outstanding()});else{if(await D(),a.success===!1){let e=[];if(_.terminalProviderError==null){let t=Bi(_);t!=null&&e.push({source:`session`,message:t.error.message,llmError:t.error,classificationPath:t.classificationPath})}else e.push({source:`provider`,message:_.terminalProviderError.message,llmError:_.terminalProviderError});e.push({source:`submission`,message:a.error??`Prompt submission failed`,llmError:a.llmError});let t={accepted:_.firstMeaningfulEventReceived===!0},n=Si({settlement:{kind:`failure-observed`},failures:e},null,t),r=t.accepted?x:a.eventStreamResult;return n.llmError!=null&&r.llmError?.type!==n.llmError.type&&(r={...r,llmError:n.llmError,classificationPath:n.classificationPath??r.classificationPath}),{success:n.success,error:n.error,llmError:n.llmError,outcome:n.outcome,shouldRetry:n.shouldRetry,settlement:n.settlement,eventStreamResult:r}}return a}}}let a=va(e,t,n,h,i,r,_,c,d),l=Ma(o,t,_,i,g,c,d),u=await Promise.race([l.then(async e=>`settlement`in e?e:a),a]);await D();let f={accepted:_.firstMeaningfulEventReceived===!0},p=Si(u,O,f),m=x;if(p.llmError!=null&&x.llmError?.type!==p.llmError.type&&(m={...x,llmError:p.llmError}),!p.success)return{success:!1,error:p.error,llmError:p.llmError,outcome:p.outcome,shouldRetry:p.shouldRetry,settlement:p.settlement,eventStreamResult:m};let y=await Oa(e,t,n,_.baselineMessageIds,i,c);if(y!=null){let e=$i(y,i),t=ka(m,e);return{success:!0,error:null,llmError:null,outcome:p.outcome,shouldRetry:p.shouldRetry,settlement:p.settlement,eventStreamResult:t}}return{success:!0,error:null,llmError:null,outcome:p.outcome,shouldRetry:p.shouldRetry,settlement:p.settlement,eventStreamResult:m}}finally{await E()}}function Ia(e,t){let n=t===!0?`Before taking any action, verify what has already landed, including external changes and response artifacts, and do not repeat completed side effects.`:`Inspect the current session state before continuing and do not repeat completed work.`;return[`The previous turn was accepted but ended with the observed failure type \`${e.type}\`.`,`Continue the remaining objective from the current session; do not resend or replay the original request.`,n].join(` -`)}const La=e=>e?.model==null?{providerID:N.providerID,modelID:N.modelID}:{providerID:e.model.providerID,modelID:e.model.modelID};async function Ra(e,t,n,r,i,a,o,s,c,l,u){let d={parts:[{type:`text`,text:n},...r??[]]},f=La(a);f!=null&&(d.model=f);let p=a?.agent??null;p!=null&&(d.agent=p);let h=new AbortController;try{let n=c==null?h.signal:AbortSignal.any([h.signal,c.signal]),r=async()=>e.event.subscribe({signal:n}),f=c==null?await r():await c.run(r,`event subscription`),p=(e,t)=>{let n=nn(t)?rn(e):null,r=`submit_failed`;return{success:!1,error:e,llmError:n,outcome:r,shouldRetry:_i(r),settlement:{kind:`failure-observed`},eventStreamResult:{tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:n,classificationPath:n==null?`unclassified`:`fallback`}}},g=async()=>{let n=await e.session.promptAsync({path:{id:t},body:d,query:{directory:i},signal:c?.signal});return n.error==null?null:p(m(n.error),n.error)};return await(async()=>Fa(e,t,i,a?.timeoutMs??18e5,o,f.stream,s,g,c,h,l,u))()}finally{h.abort()}}function za(e,t){return t.includes(e)}function Ba(e){return e.endsWith(`[bot]`)}const Va={botLogin:null,requireMention:!0,allowedAssociations:Jn,skipDraftPRs:!0,promptInput:null,senderAssociation:null,reviewSkipLabel:null};function Ha(e,t){if(t?.eventType===`pull_request`)return`pr-review`;let n=t?.author;return t?.eventType===`issue_comment`&&e.issueType===`pr`&&n!=null&&n.isBot===!1&&typeof n.association==`string`&&za(n.association,Jn)&&t.hasMention===!0?`pr-review-permitted`:e.issueType===`pr`?`pr-comment`:`issue-comment`}function Ua(e){return e instanceof Error&&`code`in e&&e.code===`ENOENT`}async function Wa(e,t,n){if(e==null)return`absent`;let r;try{r=await G.readFile(e,`utf8`)}catch(t){return Ua(t)?`absent`:(n.warning(`Response-file status is unknown; declining recovery`,{responseFilePath:e,error:V(t)}),`unknown`)}let i=ce(r,{surface:t});return i.success===!0?`present`:(n.warning(`Response file is not a valid deliverable; allowing recovery`,{responseFilePath:e,reason:i.error.reason}),`absent`)}const Ga=2e3,Ka=5e3;async function qa(e,t,n){let r=null;for(let i=1;i<=2;i++){let i=new AbortController,a=null;try{let r=e.postSessionIdPermissionsPermissionId({path:{id:t.sessionID,permissionID:t.requestID},body:{response:`reject`},query:{directory:n},signal:i.signal}),o=new Promise((e,t)=>{a=setTimeout(()=>{i.abort(),t(/* @__PURE__ */ Error(`Permission reply timed out after ${Ka}ms`))},Ka)}),s=await Promise.race([r,o]);if(s.error!=null)throw Error(`Permission reply rejected by server: ${m(s.error)}`);return}catch(e){r=V(e)}finally{a!=null&&clearTimeout(a)}}throw Error(`Permission reply failed after 2 attempt(s): ${r}`)}async function Ja(e,t,n){if(typeof e.session.abort!=`function`)return;let r=new AbortController,i=null,a=!1;try{let o=e.session.abort({path:{id:t},signal:r.signal}),s=new Promise((e,t)=>{i=setTimeout(()=>{a=!0,r.abort(),t(/* @__PURE__ */ Error(`Session abort timed out after ${Ga}ms`))},Ga)}),c=(await Promise.race([o,s]))?.error;c!=null&&n.warning(`OpenCode session abort returned an error; continuing teardown`,{sessionId:t,error:V(c)})}catch(e){a?n.warning(`OpenCode session abort exceeded teardown budget; continuing teardown`,{sessionId:t}):n.debug(`OpenCode session abort failed; continuing teardown`,{sessionId:t,error:V(e)})}finally{i!=null&&clearTimeout(i)}}async function Ya(e,t,n,r,i){let a=Date.now(),o=n?.timeoutMs??18e5,s=Sa(o,t),c=r==null,l=null,u=null,d=null,f={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},h=null,g=null,_=!1;t.info(`Executing OpenCode agent (SDK mode)`,{agent:n?.agent??`build (default)`,hasModelOverride:n?.model!=null,timeoutMs:o});let v=()=>({success:!1,exitCode:130,duration:Date.now()-a,sessionId:d,error:`Execution timed out after ${o}ms`,tokenUsage:f.tokens,model:f.model,cost:f.cost,prsCreated:f.prsCreated,commitsCreated:f.commitsCreated,commentsPosted:f.commentsPosted,llmError:h,classificationPath:f.classificationPath,observationGap:_});try{let o=null;if(r==null){let e=await s.run(async()=>ie(async()=>D({signal:s.signal}),t),`OpenCode server creation`);u=e.client,l=e.server,o=e.server.url}else u=r.client,o=r.server.url;if(u==null)throw Error(`OpenCode client was not initialized`);let c=u;if(n?.continueSessionId==null){let e=n?.sessionTitle==null?void 0:{body:{title:n.sessionTitle}},r=await s.run(async()=>e==null?c.session.create({signal:s.signal}):c.session.create({...e,signal:s.signal}),`session creation`);if(r.data==null||r.error!=null)throw Error(`Failed to create session: ${r.error==null?`No data returned`:m(r.error)}`);d=r.data.id,t.info(`Created new OpenCode session`,{sessionId:d,sessionTitle:n?.sessionTitle??null})}else d=n.continueSessionId,t.info(`Continuing existing OpenCode session`,{sessionId:d});if(d==null)throw Error(`OpenCode session was not initialized`);let y=d,{text:b,referenceFiles:x}=ee({...e,sessionId:d},t),S=p(),C=et();if(await s.run(async()=>G.mkdir(C,{recursive:!0}),`OpenCode log directory creation`),fe()){let e=Dt.createHash(`sha256`).update(b).digest(`hex`),n=K.join(C,`prompt-${d}-${e.slice(0,8)}.txt`);try{await s.run(async()=>G.writeFile(n,b,`utf8`),`prompt artifact write`),t.info(`Prompt artifact written`,{hash:e,path:n})}catch(e){t.warning(`Failed to write prompt artifact`,{error:V(e),path:n})}}let w=U.env.RUNNER_TEMP,T=w!=null&&w.trim().length>0?Vn({runnerTemp:w.trim(),runId:F(),runAttempt:oe()}):C;T!==C&&await s.run(async()=>Wn(T),`attachment directory creation`);let E=await s.run(async()=>tr(x,T,t),`reference file materialization`),O=[...e.fileParts??[],...E],k=async e=>{await qa(c,e,S)},A=null,te=!1,j={kind:`initial`};for(let r=1;r<=4;r++){if(s.isExpired())return g=`deadline`,v();let l=Aa[Math.min(r-1,Aa.length-1)]??Aa[0],u=j.kind===`initial`?b:Ia(j.error,n?.credentialProvisioned===!0),p=O.length>0?O:void 0,m=await(async()=>{try{return await Ra(c,y,u,p,S,n,t,o,s,k,i)}finally{s.isExpired()===!1&&await br(c,y,n?.sessionTitle,t,{signal:s.signal,isExpired:s.isExpired,remainingMs:s.remainingMs})}})();if(f=Gi(ka(m.eventStreamResult,f),f),m.eventStreamResult.discontinuity!=null&&(_=!0),m.success)return g=`other`,{success:!0,exitCode:0,duration:Date.now()-a,sessionId:d,error:null,tokenUsage:f.tokens,model:f.model,cost:f.cost,prsCreated:f.prsCreated,commitsCreated:f.commitsCreated,commentsPosted:f.commentsPosted,llmError:null,classificationPath:f.classificationPath,observationGap:_};if(m.outcome===`timeout`)return g=`deadline`,v();A=m.error,h=m.llmError,g=m.settlement.kind===`deadline`?`deadline`:`other`;let x=te;if(m.outcome!==`submit_failed`&&(te=!0),await Wa(e.responseFilePath,e.responseSurface,t)!==`absent`)break;let C=m.outcome===`submit_failed`&&x===!1&&m.llmError?.retryable===!0,w=m.outcome===`turn_failed_retryable`,T=g!==`deadline`,E=i==null||i.isDrainComplete();if(C===!1&&w===!1||r>=4||T===!1||E===!1)break;if(w){if(m.llmError==null)break;j={kind:`continuation`,error:m.llmError}}else j={kind:`initial`};if(t.warning(`LLM fetch error detected, retrying with continuation prompt`,{attempt:r,maxAttempts:4,error:m.error,delayMs:l,sessionId:d}),s.isExpired())break;await s.run(async()=>{await da(l,s.signal)},`retry delay`)}return{success:!1,exitCode:1,duration:Date.now()-a,sessionId:d,error:A??`Unknown error`,tokenUsage:f.tokens,model:f.model,cost:f.cost,prsCreated:f.prsCreated,commitsCreated:f.commitsCreated,commentsPosted:f.commentsPosted,llmError:h,classificationPath:f.classificationPath,observationGap:_}}catch(e){if(e instanceof Error&&e.name===`DeadlineExceededError`)return g=`deadline`,v();g=s.isExpired()?`deadline`:`other`;let n=Date.now()-a,r=V(e),i=nn(e);return t.error(`OpenCode execution failed`,{error:r,durationMs:n}),{success:!1,exitCode:1,duration:n,sessionId:d,error:r,tokenUsage:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:i?rn(r):null,classificationPath:i?`fallback`:`unclassified`,observationGap:_}}finally{g===`deadline`&&u!=null&&d!=null&&await Ja(u,d,t),s.dispose(),c&&l?.close()}}async function Xa(e,t,n){return t.commentId==null?(n.debug(`No comment ID, skipping eyes reaction`),!1):await zr(e,t.repo,t.commentId,`eyes`,n)!=null&&(n.info(`Added eyes reaction`,{commentId:t.commentId}),!0)}async function Za(e,t,n){return t.issueNumber==null?(n.debug(`No issue number, skipping working label`),!1):await Hr(e,t.repo,`agent: working`,`fcf2e1`,`Agent is currently working on this`,n)&&await Ur(e,t.repo,t.issueNumber,[`agent: working`],n)?(n.info(`Added working label`,{issueNumber:t.issueNumber}),!0):!1}async function Qa(e,t,n){await Promise.all([Xa(e,t,n),Za(e,t,n)])}async function $a(e,t,n){if(t.commentId==null||t.botLogin==null)return;let r=(await Br(e,t.repo,t.commentId,n)).find(e=>e.content===`eyes`&&e.userLogin===t.botLogin);r!=null&&await Vr(e,t.repo,t.commentId,r.id,n)}async function eo(e,t,n,r){t.commentId!=null&&await zr(e,t.repo,t.commentId,n,r)}async function to(e,t,n){if(t.commentId==null||t.botLogin==null)n.debug(`Missing comment ID or bot login, skipping reaction update`);else try{await $a(e,t,n),await eo(e,t,`hooray`,n),n.info(`Updated reaction to success indicator`,{commentId:t.commentId,reaction:`hooray`})}catch(e){n.warning(`Failed to update reaction (non-fatal)`,{error:V(e)})}}async function no(e,t,n){if(t.commentId==null||t.botLogin==null)n.debug(`Missing comment ID or bot login, skipping reaction update`);else try{await $a(e,t,n),await eo(e,t,`confused`,n),n.info(`Updated reaction to confused`,{commentId:t.commentId})}catch(e){n.warning(`Failed to update failure reaction (non-fatal)`,{error:V(e)})}}async function ro(e,t,n){if(t.commentId==null||t.botLogin==null)n.debug(`Missing comment ID or bot login, skipping reaction update`);else try{await $a(e,t,n),n.info(`Invocation could not be verified complete; leaving no terminal reaction`,{commentId:t.commentId})}catch(e){n.warning(`Failed to update reaction for an incomplete invocation (non-fatal)`,{error:V(e)})}}async function io(e,t,n,r){n===`succeeded`?await to(e,t,r):n===`failed`?await no(e,t,r):await ro(e,t,r)}async function ao(e,t,n){t.issueNumber==null?n.debug(`No issue number, skipping label removal`):await Kr(e,t.repo,t.issueNumber,`agent: working`,n)&&n.info(`Removed working label`,{issueNumber:t.issueNumber})}function oo(e=U.env){let t=e.XDG_CONFIG_HOME?.trim()??``;return t.length>0?K.join(t,`opencode`):K.join(Jt(),`.config`,`opencode`)}function so(e){return K.join(e,`fro-bot`,`no-task-reuse.mjs`)}function co(e){return kt(so(e)).href}function lo(){return new URL(`./no-task-reuse.js`,import.meta.url)}async function uo(e,t,n=lo){let r=n(),i=so(e);try{let e=await G.readFile(r);return await G.mkdir(K.dirname(i),{recursive:!0}),await G.writeFile(i,e),t.info(`Wrote task-reuse guard plugin`,{path:i,bytes:e.byteLength}),i}catch(e){throw Error(`Could not install the task-reuse guard plugin from ${r.toString()} to ${i}: ${V(e)}`,{cause:e})}}function fo(e){return{plugin:[co(e)]}}var po=/* @__PURE__ */ e(S(),1),mo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},ho=class{constructor(e,t,n){if(e<1)throw Error(`max attempts should be greater than or equal to 1`);if(this.maxAttempts=e,this.minSeconds=Math.floor(t),this.maxSeconds=Math.floor(n),this.minSeconds>this.maxSeconds)throw Error(`min seconds should be less than or equal to max seconds`)}execute(e,t){return mo(this,void 0,void 0,function*(){let n=1;for(;nsetTimeout(t,e*1e3))})}},go=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},_o=class extends Error{constructor(e){super(`Unexpected HTTP response: ${e}`),this.httpStatusCode=e,Object.setPrototypeOf(this,new.target.prototype)}};const vo=process.platform===`win32`;process.platform;function yo(e,t,n,r){return go(this,void 0,void 0,function*(){return t||=St.join(Po(),xt.randomUUID()),yield we(St.dirname(t)),L(`Downloading ${e}`),L(`Destination ${t}`),yield new ho(3,Fo(`TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS`,10),Fo(`TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS`,20)).execute(()=>go(this,void 0,void 0,function*(){return yield bo(e,t||``,n,r)}),e=>!(e instanceof _o&&e.httpStatusCode&&e.httpStatusCode<500&&e.httpStatusCode!==408&&e.httpStatusCode!==429))})}function bo(e,t,n,r){return go(this,void 0,void 0,function*(){if(W.existsSync(t))throw Error(`Destination file path ${t} already exists`);let i=new Me(`actions/tool-cache`,[],{allowRetries:!1});n&&(L(`set auth`),r===void 0&&(r={}),r.authorization=n);let a=yield i.get(e,r);if(a.message.statusCode!==200){let t=new _o(a.message.statusCode);throw L(`Failed to download from "${e}". Code(${a.message.statusCode}) Message(${a.message.statusMessage})`),t}let o=wt.promisify(Xt.pipeline),s=Fo(`TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY`,()=>a.message)(),c=!1;try{return yield o(s,W.createWriteStream(t)),L(`download complete`),c=!0,t}finally{if(!c){L(`download failed`);try{yield Oe(t)}catch(e){L(`Failed to delete '${t}'. ${e.message}`)}}}})}function xo(e,t){return go(this,arguments,void 0,function*(e,t,n=`xz`){if(!e)throw Error(`parameter 'file' is required`);t=yield Oo(t),L(`Checking tar --version`);let r=``;yield xe(`tar --version`,[],{ignoreReturnCode:!0,silent:!0,listeners:{stdout:e=>r+=e.toString(),stderr:e=>r+=e.toString()}}),L(r.trim());let i=r.toUpperCase().includes(`GNU TAR`),a;a=n instanceof Array?n:[n],st()&&!n.includes(`v`)&&a.push(`-v`);let o=t,s=e;return vo&&i&&(a.push(`--force-local`),o=t.replace(/\\/g,`/`),s=e.replace(/\\/g,`/`)),i&&(a.push(`--warning=no-unknown-keyword`),a.push(`--overwrite`)),a.push(`-C`,o,`-f`,s),yield xe(`tar`,a),t})}function So(e,t){return go(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'file' is required`);return t=yield Oo(t),vo?yield Co(e,t):yield wo(e,t),t})}function Co(e,t){return go(this,void 0,void 0,function*(){let n=e.replace(/'/g,`''`).replace(/"|\n|\r/g,``),r=t.replace(/'/g,`''`).replace(/"|\n|\r/g,``),i=yield Qe(`pwsh`,!1);if(i){let e=[`-NoLogo`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Unrestricted`,`-Command`,[`$ErrorActionPreference = 'Stop' ;`,`try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`,`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${n}', '${r}', $true) }`,`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${n}' -DestinationPath '${r}' -Force } else { throw $_ } } ;`].join(` `)];L(`Using pwsh at path: ${i}`),yield xe(`"${i}"`,e)}else{let e=[`-NoLogo`,`-Sta`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Unrestricted`,`-Command`,[`$ErrorActionPreference = 'Stop' ;`,`try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`,`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${n}' -DestinationPath '${r}' -Force }`,`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${n}', '${r}', $true) }`].join(` `)],t=yield Qe(`powershell`,!0);L(`Using powershell at path: ${t}`),yield xe(`"${t}"`,e)}})}function wo(e,t){return go(this,void 0,void 0,function*(){let n=yield Qe(`unzip`,!0),r=[e];st()||r.unshift(`-q`),r.unshift(`-o`),yield xe(`"${n}"`,r,{cwd:t})})}function To(e,t,n,r){return go(this,void 0,void 0,function*(){if(n=po.clean(n)||n,r||=bt.arch(),L(`Caching tool ${t} ${n} ${r}`),L(`source dir: ${e}`),!W.statSync(e).isDirectory())throw Error(`sourceDir is not a directory`);let i=yield ko(t,n,r);for(let t of W.readdirSync(e)){let n=St.join(e,t);yield lt(n,i,{recursive:!0})}return Ao(t,n,r),i})}function Eo(e,t,n){if(!e)throw Error(`toolName parameter is required`);if(!t)throw Error(`versionSpec parameter is required`);n||=bt.arch(),jo(t)||(t=Mo(Do(e,n),t));let r=``;if(t){t=po.clean(t)||``;let i=St.join(No(),e,t,n);L(`checking cache: ${i}`),W.existsSync(i)&&W.existsSync(`${i}.complete`)?(L(`Found tool in cache ${e} ${t} ${n}`),r=i):L(`not found`)}return r}function Do(e,t){let n=[];t||=bt.arch();let r=St.join(No(),e);if(W.existsSync(r)){let e=W.readdirSync(r);for(let i of e)if(jo(i)){let e=St.join(r,i,t||``);W.existsSync(e)&&W.existsSync(`${e}.complete`)&&n.push(i)}}return n}function Oo(e){return go(this,void 0,void 0,function*(){return e||=St.join(Po(),xt.randomUUID()),yield we(e),e})}function ko(e,t,n){return go(this,void 0,void 0,function*(){let r=St.join(No(),e,po.clean(t)||t,n||``);L(`destination ${r}`);let i=`${r}.complete`;return yield Oe(r),yield Oe(i),yield we(r),r})}function Ao(e,t,n){let r=`${St.join(No(),e,po.clean(t)||t,n||``)}.complete`;W.writeFileSync(r,``),L(`finished caching tool`)}function jo(e){let t=po.clean(e)||``;L(`isExplicit: ${t}`);let n=po.valid(t)!=null;return L(`explicit? ${n}`),n}function Mo(e,t){let n=``;L(`evaluating ${e.length} versions`),e=e.sort((e,t)=>po.gt(e,t)?1:-1);for(let r=e.length-1;r>=0;r--){let i=e[r];if(po.satisfies(i,t)){n=i;break}}return L(n?`matched: ${n}`:`match not found`),n}function No(){let e=process.env.RUNNER_TOOL_CACHE||``;return Ct(e,`Expected RUNNER_TOOL_CACHE to be defined`),e}function Po(){let e=process.env.RUNNER_TEMP||``;return Ct(e,`Expected RUNNER_TEMP to be defined`),e}function Fo(e,t){let n=global[e];return n===void 0?t:n}function Io(e,t){e!=null&&(t instanceof Uint8Array?e(Et.from(t)):e(Et.from(String(t))))}function Lo(e){return typeof e.exitCode==`number`||typeof e.signalCode==`string`}function Ro(e,t){if(Lo(e))return!1;if(U.platform!==`win32`&&typeof e.pid==`number`)try{return U.kill(-e.pid,t),!0}catch{}return e.kill(t),!0}async function zo(e,t,n,r){let i=r?.env??Object.fromEntries(Object.entries(U.env).filter(e=>e[1]!=null)),a=U.platform!==`win32`;return new Promise((o,s)=>{let c=Gt(e,t??[],{cwd:r?.cwd,env:i,stdio:[`pipe`,`pipe`,`pipe`],detached:a}),l,u,d,f=!1,p=!1,m=()=>{l!=null&&clearTimeout(l),u!=null&&clearTimeout(u),d!=null&&clearTimeout(d)};function h(){Ro(c,`SIGKILL`)}function g(){U.off(`SIGTERM`,v),U.off(`SIGINT`,y),U.off(`exit`,h)}function _(e){Ro(c,`SIGKILL`),g(),U.kill(U.pid,e)}function v(){_(`SIGTERM`)}function y(){_(`SIGINT`)}U.once(`SIGTERM`,v),U.once(`SIGINT`,y),U.on(`exit`,h);let b=e=>{f||(f=!0,m(),g(),o(e))};c.on(`error`,e=>{f||(f=!0,m(),g(),s(e))}),c.on(`close`,e=>{b(p?`timed-out`:e??1)}),c.stdout.on(`data`,e=>Io(r?.listeners?.stdout,e)),c.stderr.on(`data`,e=>Io(r?.listeners?.stderr,e)),c.stdin.on(`error`,()=>{}),r?.input!=null&&c.stdin.write(r.input),c.stdin.end(),l=setTimeout(()=>{f||(Ro(c,`SIGTERM`)&&(p=!0),u=setTimeout(()=>{f||(Ro(c,`SIGKILL`)&&(p=!0),d=setTimeout(()=>b(p?`timed-out`:c.exitCode??1),2e3))},5e3))},n)})}function Bo(){return{find:Eo,downloadTool:yo,extractTar:xo,extractZip:So,cacheDir:To}}function Vo(){return{exec:xe,execWithTimeout:zo,getExecOutput:Ve}}function Ho(e){let t;try{t=JSON.parse(e)}catch(e){throw e instanceof SyntaxError?Error(`Invalid auth-json format: ${e.message}`):e}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`auth-json must be a JSON object`);return t}async function Uo(e,t,n){let r=K.join(t,`auth.json`);await G.mkdir(t,{recursive:!0});let i=JSON.stringify(e,null,2);return await G.writeFile(r,i,{mode:384}),n.info(`Populated auth.json`,{path:r,providers:Object.keys(e).length}),r}function Wo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Go(e,t){let n=K.resolve(e),r=K.resolve(t);return n.startsWith(`${r}${K.sep}`)}function Ko(e,t,n,r){let i=Wo(e.agent)?e.agent:{},a=Wo(i.build)?i.build:{},o=Wo(a.permission)?a.permission:{},s=`deny`,c=Wo(o.edit)?{...o.edit}:typeof o.edit==`string`?{"*":o.edit}:{},l=Wo(o.read)?{...o.read}:{};for(let[e,t]of Object.entries({"*.env":`deny`,"*.env.*":`deny`,"*.env.example":`allow`}))delete l[e],l[e]=t;let u={...o};if(delete u.doom_loop,u.doom_loop=`deny`,delete u.read,u.read=l,t!=null&&t.trim().length>0){let e=yt(t.trim()).map(e=>K.join(e,f,`*`));for(let t of e)delete c[t];for(let t of e)c[t]=`deny`;let i=K.join(Vn({runnerTemp:t,runId:F(),runAttempt:oe()}),`*`);if(s={"*":`deny`,[K.join(t,f,`*`)]:`allow`,[i]:`allow`},n!=null&&n.trim().length>0){let e=t.trim(),i=n.trim();Go(i,e)?s[K.join(i,`*`)]=`allow`:r.warning(`Ignoring integration workdir outside RUNNER_TEMP`,{integrationWorkDir:i,runnerTemp:e})}}e.agent={...i,build:{...a,permission:{...u,edit:c,external_directory:s}}}}function qo(e,t,n){if(t==null||t.trim().length===0){n.debug(`Skipping attachment directory permission grant: RUNNER_TEMP is not set`);return}let r=t.trim(),i=K.join(Vn({runnerTemp:r,runId:F(),runAttempt:oe()}),`*`),a=Wo(e.permission)?e.permission:{},o=a.external_directory,s;Wo(o)?s={...o}:typeof o==`string`?s={"*":o}:(o==null||n.warning(`Ignoring operator-supplied permission.external_directory: expected a string or an object, got a shape that cannot be merged; operator rules for this key are not preserved`,{receivedType:Array.isArray(o)?`array`:typeof o}),s={});let c=s[`*`]??`deny`;delete s[`*`],delete s[i],e.permission={...a,external_directory:{"*":c,...s,[i]:`allow`}}}function Jo(e,t){let n={autoupdate:!1};if(e.opencodeConfig!=null){let t;try{t=JSON.parse(e.opencodeConfig)}catch{return{config:n,error:`opencode-config must be valid JSON`}}if(typeof t!=`object`||!t||Array.isArray(t))return{config:n,error:`opencode-config must be a JSON object`};Object.assign(n,t)}let r=`@fro.bot/systematic@${e.systematicVersion}`,i=Array.isArray(n.plugin)?n.plugin:[];i.some(e=>typeof e==`string`&&e.startsWith(`@fro.bot/systematic`))||(n.plugin=[...i,r]);let a=n.subagent_depth;n.subagent_depth=1,a!=null&&a!==1&&t.warning(`OpenCode config subagent_depth overridden to 1 (operator supplied ${String(a)}). Nested subagent depth is pinned to avoid an unreachable grandchild-cancellation gap; see plan docs/plans/2026-09-14-001-feat-background-subagent-ownership-plan.md.`),qo(n,U.env.RUNNER_TEMP,t);let o=[];`plugins`in n&&(delete n.plugins,o.push(`plugins`));let s=n.default_agent;return n.default_agent=`build`,Ko(n,U.env.RUNNER_TEMP,e.integrationWorkDir,t),s!=null&&s!==`build`&&o.push(`default_agent`),o.length>0&&t.warning(`OpenCode config rewritten: ${o.join(`, `)}. The legacy "plugins" key is removed and default_agent is pinned to "build".`),t.debug(`Built CI OpenCode config`,{hasUserConfig:e.opencodeConfig!=null,pluginCount:Array.isArray(n.plugin)?n.plugin.length:0}),{config:n,error:null}}function Yo(e){return{debug:t=>e.debug(t),info:t=>e.info(t),warn:t=>e.warning(t),error:t=>e.error(t)}}function Xo(e){let{token:t,logger:n}=e;return n.debug(`Creating GitHub client with token`),i(t,{log:Yo(n)})}async function Zo(e,t){try{let{data:n}=await e.rest.users.getAuthenticated();return t.debug(`Authenticated as`,{login:n.login,type:n.type}),n.login}catch{return t.debug(`Failed to get authenticated user, may be app token`),`fro-bot[bot]`}}async function Qo(e,t,n,r,i,a=!0){let o=t??n,s=t==null?n.length>0?`github-token`:`none`:`app-token`;if(o.length===0)return r.warning(`No GitHub token available`),{authenticated:!1,method:`none`,botLogin:null};if(a?U.env.GH_TOKEN=o:delete U.env.GH_CONFIG_DIR,r.info(`Configured authentication`,{method:s}),a&&o.length>0)try{let e=U.env.RUNNER_TEMP!=null&&U.env.RUNNER_TEMP.length>0?U.env.RUNNER_TEMP:Yt(),t=await Pt(Vt(e,`gh-config-`));await jt(t,448);let n={...U.env,GH_CONFIG_DIR:t};delete n.GH_TOKEN,delete n.GITHUB_TOKEN;let a=await i.getExecOutput(`gh`,[`auth`,`login`,`--with-token`],{env:n,input:Et.from(o,`utf8`),silent:!0,ignoreReturnCode:!0});if(a.exitCode===0){U.env.GH_CONFIG_DIR=t;try{await jt(Vt(t,`hosts.yml`),384)}catch{}}else r.warning(`gh auth login failed; model gh CLI usage in the child may be unauthenticated`,{exitCode:a.exitCode})}catch(e){r.warning(`Failed to configure off-environment gh auth; child gh CLI will be unauthenticated`,{error:V(e)})}let c=null;return e!=null&&(c=await Zo(e,r)),{authenticated:!0,method:s,botLogin:c}}async function $o(e,t){let n=await t.getExecOutput(`git`,[`config`,e],{ignoreReturnCode:!0,silent:!0});return n.exitCode===0&&n.stdout.trim().length>0?n.stdout.trim():null}async function es(e,t,n,r){let i=await $o(`user.name`,r),a=await $o(`user.email`,r);if(i!=null&&a!=null){n.info(`Git identity already configured`,{name:i,email:a});return}if(t==null)throw Error(`Cannot configure Git identity: no authenticated GitHub user`);let o=null;if(a==null){let r=await $r(e,t,n);if(r==null)throw Error(`Cannot configure Git identity: failed to look up user ID for '${t}'`);o=String(r.id)}i??await r.exec(`git`,[`config`,`--global`,`user.name`,t],void 0);let s=`${o}+${t}@users.noreply.github.com`;a??await r.exec(`git`,[`config`,`--global`,`user.email`,s],void 0),n.info(`Configured git identity`,{name:i??t,email:a??s})}function ts(){return new URL(`./session-tools.js`,import.meta.url)}async function ns(e,t,n=ts){let r=n();try{let n=await G.readFile(r),i=K.join(e,`tool`);await G.mkdir(i,{recursive:!0});let a=K.join(i,`session.js`);await G.writeFile(a,n),t.info(`Wrote session tools file`,{path:a,bytes:n.byteLength})}catch(e){t.warning(`Session tools asset unavailable, skipping (native session tools will be absent)`,{path:r.toString(),error:String(e)})}}const rs=/* @__PURE__ */ new Set([`__proto__`,`prototype`,`constructor`]);function is(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function as(e,t){let n=Object.create(null);for(let[t,r]of Object.entries(e))rs.has(t)||(n[t]=r);for(let[e,r]of Object.entries(t)){if(rs.has(e))continue;let t=n[e];n[e]=is(r)&&is(t)?as(t,r):r}return n}function os(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function ss(e,t,n){let r=JSON.parse(e);if(!os(r))throw Error(`systematic-config must be a JSON object (non-null, non-array)`);await G.mkdir(t,{recursive:!0});let i=K.join(t,`systematic.json`),a={};try{let e=await G.readFile(i,`utf8`),t=JSON.parse(e);os(t)&&(a=t)}catch(e){n.debug(`Using empty base Systematic config`,{path:i,error:String(e)})}let o=as(a,r);await G.writeFile(i,JSON.stringify(o,null,2)),n.info(`Wrote Systematic config`,{path:i,keyCount:Object.keys(r).length})}const cs=JSON.stringify({plugin:[]});function ls(e){return e.includes(`ENOENT`)||e.includes(`EACCES`)}function us(e){return typeof e==`object`&&e&&`code`in e&&typeof e.code==`string`?e.code:void 0}async function ds(e){try{let t=null,n;try{t=await Lt(e)}catch(e){n=us(e)}if(t===null){if(n!==`ENOENT`)return`path could not be examined (${n??`unknown error`})`;let t=null;try{t=await Mt(e)}catch{t=null}if(t!==null&&t.isSymbolicLink())return`path is a symbolic link whose target does not exist`;let r=Bt(e);try{let e=await Ft(r),t=e.slice(0,10),n=e.length>10?` (truncated, ${e.length} total)`:``;return`path does not exist; parent directory ${r} contains: ${t.join(`, `)}${n}`}catch(e){let t=us(e);return t===`ENOENT`?`path does not exist; parent directory ${r} does not exist either`:`path does not exist; parent directory ${r} is not readable (${t??`unknown error`})`}}if(t.isDirectory())return`resolved path is a directory, not an executable`;try{return await At(e,Wt.X_OK),`path exists and is an executable file`}catch{return`path exists but is not executable by the current user`}}catch{return`diagnosis unavailable`}}async function fs(e){let{logger:t,execAdapter:n,opencodeBinaryPath:r,systematicVersion:i}=e,a=e.timeoutMs??42e4,o=Date.now();t.info(`Installing Systematic plugin`,{systematicVersion:i,timeoutMs:a,opencodeBinaryPath:r});let s,c=``,l;try{let e=[`--pure`,`plugin`,`@fro.bot/systematic@${i}`,`--global`],u=await Pt(Vt(Yt(),`fro-bot-plugin-install-db-`));l=u;let d={env:{...y(U.env),OPENCODE_CONFIG_CONTENT:cs,OPENCODE_DISABLE_PROJECT_CONFIG:`1`,OPENCODE_DB:Vt(u,`opencode.db`)},ignoreReturnCode:!0,silent:!0,listeners:{stderr:e=>{c=`${c}${e.toString()}`.slice(-2e3)}}},f=n.execWithTimeout,p=f===void 0?await Promise.race([n.exec(r,e,d),new Promise(e=>{s=setTimeout(()=>e(`timed-out`),a)})]):await f(r,e,a,d),m=Date.now()-o;return p===`timed-out`?(t.warning(`Systematic plugin install timed out`,{systematicVersion:i,timeoutMs:a,duration:m}),{status:`timed-out`,duration:m}):p===0?(t.info(`Systematic plugin install complete`,{systematicVersion:i,duration:m}),{status:`installed`,duration:m}):(t.warning(`Systematic plugin install failed`,{systematicVersion:i,exitCode:p,duration:m,stderr:c}),{status:`failed`,duration:m})}catch(e){let n=Date.now()-o,a=V(e),s=ls(a)?await ds(r):void 0;return t.warning(`Systematic plugin install failed`,{systematicVersion:i,error:a,duration:n,...c.length>0?{stderr:c}:{},...s===void 0?{}:{pathDiagnosis:s}}),{status:`failed`,duration:n}}finally{if(s!=null&&clearTimeout(s),l!==void 0)try{await It(l,{recursive:!0,force:!0})}catch(e){t.debug(`Failed to remove temporary plugin-install database directory`,{tempDbDir:l,error:V(e)})}}}const ps={restoreCache:async(e,t,n)=>l(e,t,n),saveCache:async(e,t)=>c(e,t)};function ms({opencodeVersion:e,opencodeDigestId:t}){return t===void 0?e:`${e}-${t}`}function hs(e){let{os:t,systematicVersion:n}=e;return`${Le}-${t}-oc-${ms(e)}-sys-${n}`}function gs(e){let{os:t,systematicVersion:n}=e;return[`${Le}-${t}-oc-${ms(e)}-sys-${n}-`]}function _s(e){return[e.toolCachePath,e.opencodeCachePath]}async function vs(e){let{logger:t,os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a,toolCachePath:o,opencodeCachePath:s,cacheAdapter:c=ps}=e,l=hs({os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a}),u=gs({os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a}),d=_s({toolCachePath:o,opencodeCachePath:s});t.info(`Restoring tools cache`,{primaryKey:l,restoreKeys:[...u],paths:d});try{let e=await c.restoreCache([...d],l,[...u]);return e==null?(t.info(`Tools cache miss - will install tools`),{hit:!1,restoredKey:null}):(t.info(`Tools cache restored`,{restoredKey:e}),{hit:!0,restoredKey:e})}catch(e){return t.warning(`Tools cache restore failed`,{error:V(e)}),{hit:!1,restoredKey:null}}}async function ys(e){let{logger:t,os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a,toolCachePath:o,opencodeCachePath:s,cacheAdapter:c=ps}=e,l=hs({os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a}),u=_s({toolCachePath:o,opencodeCachePath:s});t.info(`Saving tools cache`,{saveKey:l,paths:u});try{return await c.saveCache([...u],l)===-1?(t.warning(`Tools cache save did not persist`,{saveKey:l}),!1):(t.info(`Tools cache saved`,{saveKey:l}),!0)}catch(e){return e instanceof Error&&e.message.includes(`already exists`)?(t.info(`Tools cache key already exists, skipping save`),!0):(t.warning(`Tools cache save failed`,{error:V(e)}),!1)}}function bs(e){let t=e?.trim().toLowerCase()??``;return t!==``&&![`0`,`false`,`no`,`off`,`n`].includes(t)}async function xs(e,t){let r=Date.now(),a=M({component:`setup`}),o=Bo(),s=Vo();try{a.info(`Starting setup`,{version:e.opencodeVersion});let c;try{c=Ho(e.authJson)}catch(e){return B(`Invalid auth-json: ${V(e)}`),null}let l=e.opencodeVersion;if(l===`latest`)try{l=await n(a)}catch(e){a.warning(`Failed to get latest version, using fallback`,{error:V(e)}),l=O}let u;if(E(l))try{u=d(l,Ie(),Re)}catch(e){return B(`Failed to install OpenCode: ${V(e)}`),null}let f=e.systematicVersion,p=U.env.RUNNER_TOOL_CACHE??`/opt/hostedtoolcache`,m=Vt(p,`opencode`),h=oo(),_=Vt(Jt(),`.cache`,`opencode`),v=ue(),y=await vs({logger:a,os:v,opencodeVersion:l,...u===void 0?{}:{opencodeDigestId:u.cacheId},systematicVersion:f,toolCachePath:m,opencodeCachePath:_}),b=y.hit?`hit`:`miss`,x;if(y.hit&&u===void 0){let e=o.find(`opencode`,g(l));e.length>0?(x={path:e,version:l,cached:!0},a.info(`Tools cache hit, using cached OpenCode CLI`,{version:l})):a.warning(`Tools cache hit but binary not found in tool-cache, falling through to install`,{requestedVersion:l,restoredKey:y.restoredKey})}if(x==null)try{x=await w(l,a,o,s)}catch(e){return B(`Failed to install OpenCode: ${V(e)}`),null}if(e.systematicConfig!=null)try{await ss(e.systematicConfig,h,a)}catch(e){a.warning(`systematic-config write failed: ${V(e)}`)}await ns(h,a),bs(U.env.OPENCODE_PURE)&&a.warning(`OPENCODE_PURE is set in the runner environment; it is withheld from the OpenCode server so the task-reuse guard and Systematic plugins still load.`);let S=Jo({opencodeConfig:e.opencodeConfig,systematicVersion:f,integrationWorkDir:U.env.FRO_BOT_INTEGRATION_WORK_DIR},a);if(S.error!=null)return B(S.error),null;let C=Vt(h,`opencode.json`);await Nt(h,{recursive:!0});let T=JSON.stringify(S.config,null,2);if(pe(`OPENCODE_CONFIG_CONTENT`,T),await Rt(C,T),a.info(`Wrote fresh OpenCode config`,{path:C,pluginCount:Array.isArray(S.config.plugin)?S.config.plugin.length:0}),de(x.path),x.cached!==!0||y.hit===!1){let e=await fs({logger:a,execAdapter:s,opencodeBinaryPath:A(x.path),systematicVersion:f});if(e.status===`installed`)await ys({logger:a,os:v,opencodeVersion:l,...u===void 0?{}:{opencodeDigestId:u.cacheId},systematicVersion:f,toolCachePath:m,opencodeCachePath:_});else{let t=Object.keys(U.env).filter(e=>e.toUpperCase().startsWith(`NPM_CONFIG_`)),n=`Skipping tools cache save because Systematic plugin install did not complete${t.length>0?` The install child does not inherit NPM_CONFIG_* environment variables (present in the parent env: ${t.join(`, `)}), which may explain the failure.`:``}`;a.warning(n,{status:e.status}),it(n)}}R(`opencode-path`,x.path),R(`opencode-version`,x.version),a.info(`OpenCode ready`,{version:x.version,cached:x.cached});let D=i(t),k=e.credential===`provision`,ee=await Qo(D,null,t,a,s,k);k?(pe(`GH_TOKEN`,t),U.env.GH_CONFIG_DIR!=null&&U.env.GH_CONFIG_DIR.length>0&&pe(`GH_CONFIG_DIR`,U.env.GH_CONFIG_DIR),a.info(`GitHub CLI configured`)):a.info(`GitHub CLI credential withheld from child (affected trigger)`),await es(D,ee.botLogin,a,s);let te=Vt(le(),`opencode`),j=await Uo(c,te,a);R(`auth-json-path`,j),a.info(`auth.json populated`,{path:j});let M=Date.now()-r,ne={opencodePath:x.path,opencodeBinaryPath:A(x.path),opencodeVersion:x.version,ghAuthenticated:ee.authenticated,toolsCacheStatus:b,duration:M};return a.info(`Setup complete`,{duration:M}),ne}catch(e){let t=V(e);return a.error(`Setup failed`,{error:t}),B(t),null}}const Ss={verifyOpenCodeAvailable:async(e,t)=>{let n=e??`opencode`;try{let e=``;await xe(n,[`--version`],{listeners:{stdout:t=>{e+=t.toString()}},silent:!0});let r=/(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)/.exec(e)?.[1]??null;return t.debug(`OpenCode version verified`,{version:r}),{available:!0,version:r}}catch{return t.debug(`OpenCode not available, will attempt auto-setup`),{available:!1,version:null}}},runSetup:async(e,t)=>xs(e,t),addToPath:e=>{de(e)}};async function Cs(e,t,n,r,i){let a=oo();try{await uo(a,t)}catch(e){return P(Error(`Refusing to start OpenCode without the task-reuse guard: ${V(e)}`,{cause:e}))}return ye(e,t,n,r,i,{config:fo(a)})}async function ws(e){return ht(e,Ss)}function Ts(){let e=0,t=null,n=`miss`,r=null,i=[],a=[],o=[],s=[],c=0,l=null,u=null,d=null,f=[];return{start(){e=Date.now()},end(){t=Date.now()},setCacheStatus(e){n=e},setCacheSource(e){r=e},addSessionUsed(e){i.includes(e)||i.push(e)},addSessionCreated(e){a.includes(e)||a.push(e)},addPRCreated(e){o.includes(e)||o.push(e)},addCommitCreated(e){s.includes(e)||s.push(e)},incrementComments(){c++},setTokenUsage(e,t,n){l=e,u=t,d=n},recordError(e,t,n,r,i){let a={timestamp:(/* @__PURE__ */ new Date()).toISOString(),type:e,message:t,recoverable:n,...r==null?{}:{classificationPath:r},...i==null?{}:{suggestedAction:i}};f.push(a)},getMetrics(){let p=t==null?Date.now()-e:t-e;return Object.freeze({startTime:e,endTime:t,duration:p,cacheStatus:n,cacheSource:r,sessionsUsed:Object.freeze([...i]),sessionsCreated:Object.freeze([...a]),prsCreated:Object.freeze([...o]),commitsCreated:Object.freeze([...s]),commentsPosted:c,tokenUsage:l,model:u,cost:d,errors:Object.freeze([...f])})}}}function Es(e){let t=e;return t.httpStatusCode===void 0?t.errorCode===void 0?t.errorName===void 0?e.message.includes(`NoSuchKey`):t.errorName===`NoSuchKey`:t.errorCode===`NoSuchKey`:t.httpStatusCode===404}function Ds(e,t){return Xe(e,`github`,t.repo,`metadata`,`review-delivery-receipt/pr-${t.prNumber}/run-${t.runId}.json`)}function Os(e){try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=t;return typeof n.attempt!=`number`||typeof n.reservedAt!=`string`?null:n.status===`reserved`?{status:`reserved`,attempt:n.attempt,reservedAt:n.reservedAt}:n.status===`delivered`?typeof n.deliveredAt!=`string`||typeof n.reviewId!=`number`?null:{status:`delivered`,attempt:n.attempt,reservedAt:n.reservedAt,deliveredAt:n.deliveredAt,reviewId:n.reviewId}:null}catch{return null}}function ks(e,t,n){let r=e=>({kind:`blocked`,reason:`store-unavailable`,detail:e});if(e.enabled===!1)return{reserve:async(e,n)=>(t.warning(`Review delivery receipt: object store not configured -- submitting without at-most-once protection; a rerun of this invocation could duplicate this review`,{identity:e,attempt:n}),{kind:`reserved-unconfigured`}),recordDelivered:async()=>{t.debug(`Review delivery receipt: recordDelivered skipped, object store not configured`)},release:async()=>{t.debug(`Review delivery receipt: release skipped, object store not configured`)}};let i=n??te(e,t);return{async reserve(n,a){if(i.getObject==null||i.conditionalPut==null)return r(`object store adapter does not support conditional operations`);let o=Ds(e,n);if(o.success===!1)return r(o.error.message);let s=await i.getObject(o.data);if(s.success===!1){if(Es(s.error)===!1)return t.warning(`Review delivery receipt: read failed, blocking submission`,{key:o.data,error:s.error.message}),{kind:`blocked`,reason:`read-failed`,detail:s.error.message}}else{let e=Os(s.data.data);return e==null?(t.warning(`Review delivery receipt: existing record is malformed, blocking submission`,{key:o.data}),{kind:`blocked`,reason:`read-failed`,detail:`malformed receipt record`}):(t.info(`Review delivery receipt: existing reservation found, blocking submission`,{key:o.data,existingStatus:e.status,existingAttempt:e.attempt,attempt:a}),{kind:`blocked`,reason:`already-reserved`,detail:`existing receipt status=${e.status} attempt=${e.attempt}`})}let c={status:`reserved`,attempt:a,reservedAt:(/* @__PURE__ */ new Date()).toISOString()},l=await i.conditionalPut(o.data,JSON.stringify(c),{ifNoneMatch:`*`});return l.success===!1?(t.warning(`Review delivery receipt: reservation conflict, blocking submission`,{key:o.data,error:l.error.message}),{kind:`blocked`,reason:`conflict`,detail:l.error.message}):(t.info(`Review delivery receipt: reservation acquired`,{key:o.data,attempt:a}),{kind:`reserved-configured`,etag:l.data.etag})},async recordDelivered(n,r,a,o){if(i.conditionalPut==null)return;let s=Ds(e,n);if(s.success===!1)return;let c={status:`delivered`,attempt:a,reservedAt:(/* @__PURE__ */ new Date()).toISOString(),deliveredAt:(/* @__PURE__ */ new Date()).toISOString(),reviewId:o},l=await i.conditionalPut(s.data,JSON.stringify(c),{ifMatch:r});l.success===!1&&t.warning(`Review delivery receipt: delivery uncertain -- the review was submitted but the receipt could not be marked delivered; operator reconciliation required`,{key:s.data,error:l.error.message})},async release(n,r){if(i.conditionalDelete==null){t.warning(`Review delivery receipt: release skipped, object store adapter does not support conditional delete; reservation remains and will block future attempts for this run`,{identity:n});return}let a=Ds(e,n);if(a.success===!1)return;let o=await i.conditionalDelete(a.data,{ifMatch:r});o.success===!1?t.warning(`Review delivery receipt: release failed after a stale-head abort; reservation remains and will block future attempts for this run`,{key:a.data,error:o.error.message}):t.info(`Review delivery receipt: reservation released after stale-head abort`,{key:a.data})}}}const As=/* @__PURE__ */ new Set([`.github`,`scripts`,`deploy/scripts`,`.git`,`package.json`,`bun.lock`,`package-lock.json`,`npm-shrinkwrap.json`,`pnpm-lock.yaml`,`yarn.lock`,`bun.lockb`,`Dockerfile`,`.npmrc`,`.gitmodules`,`action.yml`,`action.yaml`]);function js(e){let t=e.toLowerCase();return t===`dockerfile`||t.startsWith(`dockerfile.`)}function Ms(e){let t=e.toLowerCase();return[...As].some(e=>e.toLowerCase()===t)}function Ns(e){for(let t of As)if(Fs(e,t)||Fs(t,e)||t===`Dockerfile`&&js(e))return!0;return!1}function Ps(e){let t=e.trim(),n=t.startsWith(`/`),r=t;for(;r.startsWith(`./`);)r=r.slice(2);for(;r.startsWith(`/`);)r=r.slice(1);if(r=r.replaceAll(/\/{2,}/g,`/`).normalize(`NFC`),n||r.length===0||r===`.`||r.split(`/`).includes(`..`))throw Error(`path is malformed (absolute paths and traversal are not allowed)`);return r.replace(/\/+$/,``)}function Fs(e,t){let n=Ps(e),r=Ps(t);return n===r||n.startsWith(`${r}/`)}function Is(e){return Ns(Ps(e))}function Ls(e){let t;try{t=Ps(e)}catch{return!0}let n=t.split(`/`),r=n.at(-1)??``;return n.some(e=>Ms(e))||Ms(r)||js(r)}function Rs(e){try{return e===Ps(e)&&/(?:^|\/)\.(?:\/|$)/.test(e)===!1}catch{return!1}}function zs(e){let t=/* @__PURE__ */ new Set,n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);for(let e of n)try{let n=Ps(e);if(Ns(n))throw Error(`overlaps a protected brokered-push surface`);t.add(n)}catch(t){let n=V(t);throw Error(`Invalid brokered-push-extra-paths entry "${e}": ${n}`)}if(t.size>64)throw Error(`Invalid brokered-push-extra-paths: received ${t.size} unique entries; maximum is 64`);return[...t]}const Bs={MAX_FILE_SIZE_BYTES:5242880,FORBIDDEN_PATTERNS:[/\.\.\//,/^\.git\//,/\/\.git\//],FORBIDDEN_FILES:[`.env`,`.env.local`,`.env.production`,`credentials.json`,`auth.json`],FORBIDDEN_EXTENSIONS:[`.key`,`.pem`,`.p12`,`.pfx`]},Vs={name:`Fro Bot`,email:`fro-bot[bot]@users.noreply.github.com`};function Hs(e){for(let t of Bs.FORBIDDEN_PATTERNS)if(t.test(e))return{valid:!1,reason:`Path contains forbidden pattern: ${e}`};let t=e.split(`/`).pop()??``;if(Bs.FORBIDDEN_FILES.includes(t))return{valid:!1,reason:`File name is forbidden (secrets): ${t}`};for(let t of Bs.FORBIDDEN_EXTENSIONS)if(e.endsWith(t))return{valid:!1,reason:`File extension is forbidden: ${t}`};return{valid:!0}}function Us(e,t=`utf-8`){return(t===`base64`?Et.byteLength(e,`base64`):Et.byteLength(e,`utf-8`))>Bs.MAX_FILE_SIZE_BYTES?{valid:!1,reason:`File exceeds maximum size of ${Bs.MAX_FILE_SIZE_BYTES} bytes`}:{valid:!0}}function Ws(e){let t=[];for(let n of e){let e=Hs(n.path);if(!e.valid&&e.reason!=null&&t.push(e.reason),n.mode!=null&&n.mode!==`100644`&&t.push(`${n.path}: only regular file mode 100644 is supported`),n.type!=null&&n.type!==`blob`&&t.push(`${n.path}: only blob tree entries are supported`),n.deleted===!0)continue;if(!(`content`in n)||typeof n.content!=`string`){t.push(`${n.path}: file content is required for non-deletion changes`);continue}let r=Us(n.content,n.encoding);!r.valid&&r.reason!=null&&t.push(`${n.path}: ${r.reason}`)}return{valid:t.length===0,errors:t}}async function Gs(e,t,n){let{owner:r,repo:i,branch:a,message:o,files:s,expectedHeadSha:c,signal:l,author:u}=t,d=u??Vs,f=l==null?{}:{request:{signal:l}};n.info(`Creating commit`,{branch:a,filesChanged:s.length,message:o.slice(0,50)});let p=Ws(s);if(!p.valid)throw Error(`File validation failed: ${p.errors.join(`; `)}`);let{data:m}=await e.rest.git.getRef({owner:r,repo:i,ref:`heads/${a}`,...f}),h=m.object.sha;if(c!=null&&h!==c)throw Error(`Branch head changed before commit construction: expected ${c}, found ${h}`);let{data:g}=await e.rest.git.getCommit({owner:r,repo:i,commit_sha:h,...f}),_=g.tree.sha,v=await Promise.all(s.map(async t=>{if(t.deleted===!0)return{path:t.path,mode:`100644`,type:`blob`,sha:null};if(!(`content`in t)||typeof t.content!=`string`)throw Error(`File validation failed: ${t.path}: file content is required for non-deletion changes`);let{data:n}=await e.rest.git.createBlob({owner:r,repo:i,content:t.content,encoding:t.encoding??`utf-8`,...f});return{path:t.path,mode:`100644`,type:`blob`,sha:n.sha}})),{data:y}=await e.rest.git.createTree({owner:r,repo:i,base_tree:_,tree:v,...f}),{data:b}=await e.rest.git.createCommit({owner:r,repo:i,message:o,tree:y.sha,parents:[h],author:{name:d.name,email:d.email,date:(/* @__PURE__ */ new Date()).toISOString()},...f});return await e.rest.git.updateRef({owner:r,repo:i,ref:`heads/${a}`,sha:b.sha,force:!1,...f}),n.info(`Commit created`,{sha:b.sha}),{sha:b.sha,url:b.html_url,message:b.message}}const Ks=[{defaultPath:`src/`,pattern:/^src\//},{defaultPath:`packages/*/src/`,pattern:/^packages\/[^/]+\/src\//},{defaultPath:`docs/`,pattern:/^docs\//}],qs=Ks.map(e=>e.pattern),Js=/* @__PURE__ */ new Set([`README.md`,`ARCHITECTURE.md`,`STRUCTURE.md`]);function Ys(e=[]){return{defaultPaths:Ks.map(e=>e.defaultPath),rootFiles:[...Js],extraPrefixes:[...e]}}function Xs(e){return JSON.stringify(e)}function Zs(e){try{let t=Ps(e);if(Is(t)===!1)return null;for(let e of As){let n=e===`Dockerfile`&&(t.toLowerCase()===`dockerfile`||t.toLowerCase().startsWith(`dockerfile.`));if(Fs(t,e)||Fs(e,t)||n)return e}return t}catch{return e}}function Qs(e,t){try{return Fs(e,t)}catch{return!1}}function $s(e,t=[]){let n=[...Ws(e).errors],r=/* @__PURE__ */ new Set;for(let e of t){let t=Zs(e);t!=null&&n.push(`${e}: path prefix overlaps protected brokered-push surface ${t}`)}e.length>100&&n.push(`Brokered push exceeds the maximum of 100 files`);for(let i of e){Ws([i]).valid===!1&&r.add(i.path);let e=Js.has(i.path)||qs.some(e=>e.test(i.path)),a=t.some(e=>Qs(i.path,e)),o=e||a;Rs(i.path)===!1&&(n.push(`${i.path}: path is not canonical for brokered push`),r.add(i.path)),o===!1?(n.push(`${i.path}: path is not allowed for brokered push`),r.add(i.path)):e===!1&&a&&Ls(i.path)&&(n.push(`${i.path}: path is within a protected brokered-push surface`),r.add(i.path))}return n.length===0?{valid:!0,errors:[]}:{valid:!1,errors:n,paths:[...r]}}function ec(e){R(`output-mode-migration`,JSON.stringify(e))}function tc(e){R(`session-id`,e.sessionId??``),R(`resolved-output-mode`,e.resolvedOutputMode??``),R(`delivery-kind`,e.deliveryKind),e.outputModeMigration!=null&&ec(e.outputModeMigration),R(`brokered-push-allowlist`,e.brokeredPushAllowlist==null?``:Xs(e.brokeredPushAllowlist)),R(`cache-status`,e.cacheStatus),R(`duration`,e.duration)}function nc(e){R(`delivery-kind`,e)}function rc(e){R(`invocation-outcome`,e)}function ic(e){R(`cache-save-result`,e)}function ac(e){let t=[];return e.observationGap&&t.push(`observation-gap`),e.ownershipUnresolved&&t.push(`ownership-unresolved`),e.quiescenceConfirmed===!1&&t.push(`server-quiescence-unconfirmed`),e.continuityUnverified&&t.push(`lease-continuity-unverified`),t}function oc(e){let{deliverySucceeded:t,verification:n}=e,r=ac(n);return{outcome:r.length>0?`incomplete`:t?`succeeded`:`failed`,deliverySucceeded:t,incompleteReasons:r}}async function sc(e,t){let n={repo:e.agentContext.repo,commentId:e.agentContext.commentId,issueNumber:e.agentContext.issueNumber,issueType:e.agentContext.issueType,botLogin:e.botLogin},r=M({phase:`acknowledgment`});return await Qa(e.githubClient,n,r),t.debug(`Acknowledgment phase completed`),n}const cc=String.raw`^http\.(.*\.)?extraheader$`,lc=`Git config verification could not complete on a withhold run — fix the git config error in the checkout (e.g. a malformed config file) before retrying`,uc=`Git repository context verification could not complete on a withhold run — fix the git repository state (e.g. an invalid GIT_DIR, or an unsafe/unreadable repository) before retrying`,dc=`Git origin remote verification could not complete on a withhold run — fix the git remote configuration before retrying`;function fc(e){let[t,...n]=e.split(/\r\n|\n/).filter(e=>e.startsWith(`fatal:`));return t!==void 0&&n.length===0&&t.startsWith(`fatal: not a git repository (or any`)}function pc(e){return e instanceof Error?e.code===`ENOENT`||e.message.startsWith(`Unable to locate executable file: git.`):!1}function mc(){let e={};for(let[t,n]of Object.entries(U.env))n!==void 0&&(e[t]=n);return e.LC_ALL=`C`,e}async function hc(e,t,n){let r;try{r=await e.getExecOutput(`git`,[`config`,`--includes`,`--name-only`,`--get-regexp`,cc],{cwd:t,ignoreReturnCode:!0,silent:!0})}catch(e){return pc(e)?(n.warning(`git-credential-check: git binary not found — verification skipped, not evidence a credential is absent`),I(void 0)):(n.warning(`git-credential-check: effective config check threw unexpectedly, denying`),P(lc))}if(r.exitCode===0&&r.stdout.trim().length>0)return P(`Persisted git credential found in the effective git config (local, global, system, worktree-scoped, or an includeIf/include target) on a withhold run — set persist-credentials: false on actions/checkout, and check for other host-level config that injects an HTTP auth header`);if(r.exitCode!==1||r.stdout.trim().length>0)return n.warning(`git-credential-check: effective config check returned an unexpected result, denying`,{exitCode:r.exitCode}),P(lc);let i;try{i=await e.getExecOutput(`git`,[`rev-parse`,`--absolute-git-dir`],{cwd:t,ignoreReturnCode:!0,silent:!0,env:mc()})}catch{return n.warning(`git-credential-check: repository context check threw unexpectedly, denying`),P(uc)}if(i.exitCode===128&&fc(i.stderr))return n.warning(`git-credential-check: workspace is not a git repository — origin check skipped (effective config check already ran and found no header)`),I(void 0);if(i.exitCode!==0||i.stdout.trim().length===0)return n.warning(`git-credential-check: repository context check returned an unexpected result, denying`,{exitCode:i.exitCode}),P(uc);let a;try{a=await e.getExecOutput(`git`,[`remote`,`get-url`,`origin`],{cwd:t,ignoreReturnCode:!0,silent:!0})}catch{return n.warning(`git-credential-check: origin remote check threw unexpectedly, denying`),P(dc)}return a.exitCode===2?I(void 0):a.exitCode===0&&a.stdout.trim().length>0?gc(a.stdout.trim())?P(`Persisted git credential found embedded in the origin remote URL on a withhold run — set persist-credentials: false on actions/checkout`):I(void 0):(n.warning(`git-credential-check: origin remote check returned an unexpected result, denying`,{exitCode:a.exitCode}),P(dc))}function gc(e){let t=e.indexOf(`@`);if(t===-1)return!1;let n=e.indexOf(`://`),r=n===-1?e.slice(0,t):e.slice(n+3,t);return r.includes(`x-access-token:`)||r.includes(`:`)}function _c(e,t){try{JSON.parse(e)}catch{throw Error(`${t} must be valid JSON`)}}function vc(e,t){let n=e.trim();if(!/^\d+$/.test(n))throw Error(`${t} must be a positive integer, received: ${e}`);let r=Number.parseInt(n,10);if(r===0)throw Error(`${t} must be a positive integer, received: ${e}`);return r}function yc(e){let t=e.trim(),n=t.indexOf(`/`);if(n===-1)throw Error(`Invalid model format: "${e}". Expected "provider/model" (e.g., "anthropic/claude-sonnet-4-20250514")`);let r=t.slice(0,n).trim(),i=t.slice(n+1).trim();if(r.length===0)throw Error(`Invalid model format: "${e}". Provider cannot be empty.`);if(i.length===0)throw Error(`Invalid model format: "${e}". Model ID cannot be empty.`);return{providerID:r,modelID:i}}function bc(e,t=`timeout`){let n=e.trim();if(!/^\d+$/.test(n))throw Error(`${t} must be a non-negative integer, received: ${e}`);let r=Number.parseInt(n,10);if(Number.isNaN(r)||r<0)throw Error(`${t} must be a non-negative integer, received: ${e}`);return r}const xc=[`auto`,`working-dir`,`branch-pr`],Sc=[`github`,`none`],Cc=12e4;function wc(e){return typeof e==`object`&&!!e}function Tc(e){if(wc(e)===!1)return!1;let t=e.pull_request;if(wc(t)===!1)return!1;let n=t.head;if(wc(n)===!1)return!1;let r=n.repo;return wc(r)!==!1&&r.fork===!0}function Ec(){try{let e=U.env.AWS_ACCESS_KEY_ID?.trim()??``;e.length>0&&Ye(e);let t=U.env.AWS_SECRET_ACCESS_KEY?.trim()??``;t.length>0&&Ye(t);let n=j(`github-token`,{required:!0}).trim();if(n.length===0)return P(/* @__PURE__ */ Error(`github-token is required but was not provided`));Ye(n),delete U.env[`INPUT_GITHUB-TOKEN`];let i=j(`auth-json`,{required:!0}).trim();if(i.length===0)return P(/* @__PURE__ */ Error(`auth-json is required but was not provided`));_c(i,`auth-json`),Ye(i),delete U.env[`INPUT_AUTH-JSON`];let a=j(`trusted-head-sha`).trim(),o=j(`prompt`).trim(),s=o.length>0?o:null,c=j(`output-mode`).trim().toLowerCase(),l=c.length>0?Dc(c):`auto`,d=j(`response-mode`).trim().toLowerCase(),f=d.length>0?Oc(d):`github`,p=j(`review-skip-label`).trim(),m=p.length>0?p:null,h=zs(j(`brokered-push-extra-paths`)),g=j(`session-retention`).trim(),_=g.length>0?vc(g,`session-retention`):50,v=j(`s3-backup`).trim().toLowerCase(),y=j(`s3-allow-insecure-endpoint`).trim().toLowerCase(),b=Mr({enabled:v===`true`,bucket:{value:j(`s3-bucket`).trim(),source:`s3-bucket`},region:[{value:j(`aws-region`).trim(),source:`aws-region`}],endpoint:{value:j(`s3-endpoint`).trim(),source:`s3-endpoint`},allowInsecureEndpoint:y===`true`,prefix:{value:j(`s3-prefix`).trim(),source:`s3-prefix`},sseEncryption:{value:j(`s3-sse-encryption`).trim(),source:`s3-sse-encryption`},sseKmsKeyId:{value:j(`s3-sse-kms-key-id`).trim(),source:`s3-sse-kms-key-id`},expectedBucketOwner:{value:j(`s3-expected-bucket-owner`).trim(),source:`s3-expected-bucket-owner`}},{region:`optional`});if(b.success===!1)throw b.error;let x=b.data;x.enabled&&Tc(vt.payload)&&(it(`S3 object store is disabled for fork pull requests`),x={...x,enabled:!1});let S=j(`agent`).trim(),C=S.length>0?S:null,w=j(`model`).trim(),T=w.length>0?yc(w):null,E=j(`timeout`).trim(),D=E.length>0?bc(E):r,O=j(`server-bootstrap-timeout`).trim(),A=O.length>0?vc(O,`server-bootstrap-timeout`):k,ee=Math.min(A,Cc);ee!==A&&it(`server-bootstrap-timeout of ${A}ms exceeds the maximum of ${Cc}ms and was clipped to ${Cc}ms. A server that has not started within that budget will not start.`);let te=j(`opencode-version`).trim(),M=te.length>0?te:u,ne=j(`skip-cache`).trim().toLowerCase()===`true`,re=j(`systematic-version`).trim(),ie=re.length>0?re:ze,ae=j(`opencode-config`).trim(),N=ae.length>0?ae:null,oe=j(`systematic-config`).trim(),se=oe.length>0?oe:null,ce=j(`dedup-window`).trim(),F=ce.length>0?bc(ce,`dedup-window`):pt;if(N!=null){_c(N,`opencode-config`);let e=JSON.parse(N);if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Input 'opencode-config' must be a JSON object`)}return I({githubToken:n,authJson:i,trustedHeadSha:a,prompt:s,outputMode:l,responseMode:f,sessionRetention:_,storeConfig:x,agent:C,model:T,timeoutMs:D,serverBootstrapTimeoutMs:ee,opencodeVersion:M,skipCache:ne,systematicVersion:ie,opencodeConfig:N,systematicConfig:se,dedupWindow:F,reviewSkipLabel:m,brokeredPushExtraPaths:h})}catch(e){return P(e instanceof Error?e:Error(String(e)))}}function Dc(e){switch(e){case`auto`:case`working-dir`:case`branch-pr`:return e;default:throw Error(`Invalid output-mode value: "${e}". Valid values: ${xc.join(`, `)}`)}}function Oc(e){switch(e){case`github`:case`none`:return e;default:throw Error(`Invalid response-mode value: "${e}". Valid values: ${Sc.join(`, `)}`)}}async function kc(e){let t=Ec();if(!t.success)return B(`Invalid inputs: ${t.error.message}`),null;let n=t.data,r=M({phase:`main`});r.info(`Action inputs parsed`,{sessionRetention:n.sessionRetention,s3Backup:n.storeConfig.enabled,hasGithubToken:n.githubToken.length>0,hasPrompt:n.prompt!=null,outputMode:n.outputMode,agent:n.agent,hasModelOverride:n.model!=null,timeoutMs:n.timeoutMs});let{credential:i,delivery:a}=or(vt.eventName,n.responseMode);if(i===`withhold`){let e=U.env.GITHUB_WORKSPACE??U.cwd(),t=await hc(Vo(),e,r);if(t.success===!1)return B(`Refusing to proceed with credential withheld: ${t.error}`),null}let o=await Ac(a,r),s=await ws({logger:r,opencodeVersion:n.opencodeVersion,githubToken:n.githubToken,authJson:n.authJson,systematicVersion:n.systematicVersion,opencodeConfig:n.opencodeConfig,systematicConfig:n.systematicConfig,credential:i});return s.didSetup?r.info(`OpenCode auto-setup completed`,{version:s.version}):r.info(`OpenCode already available`,{version:s.version}),H(z.OPENCODE_VERSION,s.version),H(z.S3_ENABLED,String(n.storeConfig.enabled)),H(z.S3_BUCKET,n.storeConfig.bucket),H(z.S3_REGION,n.storeConfig.region),H(z.S3_PREFIX,n.storeConfig.prefix),H(z.S3_ENDPOINT,n.storeConfig.endpoint??``),H(z.S3_EXPECTED_BUCKET_OWNER,n.storeConfig.expectedBucketOwner??``),H(z.S3_ALLOW_INSECURE_ENDPOINT,String(n.storeConfig.allowInsecureEndpoint===!0)),H(z.S3_SSE_ENCRYPTION,n.storeConfig.sseEncryption??``),H(z.S3_SSE_KMS_KEY_ID,n.storeConfig.sseKmsKeyId??``),e.debug(`Bootstrap phase completed`,{opencodeVersion:s.version}),{inputs:n,logger:r,opencodeResult:s,delivery:a,responseFilePath:o?.responseFilePath??null,responseFilePathCandidates:o?.responseFilePathCandidates??null,trustedHeadSha:n.trustedHeadSha}}async function Ac(e,t){if(e!==`file-convention`)return null;let n=U.env.RUNNER_TEMP;if(n==null||n.trim().length===0)throw Error(`RUNNER_TEMP is required for file-convention response delivery but was not set`);let r=F(),i=oe(),o=Dt.randomUUID(),s=U.env.GITHUB_WORKSPACE,c=ne({runnerTemp:n,runId:r,runAttempt:i}),l=a({runnerTemp:n,runId:r,runAttempt:i,nonce:o,workspaceDir:s}),u=l.expectedPath;await G.mkdir(c,{recursive:!0});let d=[l.expectedPath,...l.fallbackPaths];for(let e of d)if(await G.stat(e).then(e=>e.isFile()).catch(()=>!1))throw Error(`Response file already exists before execution (preseed guard tripped) in directory: ${K.dirname(e)}`);return t.debug(`Resolved response file path`,{directory:K.dirname(u)}),{responseFilePath:u,responseFilePathCandidates:l}}const jc=/^[0-9a-f]{40}$/i;function Mc(){return{exec:xe,getExecOutput:Ve}}async function Nc(e){let{workspacePath:t,logger:n,execAdapter:r=Mc()}=e,i=K.join(t,`.git`),a=K.join(i,`opencode`);try{let e=(await G.readFile(a,`utf8`)).trim();if(e.length>0){if(jc.test(e))return n.debug(`Project ID loaded from cache`,{projectId:e}),{projectId:e,source:`cached`};n.warning(`Invalid cached project ID format, regenerating`,{cachedId:e})}}catch(e){n.debug(`No cached project ID found`,{error:V(e)})}try{let e=await G.readFile(i,`utf8`),n=/^gitdir: (.+)$/m.exec(e);if(n==null)return{projectId:null,source:`error`,error:`Invalid .git file format`};i=K.resolve(t,n[1]),a=K.join(i,`opencode`)}catch(e){if((typeof e==`object`?e.code:void 0)!==`EISDIR`)return{projectId:null,source:`error`,error:`Not a git repository`}}try{let{stdout:e,exitCode:i}=await r.getExecOutput(`git`,[`rev-list`,`--max-parents=0`,`--all`],{cwd:t,silent:!0});if(i!==0||e.trim().length===0)return{projectId:null,source:`error`,error:`No commits found in repository`};let o=e.trim().split(` -`).map(e=>e.trim()).filter(e=>e.length>0).sort();if(o.length===0)return{projectId:null,source:`error`,error:`No root commits found`};let s=o[0];try{await G.writeFile(a,s,{encoding:`utf8`,flag:`wx`}),n.info(`Project ID generated and cached`,{projectId:s,source:`generated`})}catch(e){(typeof e==`object`?e.code:void 0)===`EEXIST`?n.debug(`Project ID file already written by concurrent process, skipping`,{projectId:s}):n.warning(`Failed to cache project ID (continuing)`,{error:V(e)})}return{projectId:s,source:`generated`}}catch(e){return{projectId:null,source:`error`,error:V(e)}}}function Pc(e){let t=K.resolve(e);return t.endsWith(K.sep)&&t.length>1?t.slice(0,-1):t}async function Fc(e,t){let n=be(),r=M({phase:`cache`}),i=p(),a=K.join(i,`.git`,`opencode`),o=v(),s=await Pe({components:n,logger:r,storagePath:o,authPath:b(),projectIdPath:a,opencodeVersion:e.opencodeResult.version,storeConfig:e.inputs.storeConfig}),c=s.corrupted?`corrupted`:s.hit?`hit`:`miss`;t.setCacheStatus(c),t.setCacheSource(s.source),e.logger.info(`Cache restore completed`,{cacheStatus:c,key:s.key});let l=await Nc({workspacePath:i,logger:r});if(l.source===`error`?r.warning(`Failed to generate project ID (continuing)`,{error:l.error}):r.debug(`Project ID ready`,{projectId:l.projectId,source:l.source}),c===`hit`){let e=K.dirname(o),n=K.join(e,ut),i=async e=>{r.warning(`Restored database is structurally corrupt - cleaning storage before bootstrap`,{reason:e}),await tt(o),c=`corrupted`,s={hit:!1,key:s.key,restoredPath:null,corrupted:!0,source:null},t.setCacheStatus(c),t.setCacheSource(s.source)},a=await rt({dbPath:n,walPath:K.join(e,Te),logger:r});if(a.status===`checkpointed`)r.info(`Repaired restored database: checkpointed write-ahead log before bootstrap`);else if(a.status===`failed`)a.structural?await i(a.reason):r.warning(`Failed to repair restored database before bootstrap`,{reason:a.reason});else{let e=await Je(n);e.usable===!1&&await i(e.reason)}}let u=M({phase:`server-bootstrap`}),d=await Cs(new AbortController().signal,u,Pc(i),e.inputs.serverBootstrapTimeoutMs);if(!d.success)return B(`OpenCode server bootstrap failed: ${d.error.message}`),null;let f=d.data;return u.info(`SDK server bootstrapped successfully`),{cacheResult:s,cacheStatus:c,serverHandle:f}}const Ic={markdownImage:/!\[([^\]]*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[^)]+)\)/gi,markdownLink:/\[([^\]]+)\]\((https:\/\/github\.com\/user-attachments\/files\/[^)]+)\)/gi,htmlImage:/]*src=["'](https:\/\/github\.com\/user-attachments\/assets\/[^"']+)["'][^>]*>/gi};function Lc(e,t,n){e.lastIndex=0;let r=e.exec(t);for(;r!=null;)n(r),r=e.exec(t);e.lastIndex=0}function Rc(e){let t=[],n=/* @__PURE__ */ new Set;return Lc(Ic.markdownImage,e,e=>{let r=e[2],i=e[1],a=e[0];r!=null&&i!=null&&!n.has(r)&&wi(r)&&(n.add(r),t.push({url:r,originalMarkdown:a,altText:i,type:`image`}))}),Lc(Ic.markdownLink,e,e=>{let r=e[2],i=e[1],a=e[0];r!=null&&i!=null&&!n.has(r)&&wi(r)&&(n.add(r),t.push({url:r,originalMarkdown:a,altText:i,type:`file`}))}),Lc(Ic.htmlImage,e,e=>{let r=e[1],i=e[0];if(r!=null&&!n.has(r)&&wi(r)){n.add(r);let e=/alt=["']([^"']*)["']/i.exec(i);t.push({url:r,originalMarkdown:i,altText:e?.[1]??``,type:`image`})}}),Ic.htmlImage.lastIndex=0,t}function zc(e,t,n){try{let r=new URL(e).pathname.split(`/`).at(-1);if(r!=null&&/\.[a-z0-9]+$/i.test(r))return r;if(t.trim().length>0){let e=t.replaceAll(/[^\w.-]/g,`_`).slice(0,50);return e.trim().length>0?e:`attachment_${n+1}`}return`attachment_${n+1}`}catch{return`attachment_${n+1}`}}const Bc={maxFiles:5,maxFileSizeBytes:5242880,maxTotalSizeBytes:15728640,allowedMimeTypes:[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`text/plain`,`text/markdown`,`text/csv`,`application/json`,`application/pdf`]},Vc=[`github.com`,`githubusercontent.com`];async function Hc(e,t,n,r,i){i.debug(`Downloading attachment`,{url:e.url});try{let a=await fetch(e.url,{headers:{Authorization:`Bearer ${n}`,Accept:`*/*`,"User-Agent":`fro-bot-agent`},redirect:`manual`}),o=a;if(a.status>=300&&a.status<400){let t=a.headers.get(`location`);if(t==null)return i.warning(`Redirect without location`,{url:e.url}),null;let n=new URL(t);if(!Vc.some(e=>n.hostname===e||n.hostname.endsWith(`.${e}`)))return i.warning(`Redirect to non-GitHub host blocked`,{url:e.url,redirectTo:n.hostname}),null;o=await fetch(t,{headers:{Accept:`*/*`,"User-Agent":`fro-bot-agent`},redirect:`follow`})}if(!o.ok)return i.warning(`Attachment download failed`,{url:e.url,status:o.status}),null;let s=o.headers.get(`content-length`);if(s!=null){let t=Number.parseInt(s,10);if(t>r.maxFileSizeBytes)return i.warning(`Attachment exceeds size limit (Content-Length)`,{url:e.url,size:t,limit:r.maxFileSizeBytes}),null}let c=Et.from(await o.arrayBuffer());if(c.length>r.maxFileSizeBytes)return i.warning(`Attachment exceeds size limit`,{url:e.url,size:c.length,limit:r.maxFileSizeBytes}),null;let l=o.headers.get(`content-type`)??`application/octet-stream`,u=zc(e.url,e.altText,t),d=l.split(`;`)[0],f=d==null?`application/octet-stream`:d.trim(),p=await G.mkdtemp(K.join(Kt.tmpdir(),`fro-bot-attachments-`)),m=u.trim().length>0?u:`attachment_${t+1}`,h=K.join(p,m);return await G.writeFile(h,c),i.debug(`Attachment downloaded`,{filename:u,mime:f,sizeBytes:c.length,tempPath:h}),{url:e.url,filename:u,mime:f,sizeBytes:c.length,tempPath:h}}catch(t){return i.warning(`Attachment download error`,{url:e.url,error:V(t)}),null}}async function Uc(e,t,n=Bc,r){return Promise.all(e.map(async(e,i)=>Hc(e,i,t,n,r)))}async function Wc(e,t){for(let n of e)try{await G.unlink(n);let e=K.dirname(n);await G.rmdir(e).catch(()=>{})}catch(e){t.debug(`Failed to cleanup temp file`,{path:n,error:V(e)})}}function Gc(e){return e.map(e=>({type:`file`,mime:e.mime,url:kt(e.tempPath).toString(),filename:e.filename}))}function Kc(e,t,n){let r=e,i=new Set(n.map(e=>e.filename));for(let e of t){let t=n.find(e=>i.has(e.filename));t!=null&&(r=r.replace(e.originalMarkdown,`@${t.filename}`))}return r}function qc(e,t,n,r){return{processed:n,skipped:r,modifiedBody:Kc(e,t,n),fileParts:Gc(n),tempFiles:n.map(e=>e.tempPath)}}function Jc(e,t=Bc,n){let r=[],i=[],a=0;for(let o of e)o!=null&&(r.length>=t.maxFiles?(i.push({url:o.url,reason:`Exceeds max file count (${t.maxFiles})`}),n.debug(`Attachment skipped: max count`,{url:o.url})):o.sizeBytes>t.maxFileSizeBytes?(i.push({url:o.url,reason:`File too large (${h(o.sizeBytes)} > ${h(t.maxFileSizeBytes)})`}),n.debug(`Attachment skipped: too large`,{url:o.url,size:o.sizeBytes})):a+o.sizeBytes>t.maxTotalSizeBytes?(i.push({url:o.url,reason:`Would exceed total size limit (${h(t.maxTotalSizeBytes)})`}),n.debug(`Attachment skipped: total size exceeded`,{url:o.url})):Yc(o.mime,t.allowedMimeTypes)?(a+=o.sizeBytes,r.push({filename:o.filename,mime:o.mime,sizeBytes:o.sizeBytes,tempPath:o.tempPath}),n.info(`Attachment validated`,{filename:o.filename,mime:o.mime,sizeBytes:o.sizeBytes})):(i.push({url:o.url,reason:`MIME type not allowed: ${o.mime}`}),n.debug(`Attachment skipped: MIME type`,{url:o.url,mime:o.mime})));return{validated:r,skipped:i}}function Yc(e,t){let[n]=e.split(`/`);for(let r of t)if(r===e||r.endsWith(`/*`)&&n!=null&&n===r.slice(0,-2))return!0;return!1}async function Xc(e){let{bootstrapLogger:t,reactionCtx:n,githubClient:r,attachmentResult:i,serverHandle:a,sessionRetention:o,detectedOpencodeVersion:s,storeConfig:c,metrics:l,agentIdentity:u,repo:d,runId:f,lockEtag:m,ownershipLedger:h,leaseRenewal:g,skipSessionPersistence:_=!1}=e,y=a==null,x=!1;try{if(i!=null){let e=M({phase:`attachment-cleanup`});try{await Wc(i.tempFiles,e)}catch(t){e.warning(`Attachment temp-file cleanup failed (non-fatal); shutdown still proceeds`,{error:V(t)})}}let e=U.env.RUNNER_TEMP;if(e!=null&&e.trim().length>0){let t=M({phase:`attachment-dir-cleanup`});try{let t=Vn({runnerTemp:e.trim(),runId:F(),runAttempt:oe()});await G.rm(t,{recursive:!0,force:!0})}catch(e){t.warning(`Attachment directory cleanup failed (non-fatal); shutdown still proceeds`,{error:V(e)})}}if(n!=null&&r!=null){let e=M({phase:`cleanup`});try{await ao(r,n,e)}catch(t){e.warning(`Working-label removal failed (non-fatal); shutdown still proceeds`,{error:V(t)})}}let x=M({phase:`prune`}),S=p();if(a!=null)try{let e=Pc(S),t={...vr,maxSessions:o??vr.maxSessions},n=await yr(a.client,e,t,x);n.prunedCount>0&&x.info(`Pruned old sessions`,{pruned:n.prunedCount,remaining:n.remainingCount})}catch(e){x.warning(`Session pruning failed (non-fatal); shutdown still proceeds`,{error:V(e)})}if(a!=null)try{let e=await a.shutdown();y=e.quiesced,e.quiesced||t.warning(`OpenCode server did not confirm shutdown within the quiescence window; the checkpoint that follows may race a still-live writer`)}catch(e){y=!1,t.warning(`Server shutdown failed (non-fatal)`,{error:V(e)})}if(c.enabled===!0&&d!==``&&f!==``){let e=M({phase:`object-store-artifacts`});try{let t=te(c,e),n=et(),r=await De(t,c,u,d,f,n,e),i=l.getMetrics(),a=[.../* @__PURE__ */ new Set([...i.sessionsUsed,...i.sessionsCreated])],o={runId:f,timestamp:(/* @__PURE__ */ new Date()).toISOString(),tokenUsage:i.tokenUsage,timing:{startTime:i.startTime,endTime:i.endTime,duration:i.duration},cacheStatus:i.cacheStatus,cacheSource:i.cacheSource,sessionIds:a,sessionsUsed:i.sessionsUsed,sessionsCreated:i.sessionsCreated,prsCreated:i.prsCreated,commitsCreated:i.commitsCreated,commentsPosted:i.commentsPosted,model:i.model,cost:i.cost,errors:i.errors,artifactUpload:r};(await ct(t,c,u,d,f,o,e)).success&&H(z.CLEANUP_METADATA_WRITTEN,`true`)}catch(t){e.warning(`Object store artifact or metadata sync failed (non-fatal)`,{error:V(t)})}}let C=be(),w=M({phase:`cache-save`}),T=K.join(S,`.git`,`opencode`);await g?.settle?.();let E=h===void 0||h.isPersistenceSafe(),D=g!=null&&(g.continuityUnverified?.()??g.hasFailed()),O=_?`this run did not acquire the Action coordination lock, so it must not write the shared session store`:E===!1?`background subagent work this run owns is still unresolved (the ownership ledger has entries that are outstanding or unknown), so persisting could race a live writer`:y===!1?`the OpenCode server did not confirm it had stopped writing before this point, so the checkpoint could not be trusted to see a quiet database`:D?`the coordination lease could not verify uninterrupted coverage, so this run can no longer be certain another Action run has not taken over and is writing the same session state`:null,k=m!=null||g!=null,A=c.enabled===!0&&k===!1,ee;O==null?ee=await Ge({components:C,runId:F(),logger:w,storagePath:v(),authPath:b(),projectIdPath:T,opencodeVersion:s,storeConfig:c,objectStorePublish:k?`publish`:`withhold`}):(w.warning(`Declining cache save: persistence safety could not be confirmed`,{reason:O}),ee={cachePersisted:!1,storePersisted:!1,outcome:`ownership-declined`});let j=ae(ee);H(z.CACHE_SAVED,j);try{ic(j)}catch(e){w.warning(`Failed to set cache-save-result output (non-fatal)`,{error:V(e)})}if(await Ae(ee,`main`,w,O??void 0,O==null&&A?`lease-not-acquired`:void 0),fe()){let e=M({phase:`artifact-upload`});await ot({logPath:et(),runId:F(),runAttempt:oe(),invocationIdentity:se(),logger:e})&&H(z.ARTIFACT_UPLOADED,`true`)}}catch(e){t.warning(`Cleanup failed (non-fatal)`,{error:V(e)})}finally{let e=m;if(g!=null&&(await g.stop(),e=g.currentEtag()),e!=null&&c.enabled===!0){let t=M({phase:`lock-release`});try{let n=te(c,t),r=await _e({storeAdapter:n,storeConfig:c,lockTtlSeconds:900,heartbeatIntervalMs:qe,staleThresholdMs:Fe,pendingStaleThresholdMs:nt},d,e,t,Be);r.success===!1?t.warning(`Lock release failed (non-fatal)`,{error:r.error.message,repo:d}):(H(z.LOCK_HOLDER_ID,``),H(z.LOCK_HOLDER_JOB,``),H(z.LOCK_ACQUISITION_TOKEN,``),t.debug(`Lock released`,{repo:d}))}catch(e){t.warning(`Lock release threw (non-fatal)`,{error:V(e),repo:d})}}x=g!=null&&(g.continuityUnverified?.()??g.hasFailed())}return{quiescenceConfirmed:y,continuityUnverified:x}}const Zc=`agent: blocked`,Qc=[250,750];function $c(e){let t=e.target;return t==null?null:t.kind===`issue`||t.kind===`pr`?t.number:null}function el(e,t){switch(e){case`active-holder`:return t?.surface===`github`?`Another Fro Bot Action run is active for this repository.`:`Another run holds this repository's Action coordination lock.`;case`expired-holder`:return`An expired coordination lease from a non-Action holder could not be safely reclaimed.`;case`conflict`:return`The coordination lease changed hands while this run was trying to reclaim it.`}}function tl(e){if(e==null)return null;let t=new Date(e.acquired_at).getTime()+e.ttl_seconds*1e3;return Number.isFinite(t)?new Date(t).toISOString():null}function nl(e){let{owner:t,repo:n}=e.repo,r=e.target;if(r!=null&&Number.isInteger(r.number)&&r.number>0){let e=`https://github.com/${t}/${n}`;switch(r.kind){case`issue`:return ve(`issue #${r.number}`,`${e}/issues/${r.number}`);case`pr`:return ve(`pull request #${r.number}`,`${e}/pull/${r.number}`);case`discussion`:return ve(`discussion #${r.number}`,`${e}/discussions/${r.number}`)}}return o(`repository-level invocation`)}function rl(e,t){if(t==null)return o(`unknown`);let n=Ce(t.holder_id);if(t.surface===`github`&&n!=null){let r=`https://github.com/${e.repo.owner}/${e.repo.repo}/actions/runs/${n}`;return`${o(t.surface)} (Action run ${ve(String(n),r)})`}return o(t.surface)}async function il(e,t,n,r,i){try{let a=`${t.repo.owner}/${t.repo.repo}`;if(await Hr(e,a,`agent: blocked`,`D29922`,`Fro Bot execution was blocked by repository coordination; retry required.`,i)===!1)return`failed`;let o=await Gr(e,a,n,Zc,i);if(await Ur(e,a,n,[`agent: blocked`],i))return`applied`;if(o!==`removed`)return`failed`;for(let t of r)if(t>0&&await T(t),await Ur(e,a,n,[`agent: blocked`],i))return`applied`;return i.error(`Blocked label could not be restored after the re-stamp removed it`,{issueNumber:n,reason:`restore-failed-after-remove`,attempts:r.length+1}),`lost`}catch(e){return i.warning(`Failed to apply blocked label (non-fatal)`,{error:V(e)}),`failed`}}async function al(e,t,n,r,i,a){try{let a=tl(t);Ue.addHeading(`Fro Bot Agent Run — Skipped (Coordination)`,2).addRaw(`${mt(o(n))}\n`).addTable([[{data:`Detail`,header:!0},{data:`Value`,header:!0}],[`Target`,nl(e)],[`Trigger`,gt(`${e.eventType}.${e.action??`unknown`}`)],[`Reason`,o(n)],[`Last observed holder`,rl(e,t)],[`Lease expiry (observed)`,a==null?o(`unknown`):`${gt(a)} — NOT an estimated completion time`],[`Label ${gt(Zc)}`,o(r)]]),i!=null&&Ue.addRaw(`${mt(`${re(`Action needed:`)} the ${gt(Zc)} label could not be re-applied to #${i}; add it manually.`)}\n`),Ue.addRaw(`${mt(`No agent execution occurred. This request was not automatically requeued.`)}\n${mt(`${re(`Recovery:`)} re-run this workflow, or mention the bot again after the other run finishes. Editing the issue alone does not retrigger it. The ${gt(Zc)} label is removed automatically when a later run for this item succeeds; remove it manually if needed.`)}\n`),await Ue.write()}catch(e){a.warning(`Failed to write coordination skip summary`,{error:V(e)})}}async function ol(e){let{githubClient:t,triggerContext:n,holder:r,reason:i,responseMode:a,logger:o}=e,s=el(i,r),c=$c(n),l=`not applicable (no issue or pull request target)`,u=null;if(c!=null&&a===`none`)l=`not applied (response-mode is none)`;else if(c!=null){let r=await il(t,n,c,e.restoreBackoffMs??Qc,o);l=r===`applied`?`applied`:`not applied (labeling failed)`,r===`lost`&&(u=c)}await al(n,r,s,l,u,o),it(`Fro Bot skipped this run: ${s} No agent execution occurred; re-run the workflow to retry.`)}function sl(e){let t=e.target;return t==null?null:t.kind===`issue`||t.kind===`pr`?t.number:null}async function cl(e,t,n){let{githubClient:r,triggerContext:i,logger:a}=e,o=`${i.repo.owner}/${i.repo.repo}`,s=await qr(r,o,t,a,n);if(n.aborted)return;if(s==null){a.info(`Not clearing blocked label: labels could not be read`,{issueNumber:t});return}if(s.some(e=>e.toLowerCase()===`agent: blocked`)===!1)return;let c=await Yr(r,o,t,[Zc,Er],a,n);if(n.aborted)return;if(c==null){a.info(`Not clearing blocked label: issue events could not be read`,{issueNumber:t});return}let l=c.get(Zc),u=c.get(Er);l==null||u==null?a.info(`Keeping blocked label: a labeled event needed for the comparison was not found`,{issueNumber:t,hasBlockedEvent:l!=null,hasWorkingEvent:u!=null}):l>=u?a.info(`Keeping blocked label: it was applied at or after the run-start anchor`,{issueNumber:t,blockedLabeledAt:new Date(l).toISOString(),workingLabeledAt:new Date(u).toISOString()}):n.aborted||await Kr(r,o,t,`agent: blocked`,a,n)&&a.info(`Cleared stale blocked label after a successful run`,{issueNumber:t})}async function ll(e){let{triggerContext:t,outcome:n,responseMode:r,logger:i}=e;if(n!==`succeeded`||r===`none`)return;let a=sl(t);if(a==null)return;let o=new AbortController,s;try{let t=new Promise(t=>{s=setTimeout(()=>{o.abort(),t(`timeout`)},e.deadlineMs??15e3)});await Promise.race([cl(e,a,o.signal).then(()=>`done`),t])===`timeout`&&i.warning(`Blocked label clear timed out; no further requests will be started (a DELETE already issued may still complete)`,{issueNumber:a})}catch(e){i.warning(`Failed to clear blocked label (non-fatal)`,{error:V(e)})}finally{s!=null&&clearTimeout(s)}}const ul=K.join(qt.homedir(),`.cache`,`fro-bot-dedup`);function dl(e){return e.replaceAll(`/`,`-`)}function fl(e,t){let n=dl(e);return K.join(ul,`${n}-${t.entityType}-${t.entityNumber}`)}function pl(e,t){let n=dl(e);return`${s}-${n}-${t.entityType}-${t.entityNumber}-`}function ml(e,t,n){return`${pl(e,t)}${n}`}async function hl(e,t,n,r=ge){let i=fl(e,t),a=K.join(i,`sentinel.json`),o=pl(e,t);try{if(await G.rm(i,{recursive:!0,force:!0}),await G.mkdir(i,{recursive:!0}),await r.restoreCache([i],o,[])==null)return null;let e=await G.readFile(a,`utf8`);return JSON.parse(e)}catch(e){return n.debug(`Dedup marker restore failed; proceeding without marker`,{error:V(e),entityType:t.entityType,entityNumber:t.entityNumber}),null}}async function gl(e,t,n,r,i=ge){let a=fl(e,t),o=K.join(a,`sentinel.json`),s=ml(e,t,n.runId);try{return await G.mkdir(a,{recursive:!0}),await G.writeFile(o,JSON.stringify(n),`utf8`),await i.saveCache([a],s)!==-1||(r.warning(`Dedup marker cache save did not persist`,{saveKey:s}),!1)}catch(e){return V(e).toLowerCase().includes(`already exists`)?!0:(r.debug(`Dedup marker save failed`,{error:V(e),entityType:t.entityType,entityNumber:t.entityNumber,saveKey:s}),!1)}}const _l=/* @__PURE__ */ new Set([`pull_request`,`issues`]),vl=/* @__PURE__ */ new Set([`synchronize`,`reopened`]);function yl(e){return e.target==null||!_l.has(e.eventType)?null:e.eventType===`pull_request`&&e.target.kind===`pr`?{entityType:`pr`,entityNumber:e.target.number}:e.eventType===`issues`&&e.target.kind===`issue`?{entityType:`issue`,entityNumber:e.target.number}:null}async function bl(e,t,n,r,i=M({phase:`dedup`}),a){let o=yl(t);if(e===0)return{shouldProceed:!0,entity:o};if(o==null)return{shouldProceed:!0,entity:null};if(t.action!=null&&vl.has(t.action))return i.debug(`Dedup bypassed for action`,{action:t.action}),{shouldProceed:!0,entity:o};let s=await hl(n,o,i,a);if(s==null||s.runId===t.runId)return{shouldProceed:!0,entity:o};let c=new Date(s.timestamp).getTime();if(Number.isNaN(c))return i.warning(`Dedup marker timestamp is invalid; proceeding without dedup`,{markerTimestamp:s.timestamp}),{shouldProceed:!0,entity:o};let l=Date.now()-c;if(l<-6e4)return i.warning(`Dedup marker timestamp is too far in the future; proceeding without dedup`,{markerTimestamp:s.timestamp,markerAge:l}),{shouldProceed:!0,entity:o};let u=Math.max(0,l);return u>e?{shouldProceed:!0,entity:o}:(i.info(`Skipping duplicate trigger within dedup window`,{eventType:t.eventType,action:t.action,runId:t.runId,markerRunId:s.runId,markerTimestamp:s.timestamp,dedupWindow:e,entityType:o.entityType,entityNumber:o.entityNumber}),await Sl(t,o,s,u,e,i),{shouldProceed:!1,entity:o})}async function xl(e,t,n,r=M({phase:`dedup`}),i){await gl(n,t,{timestamp:(/* @__PURE__ */ new Date()).toISOString(),runId:e.runId,action:e.action??`unknown`,eventType:e.eventType,entityType:t.entityType,entityNumber:t.entityNumber},r,i)}async function Sl(e,t,n,r,i,a){try{let a=Math.round(r/1e3),o=Math.round(i/1e3),s=`${t.entityType} #${t.entityNumber}`,c=`https://github.com/${e.repo.owner}/${e.repo.repo}/actions/runs/${n.runId}`;Ue.addHeading(`Fro Bot Agent Run — Skipped (Dedup)`,2).addRaw(`${mt(`Execution skipped because the agent already ran for ${re(s)} recently.`)}\n`).addTable([[{data:`Detail`,header:!0},{data:`Value`,header:!0}],[`Current action`,gt(`${e.eventType}.${e.action??`unknown`}`)],[`Prior run`,ve(String(n.runId),c)],[`Prior action`,gt(`${n.eventType}.${n.action}`)],[`Time since prior run`,`${a}s`],[`Dedup window`,`${o}s`]]).addRaw(`
Dedup is best-effort suppression. Use workflow concurrency groups to prevent overlapping runs.
-`),await Ue.write()}catch(e){a.warning(`Failed to write dedup skip summary`,{error:V(e)})}}function Cl(e,t,n){return e?.key??t??n}const wl=async({client:e,workspacePath:t,searchQuery:n,logger:r})=>{let i=[];try{i=await ke(e,t,{limit:10},r)}catch(e){r.warning(`Recent session lookup failed; proceeding with empty context`,{error:V(e)})}let a=[];try{a=await $e(n,e,t,{limit:5},r)}catch(e){r.warning(`Prior-work session search failed; proceeding with empty context`,{error:V(e)})}return{recentSessions:i,priorWorkContext:a}};async function Tl(e,t,n,r,i=wl){let a=M({phase:`session`}),o=Pc(p()),s=pr(t.triggerResult.context,se()),c=s==null?null:mr(s),l=null,u=!1;if(s!=null){let e=await _r(n.serverHandle.client,o,s,a);e.status===`found`?(l=e.session.id,u=!0,a.info(`Session continuity: found existing session`,{logicalKey:s.key,sessionId:l})):e.status===`error`?a.warning(`Session continuity: lookup error, will create new`,{logicalKey:s.key,error:e.error}):a.info(`Session continuity: no existing session found`,{logicalKey:s.key})}let d=Cl(s,t.agentContext.issueTitle,t.agentContext.repo),f={recentSessions:[],priorWorkContext:[]};try{f=await i({client:n.serverHandle.client,workspacePath:o,searchQuery:d,logicalKey:s,logger:a})}catch(e){a.warning(`Session presearch strategy failed; proceeding with empty context`,{error:V(e)})}let{recentSessions:m,priorWorkContext:h}=f;a.debug(`Prepared session context`,{recentSessionCount:m.length,priorWorkResultCount:h.length});for(let e of h)r.addSessionUsed(e.sessionId);let g=M({phase:`attachments`}),_=t.agentContext.commentBody??``,v=Rc(_),y=null;if(v.length>0){g.info(`Processing attachments`,{count:v.length});let{validated:t,skipped:n}=Jc(await Uc(v,e.inputs.githubToken,void 0,g),void 0,g);(t.length>0||n.length>0)&&(y=qc(_,v,t,n),g.info(`Attachments processed`,{processed:t.length,skipped:n.length}))}return{recentSessions:m,priorWorkContext:h,attachmentResult:y,normalizedWorkspace:o,logicalKey:s,continueSessionId:l,isContinuation:u,sessionTitle:c}}function El(){let e=j(`output-mode`).trim().toLowerCase();return e.length===0?`omitted`:e===`auto`?`auto`:`explicit`}function Dl(e,t,n){return{requested:n,resolved:$n(e,t)}}async function Ol(e){let{bootstrap:t,routing:n,cacheRestore:r,sessionPrep:i,metrics:a,execLogger:o,executionStartTime:s,promptOptions:c,executionConfig:l,overflowedResult:u,overflowedSessionId:d,overflowedLedger:f,resolveSessionId:m}=e,h=(await Il({ledger:f,client:r.serverHandle.client,parentSessionId:d,directory:p(),deadlineMs:0,logger:o})).unknownCount>0,g=await _t(r.serverHandle.server.url,d,o);g===!1&&o.warning(`Overflowed session archive failed; next run may re-continue it`,{sessionId:d});let _=Cl(i.logicalKey,n.agentContext.issueTitle,n.agentContext.repo),v=[];try{v=await $e(_,r.serverHandle.client,i.normalizedWorkspace,{limit:5,excludeSessionIds:[d]},o)}catch(e){o.warning(`Recovery prior-work search failed; proceeding with empty context`,{error:e})}for(let e of v)a.addSessionUsed(e.sessionId);let y=t.inputs.timeoutMs>0,b=y?t.inputs.timeoutMs-(Date.now()-s):0;if(y&&b<=0)return{...u,recoveryBoundaryUnresolved:u.recoveryBoundaryUnresolved||h};let x={...c,sessionContext:{recentSessions:i.recentSessions,priorWorkContext:v},currentThreadSessionId:null,isContinuation:!1},S={...l,continueSessionId:void 0,timeoutMs:b};if(t.delivery===`file-convention`&&t.responseFilePath!=null)try{await G.rm(t.responseFilePath,{force:!0})}catch(e){o.warning(`Failed to clear stale response file before overflow recovery`,{responseFilePath:t.responseFilePath,error:e})}let C=er(),w=Date.now(),T=await Ya(x,o,S,r.serverHandle,C),E=await m(T.sessionId,w);return T.llmError?.type===`context_overflow`&&E!=null&&await _t(r.serverHandle.server.url,E,o)===!1&&o.warning(`Overflowed recovery session archive failed; next run may re-continue it`,{sessionId:E}),{...T,sessionId:E,resolvedOutputMode:u.resolvedOutputMode,outputModeMigration:u.outputModeMigration,ownershipLedger:C,observationGap:u.observationGap||T.observationGap,recoveryBoundaryUnresolved:h,overflowRecovery:{recovered:T.success,archivedSessionId:d,archiveSucceeded:g},executionDurationMs:0}}async function kl(e,t,n,r,i,a){let o=Dl(t.triggerResult.context.eventType,e.inputs.outputMode,El()),s=o.resolved,c={context:t.agentContext,customPrompt:e.inputs.prompt,cacheStatus:n.cacheStatus,sessionContext:{recentSessions:r.recentSessions,priorWorkContext:r.priorWorkContext},logicalKey:r.logicalKey??null,isContinuation:r.isContinuation,currentThreadSessionId:r.continueSessionId??null,triggerContext:t.triggerResult.context,resolvedOutputMode:s,fileParts:r.attachmentResult?.fileParts,responseMode:e.inputs.responseMode,responseDelivery:e.delivery,responseFilePath:e.responseFilePath,responseSurface:Ha(t.agentContext,t.triggerResult.context)},l=U.env.SKIP_AGENT_EXECUTION===`true`,u=Date.now(),d;if(l)e.logger.info(`Skipping agent execution (SKIP_AGENT_EXECUTION=true)`),d={success:!0,exitCode:0,sessionId:null,error:null,tokenUsage:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null,resolvedOutputMode:s,outputModeMigration:o,observationGap:!1,recoveryBoundaryUnresolved:!1,executionDurationMs:0};else{let a=M({phase:`execution`});a.info(`Starting OpenCode execution`,{logicalKey:r.logicalKey?.key??null,continueSessionId:r.continueSessionId});let l={agent:e.inputs.agent,model:e.inputs.model,timeoutMs:e.inputs.timeoutMs,continueSessionId:r.continueSessionId??void 0,sessionTitle:r.sessionTitle??void 0,credentialProvisioned:or(t.triggerResult.context.eventName,e.inputs.responseMode).credential===`provision`},f=async(e,t)=>{if(e!=null)return e;let i=M({phase:`session`}),a=await Ne(n.serverHandle.client,r.normalizedWorkspace,t,i);return a==null?null:(i.debug(`Identified session from execution`,{sessionId:a.session.id}),a.session.id)},p=er(),m=await Ya(c,a,l,n.serverHandle,p),h=await f(m.sessionId,u);d={...m,sessionId:h,resolvedOutputMode:s,outputModeMigration:o,ownershipLedger:p,recoveryBoundaryUnresolved:!1,executionDurationMs:0};let g=l.credentialProvisioned===!0,_=await Wa(e.responseFilePath,c.responseSurface,a);d.llmError?.type===`context_overflow`&&g===!1&&_===`absent`&&h!=null&&(d=await Ol({bootstrap:e,routing:t,cacheRestore:n,sessionPrep:r,metrics:i,execLogger:a,executionStartTime:u,promptOptions:c,executionConfig:l,overflowedResult:d,overflowedSessionId:h,overflowedLedger:p,resolveSessionId:f})),a.info(`Completed OpenCode execution`,{success:d.success,sessionId:d.sessionId,logicalKey:r.logicalKey?.key??null})}d.sessionId!=null&&(H(z.SESSION_ID,d.sessionId),i.addSessionCreated(d.sessionId)),d.tokenUsage!=null&&i.setTokenUsage(d.tokenUsage,d.model,d.cost),d.llmError!=null&&i.recordError(d.llmError.type,d.llmError.message,d.llmError.retryable,d.classificationPath,d.llmError.suggestedAction);for(let e of d.prsCreated)i.addPRCreated(e);for(let e of d.commitsCreated)i.addCommitCreated(e);for(let e=0;e{n=setTimeout(()=>{t.abort(),e({timedOut:!0})},Al)});try{return await Promise.race([(async()=>e(t.signal))().then(e=>({timedOut:!1,value:e})),r])}finally{n!==void 0&&clearTimeout(n)}}async function Pl(e,t=()=>!1){let{ledger:n,logger:r}=e,i=!1,a=()=>i||t(),o={...n,settle:e=>{a()||n.settle(e)},markUnknown:e=>{a()||n.markUnknown(e)}},s=await Nl(async t=>Yn({...e,ledger:o,signal:t}));if(s.timedOut===!1)return s.value.success&&s.value.data.liveTrackedSessionIds.size>0;if(i=!0,t())return!1;let c=n.snapshot().filter(e=>e.state===`outstanding`);for(let e of c)n.markUnknown(e.sessionId);return r.warning(`Ledger reconciliation timed out; marking outstanding entries unknown rather than settling them`,{source:`reconcileBounded`,parentSessionId:e.parentSessionId,unknownCount:c.length,timeoutMs:Al}),!1}async function Fl(e){let{ledger:t,client:n,logger:r,reconcileOptions:i}=e;await Pl(i);let a=t.snapshot().filter(e=>e.state!==`settled`);r.warning(`Drain deadline reached — cancelling unsettled owned work; run reports incomplete`,{unsettled:a.length}),await Promise.allSettled(a.map(async e=>{if(typeof n.session.abort==`function`)try{let t=await Nl(async t=>n.session.abort({path:{id:e.sessionId},signal:t})),i=t.timedOut?void 0:t.value?.error;(t.timedOut||i!=null)&&r.warning(`Failed to abort owned session during drain-deadline cancellation`,{sessionId:e.sessionId,error:t.timedOut?`abort timed out after ${Al}ms`:V(i)})}catch(t){r.warning(`Failed to abort owned session during drain-deadline cancellation`,{sessionId:e.sessionId,error:V(t)})}})),await Pl(i);let o=a.filter(e=>t.snapshot().find(t=>t.sessionId===e.sessionId)?.state===`settled`).length;for(let e of t.snapshot())e.state!==`settled`&&t.markUnknown(e.sessionId);return{expired:!0,cancelledCount:a.length,settledCount:o,unknownCount:t.unknown()}}async function Il(e){let{ledger:t,client:n,parentSessionId:r,directory:i,deadlineMs:a,logger:o,reconcileIntervalMs:s,pollIntervalMs:c=250}=e;if(t===void 0)return jl;if(n===null||r===null){let e=t.snapshot().filter(e=>e.state===`outstanding`);for(let n of e)t.markUnknown(n.sessionId);return e.length>0&&o.warning(`Drain could not reconcile owned work: no session client available`,{outstanding:e.length}),{expired:e.length>0,cancelledCount:0,settledCount:0,unknownCount:t.unknown()}}let l={ledger:t,adapter:Zn(n,i),parentSessionId:r,logger:o},u=0,d=!1,f=async()=>{let e=await Pl(l,()=>d);d||(u=t.snapshot().some(e=>e.state!==`settled`)&&e===!1?u+1:0)},p=Number.isFinite(a),m=()=>p===!1&&u>=3;if(await f(),t.isDrainComplete())return{...jl,unknownCount:t.unknown()};if(a>0){let e=Xn({...l,intervalMs:s,runPass:f}),n=Date.now()+a;try{for(;t.isDrainComplete()===!1&&Date.now()`)}async function zl(e,t,n){try{if(t.type===`pr`){let{data:n}=await e.rest.pulls.get({owner:t.owner,repo:t.repo,pull_number:t.number});return{title:n.title,body:n.body??``,author:n.user?.login??`unknown`}}let{data:n}=await e.rest.issues.get({owner:t.owner,repo:t.repo,issue_number:t.number});return{title:n.title,body:n.body??``,author:n.user?.login??`unknown`}}catch(e){return n.warning(`Failed to fetch issue/PR`,{target:t,error:V(e)}),null}}async function Bl(e,t,n,r){let i=[],a=1;for(;a<=50;)try{let{data:r}=await e.rest.issues.listComments({owner:t.owner,repo:t.repo,issue_number:t.number,per_page:100,page:a});if(r.length===0)break;for(let e of r){let t=e.user?.login??`unknown`;i.push({id:e.id,body:e.body??``,author:t,authorAssociation:e.author_association??`NONE`,createdAt:e.created_at,updatedAt:e.updated_at,isBot:Rl(t,e.body??``,n)})}if(r.length<100)break;a++}catch(e){r.warning(`Failed to fetch comments page`,{target:t,page:a,error:V(e)});break}return i}async function Vl(e,t,n,r){try{let i=[],a=null,o=null,s=``,c=``,l=`unknown`,u=0;for(;u<50;){let d=(await e.graphql(` +`,{owner:t,repo:n,number:r,maxComments:i,maxCommits:a,maxFiles:o,maxReviews:s})}catch(e){return c.warning(`GraphQL pull request query failed`,{owner:t,repo:n,number:r,error:V(e)}),null}}async function li(e,t,n,r,i,a){let o=await si(e,t,n,r,i.maxComments,a);if(o==null)return null;let s=o.repository.issue;if(s==null)return a.debug(`Issue not found`,{owner:t,repo:n,number:r}),null;let c=ri(s.body??``,i.maxBodyBytes),l=s.comments.nodes,u=l.slice(Math.max(0,l.length-i.maxComments)),d=s.comments.totalCount>u.length,f=u.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,createdAt:e.createdAt,authorAssociation:e.authorAssociation,isMinimized:e.isMinimized})),p=s.labels.nodes.map(e=>({name:e.name,color:e.color})),m=s.assignees.nodes.map(e=>({login:e.login}));return{type:`issue`,number:s.number,title:s.title,body:c.text,bodyTruncated:c.truncated,state:s.state,author:s.author?.login??null,createdAt:s.createdAt,labels:p,assignees:m,comments:f,commentsTruncated:d,totalComments:s.comments.totalCount}}async function ui(e,t,n,r,i,a){let o=await ci(e,t,n,r,i.maxComments,i.maxCommits,i.maxFiles,i.maxReviews,a);if(o==null)return null;let s=o.repository.pullRequest;if(s==null)return a.debug(`Pull request not found`,{owner:t,repo:n,number:r}),null;let c=ri(s.body??``,i.maxBodyBytes),l=s.baseRepository?.owner.login,u=s.headRepository?.owner.login,d=u==null||l!==u,f=s.comments.nodes,p=f.slice(Math.max(0,f.length-i.maxComments)),m=s.comments.totalCount>p.length,h=p.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,createdAt:e.createdAt,authorAssociation:e.authorAssociation,isMinimized:e.isMinimized})),g=s.commits.nodes,_=g.slice(Math.max(0,g.length-i.maxCommits)),v=s.commits.totalCount>_.length,y=_.map(e=>({oid:e.commit.oid,message:e.commit.message,author:e.commit.author?.name??null})),b=s.files.nodes.slice(0,i.maxFiles),x=s.files.totalCount>b.length,S=b.map(e=>({path:e.path,additions:e.additions,deletions:e.deletions})),C=s.reviews.nodes,w=C.slice(Math.max(0,C.length-i.maxReviews)),T=s.reviews.totalCount>w.length,E=w.map(e=>({author:e.author?.login??null,state:e.state,body:e.body,createdAt:e.createdAt,comments:e.comments.nodes.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,path:e.path,line:e.line,createdAt:e.createdAt}))})),D=s.labels.nodes.map(e=>({name:e.name,color:e.color})),O=s.assignees.nodes.map(e=>({login:e.login})),k=s.reviewRequests.nodes.map(e=>`login`in e.requestedReviewer?e.requestedReviewer.login:null).filter(e=>e!=null),A=s.reviewRequests.nodes.map(e=>`name`in e.requestedReviewer?e.requestedReviewer.name:null).filter(e=>e!=null);return{type:`pull_request`,number:s.number,title:s.title,body:c.text,bodyTruncated:c.truncated,state:s.state,author:s.author?.login??null,createdAt:s.createdAt,baseBranch:s.baseRefName,headBranch:s.headRefName,isFork:d,labels:D,assignees:O,comments:h,commentsTruncated:m,totalComments:s.comments.totalCount,commits:y,commitsTruncated:v,totalCommits:s.commits.totalCount,files:S,filesTruncated:x,totalFiles:s.files.totalCount,reviews:E,reviewsTruncated:T,totalReviews:s.reviews.totalCount,authorAssociation:s.authorAssociation,requestedReviewers:k,requestedReviewerTeams:A}}const di={PER_PAGE:100,MAX_PAGES:50};async function fi(e,t,n,r,i){i.debug(`Fetching PR diff`,{prNumber:r});let a=[],o=1,s=!1;for(;o<=di.MAX_PAGES;){let{data:c}=await e.rest.pulls.listFiles({owner:t,repo:n,pull_number:r,per_page:di.PER_PAGE,page:o}),l=c.map(e=>({filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions,patch:e.patch??null,previousFilename:e.previous_filename??null}));if(a.push(...l),c.lengthdi.MAX_PAGES&&(s=!0,i.warning(`PR diff pagination limit reached`,{filesLoaded:a.length,maxPages:di.MAX_PAGES}))}let c=a.reduce((e,t)=>({additions:e.additions+t.additions,deletions:e.deletions+t.deletions}),{additions:0,deletions:0});return i.debug(`Fetched diff`,{files:a.length,additions:c.additions,deletions:c.deletions,truncated:s}),{files:a,additions:c.additions,deletions:c.deletions,changedFiles:a.length,truncated:s}}function pi(e,t,n){let r=[],i=[];for(let a of e){let e=t.files.find(e=>e.filename===a.path);if(e==null){n.warning(`File not in diff, skipping comment`,{path:a.path}),i.push({comment:a,reason:`file_not_in_diff`});continue}if(e.patch==null){n.warning(`File has no patch, skipping comment`,{path:a.path}),i.push({comment:a,reason:`patch_missing`});continue}let o={path:a.path,body:a.body,line:a.line,side:a.side};a.startLine!=null&&a.startLine!==a.line&&(o.start_line=a.startLine,o.start_side=a.startSide??a.side),r.push(o)}return{ready:r,skipped:i}}async function mi(e,t,n){let{prNumber:r,owner:i,repo:a,event:o,body:s,comments:c,commitSha:l}=t;n.info(`Submitting review`,{prNumber:r,event:o,commentCount:c.length});let u=[],d=0;if(c.length>0){let t=pi(c,await fi(e,i,a,r,n),n);u=t.ready,d=t.skipped.length}let{data:f}=await e.rest.pulls.createReview({owner:i,repo:a,pull_number:r,event:o,body:s,...l===void 0?{}:{commit_id:l},comments:u.map(e=>({path:e.path,body:e.body,line:e.line,side:e.side,start_line:e.start_line,start_side:e.start_side}))});return n.info(`Review submitted`,{reviewId:f.id,state:f.state,commentsPosted:u.length,commentsSkipped:d}),{reviewId:f.id,state:f.state??``,commentsPosted:u.length,commentsSkipped:d,url:f.html_url??``}}async function hi(e,t,n,r){if(e.eventType!==`pull_request`)return null;let i=e.target?.number;if(i==null)return r.debug(`No PR number in trigger context, skipping diff collection`),null;let[a,o]=n.split(`/`);if(a==null||o==null)return r.warning(`Invalid repo format, skipping diff collection`,{repo:n}),null;try{let e=await fi(t,a,o,i,r),n={changedFiles:e.changedFiles,additions:e.additions,deletions:e.deletions,truncated:e.truncated,files:e.files.slice(0,50).map(e=>({filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions}))};return r.debug(`Collected diff context`,{files:n.changedFiles,additions:n.additions,deletions:n.deletions,truncated:n.truncated}),n}catch(e){return r.warning(`Failed to fetch PR diff`,{error:V(e)}),null}}async function gi(e){let{logger:t,octokit:n,triggerContext:r,botLogin:i}=e,{repo:a,ref:o,actor:s,runId:c,target:l,author:u,commentBody:d,commentId:f}=r,p=`${a.owner}/${a.repo}`,m=l?.kind===`issue`||l?.kind===`pr`?l.kind:null,h=l!=null&&l.kind!==`manual`?l.number:null,g=l?.title??null,_=u?.login??null,v=await hi(r,n,p,t),y=await _i(n,a.owner,a.repo,h,m,t),b=y?.type===`pull_request`?y:null,x=b?.authorAssociation??null,S=i!=null&&b!=null&&b.requestedReviewers.includes(i);return t.info(`Collected agent context`,{eventName:r.eventName,repo:p,issueNumber:h,issueType:m,hasComment:d!=null,hasDiffContext:v!=null,hasHydratedContext:y!=null}),{eventName:r.eventName,repo:p,ref:o,actor:s,runId:String(c),issueNumber:h,issueTitle:g,issueType:m,commentBody:d,commentAuthor:_,commentId:f,defaultBranch:await Zr(n,p,t),diffContext:v,hydratedContext:y,authorAssociation:x,isRequestedReviewer:S}}async function _i(e,t,n,r,i,a){if(r==null||i==null)return null;let o=ti;return i===`issue`?await li(e,t,n,r,o,a)??ai(e,t,n,r,o,a):await ui(e,t,n,r,o,a)??oi(e,t,n,r,o,a)}function vi(e){return e===`turn_failed_retryable`}function yi(e,t){return e.find(e=>e.source===`provider`)??e.find(e=>e.source===`session`)??e.find(e=>e.source===`submission`)??t??null}function bi(e,t){return e.source===`provider`?`turn_failed_terminal`:e.source===`session`||t.accepted?e.llmError?.retryable===!0?`turn_failed_retryable`:`turn_failed_terminal`:`submit_failed`}function xi(e){switch(e.kind){case`deadline`:return{outcome:`timeout`,message:`Attempt did not settle before the execution deadline`};case`cancelled`:return{outcome:`turn_failed_terminal`,message:e.reason??`Attempt observation was cancelled`};case`watchdog`:return{outcome:`turn_failed_terminal`,message:e.message};case`failure-observed`:return{outcome:`turn_failed_terminal`,message:`Attempt failed with no recorded failure detail`};case`completion-observed`:return{outcome:`completed`,message:``}}}function Si(e){if(e.success===!0&&(e.outcome!==`completed`||e.llmError!==null||e.settlement.kind!==`completion-observed`))throw Error(`attempt-outcome invariant violated: success implies outcome=completed, llmError=null, settlement.kind=completion-observed`);return e}function Ci(e,t,n){let r=yi(e.failures,t);if(r!=null){let t=bi(r,n);return Si({success:!1,error:r.message,llmError:r.llmError,classificationPath:r.classificationPath,outcome:t,settlement:e.settlement,shouldRetry:vi(t)})}if(e.settlement.kind===`completion-observed`)return Si({success:!0,error:null,llmError:null,classificationPath:void 0,outcome:`completed`,settlement:e.settlement,shouldRetry:vi(`completed`)});let i=xi(e.settlement);return Si({success:!1,error:i.message,llmError:null,classificationPath:void 0,outcome:i.outcome,settlement:e.settlement,shouldRetry:vi(i.outcome)})}function wi(e){try{let t=new URL(e);return t.hostname===`github.com`||t.hostname===`api.github.com`}catch{return!1}}function Ti(e){try{let t=new URL(e);return t.hostname===`github.com`&&(t.pathname.startsWith(`/user-attachments/assets/`)||t.pathname.startsWith(`/user-attachments/files/`))}catch{return!1}}function Ei(e){let t=e.match(/https:\/\/github\.com\/[a-zA-Z0-9-]+\/[\w.-]+\/(?:pull|issues)\/\d+(?:#issuecomment-\d+)?/g)??[];return[...new Set(t)].filter(wi)}function Di(e){let t=/\[[\w-]+\s+([a-f0-9]{7,40})\]/g,n=[];for(let r of e.matchAll(t))r[1]!=null&&n.push(r[1]);return[...new Set(n)]}function Oi(){return{state:`unarmed`,revision:0,latestRootUserMessageId:null,idleCandidateRevision:null,pendingParentMessageId:null,restConfirmationRequired:!1}}function ki(e){e.state=`awaiting-activity`,e.idleCandidateRevision=null}function $(e,t){if(e.state===`unarmed`)return;let n=e.state===`idle-candidate`;e.state=`active`,e.idleCandidateRevision=null,e.revision+=1,n&&(e.restConfirmationRequired=!0),t!=null&&(e.latestRootUserMessageId=t)}function Ai(e){e.state!==`unarmed`&&(e.state=`idle-candidate`,e.idleCandidateRevision=e.revision)}function ji(e){return e.state===`idle-candidate`&&e.idleCandidateRevision===e.revision&&e.pendingParentMessageId==null&&!e.restConfirmationRequired}function Mi(e,t){(t==null||e.pendingParentMessageId!==t)&&($(e,t??void 0),t!=null&&(e.pendingParentMessageId=t))}function Ni(e,t){t!=null&&e.pendingParentMessageId===t&&(e.pendingParentMessageId=null)}function Pi(e){e.restConfirmationRequired=!0}function Fi(e){e.restConfirmationRequired=!1}function Ii(e){let t=zn(e);return t===null?null:Bn(t)}function Li(e,t){let n=Xi(e);return{classification:Bn(Rn(e,{detail:n,model:t??void 0})),detail:n}}function Ri(e){return{error:e.errorInfo,terminal:e.stop||e.kind===`context-overflow`}}function zi(e,t){return t.aborted||e instanceof Error&&e.name===`AbortError`}function Bi(e,t,n,r,i){let a=n?.terminalProviderError;if(a!=null)return{error:a,terminal:!0};let o=e??t;return e?.terminal===!0?o=e:t.terminal&&(o=t),n!=null&&o.terminal?(n.terminalProviderError=o.error,n.sessionError=o.error.message,i!=null&&(n.classificationPath=i),n.genericError=void 0,o):(n!=null&&n.sessionError==null&&r!=null&&(n.sessionError=r,n.genericError=o.error,i!=null&&(n.classificationPath=i)),o)}function Vi(e){let t=e.terminalProviderError??e.genericError;return t==null?null:{error:t,terminal:e.terminalProviderError!=null,classificationPath:e.classificationPath}}function Hi(e,t){let n=J(e,`type`);if(n===`sync`){let n=J(e,`name`)?.replace(/\.\d+$/,``)??`sync`,r=Q(X(e,`data`));t.debug(`Server event`,{eventKind:n,sessionID:r})}else{let r=X(e,`properties`),i=Q(r)??Q(X(r,`part`));t.debug(`Server event`,i==null?{eventType:n}:{eventType:n,sessionId:i})}}function Ui(e,t,n,r,i,a){let o=Ei(t);if(e.includes(`gh pr create`)){let e=o.filter(e=>e.includes(`/pull/`)&&!e.includes(`#`));for(let t of e)n.includes(t)||n.push(t)}if(e.includes(`git commit`)){let e=Di(t);for(let t of e)r.includes(t)||r.push(t)}if(e.includes(`gh issue comment`)||e.includes(`gh pr comment`)){let e=o.filter(e=>e.includes(`#issuecomment`));for(let t of e)a!=null&&a.includes(t)||(a?.push(t),i())}}function Wi(e){if(e.size===0)return{tokens:null,cost:null};let t=0,n=0,r=0,i=0,a=0,o=null;for(let s of e.values())t+=s.tokens.input,n+=s.tokens.output,r+=s.tokens.reasoning,i+=s.tokens.cache.read,a+=s.tokens.cache.write,s.cost!==null&&(o=(o??0)+s.cost);return{tokens:{input:t,output:n,reasoning:r,cache:{read:i,write:a}},cost:o}}function Gi(e,t){return new Map([...e??[],...t??[]])}function Ki(e,t){let n=Gi(t.usageByMessage,e.usageByMessage);if(n.size===0)return{...e,model:e.model??t.model};let{tokens:r,cost:i}=Wi(n);return{...e,tokens:r,cost:i,model:e.model??t.model,usageByMessage:n}}const qi=`Unknown session error`;function Ji(e,t){let n=J(e,t);if(n==null||n.length===0)return null;let r=n.replaceAll(/[\r\n]+/g,`; `).trim();return r.length===0?null:r.length<=256?r:`${r.slice(0,253)}...`}function Yi(e,t,n){return Ji(e,n)??Ji(t,n)}function Xi(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e)return qi;let t=X(e,`data`),n=Yi(e,t,`provider`),r=Yi(e,t,`name`),i=Yi(e,t,`code`),a=Y(e,`status`)??Y(e,`statusCode`)??Y(t,`status`)??Y(t,`statusCode`),o=[];return n!=null&&o.push(`provider=${n}`),r!=null&&o.push(`name=${r}`),a!=null&&Number.isFinite(a)&&o.push(`status=${a}`),i!=null&&o.push(`code=${i}`),o.length>0?o.join(`; `):qi}function Zi(e){return e===`message.part.delta`||e?.startsWith(`session.next.`)===!0}function Qi(e,t,n){return e===null?!1:e===t||n!==void 0&&n.isTracked(e)}async function $i(e,t,n,r,i,a,o,s,c){let l=``,u=/* @__PURE__ */ new Set,d=/* @__PURE__ */ new Map,f=null,p=[],m=[],h=[],g=0,_=null,v=()=>_?.error??null,y,b=/* @__PURE__ */ new Map;async function x(){for await(let v of e){if(n.aborted)break;Hi(v,r);let e=Gn(v),x=Kn(v);if(e===`server.connected`&&c?.(),e===`permission.asked`){let e=qn(v);if(e===null)continue;let n=J(x,`id`),i=J(x,`permission`)??`unknown`,a=X(x,`patterns`),s=Array.isArray(a)?a.filter(e=>typeof e==`string`):[],c={sessionId:t,eventSessionID:e,permission:i,patterns:s};if(n==null){r.warning(`OpenCode permission request missing request id`,c);continue}let l={requestID:n,sessionID:e,permission:i,patterns:s};o===void 0?r.warning(`OpenCode permission request observed but no responder is configured`,c):(r.warning(`Rejecting OpenCode permission request`,c),o(l).catch(e=>{r.warning(`Failed to reject OpenCode permission request`,{...c,error:V(e)})}))}else if(i?.currentTurnArmed!==!1){if(i!=null&&Zi(e)){let e=qn(v);Qi(e,t,s)&&(i.firstMeaningfulEventReceived=!0,e===t&&i.rootFreshness!=null&&$(i.rootFreshness))}if(e===`message.part.delta`){let e=qn(v);if(Qi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=J(x,`partID`),r=X(x,`delta`),a=J(r,`type`),o=J(r,`text`);n!==null&&u.has(n)||(a===`text`&&o!=null?l+=o:typeof r==`string`&&J(x,`field`)===`text`&&(l+=r))}}else if(e===`session.next.text.delta`){let e=qn(v);if(Qi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=X(x,`delta`),r=typeof n==`string`?n:J(n,`text`)??null;r!=null&&(l+=r)}}else if(e===`session.next.tool.called`){let e=qn(v);if(Qi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=J(x,`callID`),a=J(x,`tool`),o=X(x,`input`);n!=null&&a!=null&&(b.set(n,{tool:a,input:o}),r.debug(`Tool called`,{callID:n,tool:a}))}}else if(e===`session.next.tool.success`){let e=qn(v);if(Qi(e,t,s)){e===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let n=J(x,`callID`);if(n===null)continue;let r=b.get(n);if(r!==void 0){b.delete(n);let{tool:e,input:t}=r;if(Lr(e,J(X(x,`structured`),`title`)??J(t,`title`)??(e.toLowerCase()===`bash`?String(X(t,`command`)??X(t,`cmd`)??e):e)),e.toLowerCase()===`bash`){let e=String(X(t,`command`)??X(t,`cmd`)??``),n=X(x,`content`);Ui(e,Array.isArray(n)?n.map(e=>J(e,`type`)===`text`?J(e,`text`)??``:``).join(` +`):``,p,m,()=>{g++},h)}}}}else if(e===`message.part.updated`){let e=X(x,`part`),n=Q(x)??Q(e);if(!Qi(n,t,s))continue;if(i!=null&&(i.firstMeaningfulEventReceived=!0),n===t&&i?.rootFreshness!=null){let t=J(e,`messageID`);(t==null||t!==i.rootFreshness.pendingParentMessageId)&&$(i.rootFreshness)}let a=J(e,`type`);if(a===`reasoning`){let t=J(e,`id`);t!==null&&u.add(t)}else if(a===`text`){let a=J(e,`text`),o=n===t?Er(e):null;if(o===null)a!=null&&(l=a),Y(X(e,`time`),`end`)!=null&&(Rr(l),l=``);else{if(i?.rootFreshness!=null){let t=J(e,`messageID`);Mi(i.rootFreshness,t)}s?.isTracked(o.childSessionId)===!0&&(s.settle(o.childSessionId),r.info(`Background task completion turn observed — settled ownership entry`,{sessionId:t,childSessionId:o.childSessionId,state:o.state}))}}else if(a===`tool`){let n=X(e,`state`);if(J(n,`status`)===`completed`){let i=J(e,`tool`)??``;if(s!==void 0&&i===`task`){let e=X(n,`metadata`),i=J(e,`jobId`),a=wn(e,`background`);if(i!==null&&a===!0){let e=J(n,`title`)??`background task`;s.adopt(i,e),r.info(`Background dispatch observed — adopted into ownership ledger`,{sessionId:t,jobId:i,label:e})}}if(Lr(i,String(X(n,`title`)??``)),i.toLowerCase()===`bash`){let e=X(n,`input`);Ui(String(X(e,`command`)??X(e,`cmd`)??``),String(X(n,`output`)??``),p,m,()=>{g++},h)}}}}else if(e===`message.updated`){let e=X(x,`info`),n=Q(x)??Q(e),a=X(e,`tokens`);if(Qi(n,t,s)&&J(e,`role`)===`assistant`&&a!=null){i!=null&&(i.firstMeaningfulEventReceived=!0),n===t&&i?.rootFreshness!=null&&$(i.rootFreshness);let o={input:Y(a,`input`)??0,output:Y(a,`output`)??0,reasoning:Y(a,`reasoning`)??0,cache:{read:Y(X(a,`cache`),`read`)??0,write:Y(X(a,`cache`),`write`)??0}},s=Y(e,`cost`),c=J(e,`id`)??`unidentified:${n}`;d.set(c,{tokens:o,cost:s}),f=J(e,`modelID`),r.debug(`Token usage received`,{messageKey:c,tokens:o,model:f,cost:s})}}else if(e===`session.status`){let e=Q(x);if(Qi(e,t,s)){let n=X(x,`status`),o=J(n,`type`);e===t&&(o===`busy`||o===`retry`)&&i?.rootFreshness!=null&&$(i.rootFreshness);let c=Ii(n);if(c!=null){let n=Ri(c);if(e!==t){r.error(`Session status retry classified as terminal provider error on a descendant session`,{sessionId:t,type:n.error.type}),s?.markUnknown(e);continue}if(a?.isExpired()===!0&&i?.terminalProviderError==null)continue;r.error(`Session status retry classified as terminal provider error`,{sessionId:t,type:n.error.type}),y=c.classificationPath,_=Bi(_,n,i,void 0,y)}}}else if(e===`session.error`){let e=Q(x);if(Qi(e,t,s)){let n=X(x,`error`);if(r.error(`Session error received`,{sessionType:typeof n}),e!==t){e!=null&&s?.markUnknown(e);continue}let{classification:o,detail:c}=Li(n,f),l=Ri(o);if(l.terminal){if(a?.isExpired()===!0&&i?.terminalProviderError==null)continue;o.kind===`model-not-found`?r.error(`Session error classified as model not found`,{sessionId:t,error:l.error.message}):r.error(`Session error classified as terminal provider error`,{sessionId:t,type:l.error.type}),y=o.classificationPath,_=Bi(_,l,i,void 0,y)}else _?.terminal!==!0&&(y??=o.classificationPath,_=Bi(_,l,i,c,y))}}else e===`session.idle`&&Q(x)===t&&(i!=null&&(i.sessionIdle=!0,i.currentTurnTerminalSignalReceived=!0,i.rootFreshness!=null&&Ai(i.rootFreshness)),l.length>0&&(Rr(l),l=``))}}}let S;function C(e,n){if(S=n==null?{message:e}:{message:e,errorName:n},r.warning(`Event stream discontinuity — observation channel closed unexpectedly`,{sessionId:t,error:e}),i?.rootFreshness!=null&&Pi(i.rootFreshness),s!==void 0){let e=s.snapshot().filter(e=>e.state===`outstanding`);for(let t of e)s.markUnknown(t.sessionId);r.warning(`Event stream discontinuity — marked outstanding owned entries unknown`,{sessionId:t,unknownCount:e.length})}}try{await x(),n.aborted||C(`Event stream ended unexpectedly`)}catch(e){zi(e,n)||C(V(e),e instanceof Error?e.name:void 0)}l.length>0&&Rr(l);let w=Wi(d);return{tokens:w.tokens,model:f,cost:w.cost,usageByMessage:d,prsCreated:p,commitsCreated:m,commentsPostedUrls:h,commentsPosted:g,llmError:v(),classificationPath:y,...S==null?{}:{discontinuity:S}}}function ea(e,t){let n=[],r=[],i=[],a=0;for(let o of e)if(J(o,`type`)===`tool`){let e=X(o,`state`);if(J(e,`status`)===`completed`&&(J(o,`tool`)??``).toLowerCase()===`bash`){let o=X(e,`input`),s=String(X(o,`command`)??X(o,`cmd`)??``),c=String(X(e,`output`)??``);t.debug(`Artifact scan: bash tool part`,{command:s.slice(0,80)}),Ui(s,c,n,r,()=>{a++},i)}}return{prsCreated:n,commitsCreated:r,commentsPostedUrls:i,commentsPosted:a}}const ta=5e3,na=1e4;function ra(e){return e==null?null:Vi(e)}function ia(e){let t=ra(e);return t==null?[]:[{source:`session`,message:t.error.message,llmError:t.error,classificationPath:t.classificationPath}]}function aa(e){return{settlement:{kind:`completion-observed`},failures:ia(e)}}function oa(e){return{settlement:{kind:`failure-observed`},failures:[{source:`provider`,message:e.message,llmError:e}]}}function sa(e,t){let n=ra(t);return{settlement:{kind:`failure-observed`},failures:[{source:`session`,message:e,llmError:n?.error??null,classificationPath:n?.classificationPath}]}}function ca(e){return{settlement:{kind:`deadline`},failures:ia(e)}}function la(e){return{settlement:{kind:`cancelled`,reason:`Aborted`},failures:ia(e)}}function ua(e,t){return{settlement:{kind:`watchdog`,message:e},failures:ia(t)}}function da(e){return e!==void 0&&e.isDrainComplete()===!1}async function fa(e,t){return t?.aborted===!0?Promise.resolve():new Promise(n=>{let r,i,a=()=>{r!=null&&clearTimeout(r),t!=null&&i!=null&&t.removeEventListener(`abort`,i),n()};r=setTimeout(a,e),t!=null&&(i=a,t.addEventListener(`abort`,i,{once:!0}))})}async function pa(e,t,n,r){let i,a;try{let o=r==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`${n} aborted`)),r.addEventListener(`abort`,a,{once:!0})});return await Promise.race([e,new Promise((e,r)=>{i=setTimeout(()=>{r(/* @__PURE__ */ Error(`${n} timed out after ${t}ms`))},t)}),...o==null?[]:[o]])}finally{i!=null&&clearTimeout(i),r!=null&&a!=null&&r.removeEventListener(`abort`,a)}}async function ma(e,t,n,r){let i=async()=>pa(e(),Math.min(ta,r?.remainingMs()??ta),t,n);return r==null?i():r.run(i,t)}function ha(e){let t=Jn(),n=/* @__PURE__ */ new Map;for(let r of e.snapshot())n.set(r.sessionId,r.state),t.adopt(r.sessionId,r.label),r.state===`unknown`&&t.markUnknown(r.sessionId),r.state===`settled`&&t.settle(r.sessionId);return{ledger:t,baselineStates:n}}function ga(e,t){let n=new Map(e.snapshot().map(e=>[e.sessionId,e.state]));for(let r of t.ledger.snapshot()){let i=t.baselineStates.get(r.sessionId);i!==void 0&&n.get(r.sessionId)===i&&(r.state===`settled`?e.settle(r.sessionId):r.state===`unknown`&&e.markUnknown(r.sessionId))}}function _a(e){let{client:t,directory:n,sessionId:r,ledger:i,logger:a,signal:o,deadline:s}=e,c=$n(t,n),l=null,u=!1;return{reconcileIfDue:async()=>{if(u||i.snapshot().length===0)return!1;let e=Date.now();if(l==null)return l=e+na,!1;if(e{u=!1});try{await ma(async()=>n,`ledger reconciliation`,o,s),ga(i,t)}catch(e){a.debug(`Ledger reconciliation did not finish within its bound; treating as no progress`,{sessionId:r,error:V(e)})}return!0}}}async function va(e,t,n,r,i,a,o){if(r?.baselineMessageIds==null)return null;if(typeof e.session.messages!=`function`)return i.debug(`session.messages() unavailable; skipping message activity poll`,{sessionId:t}),null;let s=r.rootFreshness,c=s?.revision,l=await ma(async()=>e.session.messages({path:{id:t},query:{directory:n},signal:a}),`session.messages()`,a,o),u=s!=null&&s.revision!==c,d=Array.isArray(l.data)?l.data:[],f=null,p=null,m=null,h=null;for(let e of d){let t=X(e,`info`),n=J(t,`id`);if(n==null)continue;let i=J(t,`role`);i===`user`&&(m=n,h==null&&!r.baselineMessageIds.has(n)&&(h=n)),!r.baselineMessageIds.has(n)&&i===`assistant`&&(f=e,p=t)}if(!u&&s!=null&&m!=null&&m!==h&&!r.baselineMessageIds.has(m)&&s.latestRootUserMessageId!==m&&Mi(s,m),p==null)return r.completedAssistantMessageId=void 0,null;let g=J(p,`id`);if(g==null)return r.completedAssistantMessageId=void 0,null;let _=X(p,`error`);if(_!=null){r.firstMeaningfulEventReceived=!0,r.completedAssistantMessageId=void 0;let{classification:e}=Li(_,J(p,`modelID`)),n=Ri(e);i.error(`Completed assistant message carries an error — classified as failure evidence`,{sessionId:t,messageId:g,type:n.error.type});let a=Bi(Vi(r),n,r,n.error.message,e.classificationPath).error;return{settlement:{kind:`failure-observed`},failures:[{source:`session`,message:a.message,llmError:a,classificationPath:r.classificationPath}]}}if(u||(r.firstMeaningfulEventReceived=!0,Y(X(p,`time`),`completed`)==null))return r.completedAssistantMessageId=void 0,null;let v=J(p,`finish`);if(v==null||v===`tool-calls`||v===`unknown`)return r.completedAssistantMessageId=void 0,null;let y=J(p,`parentID`);if(m!=null&&y!==m)return s!=null&&s.latestRootUserMessageId!==m&&Mi(s,m),r.completedAssistantMessageId=void 0,null;if(s!=null&&(s.latestRootUserMessageId!=null&&y!==s.latestRootUserMessageId||s.pendingParentMessageId!=null&&(y==null||y!==s.pendingParentMessageId))||er(X(f,`parts`))||s!=null&&s.revision!==c)return r.completedAssistantMessageId=void 0,null;let b=s?.revision??null,x=r.completedAssistantMessageId;return x==null||x.messageId!==g||x.revision!==b?(r.completedAssistantMessageId={messageId:g,revision:b},i.debug(`Completed assistant message observed; waiting for confirmation poll`,{sessionId:t,messageId:g,revision:b}),null):(i.debug(`Qualified completed assistant message observed — awaiting status corroboration`,{sessionId:t,messageId:g}),{messageId:g,revision:s?.revision??null,answeredParentId:y})}async function ya(e,t,n,i,a,o=r,s,c,l){let u=Date.now(),d=0,f=null,p=l===void 0?null:_a({client:e,directory:n,sessionId:t,ledger:l,logger:a,signal:i,deadline:c});for(;!i.aborted;){let r=!1,m=s?.terminalProviderError;if(m!=null)return oa(m);if(c?.isExpired()===!0)return ca(s);try{let e=async()=>{await fa(500,i)};c==null?await e():await c.run(e,`poll interval`)}catch{let e=s?.terminalProviderError;return e==null?ca(s):oa(e)}if(i.aborted){let e=s?.terminalProviderError;return e==null?c?.isExpired()===!0?ca(s):la(s):oa(e)}let h=s?.sessionError;f==null&&h!=null&&(f=h);let g=s?.terminalProviderError;if(g!=null)return oa(g);let _=f;if(_==null)d=0;else{if(d++,d>=3)return a.error(`Session error persisted through grace period`,{sessionId:t,error:_,graceCycles:d}),sa(`Session error: ${_}`,s);continue}let v=s?.rootFreshness;if(v==null?s?.sessionIdle===!0&&s.currentTurnTerminalSignalReceived===!0:ji(v)){if(da(l))r=!0,a.debug(`Session idle detected via event stream but owned work outstanding — deferring completion`,{sessionId:t,outstanding:l?.outstanding()});else if(c?.isExpired()===!0)return ca(s);else return a.debug(`Session idle detected via event stream`,{sessionId:t}),aa(s)}let y=Date.now()-u;if(c==null&&o>0&&y>=o)return a.warning(`Poll timeout reached`,{elapsedMs:y,maxPollTimeMs:o}),ua(`Poll timeout after ${y}ms`,s);try{let o;try{o=await va(e,t,n,s,a,i,c)}catch(e){throw s!=null&&(s.completedAssistantMessageId=void 0),e}if(o!=null&&`settlement`in o)return o;let d=s?.rootFreshness?.revision,f=((await ma(async()=>e.session.status({query:{directory:n},signal:i}),`session.status()`,i,c)).data??{})[t],p=s?.rootFreshness,m=p!=null&&p.revision!==d,h=p!=null&&p.pendingParentMessageId!=null,g=o!=null&&p!=null&&o.revision!==p.revision,_=o!=null&&p!=null&&p.pendingParentMessageId!=null&&o.answeredParentId===p.pendingParentMessageId,v=f==null||f.type===`idle`;if(o!=null&&v&&!m&&!g&&(!h||_)&&o!=null){if(da(l))r=!0,a.debug(`Qualified completed-assistant message observed but owned work outstanding — deferring completion`,{sessionId:t,outstanding:l?.outstanding()});else if(c?.isExpired()===!0)return ca(s);else return p!=null&&(Ni(p,o.answeredParentId),Fi(p)),s!=null&&(s.currentTurnTerminalSignalReceived=!0),a.debug(`Session completion detected via qualified completed assistant message`,{sessionId:t,messageId:o.messageId}),aa(s)}else o!=null&&s!=null&&(s.completedAssistantMessageId=void 0);if(f==null)a.debug(`Session status not found in poll response`,{sessionId:t});else if(f.type===`idle`){if(p==null?s==null||s.currentTurnTerminalSignalReceived===!0:p.state===`idle-candidate`&&p.idleCandidateRevision===p.revision){if(m||h)a.debug(`Session idle observed via polling but invalidated by renewed root activity since the request was issued`,{sessionId:t});else if(da(l))r=!0,a.debug(`Session idle detected via polling but owned work outstanding — deferring completion`,{sessionId:t,outstanding:l?.outstanding()});else if(c?.isExpired()===!0)return ca(s);else return p!=null&&Fi(p),a.debug(`Session idle detected via polling`,{sessionId:t}),aa(s)}else a.debug(`Session idle detected before terminal signal; continuing watchdog`,{sessionId:t})}else if(f.type===`retry`){s?.rootFreshness!=null&&$(s.rootFreshness);let e=Ii(f);if(e!=null){let n=Ri(e);return c?.isExpired()===!0&&s?.terminalProviderError==null?ca(s):(a.error(`Session status retry classified as terminal provider error via poll`,{sessionId:t,type:f.type}),s!=null&&Bi(null,n,s,void 0,e.classificationPath),oa(s?.terminalProviderError??n.error))}a.debug(`Session status`,{sessionId:t,type:f.type})}else f.type===`busy`&&s?.rootFreshness!=null&&$(s.rootFreshness),a.debug(`Session status`,{sessionId:t,type:f.type});if(s!=null&&!s.firstMeaningfulEventReceived){let e=Date.now()-u;if(e>=9e4)return a.error(`No agent activity detected — server may have crashed during prompt processing`,{elapsedMs:e,sessionId:t}),ua(`No agent activity detected after ${e}ms — server may have crashed during prompt processing`,s)}}catch(e){a.debug(`Poll request failed`,{error:V(e)})}r&&p!=null&&await p.reconcileIfDue()&&s?.rootFreshness!=null&&Pi(s.rootFreshness)}let m=s?.terminalProviderError;return m==null?c?.isExpired()===!0?ca(s):la(s):oa(m)}async function ba(e,t=2e3,n){if(n?.aborted===!0)return;let r,i,a=n==null?null:new Promise(e=>{i=()=>e(),n.addEventListener(`abort`,i,{once:!0})});try{await Promise.race([e,new Promise(e=>{r=setTimeout(e,t)}),...a==null?[]:[a]])}finally{r!=null&&clearTimeout(r),n!=null&&i!=null&&n.removeEventListener(`abort`,i)}}const xa=1e4;function Sa(e){let t=/* @__PURE__ */ Error(`${e} exceeded the execution deadline`);return t.name=`DeadlineExceededError`,t}function Ca(e,t){let n=new AbortController,r=e>0?Date.now()+e:null,i=null,a=!1,o=()=>{a||(a=!0,t.warning(`Execution timeout reached`,{timeoutMs:e}),n.abort())},s=()=>a?!0:r!=null&&Date.now()>=r&&(o(),!0);return r!=null&&(i=setTimeout(o,e)),{timeoutMs:e,signal:n.signal,isExpired:s,isTimedOut:()=>a,remainingMs:()=>{if(r==null)return 1/0;let e=Math.max(0,r-Date.now());return e===0&&o(),e},run:async(e,t)=>{if(s())throw Sa(t);if(r==null)return e();let i=null,a=new Promise(e=>{i=()=>e({source:`deadline`}),n.signal.addEventListener(`abort`,i,{once:!0})}),o=Promise.resolve().then(e).then(e=>({source:`operation`,success:!0,value:e}),e=>({source:`operation`,success:!1,error:e}));try{let e=await Promise.race([o,a]);if(e.source===`deadline`)throw Sa(t);if(e.success)return e.value;throw e.error}finally{i!=null&&n.signal.removeEventListener(`abort`,i)}},dispose:()=>{i!=null&&clearTimeout(i)}}}function wa(e){if(typeof e!=`object`||!e)return null;let t=Object.getOwnPropertyDescriptor(e,`id`);return typeof t?.value==`string`?t.value:null}const Ta=5e3;function Ea(e,t){return[...e,...t.filter(t=>!e.includes(t))]}async function Da(e,t,n,r){let i,a;try{let o=r==null?null:new Promise((e,t)=>{a=()=>t(/* @__PURE__ */ Error(`${n} aborted`)),r.addEventListener(`abort`,a,{once:!0})});return await Promise.race([e,new Promise((e,r)=>{i=setTimeout(()=>{r(/* @__PURE__ */ Error(`${n} timed out after ${t}ms`))},t)}),...o==null?[]:[o]])}finally{i!=null&&clearTimeout(i),r!=null&&a!=null&&r.removeEventListener(`abort`,a)}}async function Oa(e,t,n,r,i){if(typeof e.session.messages!=`function`)return null;try{let r=async()=>Da(e.session.messages({path:{id:t},query:{directory:n},signal:i?.signal}),Math.min(Ta,i?.remainingMs()??Ta),`baseline session.messages()`,i?.signal),a=i==null?await r():await i.run(r,`baseline session.messages()`),o=Array.isArray(a.data)?a.data:[];return new Set(o.flatMap(e=>wa(X(e,`info`))??[]))}catch(e){return r.debug(`Unable to read baseline session messages; disabling message activity fallback`,{sessionId:t,error:V(e)}),null}}async function ka(e,t,n,r,i,a){if(r==null||typeof e.session.messages!=`function`)return null;try{let i=async()=>Da(e.session.messages({path:{id:t},query:{directory:n},signal:a?.signal}),Math.min(Ta,a?.remainingMs()??Ta),`completed assistant session.messages()`,a?.signal),o=a==null?await i():await a.run(i,`completed assistant session.messages()`),s=Array.isArray(o.data)?o.data:[],c=null,l=-1/0;for(let e of s){let t=X(e,`info`),n=J(t,`id`);if(n==null||r.has(n)||J(t,`role`)!==`assistant`)continue;let i=X(t,`time`);if(Y(i,`completed`)==null)continue;let a=Y(i,`created`)??0;(c==null||a>=l)&&(c=e,l=a)}if(c!=null){let e=X(c,`parts`);if(Array.isArray(e))return Array.from(e,e=>e)}return null}catch(e){return i.debug(`Unable to read completed assistant message parts`,{sessionId:t,error:V(e)}),null}}function Aa(e,t){let n=Ea(e.commentsPostedUrls??[],t.commentsPostedUrls??[]);return{...e,prsCreated:Ea(e.prsCreated,t.prsCreated),commitsCreated:Ea(e.commitsCreated,t.commitsCreated),commentsPostedUrls:n,commentsPosted:n.length>0?n.length:Math.max(e.commentsPosted,t.commentsPosted)}}const ja=[5e3,15e3,3e4,6e4];async function Ma(e){if(e==null)return null;try{let{createOpencodeClient:t}=await import(`./v2-DNsUmXx2.js`);return t({baseUrl:e})}catch{return null}}async function Na(e,t,n,r,i,a,o){let s=a==null?await Ma(e):await a.run(async()=>Ma(e),`v2 client creation`);if(s==null)return{kind:`fallback-to-poll`};try{let e=a==null?await s.v2.session.wait({sessionID:t},{signal:i}):await a.run(async()=>s.v2.session.wait({sessionID:t},{signal:i}),`v2 session wait`);if(e.error!=null)return r.debug(`v2.session.wait() returned error, relying on poll watchdog`,{sessionId:t,error:m(e.error)}),{kind:`fallback-to-poll`};let c=()=>n.rootFreshness==null?n.currentTurnTerminalSignalReceived===!0:ji(n.rootFreshness),l=Date.now()+500;for(;!c()&&Date.now(){await fa(10,i)};a==null?await e():await a.run(e,`v2 terminal grace wait`)}if(!c())return r.debug(`v2.session.wait() resolved without a fresh terminal signal — deferring to poll watchdog`,{sessionId:t}),{kind:`fallback-to-poll`};if(n.terminalProviderError!=null){r.debug(`v2.session.wait() resolved after terminal provider error — reporting failure, not success`,{sessionId:t});let e=n.terminalProviderError;return{settlement:{kind:`failure-observed`},failures:[{source:`provider`,message:e.message,llmError:e}]}}if(da(o))return r.debug(`v2.session.wait() resolved with terminal signal but owned work outstanding — deferring to poll watchdog`,{sessionId:t,outstanding:o?.outstanding()}),{kind:`fallback-to-poll`};r.debug(`v2.session.wait() resolved with terminal signal — session is done`,{sessionId:t});let u=Vi(n);return{settlement:{kind:`completion-observed`},failures:u==null?[]:[{source:`session`,message:u.error.message,llmError:u.error,classificationPath:u.classificationPath}]}}catch(e){return r.debug(`v2.session.wait() threw, relying on poll watchdog`,{sessionId:t,error:V(e)}),{kind:`fallback-to-poll`}}}async function Pa(e){let{connected:t,streamEnded:n,signal:r,deadline:i}=e;if(i!=null&&(i.signal.aborted||i.isExpired()||i.remainingMs()<=0))return`deadline`;if(r.aborted)return`stream-ended`;let a=i?.remainingMs()??1/0,o=a{s=setTimeout(()=>{e(o||i?.isExpired()===!0?`deadline`:`timeout`)},Math.min(xa,a))}),l=new Promise(e=>{c=()=>{e(i?.signal.aborted===!0?`deadline`:`stream-ended`)},r.addEventListener(`abort`,c,{once:!0})});return await Promise.race([t.then(()=>`connected`),n.then(()=>`stream-ended`),e,l])}finally{s!==void 0&&clearTimeout(s),c!==void 0&&r.removeEventListener(`abort`,c)}}function Fa(e,t,n,r){let i=r?.errorName==null?void 0:{errorName:r.errorName,errorMessage:r.message},a=i==null?``:` (${i.errorName}: ${i.errorMessage})`,o=e===`timeout`?`Event stream did not connect within ${xa/1e3}s; the prompt was not sent`:`Event stream ended before it connected${a}; the prompt was not sent`;t.warning(`Event stream did not connect before the prompt`,{sessionId:n,reason:e,...i});let s=rn(o),c=`submit_failed`;return{success:!1,error:o,llmError:s,outcome:c,shouldRetry:vi(c),settlement:{kind:`failure-observed`},eventStreamResult:{tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:s,classificationPath:`fallback`}}}async function Ia(e,t,n,r,i,a,o,s,c,l,u,d){let f=l??new AbortController,p=new AbortController,m=new AbortController,h=c==null?p.signal:AbortSignal.any([p.signal,c.signal]),g=c==null?m.signal:AbortSignal.any([m.signal,c.signal]),_={firstMeaningfulEventReceived:!1,currentTurnTerminalSignalReceived:!1,currentTurnArmed:s==null,baselineMessageIds:void 0,sessionIdle:!1,sessionError:null,rootFreshness:Oi()};s==null&&_.rootFreshness!=null&&ki(_.rootFreshness);let v=c==null?f.signal:AbortSignal.any([f.signal,c.signal]),y=async()=>e.event.subscribe({signal:v}),b=a??(c==null?(await y()).stream:(await c.run(y,`event subscription`)).stream),x={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},S=()=>{},C=new Promise(e=>{S=e}),w=$i(b,t,h,i,_,c,u,d,S).then(e=>{x=e}).catch(e=>{e instanceof Error&&e.name!==`AbortError`&&i.debug(`Event stream error`,{error:e.message})}),T=null,E=async()=>(T??=(f.abort(),m.abort(),p.abort(),ba(w)),T),D=async()=>{await E()},O=null;try{if(s!=null){let r=await Pa({connected:C,streamEnded:w,signal:v,deadline:c});if(r!==`connected`){if(r===`deadline`)throw Sa(`event stream connection`);return Fa(r,i,t,x.discontinuity)}_.baselineMessageIds=await Oa(e,t,n,i,c)??void 0,_.currentTurnArmed=!0,_.rootFreshness!=null&&ki(_.rootFreshness);let a=c==null?await s():await c.run(s,`prompt submission`);if(a!=null){if(da(d))a.success===!1&&(O={source:`submission`,message:a.error??`Prompt submission failed`,llmError:a.llmError}),i.debug(`Prompt start result observed but owned work outstanding — deferring completion`,{sessionId:t,outstanding:d?.outstanding()});else{if(await D(),a.success===!1){let e=[];if(_.terminalProviderError==null){let t=Vi(_);t!=null&&e.push({source:`session`,message:t.error.message,llmError:t.error,classificationPath:t.classificationPath})}else e.push({source:`provider`,message:_.terminalProviderError.message,llmError:_.terminalProviderError});e.push({source:`submission`,message:a.error??`Prompt submission failed`,llmError:a.llmError});let t={accepted:_.firstMeaningfulEventReceived===!0},n=Ci({settlement:{kind:`failure-observed`},failures:e},null,t),r=t.accepted?x:a.eventStreamResult;return n.llmError!=null&&r.llmError?.type!==n.llmError.type&&(r={...r,llmError:n.llmError,classificationPath:n.classificationPath??r.classificationPath}),{success:n.success,error:n.error,llmError:n.llmError,outcome:n.outcome,shouldRetry:n.shouldRetry,settlement:n.settlement,eventStreamResult:r}}return a}}}let a=ya(e,t,n,h,i,r,_,c,d),l=Na(o,t,_,i,g,c,d),u=await Promise.race([l.then(async e=>`settlement`in e?e:a),a]);await D();let f={accepted:_.firstMeaningfulEventReceived===!0},p=Ci(u,O,f),m=x;if(p.llmError!=null&&x.llmError?.type!==p.llmError.type&&(m={...x,llmError:p.llmError}),!p.success)return{success:!1,error:p.error,llmError:p.llmError,outcome:p.outcome,shouldRetry:p.shouldRetry,settlement:p.settlement,eventStreamResult:m};let y=await ka(e,t,n,_.baselineMessageIds,i,c);if(y!=null){let e=ea(y,i),t=Aa(m,e);return{success:!0,error:null,llmError:null,outcome:p.outcome,shouldRetry:p.shouldRetry,settlement:p.settlement,eventStreamResult:t}}return{success:!0,error:null,llmError:null,outcome:p.outcome,shouldRetry:p.shouldRetry,settlement:p.settlement,eventStreamResult:m}}finally{await E()}}function La(e,t){let n=t===!0?`Before taking any action, verify what has already landed, including external changes and response artifacts, and do not repeat completed side effects.`:`Inspect the current session state before continuing and do not repeat completed work.`;return[`The previous turn was accepted but ended with the observed failure type \`${e.type}\`.`,`Continue the remaining objective from the current session; do not resend or replay the original request.`,n].join(` +`)}const Ra=e=>e?.model==null?{providerID:N.providerID,modelID:N.modelID}:{providerID:e.model.providerID,modelID:e.model.modelID};async function za(e,t,n,r,i,a,o,s,c,l,u){let d={parts:[{type:`text`,text:n},...r??[]]},f=Ra(a);f!=null&&(d.model=f);let p=a?.agent??null;p!=null&&(d.agent=p);let h=new AbortController;try{let n=c==null?h.signal:AbortSignal.any([h.signal,c.signal]),r=async()=>e.event.subscribe({signal:n}),f=c==null?await r():await c.run(r,`event subscription`),p=(e,t)=>{let n=nn(t)?rn(e):null,r=`submit_failed`;return{success:!1,error:e,llmError:n,outcome:r,shouldRetry:vi(r),settlement:{kind:`failure-observed`},eventStreamResult:{tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:n,classificationPath:n==null?`unclassified`:`fallback`}}},g=async()=>{let n=await e.session.promptAsync({path:{id:t},body:d,query:{directory:i},signal:c?.signal});return n.error==null?null:p(m(n.error),n.error)};return await(async()=>Ia(e,t,i,a?.timeoutMs??18e5,o,f.stream,s,g,c,h,l,u))()}finally{h.abort()}}function Ba(e,t){return t.includes(e)}function Va(e){return e.endsWith(`[bot]`)}const Ha={botLogin:null,requireMention:!0,allowedAssociations:Xn,skipDraftPRs:!0,promptInput:null,senderAssociation:null,reviewSkipLabel:null};function Ua(e,t){if(t?.eventType===`pull_request`)return`pr-review`;let n=t?.author;return t?.eventType===`issue_comment`&&e.issueType===`pr`&&n!=null&&n.isBot===!1&&typeof n.association==`string`&&Ba(n.association,Xn)&&t.hasMention===!0?`pr-review-permitted`:e.issueType===`pr`?`pr-comment`:`issue-comment`}function Wa(e){return e instanceof Error&&`code`in e&&e.code===`ENOENT`}async function Ga(e,t,n){if(e==null)return`absent`;let r;try{r=await G.readFile(e,`utf8`)}catch(t){return Wa(t)?`absent`:(n.warning(`Response-file status is unknown; declining recovery`,{responseFilePath:e,error:V(t)}),`unknown`)}let i=ce(r,{surface:t});return i.success===!0?`present`:(n.warning(`Response file is not a valid deliverable; allowing recovery`,{responseFilePath:e,reason:i.error.reason}),`absent`)}const Ka=2e3,qa=5e3;async function Ja(e,t,n){let r=null;for(let i=1;i<=2;i++){let i=new AbortController,a=null;try{let r=e.postSessionIdPermissionsPermissionId({path:{id:t.sessionID,permissionID:t.requestID},body:{response:`reject`},query:{directory:n},signal:i.signal}),o=new Promise((e,t)=>{a=setTimeout(()=>{i.abort(),t(/* @__PURE__ */ Error(`Permission reply timed out after ${qa}ms`))},qa)}),s=await Promise.race([r,o]);if(s.error!=null)throw Error(`Permission reply rejected by server: ${m(s.error)}`);return}catch(e){r=V(e)}finally{a!=null&&clearTimeout(a)}}throw Error(`Permission reply failed after 2 attempt(s): ${r}`)}async function Ya(e,t,n){if(typeof e.session.abort!=`function`)return;let r=new AbortController,i=null,a=!1;try{let o=e.session.abort({path:{id:t},signal:r.signal}),s=new Promise((e,t)=>{i=setTimeout(()=>{a=!0,r.abort(),t(/* @__PURE__ */ Error(`Session abort timed out after ${Ka}ms`))},Ka)}),c=(await Promise.race([o,s]))?.error;c!=null&&n.warning(`OpenCode session abort returned an error; continuing teardown`,{sessionId:t,error:V(c)})}catch(e){a?n.warning(`OpenCode session abort exceeded teardown budget; continuing teardown`,{sessionId:t}):n.debug(`OpenCode session abort failed; continuing teardown`,{sessionId:t,error:V(e)})}finally{i!=null&&clearTimeout(i)}}async function Xa(e,t,n,r,i){let a=Date.now(),o=n?.timeoutMs??18e5,s=Ca(o,t),c=r==null,l=null,u=null,d=null,f={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},h=null,g=null,_=!1;t.info(`Executing OpenCode agent (SDK mode)`,{agent:n?.agent??`build (default)`,hasModelOverride:n?.model!=null,timeoutMs:o});let v=()=>({success:!1,exitCode:130,duration:Date.now()-a,sessionId:d,error:`Execution timed out after ${o}ms`,tokenUsage:f.tokens,model:f.model,cost:f.cost,prsCreated:f.prsCreated,commitsCreated:f.commitsCreated,commentsPosted:f.commentsPosted,llmError:h,classificationPath:f.classificationPath,observationGap:_});try{let o=null;if(r==null){let e=await s.run(async()=>ie(async()=>D({signal:s.signal}),t),`OpenCode server creation`);u=e.client,l=e.server,o=e.server.url}else u=r.client,o=r.server.url;if(u==null)throw Error(`OpenCode client was not initialized`);let c=u;if(n?.continueSessionId==null){let e=n?.sessionTitle==null?void 0:{body:{title:n.sessionTitle}},r=await s.run(async()=>e==null?c.session.create({signal:s.signal}):c.session.create({...e,signal:s.signal}),`session creation`);if(r.data==null||r.error!=null)throw Error(`Failed to create session: ${r.error==null?`No data returned`:m(r.error)}`);d=r.data.id,t.info(`Created new OpenCode session`,{sessionId:d,sessionTitle:n?.sessionTitle??null})}else d=n.continueSessionId,t.info(`Continuing existing OpenCode session`,{sessionId:d});if(d==null)throw Error(`OpenCode session was not initialized`);let y=d,{text:b,referenceFiles:x}=ee({...e,sessionId:d},t),S=p(),C=et();if(await s.run(async()=>G.mkdir(C,{recursive:!0}),`OpenCode log directory creation`),fe()){let e=Dt.createHash(`sha256`).update(b).digest(`hex`),n=K.join(C,`prompt-${d}-${e.slice(0,8)}.txt`);try{await s.run(async()=>G.writeFile(n,b,`utf8`),`prompt artifact write`),t.info(`Prompt artifact written`,{hash:e,path:n})}catch(e){t.warning(`Failed to write prompt artifact`,{error:V(e),path:n})}}let w=U.env.RUNNER_TEMP,T=w!=null&&w.trim().length>0?Vn({runnerTemp:w.trim(),runId:F(),runAttempt:oe()}):C;T!==C&&await s.run(async()=>Wn(T),`attachment directory creation`);let E=await s.run(async()=>nr(x,T,t),`reference file materialization`),O=[...e.fileParts??[],...E],k=async e=>{await Ja(c,e,S)},A=null,te=!1,j={kind:`initial`};for(let r=1;r<=4;r++){if(s.isExpired())return g=`deadline`,v();let l=ja[Math.min(r-1,ja.length-1)]??ja[0],u=j.kind===`initial`?b:La(j.error,n?.credentialProvisioned===!0),p=O.length>0?O:void 0,m=await(async()=>{try{return await za(c,y,u,p,S,n,t,o,s,k,i)}finally{s.isExpired()===!1&&await xr(c,y,n?.sessionTitle,t,{signal:s.signal,isExpired:s.isExpired,remainingMs:s.remainingMs})}})();if(f=Ki(Aa(m.eventStreamResult,f),f),m.eventStreamResult.discontinuity!=null&&(_=!0),m.success)return g=`other`,{success:!0,exitCode:0,duration:Date.now()-a,sessionId:d,error:null,tokenUsage:f.tokens,model:f.model,cost:f.cost,prsCreated:f.prsCreated,commitsCreated:f.commitsCreated,commentsPosted:f.commentsPosted,llmError:null,classificationPath:f.classificationPath,observationGap:_};if(m.outcome===`timeout`)return g=`deadline`,v();A=m.error,h=m.llmError,g=m.settlement.kind===`deadline`?`deadline`:`other`;let x=te;if(m.outcome!==`submit_failed`&&(te=!0),await Ga(e.responseFilePath,e.responseSurface,t)!==`absent`)break;let C=m.outcome===`submit_failed`&&x===!1&&m.llmError?.retryable===!0,w=m.outcome===`turn_failed_retryable`,T=g!==`deadline`,E=i==null||i.isDrainComplete();if(C===!1&&w===!1||r>=4||T===!1||E===!1)break;if(w){if(m.llmError==null)break;j={kind:`continuation`,error:m.llmError}}else j={kind:`initial`};if(t.warning(`LLM fetch error detected, retrying with continuation prompt`,{attempt:r,maxAttempts:4,error:m.error,delayMs:l,sessionId:d}),s.isExpired())break;await s.run(async()=>{await fa(l,s.signal)},`retry delay`)}return{success:!1,exitCode:1,duration:Date.now()-a,sessionId:d,error:A??`Unknown error`,tokenUsage:f.tokens,model:f.model,cost:f.cost,prsCreated:f.prsCreated,commitsCreated:f.commitsCreated,commentsPosted:f.commentsPosted,llmError:h,classificationPath:f.classificationPath,observationGap:_}}catch(e){if(e instanceof Error&&e.name===`DeadlineExceededError`)return g=`deadline`,v();g=s.isExpired()?`deadline`:`other`;let n=Date.now()-a,r=V(e),i=nn(e);return t.error(`OpenCode execution failed`,{error:r,durationMs:n}),{success:!1,exitCode:1,duration:n,sessionId:d,error:r,tokenUsage:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:i?rn(r):null,classificationPath:i?`fallback`:`unclassified`,observationGap:_}}finally{g===`deadline`&&u!=null&&d!=null&&await Ya(u,d,t),s.dispose(),c&&l?.close()}}async function Za(e,t,n){return t.commentId==null?(n.debug(`No comment ID, skipping eyes reaction`),!1):await Br(e,t.repo,t.commentId,`eyes`,n)!=null&&(n.info(`Added eyes reaction`,{commentId:t.commentId}),!0)}async function Qa(e,t,n){return t.issueNumber==null?(n.debug(`No issue number, skipping working label`),!1):await Ur(e,t.repo,`agent: working`,`fcf2e1`,`Agent is currently working on this`,n)&&await Wr(e,t.repo,t.issueNumber,[`agent: working`],n)?(n.info(`Added working label`,{issueNumber:t.issueNumber}),!0):!1}async function $a(e,t,n){await Promise.all([Za(e,t,n),Qa(e,t,n)])}async function eo(e,t,n){if(t.commentId==null||t.botLogin==null)return;let r=(await Vr(e,t.repo,t.commentId,n)).find(e=>e.content===`eyes`&&e.userLogin===t.botLogin);r!=null&&await Hr(e,t.repo,t.commentId,r.id,n)}async function to(e,t,n,r){t.commentId!=null&&await Br(e,t.repo,t.commentId,n,r)}async function no(e,t,n){if(t.commentId==null||t.botLogin==null)n.debug(`Missing comment ID or bot login, skipping reaction update`);else try{await eo(e,t,n),await to(e,t,`hooray`,n),n.info(`Updated reaction to success indicator`,{commentId:t.commentId,reaction:`hooray`})}catch(e){n.warning(`Failed to update reaction (non-fatal)`,{error:V(e)})}}async function ro(e,t,n){if(t.commentId==null||t.botLogin==null)n.debug(`Missing comment ID or bot login, skipping reaction update`);else try{await eo(e,t,n),await to(e,t,`confused`,n),n.info(`Updated reaction to confused`,{commentId:t.commentId})}catch(e){n.warning(`Failed to update failure reaction (non-fatal)`,{error:V(e)})}}async function io(e,t,n){if(t.commentId==null||t.botLogin==null)n.debug(`Missing comment ID or bot login, skipping reaction update`);else try{await eo(e,t,n),n.info(`Invocation could not be verified complete; leaving no terminal reaction`,{commentId:t.commentId})}catch(e){n.warning(`Failed to update reaction for an incomplete invocation (non-fatal)`,{error:V(e)})}}async function ao(e,t,n,r){n===`succeeded`?await no(e,t,r):n===`failed`?await ro(e,t,r):await io(e,t,r)}async function oo(e,t,n){t.issueNumber==null?n.debug(`No issue number, skipping label removal`):await qr(e,t.repo,t.issueNumber,`agent: working`,n)&&n.info(`Removed working label`,{issueNumber:t.issueNumber})}function so(e=U.env){let t=e.XDG_CONFIG_HOME?.trim()??``;return t.length>0?K.join(t,`opencode`):K.join(Jt(),`.config`,`opencode`)}function co(e){return K.join(e,`fro-bot`,`no-task-reuse.mjs`)}function lo(e){return kt(co(e)).href}function uo(){return new URL(`./no-task-reuse.js`,import.meta.url)}async function fo(e,t,n=uo){let r=n(),i=co(e);try{let e=await G.readFile(r);return await G.mkdir(K.dirname(i),{recursive:!0}),await G.writeFile(i,e),t.info(`Wrote task-reuse guard plugin`,{path:i,bytes:e.byteLength}),i}catch(e){throw Error(`Could not install the task-reuse guard plugin from ${r.toString()} to ${i}: ${V(e)}`,{cause:e})}}function po(e){return{plugin:[lo(e)]}}var mo=/* @__PURE__ */ e(S(),1),ho=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},go=class{constructor(e,t,n){if(e<1)throw Error(`max attempts should be greater than or equal to 1`);if(this.maxAttempts=e,this.minSeconds=Math.floor(t),this.maxSeconds=Math.floor(n),this.minSeconds>this.maxSeconds)throw Error(`min seconds should be less than or equal to max seconds`)}execute(e,t){return ho(this,void 0,void 0,function*(){let n=1;for(;nsetTimeout(t,e*1e3))})}},_o=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},vo=class extends Error{constructor(e){super(`Unexpected HTTP response: ${e}`),this.httpStatusCode=e,Object.setPrototypeOf(this,new.target.prototype)}};const yo=process.platform===`win32`;process.platform;function bo(e,t,n,r){return _o(this,void 0,void 0,function*(){return t||=St.join(Fo(),xt.randomUUID()),yield we(St.dirname(t)),L(`Downloading ${e}`),L(`Destination ${t}`),yield new go(3,Io(`TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS`,10),Io(`TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS`,20)).execute(()=>_o(this,void 0,void 0,function*(){return yield xo(e,t||``,n,r)}),e=>!(e instanceof vo&&e.httpStatusCode&&e.httpStatusCode<500&&e.httpStatusCode!==408&&e.httpStatusCode!==429))})}function xo(e,t,n,r){return _o(this,void 0,void 0,function*(){if(W.existsSync(t))throw Error(`Destination file path ${t} already exists`);let i=new Me(`actions/tool-cache`,[],{allowRetries:!1});n&&(L(`set auth`),r===void 0&&(r={}),r.authorization=n);let a=yield i.get(e,r);if(a.message.statusCode!==200){let t=new vo(a.message.statusCode);throw L(`Failed to download from "${e}". Code(${a.message.statusCode}) Message(${a.message.statusMessage})`),t}let o=wt.promisify(Xt.pipeline),s=Io(`TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY`,()=>a.message)(),c=!1;try{return yield o(s,W.createWriteStream(t)),L(`download complete`),c=!0,t}finally{if(!c){L(`download failed`);try{yield Oe(t)}catch(e){L(`Failed to delete '${t}'. ${e.message}`)}}}})}function So(e,t){return _o(this,arguments,void 0,function*(e,t,n=`xz`){if(!e)throw Error(`parameter 'file' is required`);t=yield ko(t),L(`Checking tar --version`);let r=``;yield xe(`tar --version`,[],{ignoreReturnCode:!0,silent:!0,listeners:{stdout:e=>r+=e.toString(),stderr:e=>r+=e.toString()}}),L(r.trim());let i=r.toUpperCase().includes(`GNU TAR`),a;a=n instanceof Array?n:[n],st()&&!n.includes(`v`)&&a.push(`-v`);let o=t,s=e;return yo&&i&&(a.push(`--force-local`),o=t.replace(/\\/g,`/`),s=e.replace(/\\/g,`/`)),i&&(a.push(`--warning=no-unknown-keyword`),a.push(`--overwrite`)),a.push(`-C`,o,`-f`,s),yield xe(`tar`,a),t})}function Co(e,t){return _o(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'file' is required`);return t=yield ko(t),yo?yield wo(e,t):yield To(e,t),t})}function wo(e,t){return _o(this,void 0,void 0,function*(){let n=e.replace(/'/g,`''`).replace(/"|\n|\r/g,``),r=t.replace(/'/g,`''`).replace(/"|\n|\r/g,``),i=yield Qe(`pwsh`,!1);if(i){let e=[`-NoLogo`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Unrestricted`,`-Command`,[`$ErrorActionPreference = 'Stop' ;`,`try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`,`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${n}', '${r}', $true) }`,`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${n}' -DestinationPath '${r}' -Force } else { throw $_ } } ;`].join(` `)];L(`Using pwsh at path: ${i}`),yield xe(`"${i}"`,e)}else{let e=[`-NoLogo`,`-Sta`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Unrestricted`,`-Command`,[`$ErrorActionPreference = 'Stop' ;`,`try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`,`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${n}' -DestinationPath '${r}' -Force }`,`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${n}', '${r}', $true) }`].join(` `)],t=yield Qe(`powershell`,!0);L(`Using powershell at path: ${t}`),yield xe(`"${t}"`,e)}})}function To(e,t){return _o(this,void 0,void 0,function*(){let n=yield Qe(`unzip`,!0),r=[e];st()||r.unshift(`-q`),r.unshift(`-o`),yield xe(`"${n}"`,r,{cwd:t})})}function Eo(e,t,n,r){return _o(this,void 0,void 0,function*(){if(n=mo.clean(n)||n,r||=bt.arch(),L(`Caching tool ${t} ${n} ${r}`),L(`source dir: ${e}`),!W.statSync(e).isDirectory())throw Error(`sourceDir is not a directory`);let i=yield Ao(t,n,r);for(let t of W.readdirSync(e)){let n=St.join(e,t);yield lt(n,i,{recursive:!0})}return jo(t,n,r),i})}function Do(e,t,n){if(!e)throw Error(`toolName parameter is required`);if(!t)throw Error(`versionSpec parameter is required`);n||=bt.arch(),Mo(t)||(t=No(Oo(e,n),t));let r=``;if(t){t=mo.clean(t)||``;let i=St.join(Po(),e,t,n);L(`checking cache: ${i}`),W.existsSync(i)&&W.existsSync(`${i}.complete`)?(L(`Found tool in cache ${e} ${t} ${n}`),r=i):L(`not found`)}return r}function Oo(e,t){let n=[];t||=bt.arch();let r=St.join(Po(),e);if(W.existsSync(r)){let e=W.readdirSync(r);for(let i of e)if(Mo(i)){let e=St.join(r,i,t||``);W.existsSync(e)&&W.existsSync(`${e}.complete`)&&n.push(i)}}return n}function ko(e){return _o(this,void 0,void 0,function*(){return e||=St.join(Fo(),xt.randomUUID()),yield we(e),e})}function Ao(e,t,n){return _o(this,void 0,void 0,function*(){let r=St.join(Po(),e,mo.clean(t)||t,n||``);L(`destination ${r}`);let i=`${r}.complete`;return yield Oe(r),yield Oe(i),yield we(r),r})}function jo(e,t,n){let r=`${St.join(Po(),e,mo.clean(t)||t,n||``)}.complete`;W.writeFileSync(r,``),L(`finished caching tool`)}function Mo(e){let t=mo.clean(e)||``;L(`isExplicit: ${t}`);let n=mo.valid(t)!=null;return L(`explicit? ${n}`),n}function No(e,t){let n=``;L(`evaluating ${e.length} versions`),e=e.sort((e,t)=>mo.gt(e,t)?1:-1);for(let r=e.length-1;r>=0;r--){let i=e[r];if(mo.satisfies(i,t)){n=i;break}}return L(n?`matched: ${n}`:`match not found`),n}function Po(){let e=process.env.RUNNER_TOOL_CACHE||``;return Ct(e,`Expected RUNNER_TOOL_CACHE to be defined`),e}function Fo(){let e=process.env.RUNNER_TEMP||``;return Ct(e,`Expected RUNNER_TEMP to be defined`),e}function Io(e,t){let n=global[e];return n===void 0?t:n}function Lo(e,t){e!=null&&(t instanceof Uint8Array?e(Et.from(t)):e(Et.from(String(t))))}function Ro(e){return typeof e.exitCode==`number`||typeof e.signalCode==`string`}function zo(e,t){if(Ro(e))return!1;if(U.platform!==`win32`&&typeof e.pid==`number`)try{return U.kill(-e.pid,t),!0}catch{}return e.kill(t),!0}async function Bo(e,t,n,r){let i=r?.env??Object.fromEntries(Object.entries(U.env).filter(e=>e[1]!=null)),a=U.platform!==`win32`;return new Promise((o,s)=>{let c=Gt(e,t??[],{cwd:r?.cwd,env:i,stdio:[`pipe`,`pipe`,`pipe`],detached:a}),l,u,d,f=!1,p=!1,m=()=>{l!=null&&clearTimeout(l),u!=null&&clearTimeout(u),d!=null&&clearTimeout(d)};function h(){zo(c,`SIGKILL`)}function g(){U.off(`SIGTERM`,v),U.off(`SIGINT`,y),U.off(`exit`,h)}function _(e){zo(c,`SIGKILL`),g(),U.kill(U.pid,e)}function v(){_(`SIGTERM`)}function y(){_(`SIGINT`)}U.once(`SIGTERM`,v),U.once(`SIGINT`,y),U.on(`exit`,h);let b=e=>{f||(f=!0,m(),g(),o(e))};c.on(`error`,e=>{f||(f=!0,m(),g(),s(e))}),c.on(`close`,e=>{b(p?`timed-out`:e??1)}),c.stdout.on(`data`,e=>Lo(r?.listeners?.stdout,e)),c.stderr.on(`data`,e=>Lo(r?.listeners?.stderr,e)),c.stdin.on(`error`,()=>{}),r?.input!=null&&c.stdin.write(r.input),c.stdin.end(),l=setTimeout(()=>{f||(zo(c,`SIGTERM`)&&(p=!0),u=setTimeout(()=>{f||(zo(c,`SIGKILL`)&&(p=!0),d=setTimeout(()=>b(p?`timed-out`:c.exitCode??1),2e3))},5e3))},n)})}function Vo(){return{find:Do,downloadTool:bo,extractTar:So,extractZip:Co,cacheDir:Eo}}function Ho(){return{exec:xe,execWithTimeout:Bo,getExecOutput:Ve}}function Uo(e){let t;try{t=JSON.parse(e)}catch(e){throw e instanceof SyntaxError?Error(`Invalid auth-json format: ${e.message}`):e}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`auth-json must be a JSON object`);return t}async function Wo(e,t,n){let r=K.join(t,`auth.json`);await G.mkdir(t,{recursive:!0});let i=JSON.stringify(e,null,2);return await G.writeFile(r,i,{mode:384}),n.info(`Populated auth.json`,{path:r,providers:Object.keys(e).length}),r}function Go(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ko(e,t){let n=K.resolve(e),r=K.resolve(t);return n.startsWith(`${r}${K.sep}`)}function qo(e,t,n,r){let i=Go(e.agent)?e.agent:{},a=Go(i.build)?i.build:{},o=Go(a.permission)?a.permission:{},s=`deny`,c=Go(o.edit)?{...o.edit}:typeof o.edit==`string`?{"*":o.edit}:{},l=Go(o.read)?{...o.read}:{};for(let[e,t]of Object.entries({"*.env":`deny`,"*.env.*":`deny`,"*.env.example":`allow`}))delete l[e],l[e]=t;let u={...o};if(delete u.doom_loop,u.doom_loop=`deny`,delete u.read,u.read=l,t!=null&&t.trim().length>0){let e=yt(t.trim()).map(e=>K.join(e,f,`*`));for(let t of e)delete c[t];for(let t of e)c[t]=`deny`;let i=K.join(Vn({runnerTemp:t,runId:F(),runAttempt:oe()}),`*`);if(s={"*":`deny`,[K.join(t,f,`*`)]:`allow`,[i]:`allow`},n!=null&&n.trim().length>0){let e=t.trim(),i=n.trim();Ko(i,e)?s[K.join(i,`*`)]=`allow`:r.warning(`Ignoring integration workdir outside RUNNER_TEMP`,{integrationWorkDir:i,runnerTemp:e})}}e.agent={...i,build:{...a,permission:{...u,edit:c,external_directory:s}}}}function Jo(e,t,n){if(t==null||t.trim().length===0){n.debug(`Skipping attachment directory permission grant: RUNNER_TEMP is not set`);return}let r=t.trim(),i=K.join(Vn({runnerTemp:r,runId:F(),runAttempt:oe()}),`*`),a=Go(e.permission)?e.permission:{},o=a.external_directory,s;Go(o)?s={...o}:typeof o==`string`?s={"*":o}:(o==null||n.warning(`Ignoring operator-supplied permission.external_directory: expected a string or an object, got a shape that cannot be merged; operator rules for this key are not preserved`,{receivedType:Array.isArray(o)?`array`:typeof o}),s={});let c=s[`*`]??`deny`;delete s[`*`],delete s[i],e.permission={...a,external_directory:{"*":c,...s,[i]:`allow`}}}function Yo(e,t){let n={autoupdate:!1};if(e.opencodeConfig!=null){let t;try{t=JSON.parse(e.opencodeConfig)}catch{return{config:n,error:`opencode-config must be valid JSON`}}if(typeof t!=`object`||!t||Array.isArray(t))return{config:n,error:`opencode-config must be a JSON object`};Object.assign(n,t)}let r=`@fro.bot/systematic@${e.systematicVersion}`,i=Array.isArray(n.plugin)?n.plugin:[];i.some(e=>typeof e==`string`&&e.startsWith(`@fro.bot/systematic`))||(n.plugin=[...i,r]);let a=n.subagent_depth;n.subagent_depth=1,a!=null&&a!==1&&t.warning(`OpenCode config subagent_depth overridden to 1 (operator supplied ${String(a)}). Nested subagent depth is pinned to avoid an unreachable grandchild-cancellation gap; see plan docs/plans/2026-09-14-001-feat-background-subagent-ownership-plan.md.`),Jo(n,U.env.RUNNER_TEMP,t);let o=[];`plugins`in n&&(delete n.plugins,o.push(`plugins`));let s=n.default_agent;return n.default_agent=`build`,qo(n,U.env.RUNNER_TEMP,e.integrationWorkDir,t),s!=null&&s!==`build`&&o.push(`default_agent`),o.length>0&&t.warning(`OpenCode config rewritten: ${o.join(`, `)}. The legacy "plugins" key is removed and default_agent is pinned to "build".`),t.debug(`Built CI OpenCode config`,{hasUserConfig:e.opencodeConfig!=null,pluginCount:Array.isArray(n.plugin)?n.plugin.length:0}),{config:n,error:null}}function Xo(e){return{debug:t=>e.debug(t),info:t=>e.info(t),warn:t=>e.warning(t),error:t=>e.error(t)}}function Zo(e){let{token:t,logger:n}=e;return n.debug(`Creating GitHub client with token`),i(t,{log:Xo(n)})}async function Qo(e,t){try{let{data:n}=await e.rest.users.getAuthenticated();return t.debug(`Authenticated as`,{login:n.login,type:n.type}),n.login}catch{return t.debug(`Failed to get authenticated user, may be app token`),`fro-bot[bot]`}}async function $o(e,t,n,r,i,a=!0){let o=t??n,s=t==null?n.length>0?`github-token`:`none`:`app-token`;if(o.length===0)return r.warning(`No GitHub token available`),{authenticated:!1,method:`none`,botLogin:null};if(a?U.env.GH_TOKEN=o:delete U.env.GH_CONFIG_DIR,r.info(`Configured authentication`,{method:s}),a&&o.length>0)try{let e=U.env.RUNNER_TEMP!=null&&U.env.RUNNER_TEMP.length>0?U.env.RUNNER_TEMP:Yt(),t=await Pt(Vt(e,`gh-config-`));await jt(t,448);let n={...U.env,GH_CONFIG_DIR:t};delete n.GH_TOKEN,delete n.GITHUB_TOKEN;let a=await i.getExecOutput(`gh`,[`auth`,`login`,`--with-token`],{env:n,input:Et.from(o,`utf8`),silent:!0,ignoreReturnCode:!0});if(a.exitCode===0){U.env.GH_CONFIG_DIR=t;try{await jt(Vt(t,`hosts.yml`),384)}catch{}}else r.warning(`gh auth login failed; model gh CLI usage in the child may be unauthenticated`,{exitCode:a.exitCode})}catch(e){r.warning(`Failed to configure off-environment gh auth; child gh CLI will be unauthenticated`,{error:V(e)})}let c=null;return e!=null&&(c=await Qo(e,r)),{authenticated:!0,method:s,botLogin:c}}async function es(e,t){let n=await t.getExecOutput(`git`,[`config`,e],{ignoreReturnCode:!0,silent:!0});return n.exitCode===0&&n.stdout.trim().length>0?n.stdout.trim():null}async function ts(e,t,n,r){let i=await es(`user.name`,r),a=await es(`user.email`,r);if(i!=null&&a!=null){n.info(`Git identity already configured`,{name:i,email:a});return}if(t==null)throw Error(`Cannot configure Git identity: no authenticated GitHub user`);let o=null;if(a==null){let r=await ei(e,t,n);if(r==null)throw Error(`Cannot configure Git identity: failed to look up user ID for '${t}'`);o=String(r.id)}i??await r.exec(`git`,[`config`,`--global`,`user.name`,t],void 0);let s=`${o}+${t}@users.noreply.github.com`;a??await r.exec(`git`,[`config`,`--global`,`user.email`,s],void 0),n.info(`Configured git identity`,{name:i??t,email:a??s})}function ns(){return new URL(`./session-tools.js`,import.meta.url)}async function rs(e,t,n=ns){let r=n();try{let n=await G.readFile(r),i=K.join(e,`tool`);await G.mkdir(i,{recursive:!0});let a=K.join(i,`session.js`);await G.writeFile(a,n),t.info(`Wrote session tools file`,{path:a,bytes:n.byteLength})}catch(e){t.warning(`Session tools asset unavailable, skipping (native session tools will be absent)`,{path:r.toString(),error:String(e)})}}const is=/* @__PURE__ */ new Set([`__proto__`,`prototype`,`constructor`]);function as(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function os(e,t){let n=Object.create(null);for(let[t,r]of Object.entries(e))is.has(t)||(n[t]=r);for(let[e,r]of Object.entries(t)){if(is.has(e))continue;let t=n[e];n[e]=as(r)&&as(t)?os(t,r):r}return n}function ss(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function cs(e,t,n){let r=JSON.parse(e);if(!ss(r))throw Error(`systematic-config must be a JSON object (non-null, non-array)`);await G.mkdir(t,{recursive:!0});let i=K.join(t,`systematic.json`),a={};try{let e=await G.readFile(i,`utf8`),t=JSON.parse(e);ss(t)&&(a=t)}catch(e){n.debug(`Using empty base Systematic config`,{path:i,error:String(e)})}let o=os(a,r);await G.writeFile(i,JSON.stringify(o,null,2)),n.info(`Wrote Systematic config`,{path:i,keyCount:Object.keys(r).length})}const ls=JSON.stringify({plugin:[]});function us(e){return e.includes(`ENOENT`)||e.includes(`EACCES`)}function ds(e){return typeof e==`object`&&e&&`code`in e&&typeof e.code==`string`?e.code:void 0}async function fs(e){try{let t=null,n;try{t=await Lt(e)}catch(e){n=ds(e)}if(t===null){if(n!==`ENOENT`)return`path could not be examined (${n??`unknown error`})`;let t=null;try{t=await Mt(e)}catch{t=null}if(t!==null&&t.isSymbolicLink())return`path is a symbolic link whose target does not exist`;let r=Bt(e);try{let e=await Ft(r),t=e.slice(0,10),n=e.length>10?` (truncated, ${e.length} total)`:``;return`path does not exist; parent directory ${r} contains: ${t.join(`, `)}${n}`}catch(e){let t=ds(e);return t===`ENOENT`?`path does not exist; parent directory ${r} does not exist either`:`path does not exist; parent directory ${r} is not readable (${t??`unknown error`})`}}if(t.isDirectory())return`resolved path is a directory, not an executable`;try{return await At(e,Wt.X_OK),`path exists and is an executable file`}catch{return`path exists but is not executable by the current user`}}catch{return`diagnosis unavailable`}}async function ps(e){let{logger:t,execAdapter:n,opencodeBinaryPath:r,systematicVersion:i}=e,a=e.timeoutMs??42e4,o=Date.now();t.info(`Installing Systematic plugin`,{systematicVersion:i,timeoutMs:a,opencodeBinaryPath:r});let s,c=``,l;try{let e=[`--pure`,`plugin`,`@fro.bot/systematic@${i}`,`--global`],u=await Pt(Vt(Yt(),`fro-bot-plugin-install-db-`));l=u;let d={env:{...y(U.env),OPENCODE_CONFIG_CONTENT:ls,OPENCODE_DISABLE_PROJECT_CONFIG:`1`,OPENCODE_DB:Vt(u,`opencode.db`)},ignoreReturnCode:!0,silent:!0,listeners:{stderr:e=>{c=`${c}${e.toString()}`.slice(-2e3)}}},f=n.execWithTimeout,p=f===void 0?await Promise.race([n.exec(r,e,d),new Promise(e=>{s=setTimeout(()=>e(`timed-out`),a)})]):await f(r,e,a,d),m=Date.now()-o;return p===`timed-out`?(t.warning(`Systematic plugin install timed out`,{systematicVersion:i,timeoutMs:a,duration:m}),{status:`timed-out`,duration:m}):p===0?(t.info(`Systematic plugin install complete`,{systematicVersion:i,duration:m}),{status:`installed`,duration:m}):(t.warning(`Systematic plugin install failed`,{systematicVersion:i,exitCode:p,duration:m,stderr:c}),{status:`failed`,duration:m})}catch(e){let n=Date.now()-o,a=V(e),s=us(a)?await fs(r):void 0;return t.warning(`Systematic plugin install failed`,{systematicVersion:i,error:a,duration:n,...c.length>0?{stderr:c}:{},...s===void 0?{}:{pathDiagnosis:s}}),{status:`failed`,duration:n}}finally{if(s!=null&&clearTimeout(s),l!==void 0)try{await It(l,{recursive:!0,force:!0})}catch(e){t.debug(`Failed to remove temporary plugin-install database directory`,{tempDbDir:l,error:V(e)})}}}const ms={restoreCache:async(e,t,n)=>l(e,t,n),saveCache:async(e,t)=>c(e,t)};function hs({opencodeVersion:e,opencodeDigestId:t}){return t===void 0?e:`${e}-${t}`}function gs(e){let{os:t,systematicVersion:n}=e;return`${Le}-${t}-oc-${hs(e)}-sys-${n}`}function _s(e){let{os:t,systematicVersion:n}=e;return[`${Le}-${t}-oc-${hs(e)}-sys-${n}-`]}function vs(e){return[e.toolCachePath,e.opencodeCachePath]}async function ys(e){let{logger:t,os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a,toolCachePath:o,opencodeCachePath:s,cacheAdapter:c=ms}=e,l=gs({os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a}),u=_s({os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a}),d=vs({toolCachePath:o,opencodeCachePath:s});t.info(`Restoring tools cache`,{primaryKey:l,restoreKeys:[...u],paths:d});try{let e=await c.restoreCache([...d],l,[...u]);return e==null?(t.info(`Tools cache miss - will install tools`),{hit:!1,restoredKey:null}):(t.info(`Tools cache restored`,{restoredKey:e}),{hit:!0,restoredKey:e})}catch(e){return t.warning(`Tools cache restore failed`,{error:V(e)}),{hit:!1,restoredKey:null}}}async function bs(e){let{logger:t,os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a,toolCachePath:o,opencodeCachePath:s,cacheAdapter:c=ms}=e,l=gs({os:n,opencodeVersion:r,opencodeDigestId:i,systematicVersion:a}),u=vs({toolCachePath:o,opencodeCachePath:s});t.info(`Saving tools cache`,{saveKey:l,paths:u});try{return await c.saveCache([...u],l)===-1?(t.warning(`Tools cache save did not persist`,{saveKey:l}),!1):(t.info(`Tools cache saved`,{saveKey:l}),!0)}catch(e){return e instanceof Error&&e.message.includes(`already exists`)?(t.info(`Tools cache key already exists, skipping save`),!0):(t.warning(`Tools cache save failed`,{error:V(e)}),!1)}}function xs(e){let t=e?.trim().toLowerCase()??``;return t!==``&&![`0`,`false`,`no`,`off`,`n`].includes(t)}async function Ss(e,t){let r=Date.now(),a=M({component:`setup`}),o=Vo(),s=Ho();try{a.info(`Starting setup`,{version:e.opencodeVersion});let c;try{c=Uo(e.authJson)}catch(e){return B(`Invalid auth-json: ${V(e)}`),null}let l=e.opencodeVersion;if(l===`latest`)try{l=await n(a)}catch(e){a.warning(`Failed to get latest version, using fallback`,{error:V(e)}),l=O}let u;if(E(l))try{u=d(l,Ie(),Re)}catch(e){return B(`Failed to install OpenCode: ${V(e)}`),null}let f=e.systematicVersion,p=U.env.RUNNER_TOOL_CACHE??`/opt/hostedtoolcache`,m=Vt(p,`opencode`),h=so(),_=Vt(Jt(),`.cache`,`opencode`),v=ue(),y=await ys({logger:a,os:v,opencodeVersion:l,...u===void 0?{}:{opencodeDigestId:u.cacheId},systematicVersion:f,toolCachePath:m,opencodeCachePath:_}),b=y.hit?`hit`:`miss`,x;if(y.hit&&u===void 0){let e=o.find(`opencode`,g(l));e.length>0?(x={path:e,version:l,cached:!0},a.info(`Tools cache hit, using cached OpenCode CLI`,{version:l})):a.warning(`Tools cache hit but binary not found in tool-cache, falling through to install`,{requestedVersion:l,restoredKey:y.restoredKey})}if(x==null)try{x=await w(l,a,o,s)}catch(e){return B(`Failed to install OpenCode: ${V(e)}`),null}if(e.systematicConfig!=null)try{await cs(e.systematicConfig,h,a)}catch(e){a.warning(`systematic-config write failed: ${V(e)}`)}await rs(h,a),xs(U.env.OPENCODE_PURE)&&a.warning(`OPENCODE_PURE is set in the runner environment; it is withheld from the OpenCode server so the task-reuse guard and Systematic plugins still load.`);let S=Yo({opencodeConfig:e.opencodeConfig,systematicVersion:f,integrationWorkDir:U.env.FRO_BOT_INTEGRATION_WORK_DIR},a);if(S.error!=null)return B(S.error),null;let C=Vt(h,`opencode.json`);await Nt(h,{recursive:!0});let T=JSON.stringify(S.config,null,2);if(pe(`OPENCODE_CONFIG_CONTENT`,T),await Rt(C,T),a.info(`Wrote fresh OpenCode config`,{path:C,pluginCount:Array.isArray(S.config.plugin)?S.config.plugin.length:0}),de(x.path),x.cached!==!0||y.hit===!1){let e=await ps({logger:a,execAdapter:s,opencodeBinaryPath:A(x.path),systematicVersion:f});if(e.status===`installed`)await bs({logger:a,os:v,opencodeVersion:l,...u===void 0?{}:{opencodeDigestId:u.cacheId},systematicVersion:f,toolCachePath:m,opencodeCachePath:_});else{let t=Object.keys(U.env).filter(e=>e.toUpperCase().startsWith(`NPM_CONFIG_`)),n=`Skipping tools cache save because Systematic plugin install did not complete${t.length>0?` The install child does not inherit NPM_CONFIG_* environment variables (present in the parent env: ${t.join(`, `)}), which may explain the failure.`:``}`;a.warning(n,{status:e.status}),it(n)}}R(`opencode-path`,x.path),R(`opencode-version`,x.version),a.info(`OpenCode ready`,{version:x.version,cached:x.cached});let D=i(t),k=e.credential===`provision`,ee=await $o(D,null,t,a,s,k);k?(pe(`GH_TOKEN`,t),U.env.GH_CONFIG_DIR!=null&&U.env.GH_CONFIG_DIR.length>0&&pe(`GH_CONFIG_DIR`,U.env.GH_CONFIG_DIR),a.info(`GitHub CLI configured`)):a.info(`GitHub CLI credential withheld from child (affected trigger)`),await ts(D,ee.botLogin,a,s);let te=Vt(le(),`opencode`),j=await Wo(c,te,a);R(`auth-json-path`,j),a.info(`auth.json populated`,{path:j});let M=Date.now()-r,ne={opencodePath:x.path,opencodeBinaryPath:A(x.path),opencodeVersion:x.version,ghAuthenticated:ee.authenticated,toolsCacheStatus:b,duration:M};return a.info(`Setup complete`,{duration:M}),ne}catch(e){let t=V(e);return a.error(`Setup failed`,{error:t}),B(t),null}}const Cs={verifyOpenCodeAvailable:async(e,t)=>{let n=e??`opencode`;try{let e=``;await xe(n,[`--version`],{listeners:{stdout:t=>{e+=t.toString()}},silent:!0});let r=/(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)/.exec(e)?.[1]??null;return t.debug(`OpenCode version verified`,{version:r}),{available:!0,version:r}}catch{return t.debug(`OpenCode not available, will attempt auto-setup`),{available:!1,version:null}}},runSetup:async(e,t)=>Ss(e,t),addToPath:e=>{de(e)}};async function ws(e,t,n,r,i){let a=so();try{await fo(a,t)}catch(e){return P(Error(`Refusing to start OpenCode without the task-reuse guard: ${V(e)}`,{cause:e}))}return ye(e,t,n,r,i,{config:po(a)})}async function Ts(e){return ht(e,Cs)}function Es(){let e=0,t=null,n=`miss`,r=null,i=[],a=[],o=[],s=[],c=0,l=null,u=null,d=null,f=[];return{start(){e=Date.now()},end(){t=Date.now()},setCacheStatus(e){n=e},setCacheSource(e){r=e},addSessionUsed(e){i.includes(e)||i.push(e)},addSessionCreated(e){a.includes(e)||a.push(e)},addPRCreated(e){o.includes(e)||o.push(e)},addCommitCreated(e){s.includes(e)||s.push(e)},incrementComments(){c++},setTokenUsage(e,t,n){l=e,u=t,d=n},recordError(e,t,n,r,i){let a={timestamp:(/* @__PURE__ */ new Date()).toISOString(),type:e,message:t,recoverable:n,...r==null?{}:{classificationPath:r},...i==null?{}:{suggestedAction:i}};f.push(a)},getMetrics(){let p=t==null?Date.now()-e:t-e;return Object.freeze({startTime:e,endTime:t,duration:p,cacheStatus:n,cacheSource:r,sessionsUsed:Object.freeze([...i]),sessionsCreated:Object.freeze([...a]),prsCreated:Object.freeze([...o]),commitsCreated:Object.freeze([...s]),commentsPosted:c,tokenUsage:l,model:u,cost:d,errors:Object.freeze([...f])})}}}function Ds(e){let t=e;return t.httpStatusCode===void 0?t.errorCode===void 0?t.errorName===void 0?e.message.includes(`NoSuchKey`):t.errorName===`NoSuchKey`:t.errorCode===`NoSuchKey`:t.httpStatusCode===404}function Os(e,t){return Xe(e,`github`,t.repo,`metadata`,`review-delivery-receipt/pr-${t.prNumber}/run-${t.runId}.json`)}function ks(e){try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=t;return typeof n.attempt!=`number`||typeof n.reservedAt!=`string`?null:n.status===`reserved`?{status:`reserved`,attempt:n.attempt,reservedAt:n.reservedAt}:n.status===`delivered`?typeof n.deliveredAt!=`string`||typeof n.reviewId!=`number`?null:{status:`delivered`,attempt:n.attempt,reservedAt:n.reservedAt,deliveredAt:n.deliveredAt,reviewId:n.reviewId}:null}catch{return null}}function As(e,t,n){let r=e=>({kind:`blocked`,reason:`store-unavailable`,detail:e});if(e.enabled===!1)return{reserve:async(e,n)=>(t.warning(`Review delivery receipt: object store not configured -- submitting without at-most-once protection; a rerun of this invocation could duplicate this review`,{identity:e,attempt:n}),{kind:`reserved-unconfigured`}),recordDelivered:async()=>{t.debug(`Review delivery receipt: recordDelivered skipped, object store not configured`)},release:async()=>{t.debug(`Review delivery receipt: release skipped, object store not configured`)}};let i=n??te(e,t);return{async reserve(n,a){if(i.getObject==null||i.conditionalPut==null)return r(`object store adapter does not support conditional operations`);let o=Os(e,n);if(o.success===!1)return r(o.error.message);let s=await i.getObject(o.data);if(s.success===!1){if(Ds(s.error)===!1)return t.warning(`Review delivery receipt: read failed, blocking submission`,{key:o.data,error:s.error.message}),{kind:`blocked`,reason:`read-failed`,detail:s.error.message}}else{let e=ks(s.data.data);return e==null?(t.warning(`Review delivery receipt: existing record is malformed, blocking submission`,{key:o.data}),{kind:`blocked`,reason:`read-failed`,detail:`malformed receipt record`}):(t.info(`Review delivery receipt: existing reservation found, blocking submission`,{key:o.data,existingStatus:e.status,existingAttempt:e.attempt,attempt:a}),{kind:`blocked`,reason:`already-reserved`,detail:`existing receipt status=${e.status} attempt=${e.attempt}`})}let c={status:`reserved`,attempt:a,reservedAt:(/* @__PURE__ */ new Date()).toISOString()},l=await i.conditionalPut(o.data,JSON.stringify(c),{ifNoneMatch:`*`});return l.success===!1?(t.warning(`Review delivery receipt: reservation conflict, blocking submission`,{key:o.data,error:l.error.message}),{kind:`blocked`,reason:`conflict`,detail:l.error.message}):(t.info(`Review delivery receipt: reservation acquired`,{key:o.data,attempt:a}),{kind:`reserved-configured`,etag:l.data.etag})},async recordDelivered(n,r,a,o){if(i.conditionalPut==null)return;let s=Os(e,n);if(s.success===!1)return;let c={status:`delivered`,attempt:a,reservedAt:(/* @__PURE__ */ new Date()).toISOString(),deliveredAt:(/* @__PURE__ */ new Date()).toISOString(),reviewId:o},l=await i.conditionalPut(s.data,JSON.stringify(c),{ifMatch:r});l.success===!1&&t.warning(`Review delivery receipt: delivery uncertain -- the review was submitted but the receipt could not be marked delivered; operator reconciliation required`,{key:s.data,error:l.error.message})},async release(n,r){if(i.conditionalDelete==null){t.warning(`Review delivery receipt: release skipped, object store adapter does not support conditional delete; reservation remains and will block future attempts for this run`,{identity:n});return}let a=Os(e,n);if(a.success===!1)return;let o=await i.conditionalDelete(a.data,{ifMatch:r});o.success===!1?t.warning(`Review delivery receipt: release failed after a stale-head abort; reservation remains and will block future attempts for this run`,{key:a.data,error:o.error.message}):t.info(`Review delivery receipt: reservation released after stale-head abort`,{key:a.data})}}}const js=/* @__PURE__ */ new Set([`.github`,`scripts`,`deploy/scripts`,`.git`,`package.json`,`bun.lock`,`package-lock.json`,`npm-shrinkwrap.json`,`pnpm-lock.yaml`,`yarn.lock`,`bun.lockb`,`Dockerfile`,`.npmrc`,`.gitmodules`,`action.yml`,`action.yaml`]);function Ms(e){let t=e.toLowerCase();return t===`dockerfile`||t.startsWith(`dockerfile.`)}function Ns(e){let t=e.toLowerCase();return[...js].some(e=>e.toLowerCase()===t)}function Ps(e){for(let t of js)if(Is(e,t)||Is(t,e)||t===`Dockerfile`&&Ms(e))return!0;return!1}function Fs(e){let t=e.trim(),n=t.startsWith(`/`),r=t;for(;r.startsWith(`./`);)r=r.slice(2);for(;r.startsWith(`/`);)r=r.slice(1);if(r=r.replaceAll(/\/{2,}/g,`/`).normalize(`NFC`),n||r.length===0||r===`.`||r.split(`/`).includes(`..`))throw Error(`path is malformed (absolute paths and traversal are not allowed)`);return r.replace(/\/+$/,``)}function Is(e,t){let n=Fs(e),r=Fs(t);return n===r||n.startsWith(`${r}/`)}function Ls(e){return Ps(Fs(e))}function Rs(e){let t;try{t=Fs(e)}catch{return!0}let n=t.split(`/`),r=n.at(-1)??``;return n.some(e=>Ns(e))||Ns(r)||Ms(r)}function zs(e){try{return e===Fs(e)&&/(?:^|\/)\.(?:\/|$)/.test(e)===!1}catch{return!1}}function Bs(e){let t=/* @__PURE__ */ new Set,n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);for(let e of n)try{let n=Fs(e);if(Ps(n))throw Error(`overlaps a protected brokered-push surface`);t.add(n)}catch(t){let n=V(t);throw Error(`Invalid brokered-push-extra-paths entry "${e}": ${n}`)}if(t.size>64)throw Error(`Invalid brokered-push-extra-paths: received ${t.size} unique entries; maximum is 64`);return[...t]}const Vs={MAX_FILE_SIZE_BYTES:5242880,FORBIDDEN_PATTERNS:[/\.\.\//,/^\.git\//,/\/\.git\//],FORBIDDEN_FILES:[`.env`,`.env.local`,`.env.production`,`credentials.json`,`auth.json`],FORBIDDEN_EXTENSIONS:[`.key`,`.pem`,`.p12`,`.pfx`]},Hs={name:`Fro Bot`,email:`fro-bot[bot]@users.noreply.github.com`};function Us(e){for(let t of Vs.FORBIDDEN_PATTERNS)if(t.test(e))return{valid:!1,reason:`Path contains forbidden pattern: ${e}`};let t=e.split(`/`).pop()??``;if(Vs.FORBIDDEN_FILES.includes(t))return{valid:!1,reason:`File name is forbidden (secrets): ${t}`};for(let t of Vs.FORBIDDEN_EXTENSIONS)if(e.endsWith(t))return{valid:!1,reason:`File extension is forbidden: ${t}`};return{valid:!0}}function Ws(e,t=`utf-8`){return(t===`base64`?Et.byteLength(e,`base64`):Et.byteLength(e,`utf-8`))>Vs.MAX_FILE_SIZE_BYTES?{valid:!1,reason:`File exceeds maximum size of ${Vs.MAX_FILE_SIZE_BYTES} bytes`}:{valid:!0}}function Gs(e){let t=[];for(let n of e){let e=Us(n.path);if(!e.valid&&e.reason!=null&&t.push(e.reason),n.mode!=null&&n.mode!==`100644`&&t.push(`${n.path}: only regular file mode 100644 is supported`),n.type!=null&&n.type!==`blob`&&t.push(`${n.path}: only blob tree entries are supported`),n.deleted===!0)continue;if(!(`content`in n)||typeof n.content!=`string`){t.push(`${n.path}: file content is required for non-deletion changes`);continue}let r=Ws(n.content,n.encoding);!r.valid&&r.reason!=null&&t.push(`${n.path}: ${r.reason}`)}return{valid:t.length===0,errors:t}}async function Ks(e,t,n){let{owner:r,repo:i,branch:a,message:o,files:s,expectedHeadSha:c,signal:l,author:u}=t,d=u??Hs,f=l==null?{}:{request:{signal:l}};n.info(`Creating commit`,{branch:a,filesChanged:s.length,message:o.slice(0,50)});let p=Gs(s);if(!p.valid)throw Error(`File validation failed: ${p.errors.join(`; `)}`);let{data:m}=await e.rest.git.getRef({owner:r,repo:i,ref:`heads/${a}`,...f}),h=m.object.sha;if(c!=null&&h!==c)throw Error(`Branch head changed before commit construction: expected ${c}, found ${h}`);let{data:g}=await e.rest.git.getCommit({owner:r,repo:i,commit_sha:h,...f}),_=g.tree.sha,v=await Promise.all(s.map(async t=>{if(t.deleted===!0)return{path:t.path,mode:`100644`,type:`blob`,sha:null};if(!(`content`in t)||typeof t.content!=`string`)throw Error(`File validation failed: ${t.path}: file content is required for non-deletion changes`);let{data:n}=await e.rest.git.createBlob({owner:r,repo:i,content:t.content,encoding:t.encoding??`utf-8`,...f});return{path:t.path,mode:`100644`,type:`blob`,sha:n.sha}})),{data:y}=await e.rest.git.createTree({owner:r,repo:i,base_tree:_,tree:v,...f}),{data:b}=await e.rest.git.createCommit({owner:r,repo:i,message:o,tree:y.sha,parents:[h],author:{name:d.name,email:d.email,date:(/* @__PURE__ */ new Date()).toISOString()},...f});return await e.rest.git.updateRef({owner:r,repo:i,ref:`heads/${a}`,sha:b.sha,force:!1,...f}),n.info(`Commit created`,{sha:b.sha}),{sha:b.sha,url:b.html_url,message:b.message}}const qs=[{defaultPath:`src/`,pattern:/^src\//},{defaultPath:`packages/*/src/`,pattern:/^packages\/[^/]+\/src\//},{defaultPath:`docs/`,pattern:/^docs\//}],Js=qs.map(e=>e.pattern),Ys=/* @__PURE__ */ new Set([`README.md`,`ARCHITECTURE.md`,`STRUCTURE.md`]);function Xs(e=[]){return{defaultPaths:qs.map(e=>e.defaultPath),rootFiles:[...Ys],extraPrefixes:[...e]}}function Zs(e){return JSON.stringify(e)}function Qs(e){try{let t=Fs(e);if(Ls(t)===!1)return null;for(let e of js){let n=e===`Dockerfile`&&(t.toLowerCase()===`dockerfile`||t.toLowerCase().startsWith(`dockerfile.`));if(Is(t,e)||Is(e,t)||n)return e}return t}catch{return e}}function $s(e,t){try{return Is(e,t)}catch{return!1}}function ec(e,t=[]){let n=[...Gs(e).errors],r=/* @__PURE__ */ new Set;for(let e of t){let t=Qs(e);t!=null&&n.push(`${e}: path prefix overlaps protected brokered-push surface ${t}`)}e.length>100&&n.push(`Brokered push exceeds the maximum of 100 files`);for(let i of e){Gs([i]).valid===!1&&r.add(i.path);let e=Ys.has(i.path)||Js.some(e=>e.test(i.path)),a=t.some(e=>$s(i.path,e)),o=e||a;zs(i.path)===!1&&(n.push(`${i.path}: path is not canonical for brokered push`),r.add(i.path)),o===!1?(n.push(`${i.path}: path is not allowed for brokered push`),r.add(i.path)):e===!1&&a&&Rs(i.path)&&(n.push(`${i.path}: path is within a protected brokered-push surface`),r.add(i.path))}return n.length===0?{valid:!0,errors:[]}:{valid:!1,errors:n,paths:[...r]}}function tc(e){R(`output-mode-migration`,JSON.stringify(e))}function nc(e){R(`session-id`,e.sessionId??``),R(`resolved-output-mode`,e.resolvedOutputMode??``),R(`delivery-kind`,e.deliveryKind),e.outputModeMigration!=null&&tc(e.outputModeMigration),R(`brokered-push-allowlist`,e.brokeredPushAllowlist==null?``:Zs(e.brokeredPushAllowlist)),R(`cache-status`,e.cacheStatus),R(`duration`,e.duration)}function rc(e){R(`delivery-kind`,e)}function ic(e){R(`invocation-outcome`,e)}function ac(e){R(`cache-save-result`,e)}function oc(e){let t=[];return e.observationGap&&t.push(`observation-gap`),e.ownershipUnresolved&&t.push(`ownership-unresolved`),e.quiescenceConfirmed===!1&&t.push(`server-quiescence-unconfirmed`),e.continuityUnverified&&t.push(`lease-continuity-unverified`),t}function sc(e){let{deliverySucceeded:t,verification:n}=e,r=oc(n);return{outcome:r.length>0?`incomplete`:t?`succeeded`:`failed`,deliverySucceeded:t,incompleteReasons:r}}async function cc(e,t){let n={repo:e.agentContext.repo,commentId:e.agentContext.commentId,issueNumber:e.agentContext.issueNumber,issueType:e.agentContext.issueType,botLogin:e.botLogin},r=M({phase:`acknowledgment`});return await $a(e.githubClient,n,r),t.debug(`Acknowledgment phase completed`),n}const lc=String.raw`^http\.(.*\.)?extraheader$`,uc=`Git config verification could not complete on a withhold run — fix the git config error in the checkout (e.g. a malformed config file) before retrying`,dc=`Git repository context verification could not complete on a withhold run — fix the git repository state (e.g. an invalid GIT_DIR, or an unsafe/unreadable repository) before retrying`,fc=`Git origin remote verification could not complete on a withhold run — fix the git remote configuration before retrying`;function pc(e){let[t,...n]=e.split(/\r\n|\n/).filter(e=>e.startsWith(`fatal:`));return t!==void 0&&n.length===0&&t.startsWith(`fatal: not a git repository (or any`)}function mc(e){return e instanceof Error?e.code===`ENOENT`||e.message.startsWith(`Unable to locate executable file: git.`):!1}function hc(){let e={};for(let[t,n]of Object.entries(U.env))n!==void 0&&(e[t]=n);return e.LC_ALL=`C`,e}async function gc(e,t,n){let r;try{r=await e.getExecOutput(`git`,[`config`,`--includes`,`--name-only`,`--get-regexp`,lc],{cwd:t,ignoreReturnCode:!0,silent:!0})}catch(e){return mc(e)?(n.warning(`git-credential-check: git binary not found — verification skipped, not evidence a credential is absent`),I(void 0)):(n.warning(`git-credential-check: effective config check threw unexpectedly, denying`),P(uc))}if(r.exitCode===0&&r.stdout.trim().length>0)return P(`Persisted git credential found in the effective git config (local, global, system, worktree-scoped, or an includeIf/include target) on a withhold run — set persist-credentials: false on actions/checkout, and check for other host-level config that injects an HTTP auth header`);if(r.exitCode!==1||r.stdout.trim().length>0)return n.warning(`git-credential-check: effective config check returned an unexpected result, denying`,{exitCode:r.exitCode}),P(uc);let i;try{i=await e.getExecOutput(`git`,[`rev-parse`,`--absolute-git-dir`],{cwd:t,ignoreReturnCode:!0,silent:!0,env:hc()})}catch{return n.warning(`git-credential-check: repository context check threw unexpectedly, denying`),P(dc)}if(i.exitCode===128&&pc(i.stderr))return n.warning(`git-credential-check: workspace is not a git repository — origin check skipped (effective config check already ran and found no header)`),I(void 0);if(i.exitCode!==0||i.stdout.trim().length===0)return n.warning(`git-credential-check: repository context check returned an unexpected result, denying`,{exitCode:i.exitCode}),P(dc);let a;try{a=await e.getExecOutput(`git`,[`remote`,`get-url`,`origin`],{cwd:t,ignoreReturnCode:!0,silent:!0})}catch{return n.warning(`git-credential-check: origin remote check threw unexpectedly, denying`),P(fc)}return a.exitCode===2?I(void 0):a.exitCode===0&&a.stdout.trim().length>0?_c(a.stdout.trim())?P(`Persisted git credential found embedded in the origin remote URL on a withhold run — set persist-credentials: false on actions/checkout`):I(void 0):(n.warning(`git-credential-check: origin remote check returned an unexpected result, denying`,{exitCode:a.exitCode}),P(fc))}function _c(e){let t=e.indexOf(`@`);if(t===-1)return!1;let n=e.indexOf(`://`),r=n===-1?e.slice(0,t):e.slice(n+3,t);return r.includes(`x-access-token:`)||r.includes(`:`)}function vc(e,t){try{JSON.parse(e)}catch{throw Error(`${t} must be valid JSON`)}}function yc(e,t){let n=e.trim();if(!/^\d+$/.test(n))throw Error(`${t} must be a positive integer, received: ${e}`);let r=Number.parseInt(n,10);if(r===0)throw Error(`${t} must be a positive integer, received: ${e}`);return r}function bc(e){let t=e.trim(),n=t.indexOf(`/`);if(n===-1)throw Error(`Invalid model format: "${e}". Expected "provider/model" (e.g., "anthropic/claude-sonnet-4-20250514")`);let r=t.slice(0,n).trim(),i=t.slice(n+1).trim();if(r.length===0)throw Error(`Invalid model format: "${e}". Provider cannot be empty.`);if(i.length===0)throw Error(`Invalid model format: "${e}". Model ID cannot be empty.`);return{providerID:r,modelID:i}}function xc(e,t=`timeout`){let n=e.trim();if(!/^\d+$/.test(n))throw Error(`${t} must be a non-negative integer, received: ${e}`);let r=Number.parseInt(n,10);if(Number.isNaN(r)||r<0)throw Error(`${t} must be a non-negative integer, received: ${e}`);return r}const Sc=[`auto`,`working-dir`,`branch-pr`],Cc=[`github`,`none`],wc=12e4;function Tc(e){return typeof e==`object`&&!!e}function Ec(e){if(Tc(e)===!1)return!1;let t=e.pull_request;if(Tc(t)===!1)return!1;let n=t.head;if(Tc(n)===!1)return!1;let r=n.repo;return Tc(r)!==!1&&r.fork===!0}function Dc(){try{let e=U.env.AWS_ACCESS_KEY_ID?.trim()??``;e.length>0&&Ye(e);let t=U.env.AWS_SECRET_ACCESS_KEY?.trim()??``;t.length>0&&Ye(t);let n=j(`github-token`,{required:!0}).trim();if(n.length===0)return P(/* @__PURE__ */ Error(`github-token is required but was not provided`));Ye(n),delete U.env[`INPUT_GITHUB-TOKEN`];let i=j(`auth-json`,{required:!0}).trim();if(i.length===0)return P(/* @__PURE__ */ Error(`auth-json is required but was not provided`));vc(i,`auth-json`),Ye(i),delete U.env[`INPUT_AUTH-JSON`];let a=j(`trusted-head-sha`).trim(),o=j(`prompt`).trim(),s=o.length>0?o:null,c=j(`output-mode`).trim().toLowerCase(),l=c.length>0?Oc(c):`auto`,d=j(`response-mode`).trim().toLowerCase(),f=d.length>0?kc(d):`github`,p=j(`review-skip-label`).trim(),m=p.length>0?p:null,h=Bs(j(`brokered-push-extra-paths`)),g=j(`session-retention`).trim(),_=g.length>0?yc(g,`session-retention`):50,v=j(`s3-backup`).trim().toLowerCase(),y=j(`s3-allow-insecure-endpoint`).trim().toLowerCase(),b=Nr({enabled:v===`true`,bucket:{value:j(`s3-bucket`).trim(),source:`s3-bucket`},region:[{value:j(`aws-region`).trim(),source:`aws-region`}],endpoint:{value:j(`s3-endpoint`).trim(),source:`s3-endpoint`},allowInsecureEndpoint:y===`true`,prefix:{value:j(`s3-prefix`).trim(),source:`s3-prefix`},sseEncryption:{value:j(`s3-sse-encryption`).trim(),source:`s3-sse-encryption`},sseKmsKeyId:{value:j(`s3-sse-kms-key-id`).trim(),source:`s3-sse-kms-key-id`},expectedBucketOwner:{value:j(`s3-expected-bucket-owner`).trim(),source:`s3-expected-bucket-owner`}},{region:`optional`});if(b.success===!1)throw b.error;let x=b.data;x.enabled&&Ec(vt.payload)&&(it(`S3 object store is disabled for fork pull requests`),x={...x,enabled:!1});let S=j(`agent`).trim(),C=S.length>0?S:null,w=j(`model`).trim(),T=w.length>0?bc(w):null,E=j(`timeout`).trim(),D=E.length>0?xc(E):r,O=j(`server-bootstrap-timeout`).trim(),A=O.length>0?yc(O,`server-bootstrap-timeout`):k,ee=Math.min(A,wc);ee!==A&&it(`server-bootstrap-timeout of ${A}ms exceeds the maximum of ${wc}ms and was clipped to ${wc}ms. A server that has not started within that budget will not start.`);let te=j(`opencode-version`).trim(),M=te.length>0?te:u,ne=j(`skip-cache`).trim().toLowerCase()===`true`,re=j(`systematic-version`).trim(),ie=re.length>0?re:ze,ae=j(`opencode-config`).trim(),N=ae.length>0?ae:null,oe=j(`systematic-config`).trim(),se=oe.length>0?oe:null,ce=j(`dedup-window`).trim(),F=ce.length>0?xc(ce,`dedup-window`):pt;if(N!=null){vc(N,`opencode-config`);let e=JSON.parse(N);if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Input 'opencode-config' must be a JSON object`)}return I({githubToken:n,authJson:i,trustedHeadSha:a,prompt:s,outputMode:l,responseMode:f,sessionRetention:_,storeConfig:x,agent:C,model:T,timeoutMs:D,serverBootstrapTimeoutMs:ee,opencodeVersion:M,skipCache:ne,systematicVersion:ie,opencodeConfig:N,systematicConfig:se,dedupWindow:F,reviewSkipLabel:m,brokeredPushExtraPaths:h})}catch(e){return P(e instanceof Error?e:Error(String(e)))}}function Oc(e){switch(e){case`auto`:case`working-dir`:case`branch-pr`:return e;default:throw Error(`Invalid output-mode value: "${e}". Valid values: ${Sc.join(`, `)}`)}}function kc(e){switch(e){case`github`:case`none`:return e;default:throw Error(`Invalid response-mode value: "${e}". Valid values: ${Cc.join(`, `)}`)}}async function Ac(e){let t=Dc();if(!t.success)return B(`Invalid inputs: ${t.error.message}`),null;let n=t.data,r=M({phase:`main`});r.info(`Action inputs parsed`,{sessionRetention:n.sessionRetention,s3Backup:n.storeConfig.enabled,hasGithubToken:n.githubToken.length>0,hasPrompt:n.prompt!=null,outputMode:n.outputMode,agent:n.agent,hasModelOverride:n.model!=null,timeoutMs:n.timeoutMs});let{credential:i,delivery:a}=sr(vt.eventName,n.responseMode);if(i===`withhold`){let e=U.env.GITHUB_WORKSPACE??U.cwd(),t=await gc(Ho(),e,r);if(t.success===!1)return B(`Refusing to proceed with credential withheld: ${t.error}`),null}let o=await jc(a,r),s=await Ts({logger:r,opencodeVersion:n.opencodeVersion,githubToken:n.githubToken,authJson:n.authJson,systematicVersion:n.systematicVersion,opencodeConfig:n.opencodeConfig,systematicConfig:n.systematicConfig,credential:i});return s.didSetup?r.info(`OpenCode auto-setup completed`,{version:s.version}):r.info(`OpenCode already available`,{version:s.version}),H(z.OPENCODE_VERSION,s.version),H(z.S3_ENABLED,String(n.storeConfig.enabled)),H(z.S3_BUCKET,n.storeConfig.bucket),H(z.S3_REGION,n.storeConfig.region),H(z.S3_PREFIX,n.storeConfig.prefix),H(z.S3_ENDPOINT,n.storeConfig.endpoint??``),H(z.S3_EXPECTED_BUCKET_OWNER,n.storeConfig.expectedBucketOwner??``),H(z.S3_ALLOW_INSECURE_ENDPOINT,String(n.storeConfig.allowInsecureEndpoint===!0)),H(z.S3_SSE_ENCRYPTION,n.storeConfig.sseEncryption??``),H(z.S3_SSE_KMS_KEY_ID,n.storeConfig.sseKmsKeyId??``),e.debug(`Bootstrap phase completed`,{opencodeVersion:s.version}),{inputs:n,logger:r,opencodeResult:s,delivery:a,responseFilePath:o?.responseFilePath??null,responseFilePathCandidates:o?.responseFilePathCandidates??null,trustedHeadSha:n.trustedHeadSha}}async function jc(e,t){if(e!==`file-convention`)return null;let n=U.env.RUNNER_TEMP;if(n==null||n.trim().length===0)throw Error(`RUNNER_TEMP is required for file-convention response delivery but was not set`);let r=F(),i=oe(),o=Dt.randomUUID(),s=U.env.GITHUB_WORKSPACE,c=ne({runnerTemp:n,runId:r,runAttempt:i}),l=a({runnerTemp:n,runId:r,runAttempt:i,nonce:o,workspaceDir:s}),u=l.expectedPath;await G.mkdir(c,{recursive:!0});let d=[l.expectedPath,...l.fallbackPaths];for(let e of d)if(await G.stat(e).then(e=>e.isFile()).catch(()=>!1))throw Error(`Response file already exists before execution (preseed guard tripped) in directory: ${K.dirname(e)}`);return t.debug(`Resolved response file path`,{directory:K.dirname(u)}),{responseFilePath:u,responseFilePathCandidates:l}}const Mc=/^[0-9a-f]{40}$/i;function Nc(){return{exec:xe,getExecOutput:Ve}}async function Pc(e){let{workspacePath:t,logger:n,execAdapter:r=Nc()}=e,i=K.join(t,`.git`),a=K.join(i,`opencode`);try{let e=(await G.readFile(a,`utf8`)).trim();if(e.length>0){if(Mc.test(e))return n.debug(`Project ID loaded from cache`,{projectId:e}),{projectId:e,source:`cached`};n.warning(`Invalid cached project ID format, regenerating`,{cachedId:e})}}catch(e){n.debug(`No cached project ID found`,{error:V(e)})}try{let e=await G.readFile(i,`utf8`),n=/^gitdir: (.+)$/m.exec(e);if(n==null)return{projectId:null,source:`error`,error:`Invalid .git file format`};i=K.resolve(t,n[1]),a=K.join(i,`opencode`)}catch(e){if((typeof e==`object`?e.code:void 0)!==`EISDIR`)return{projectId:null,source:`error`,error:`Not a git repository`}}try{let{stdout:e,exitCode:i}=await r.getExecOutput(`git`,[`rev-list`,`--max-parents=0`,`--all`],{cwd:t,silent:!0});if(i!==0||e.trim().length===0)return{projectId:null,source:`error`,error:`No commits found in repository`};let o=e.trim().split(` +`).map(e=>e.trim()).filter(e=>e.length>0).sort();if(o.length===0)return{projectId:null,source:`error`,error:`No root commits found`};let s=o[0];try{await G.writeFile(a,s,{encoding:`utf8`,flag:`wx`}),n.info(`Project ID generated and cached`,{projectId:s,source:`generated`})}catch(e){(typeof e==`object`?e.code:void 0)===`EEXIST`?n.debug(`Project ID file already written by concurrent process, skipping`,{projectId:s}):n.warning(`Failed to cache project ID (continuing)`,{error:V(e)})}return{projectId:s,source:`generated`}}catch(e){return{projectId:null,source:`error`,error:V(e)}}}function Fc(e){let t=K.resolve(e);return t.endsWith(K.sep)&&t.length>1?t.slice(0,-1):t}async function Ic(e,t){let n=be(),r=M({phase:`cache`}),i=p(),a=K.join(i,`.git`,`opencode`),o=v(),s=await Pe({components:n,logger:r,storagePath:o,authPath:b(),projectIdPath:a,opencodeVersion:e.opencodeResult.version,storeConfig:e.inputs.storeConfig}),c=s.corrupted?`corrupted`:s.hit?`hit`:`miss`;t.setCacheStatus(c),t.setCacheSource(s.source),e.logger.info(`Cache restore completed`,{cacheStatus:c,key:s.key});let l=await Pc({workspacePath:i,logger:r});if(l.source===`error`?r.warning(`Failed to generate project ID (continuing)`,{error:l.error}):r.debug(`Project ID ready`,{projectId:l.projectId,source:l.source}),c===`hit`){let e=K.dirname(o),n=K.join(e,ut),i=async e=>{r.warning(`Restored database is structurally corrupt - cleaning storage before bootstrap`,{reason:e}),await tt(o),c=`corrupted`,s={hit:!1,key:s.key,restoredPath:null,corrupted:!0,source:null},t.setCacheStatus(c),t.setCacheSource(s.source)},a=await rt({dbPath:n,walPath:K.join(e,Te),logger:r});if(a.status===`checkpointed`)r.info(`Repaired restored database: checkpointed write-ahead log before bootstrap`);else if(a.status===`failed`)a.structural?await i(a.reason):r.warning(`Failed to repair restored database before bootstrap`,{reason:a.reason});else{let e=await Je(n);e.usable===!1&&await i(e.reason)}}let u=M({phase:`server-bootstrap`}),d=await ws(new AbortController().signal,u,Fc(i),e.inputs.serverBootstrapTimeoutMs);if(!d.success)return B(`OpenCode server bootstrap failed: ${d.error.message}`),null;let f=d.data;return u.info(`SDK server bootstrapped successfully`),{cacheResult:s,cacheStatus:c,serverHandle:f}}const Lc={markdownImage:/!\[([^\]]*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[^)]+)\)/gi,markdownLink:/\[([^\]]+)\]\((https:\/\/github\.com\/user-attachments\/files\/[^)]+)\)/gi,htmlImage:/]*src=["'](https:\/\/github\.com\/user-attachments\/assets\/[^"']+)["'][^>]*>/gi};function Rc(e,t,n){e.lastIndex=0;let r=e.exec(t);for(;r!=null;)n(r),r=e.exec(t);e.lastIndex=0}function zc(e){let t=[],n=/* @__PURE__ */ new Set;return Rc(Lc.markdownImage,e,e=>{let r=e[2],i=e[1],a=e[0];r!=null&&i!=null&&!n.has(r)&&Ti(r)&&(n.add(r),t.push({url:r,originalMarkdown:a,altText:i,type:`image`}))}),Rc(Lc.markdownLink,e,e=>{let r=e[2],i=e[1],a=e[0];r!=null&&i!=null&&!n.has(r)&&Ti(r)&&(n.add(r),t.push({url:r,originalMarkdown:a,altText:i,type:`file`}))}),Rc(Lc.htmlImage,e,e=>{let r=e[1],i=e[0];if(r!=null&&!n.has(r)&&Ti(r)){n.add(r);let e=/alt=["']([^"']*)["']/i.exec(i);t.push({url:r,originalMarkdown:i,altText:e?.[1]??``,type:`image`})}}),Lc.htmlImage.lastIndex=0,t}function Bc(e,t,n){try{let r=new URL(e).pathname.split(`/`).at(-1);if(r!=null&&/\.[a-z0-9]+$/i.test(r))return r;if(t.trim().length>0){let e=t.replaceAll(/[^\w.-]/g,`_`).slice(0,50);return e.trim().length>0?e:`attachment_${n+1}`}return`attachment_${n+1}`}catch{return`attachment_${n+1}`}}const Vc={maxFiles:5,maxFileSizeBytes:5242880,maxTotalSizeBytes:15728640,allowedMimeTypes:[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`text/plain`,`text/markdown`,`text/csv`,`application/json`,`application/pdf`]},Hc=[`github.com`,`githubusercontent.com`];async function Uc(e,t,n,r,i){i.debug(`Downloading attachment`,{url:e.url});try{let a=await fetch(e.url,{headers:{Authorization:`Bearer ${n}`,Accept:`*/*`,"User-Agent":`fro-bot-agent`},redirect:`manual`}),o=a;if(a.status>=300&&a.status<400){let t=a.headers.get(`location`);if(t==null)return i.warning(`Redirect without location`,{url:e.url}),null;let n=new URL(t);if(!Hc.some(e=>n.hostname===e||n.hostname.endsWith(`.${e}`)))return i.warning(`Redirect to non-GitHub host blocked`,{url:e.url,redirectTo:n.hostname}),null;o=await fetch(t,{headers:{Accept:`*/*`,"User-Agent":`fro-bot-agent`},redirect:`follow`})}if(!o.ok)return i.warning(`Attachment download failed`,{url:e.url,status:o.status}),null;let s=o.headers.get(`content-length`);if(s!=null){let t=Number.parseInt(s,10);if(t>r.maxFileSizeBytes)return i.warning(`Attachment exceeds size limit (Content-Length)`,{url:e.url,size:t,limit:r.maxFileSizeBytes}),null}let c=Et.from(await o.arrayBuffer());if(c.length>r.maxFileSizeBytes)return i.warning(`Attachment exceeds size limit`,{url:e.url,size:c.length,limit:r.maxFileSizeBytes}),null;let l=o.headers.get(`content-type`)??`application/octet-stream`,u=Bc(e.url,e.altText,t),d=l.split(`;`)[0],f=d==null?`application/octet-stream`:d.trim(),p=await G.mkdtemp(K.join(Kt.tmpdir(),`fro-bot-attachments-`)),m=u.trim().length>0?u:`attachment_${t+1}`,h=K.join(p,m);return await G.writeFile(h,c),i.debug(`Attachment downloaded`,{filename:u,mime:f,sizeBytes:c.length,tempPath:h}),{url:e.url,filename:u,mime:f,sizeBytes:c.length,tempPath:h}}catch(t){return i.warning(`Attachment download error`,{url:e.url,error:V(t)}),null}}async function Wc(e,t,n=Vc,r){return Promise.all(e.map(async(e,i)=>Uc(e,i,t,n,r)))}async function Gc(e,t){for(let n of e)try{await G.unlink(n);let e=K.dirname(n);await G.rmdir(e).catch(()=>{})}catch(e){t.debug(`Failed to cleanup temp file`,{path:n,error:V(e)})}}function Kc(e){return e.map(e=>({type:`file`,mime:e.mime,url:kt(e.tempPath).toString(),filename:e.filename}))}function qc(e,t,n){let r=e,i=new Set(n.map(e=>e.filename));for(let e of t){let t=n.find(e=>i.has(e.filename));t!=null&&(r=r.replace(e.originalMarkdown,`@${t.filename}`))}return r}function Jc(e,t,n,r){return{processed:n,skipped:r,modifiedBody:qc(e,t,n),fileParts:Kc(n),tempFiles:n.map(e=>e.tempPath)}}function Yc(e,t=Vc,n){let r=[],i=[],a=0;for(let o of e)o!=null&&(r.length>=t.maxFiles?(i.push({url:o.url,reason:`Exceeds max file count (${t.maxFiles})`}),n.debug(`Attachment skipped: max count`,{url:o.url})):o.sizeBytes>t.maxFileSizeBytes?(i.push({url:o.url,reason:`File too large (${h(o.sizeBytes)} > ${h(t.maxFileSizeBytes)})`}),n.debug(`Attachment skipped: too large`,{url:o.url,size:o.sizeBytes})):a+o.sizeBytes>t.maxTotalSizeBytes?(i.push({url:o.url,reason:`Would exceed total size limit (${h(t.maxTotalSizeBytes)})`}),n.debug(`Attachment skipped: total size exceeded`,{url:o.url})):Xc(o.mime,t.allowedMimeTypes)?(a+=o.sizeBytes,r.push({filename:o.filename,mime:o.mime,sizeBytes:o.sizeBytes,tempPath:o.tempPath}),n.info(`Attachment validated`,{filename:o.filename,mime:o.mime,sizeBytes:o.sizeBytes})):(i.push({url:o.url,reason:`MIME type not allowed: ${o.mime}`}),n.debug(`Attachment skipped: MIME type`,{url:o.url,mime:o.mime})));return{validated:r,skipped:i}}function Xc(e,t){let[n]=e.split(`/`);for(let r of t)if(r===e||r.endsWith(`/*`)&&n!=null&&n===r.slice(0,-2))return!0;return!1}async function Zc(e){let{bootstrapLogger:t,reactionCtx:n,githubClient:r,attachmentResult:i,serverHandle:a,sessionRetention:o,detectedOpencodeVersion:s,storeConfig:c,metrics:l,agentIdentity:u,repo:d,runId:f,lockEtag:m,ownershipLedger:h,leaseRenewal:g,skipSessionPersistence:_=!1}=e,y=a==null,x=!1;try{if(i!=null){let e=M({phase:`attachment-cleanup`});try{await Gc(i.tempFiles,e)}catch(t){e.warning(`Attachment temp-file cleanup failed (non-fatal); shutdown still proceeds`,{error:V(t)})}}let e=U.env.RUNNER_TEMP;if(e!=null&&e.trim().length>0){let t=M({phase:`attachment-dir-cleanup`});try{let t=Vn({runnerTemp:e.trim(),runId:F(),runAttempt:oe()});await G.rm(t,{recursive:!0,force:!0})}catch(e){t.warning(`Attachment directory cleanup failed (non-fatal); shutdown still proceeds`,{error:V(e)})}}if(n!=null&&r!=null){let e=M({phase:`cleanup`});try{await oo(r,n,e)}catch(t){e.warning(`Working-label removal failed (non-fatal); shutdown still proceeds`,{error:V(t)})}}let x=M({phase:`prune`}),S=p();if(a!=null)try{let e=Fc(S),t={...yr,maxSessions:o??yr.maxSessions},n=await br(a.client,e,t,x);n.prunedCount>0&&x.info(`Pruned old sessions`,{pruned:n.prunedCount,remaining:n.remainingCount})}catch(e){x.warning(`Session pruning failed (non-fatal); shutdown still proceeds`,{error:V(e)})}if(a!=null)try{let e=await a.shutdown();y=e.quiesced,e.quiesced||t.warning(`OpenCode server did not confirm shutdown within the quiescence window; the checkpoint that follows may race a still-live writer`)}catch(e){y=!1,t.warning(`Server shutdown failed (non-fatal)`,{error:V(e)})}if(c.enabled===!0&&d!==``&&f!==``){let e=M({phase:`object-store-artifacts`});try{let t=te(c,e),n=et(),r=await De(t,c,u,d,f,n,e),i=l.getMetrics(),a=[.../* @__PURE__ */ new Set([...i.sessionsUsed,...i.sessionsCreated])],o={runId:f,timestamp:(/* @__PURE__ */ new Date()).toISOString(),tokenUsage:i.tokenUsage,timing:{startTime:i.startTime,endTime:i.endTime,duration:i.duration},cacheStatus:i.cacheStatus,cacheSource:i.cacheSource,sessionIds:a,sessionsUsed:i.sessionsUsed,sessionsCreated:i.sessionsCreated,prsCreated:i.prsCreated,commitsCreated:i.commitsCreated,commentsPosted:i.commentsPosted,model:i.model,cost:i.cost,errors:i.errors,artifactUpload:r};(await ct(t,c,u,d,f,o,e)).success&&H(z.CLEANUP_METADATA_WRITTEN,`true`)}catch(t){e.warning(`Object store artifact or metadata sync failed (non-fatal)`,{error:V(t)})}}let C=be(),w=M({phase:`cache-save`}),T=K.join(S,`.git`,`opencode`);await g?.settle?.();let E=h===void 0||h.isPersistenceSafe(),D=g!=null&&(g.continuityUnverified?.()??g.hasFailed()),O=_?`this run did not acquire the Action coordination lock, so it must not write the shared session store`:E===!1?`background subagent work this run owns is still unresolved (the ownership ledger has entries that are outstanding or unknown), so persisting could race a live writer`:y===!1?`the OpenCode server did not confirm it had stopped writing before this point, so the checkpoint could not be trusted to see a quiet database`:D?`the coordination lease could not verify uninterrupted coverage, so this run can no longer be certain another Action run has not taken over and is writing the same session state`:null,k=m!=null||g!=null,A=c.enabled===!0&&k===!1,ee;O==null?ee=await Ge({components:C,runId:F(),logger:w,storagePath:v(),authPath:b(),projectIdPath:T,opencodeVersion:s,storeConfig:c,objectStorePublish:k?`publish`:`withhold`}):(w.warning(`Declining cache save: persistence safety could not be confirmed`,{reason:O}),ee={cachePersisted:!1,storePersisted:!1,outcome:`ownership-declined`});let j=ae(ee);H(z.CACHE_SAVED,j);try{ac(j)}catch(e){w.warning(`Failed to set cache-save-result output (non-fatal)`,{error:V(e)})}if(await Ae(ee,`main`,w,O??void 0,O==null&&A?`lease-not-acquired`:void 0),fe()){let e=M({phase:`artifact-upload`});await ot({logPath:et(),runId:F(),runAttempt:oe(),invocationIdentity:se(),logger:e})&&H(z.ARTIFACT_UPLOADED,`true`)}}catch(e){t.warning(`Cleanup failed (non-fatal)`,{error:V(e)})}finally{let e=m;if(g!=null&&(await g.stop(),e=g.currentEtag()),e!=null&&c.enabled===!0){let t=M({phase:`lock-release`});try{let n=te(c,t),r=await _e({storeAdapter:n,storeConfig:c,lockTtlSeconds:900,heartbeatIntervalMs:qe,staleThresholdMs:Fe,pendingStaleThresholdMs:nt},d,e,t,Be);r.success===!1?t.warning(`Lock release failed (non-fatal)`,{error:r.error.message,repo:d}):(H(z.LOCK_HOLDER_ID,``),H(z.LOCK_HOLDER_JOB,``),H(z.LOCK_ACQUISITION_TOKEN,``),t.debug(`Lock released`,{repo:d}))}catch(e){t.warning(`Lock release threw (non-fatal)`,{error:V(e),repo:d})}}x=g!=null&&(g.continuityUnverified?.()??g.hasFailed())}return{quiescenceConfirmed:y,continuityUnverified:x}}const Qc=`agent: blocked`,$c=[250,750];function el(e){let t=e.target;return t==null?null:t.kind===`issue`||t.kind===`pr`?t.number:null}function tl(e,t){switch(e){case`active-holder`:return t?.surface===`github`?`Another Fro Bot Action run is active for this repository.`:`Another run holds this repository's Action coordination lock.`;case`expired-holder`:return`An expired coordination lease from a non-Action holder could not be safely reclaimed.`;case`conflict`:return`The coordination lease changed hands while this run was trying to reclaim it.`}}function nl(e){if(e==null)return null;let t=new Date(e.acquired_at).getTime()+e.ttl_seconds*1e3;return Number.isFinite(t)?new Date(t).toISOString():null}function rl(e){let{owner:t,repo:n}=e.repo,r=e.target;if(r!=null&&Number.isInteger(r.number)&&r.number>0){let e=`https://github.com/${t}/${n}`;switch(r.kind){case`issue`:return ve(`issue #${r.number}`,`${e}/issues/${r.number}`);case`pr`:return ve(`pull request #${r.number}`,`${e}/pull/${r.number}`);case`discussion`:return ve(`discussion #${r.number}`,`${e}/discussions/${r.number}`)}}return o(`repository-level invocation`)}function il(e,t){if(t==null)return o(`unknown`);let n=Ce(t.holder_id);if(t.surface===`github`&&n!=null){let r=`https://github.com/${e.repo.owner}/${e.repo.repo}/actions/runs/${n}`;return`${o(t.surface)} (Action run ${ve(String(n),r)})`}return o(t.surface)}async function al(e,t,n,r,i){try{let a=`${t.repo.owner}/${t.repo.repo}`;if(await Ur(e,a,`agent: blocked`,`D29922`,`Fro Bot execution was blocked by repository coordination; retry required.`,i)===!1)return`failed`;let o=await Kr(e,a,n,Qc,i);if(await Wr(e,a,n,[`agent: blocked`],i))return`applied`;if(o!==`removed`)return`failed`;for(let t of r)if(t>0&&await T(t),await Wr(e,a,n,[`agent: blocked`],i))return`applied`;return i.error(`Blocked label could not be restored after the re-stamp removed it`,{issueNumber:n,reason:`restore-failed-after-remove`,attempts:r.length+1}),`lost`}catch(e){return i.warning(`Failed to apply blocked label (non-fatal)`,{error:V(e)}),`failed`}}async function ol(e,t,n,r,i,a){try{let a=nl(t);Ue.addHeading(`Fro Bot Agent Run — Skipped (Coordination)`,2).addRaw(`${mt(o(n))}\n`).addTable([[{data:`Detail`,header:!0},{data:`Value`,header:!0}],[`Target`,rl(e)],[`Trigger`,gt(`${e.eventType}.${e.action??`unknown`}`)],[`Reason`,o(n)],[`Last observed holder`,il(e,t)],[`Lease expiry (observed)`,a==null?o(`unknown`):`${gt(a)} — NOT an estimated completion time`],[`Label ${gt(Qc)}`,o(r)]]),i!=null&&Ue.addRaw(`${mt(`${re(`Action needed:`)} the ${gt(Qc)} label could not be re-applied to #${i}; add it manually.`)}\n`),Ue.addRaw(`${mt(`No agent execution occurred. This request was not automatically requeued.`)}\n${mt(`${re(`Recovery:`)} re-run this workflow, or mention the bot again after the other run finishes. Editing the issue alone does not retrigger it. The ${gt(Qc)} label is removed automatically when a later run for this item succeeds; remove it manually if needed.`)}\n`),await Ue.write()}catch(e){a.warning(`Failed to write coordination skip summary`,{error:V(e)})}}async function sl(e){let{githubClient:t,triggerContext:n,holder:r,reason:i,responseMode:a,logger:o}=e,s=tl(i,r),c=el(n),l=`not applicable (no issue or pull request target)`,u=null;if(c!=null&&a===`none`)l=`not applied (response-mode is none)`;else if(c!=null){let r=await al(t,n,c,e.restoreBackoffMs??$c,o);l=r===`applied`?`applied`:`not applied (labeling failed)`,r===`lost`&&(u=c)}await ol(n,r,s,l,u,o),it(`Fro Bot skipped this run: ${s} No agent execution occurred; re-run the workflow to retry.`)}function cl(e){let t=e.target;return t==null?null:t.kind===`issue`||t.kind===`pr`?t.number:null}async function ll(e,t,n){let{githubClient:r,triggerContext:i,logger:a}=e,o=`${i.repo.owner}/${i.repo.repo}`,s=await Jr(r,o,t,a,n);if(n.aborted)return;if(s==null){a.info(`Not clearing blocked label: labels could not be read`,{issueNumber:t});return}if(s.some(e=>e.toLowerCase()===`agent: blocked`)===!1)return;let c=await Xr(r,o,t,[Qc,Dr],a,n);if(n.aborted)return;if(c==null){a.info(`Not clearing blocked label: issue events could not be read`,{issueNumber:t});return}let l=c.get(Qc),u=c.get(Dr);l==null||u==null?a.info(`Keeping blocked label: a labeled event needed for the comparison was not found`,{issueNumber:t,hasBlockedEvent:l!=null,hasWorkingEvent:u!=null}):l>=u?a.info(`Keeping blocked label: it was applied at or after the run-start anchor`,{issueNumber:t,blockedLabeledAt:new Date(l).toISOString(),workingLabeledAt:new Date(u).toISOString()}):n.aborted||await qr(r,o,t,`agent: blocked`,a,n)&&a.info(`Cleared stale blocked label after a successful run`,{issueNumber:t})}async function ul(e){let{triggerContext:t,outcome:n,responseMode:r,logger:i}=e;if(n!==`succeeded`||r===`none`)return;let a=cl(t);if(a==null)return;let o=new AbortController,s;try{let t=new Promise(t=>{s=setTimeout(()=>{o.abort(),t(`timeout`)},e.deadlineMs??15e3)});await Promise.race([ll(e,a,o.signal).then(()=>`done`),t])===`timeout`&&i.warning(`Blocked label clear timed out; no further requests will be started (a DELETE already issued may still complete)`,{issueNumber:a})}catch(e){i.warning(`Failed to clear blocked label (non-fatal)`,{error:V(e)})}finally{s!=null&&clearTimeout(s)}}const dl=K.join(qt.homedir(),`.cache`,`fro-bot-dedup`);function fl(e){return e.replaceAll(`/`,`-`)}function pl(e,t){let n=fl(e);return K.join(dl,`${n}-${t.entityType}-${t.entityNumber}`)}function ml(e,t){let n=fl(e);return`${s}-${n}-${t.entityType}-${t.entityNumber}-`}function hl(e,t,n){return`${ml(e,t)}${n}`}async function gl(e,t,n,r=ge){let i=pl(e,t),a=K.join(i,`sentinel.json`),o=ml(e,t);try{if(await G.rm(i,{recursive:!0,force:!0}),await G.mkdir(i,{recursive:!0}),await r.restoreCache([i],o,[])==null)return null;let e=await G.readFile(a,`utf8`);return JSON.parse(e)}catch(e){return n.debug(`Dedup marker restore failed; proceeding without marker`,{error:V(e),entityType:t.entityType,entityNumber:t.entityNumber}),null}}async function _l(e,t,n,r,i=ge){let a=pl(e,t),o=K.join(a,`sentinel.json`),s=hl(e,t,n.runId);try{return await G.mkdir(a,{recursive:!0}),await G.writeFile(o,JSON.stringify(n),`utf8`),await i.saveCache([a],s)!==-1||(r.warning(`Dedup marker cache save did not persist`,{saveKey:s}),!1)}catch(e){return V(e).toLowerCase().includes(`already exists`)?!0:(r.debug(`Dedup marker save failed`,{error:V(e),entityType:t.entityType,entityNumber:t.entityNumber,saveKey:s}),!1)}}const vl=/* @__PURE__ */ new Set([`pull_request`,`issues`]),yl=/* @__PURE__ */ new Set([`synchronize`,`reopened`]);function bl(e){return e.target==null||!vl.has(e.eventType)?null:e.eventType===`pull_request`&&e.target.kind===`pr`?{entityType:`pr`,entityNumber:e.target.number}:e.eventType===`issues`&&e.target.kind===`issue`?{entityType:`issue`,entityNumber:e.target.number}:null}async function xl(e,t,n,r,i=M({phase:`dedup`}),a){let o=bl(t);if(e===0)return{shouldProceed:!0,entity:o};if(o==null)return{shouldProceed:!0,entity:null};if(t.action!=null&&yl.has(t.action))return i.debug(`Dedup bypassed for action`,{action:t.action}),{shouldProceed:!0,entity:o};let s=await gl(n,o,i,a);if(s==null||s.runId===t.runId)return{shouldProceed:!0,entity:o};let c=new Date(s.timestamp).getTime();if(Number.isNaN(c))return i.warning(`Dedup marker timestamp is invalid; proceeding without dedup`,{markerTimestamp:s.timestamp}),{shouldProceed:!0,entity:o};let l=Date.now()-c;if(l<-6e4)return i.warning(`Dedup marker timestamp is too far in the future; proceeding without dedup`,{markerTimestamp:s.timestamp,markerAge:l}),{shouldProceed:!0,entity:o};let u=Math.max(0,l);return u>e?{shouldProceed:!0,entity:o}:(i.info(`Skipping duplicate trigger within dedup window`,{eventType:t.eventType,action:t.action,runId:t.runId,markerRunId:s.runId,markerTimestamp:s.timestamp,dedupWindow:e,entityType:o.entityType,entityNumber:o.entityNumber}),await Cl(t,o,s,u,e,i),{shouldProceed:!1,entity:o})}async function Sl(e,t,n,r=M({phase:`dedup`}),i){await _l(n,t,{timestamp:(/* @__PURE__ */ new Date()).toISOString(),runId:e.runId,action:e.action??`unknown`,eventType:e.eventType,entityType:t.entityType,entityNumber:t.entityNumber},r,i)}async function Cl(e,t,n,r,i,a){try{let a=Math.round(r/1e3),o=Math.round(i/1e3),s=`${t.entityType} #${t.entityNumber}`,c=`https://github.com/${e.repo.owner}/${e.repo.repo}/actions/runs/${n.runId}`;Ue.addHeading(`Fro Bot Agent Run — Skipped (Dedup)`,2).addRaw(`${mt(`Execution skipped because the agent already ran for ${re(s)} recently.`)}\n`).addTable([[{data:`Detail`,header:!0},{data:`Value`,header:!0}],[`Current action`,gt(`${e.eventType}.${e.action??`unknown`}`)],[`Prior run`,ve(String(n.runId),c)],[`Prior action`,gt(`${n.eventType}.${n.action}`)],[`Time since prior run`,`${a}s`],[`Dedup window`,`${o}s`]]).addRaw(`
Dedup is best-effort suppression. Use workflow concurrency groups to prevent overlapping runs.
+`),await Ue.write()}catch(e){a.warning(`Failed to write dedup skip summary`,{error:V(e)})}}function wl(e,t,n){return e?.key??t??n}const Tl=async({client:e,workspacePath:t,searchQuery:n,logger:r})=>{let i=[];try{i=await ke(e,t,{limit:10},r)}catch(e){r.warning(`Recent session lookup failed; proceeding with empty context`,{error:V(e)})}let a=[];try{a=await $e(n,e,t,{limit:5},r)}catch(e){r.warning(`Prior-work session search failed; proceeding with empty context`,{error:V(e)})}return{recentSessions:i,priorWorkContext:a}};async function El(e,t,n,r,i=Tl){let a=M({phase:`session`}),o=Fc(p()),s=mr(t.triggerResult.context,se()),c=s==null?null:hr(s),l=null,u=!1;if(s!=null){let e=await vr(n.serverHandle.client,o,s,a);e.status===`found`?(l=e.session.id,u=!0,a.info(`Session continuity: found existing session`,{logicalKey:s.key,sessionId:l})):e.status===`error`?a.warning(`Session continuity: lookup error, will create new`,{logicalKey:s.key,error:e.error}):a.info(`Session continuity: no existing session found`,{logicalKey:s.key})}let d=wl(s,t.agentContext.issueTitle,t.agentContext.repo),f={recentSessions:[],priorWorkContext:[]};try{f=await i({client:n.serverHandle.client,workspacePath:o,searchQuery:d,logicalKey:s,logger:a})}catch(e){a.warning(`Session presearch strategy failed; proceeding with empty context`,{error:V(e)})}let{recentSessions:m,priorWorkContext:h}=f;a.debug(`Prepared session context`,{recentSessionCount:m.length,priorWorkResultCount:h.length});for(let e of h)r.addSessionUsed(e.sessionId);let g=M({phase:`attachments`}),_=t.agentContext.commentBody??``,v=zc(_),y=null;if(v.length>0){g.info(`Processing attachments`,{count:v.length});let{validated:t,skipped:n}=Yc(await Wc(v,e.inputs.githubToken,void 0,g),void 0,g);(t.length>0||n.length>0)&&(y=Jc(_,v,t,n),g.info(`Attachments processed`,{processed:t.length,skipped:n.length}))}return{recentSessions:m,priorWorkContext:h,attachmentResult:y,normalizedWorkspace:o,logicalKey:s,continueSessionId:l,isContinuation:u,sessionTitle:c}}function Dl(){let e=j(`output-mode`).trim().toLowerCase();return e.length===0?`omitted`:e===`auto`?`auto`:`explicit`}function Ol(e,t,n){return{requested:n,resolved:tr(e,t)}}async function kl(e){let{bootstrap:t,routing:n,cacheRestore:r,sessionPrep:i,metrics:a,execLogger:o,executionStartTime:s,promptOptions:c,executionConfig:l,overflowedResult:u,overflowedSessionId:d,overflowedLedger:f,resolveSessionId:m}=e,h=(await Ll({ledger:f,client:r.serverHandle.client,parentSessionId:d,directory:p(),deadlineMs:0,logger:o})).unknownCount>0,g=await _t(r.serverHandle.server.url,d,o);g===!1&&o.warning(`Overflowed session archive failed; next run may re-continue it`,{sessionId:d});let _=wl(i.logicalKey,n.agentContext.issueTitle,n.agentContext.repo),v=[];try{v=await $e(_,r.serverHandle.client,i.normalizedWorkspace,{limit:5,excludeSessionIds:[d]},o)}catch(e){o.warning(`Recovery prior-work search failed; proceeding with empty context`,{error:e})}for(let e of v)a.addSessionUsed(e.sessionId);let y=t.inputs.timeoutMs>0,b=y?t.inputs.timeoutMs-(Date.now()-s):0;if(y&&b<=0)return{...u,recoveryBoundaryUnresolved:u.recoveryBoundaryUnresolved||h};let x={...c,sessionContext:{recentSessions:i.recentSessions,priorWorkContext:v},currentThreadSessionId:null,isContinuation:!1},S={...l,continueSessionId:void 0,timeoutMs:b};if(t.delivery===`file-convention`&&t.responseFilePath!=null)try{await G.rm(t.responseFilePath,{force:!0})}catch(e){o.warning(`Failed to clear stale response file before overflow recovery`,{responseFilePath:t.responseFilePath,error:e})}let C=Jn(),w=Date.now(),T=await Xa(x,o,S,r.serverHandle,C),E=await m(T.sessionId,w);return T.llmError?.type===`context_overflow`&&E!=null&&await _t(r.serverHandle.server.url,E,o)===!1&&o.warning(`Overflowed recovery session archive failed; next run may re-continue it`,{sessionId:E}),{...T,sessionId:E,resolvedOutputMode:u.resolvedOutputMode,outputModeMigration:u.outputModeMigration,ownershipLedger:C,observationGap:u.observationGap||T.observationGap,recoveryBoundaryUnresolved:h,overflowRecovery:{recovered:T.success,archivedSessionId:d,archiveSucceeded:g},executionDurationMs:0}}async function Al(e,t,n,r,i,a){let o=Ol(t.triggerResult.context.eventType,e.inputs.outputMode,Dl()),s=o.resolved,c={context:t.agentContext,customPrompt:e.inputs.prompt,cacheStatus:n.cacheStatus,sessionContext:{recentSessions:r.recentSessions,priorWorkContext:r.priorWorkContext},logicalKey:r.logicalKey??null,isContinuation:r.isContinuation,currentThreadSessionId:r.continueSessionId??null,triggerContext:t.triggerResult.context,resolvedOutputMode:s,fileParts:r.attachmentResult?.fileParts,responseMode:e.inputs.responseMode,responseDelivery:e.delivery,responseFilePath:e.responseFilePath,responseSurface:Ua(t.agentContext,t.triggerResult.context)},l=U.env.SKIP_AGENT_EXECUTION===`true`,u=Date.now(),d;if(l)e.logger.info(`Skipping agent execution (SKIP_AGENT_EXECUTION=true)`),d={success:!0,exitCode:0,sessionId:null,error:null,tokenUsage:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null,resolvedOutputMode:s,outputModeMigration:o,observationGap:!1,recoveryBoundaryUnresolved:!1,executionDurationMs:0};else{let a=M({phase:`execution`});a.info(`Starting OpenCode execution`,{logicalKey:r.logicalKey?.key??null,continueSessionId:r.continueSessionId});let l={agent:e.inputs.agent,model:e.inputs.model,timeoutMs:e.inputs.timeoutMs,continueSessionId:r.continueSessionId??void 0,sessionTitle:r.sessionTitle??void 0,credentialProvisioned:sr(t.triggerResult.context.eventName,e.inputs.responseMode).credential===`provision`},f=async(e,t)=>{if(e!=null)return e;let i=M({phase:`session`}),a=await Ne(n.serverHandle.client,r.normalizedWorkspace,t,i);return a==null?null:(i.debug(`Identified session from execution`,{sessionId:a.session.id}),a.session.id)},p=Jn(),m=await Xa(c,a,l,n.serverHandle,p),h=await f(m.sessionId,u);d={...m,sessionId:h,resolvedOutputMode:s,outputModeMigration:o,ownershipLedger:p,recoveryBoundaryUnresolved:!1,executionDurationMs:0};let g=l.credentialProvisioned===!0,_=await Ga(e.responseFilePath,c.responseSurface,a);d.llmError?.type===`context_overflow`&&g===!1&&_===`absent`&&h!=null&&(d=await kl({bootstrap:e,routing:t,cacheRestore:n,sessionPrep:r,metrics:i,execLogger:a,executionStartTime:u,promptOptions:c,executionConfig:l,overflowedResult:d,overflowedSessionId:h,overflowedLedger:p,resolveSessionId:f})),a.info(`Completed OpenCode execution`,{success:d.success,sessionId:d.sessionId,logicalKey:r.logicalKey?.key??null})}d.sessionId!=null&&(H(z.SESSION_ID,d.sessionId),i.addSessionCreated(d.sessionId)),d.tokenUsage!=null&&i.setTokenUsage(d.tokenUsage,d.model,d.cost),d.llmError!=null&&i.recordError(d.llmError.type,d.llmError.message,d.llmError.retryable,d.classificationPath,d.llmError.suggestedAction);for(let e of d.prsCreated)i.addPRCreated(e);for(let e of d.commitsCreated)i.addCommitCreated(e);for(let e=0;e{n=setTimeout(()=>{t.abort(),e({timedOut:!0})},jl)});try{return await Promise.race([(async()=>e(t.signal))().then(e=>({timedOut:!1,value:e})),r])}finally{n!==void 0&&clearTimeout(n)}}async function Fl(e,t=()=>!1){let{ledger:n,logger:r}=e,i=!1,a=()=>i||t(),o={...n,settle:e=>{a()||n.settle(e)},markUnknown:e=>{a()||n.markUnknown(e)}},s=await Pl(async t=>Zn({...e,ledger:o,signal:t}));if(s.timedOut===!1)return s.value.success&&s.value.data.liveTrackedSessionIds.size>0;if(i=!0,t())return!1;let c=n.snapshot().filter(e=>e.state===`outstanding`);for(let e of c)n.markUnknown(e.sessionId);return r.warning(`Ledger reconciliation timed out; marking outstanding entries unknown rather than settling them`,{source:`reconcileBounded`,parentSessionId:e.parentSessionId,unknownCount:c.length,timeoutMs:jl}),!1}async function Il(e){let{ledger:t,client:n,logger:r,reconcileOptions:i}=e;await Fl(i);let a=t.snapshot().filter(e=>e.state!==`settled`);r.warning(`Drain deadline reached — cancelling unsettled owned work; run reports incomplete`,{unsettled:a.length}),await Promise.allSettled(a.map(async e=>{if(typeof n.session.abort==`function`)try{let t=await Pl(async t=>n.session.abort({path:{id:e.sessionId},signal:t})),i=t.timedOut?void 0:t.value?.error;(t.timedOut||i!=null)&&r.warning(`Failed to abort owned session during drain-deadline cancellation`,{sessionId:e.sessionId,error:t.timedOut?`abort timed out after ${jl}ms`:V(i)})}catch(t){r.warning(`Failed to abort owned session during drain-deadline cancellation`,{sessionId:e.sessionId,error:V(t)})}})),await Fl(i);let o=a.filter(e=>t.snapshot().find(t=>t.sessionId===e.sessionId)?.state===`settled`).length;for(let e of t.snapshot())e.state!==`settled`&&t.markUnknown(e.sessionId);return{expired:!0,cancelledCount:a.length,settledCount:o,unknownCount:t.unknown()}}async function Ll(e){let{ledger:t,client:n,parentSessionId:r,directory:i,deadlineMs:a,logger:o,reconcileIntervalMs:s,pollIntervalMs:c=250}=e;if(t===void 0)return Ml;if(n===null||r===null){let e=t.snapshot().filter(e=>e.state===`outstanding`);for(let n of e)t.markUnknown(n.sessionId);return e.length>0&&o.warning(`Drain could not reconcile owned work: no session client available`,{outstanding:e.length}),{expired:e.length>0,cancelledCount:0,settledCount:0,unknownCount:t.unknown()}}let l={ledger:t,adapter:$n(n,i),parentSessionId:r,logger:o},u=0,d=!1,f=async()=>{let e=await Fl(l,()=>d);d||(u=t.snapshot().some(e=>e.state!==`settled`)&&e===!1?u+1:0)},p=Number.isFinite(a),m=()=>p===!1&&u>=3;if(await f(),t.isDrainComplete())return{...Ml,unknownCount:t.unknown()};if(a>0){let e=Qn({...l,intervalMs:s,runPass:f}),n=Date.now()+a;try{for(;t.isDrainComplete()===!1&&Date.now()`)}async function Bl(e,t,n){try{if(t.type===`pr`){let{data:n}=await e.rest.pulls.get({owner:t.owner,repo:t.repo,pull_number:t.number});return{title:n.title,body:n.body??``,author:n.user?.login??`unknown`}}let{data:n}=await e.rest.issues.get({owner:t.owner,repo:t.repo,issue_number:t.number});return{title:n.title,body:n.body??``,author:n.user?.login??`unknown`}}catch(e){return n.warning(`Failed to fetch issue/PR`,{target:t,error:V(e)}),null}}async function Vl(e,t,n,r){let i=[],a=1;for(;a<=50;)try{let{data:r}=await e.rest.issues.listComments({owner:t.owner,repo:t.repo,issue_number:t.number,per_page:100,page:a});if(r.length===0)break;for(let e of r){let t=e.user?.login??`unknown`;i.push({id:e.id,body:e.body??``,author:t,authorAssociation:e.author_association??`NONE`,createdAt:e.created_at,updatedAt:e.updated_at,isBot:zl(t,e.body??``,n)})}if(r.length<100)break;a++}catch(e){r.warning(`Failed to fetch comments page`,{target:t,page:a,error:V(e)});break}return i}async function Hl(e,t,n,r){try{let i=[],a=null,o=null,s=``,c=``,l=`unknown`,u=0;for(;u<50;){let d=(await e.graphql(` query GetDiscussion($owner: String!, $repo: String!, $number: Int!, $after: String) { repository(owner: $owner, name: $repo) { discussion(number: $number) { @@ -146,7 +146,7 @@ import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r, } } } -`,{owner:t.owner,repo:t.repo,number:t.number,after:a})).repository.discussion;if(d==null)return r.debug(`Discussion not found`,{target:t}),null;u===0&&(o=d.id,s=d.title,c=d.body,l=d.author?.login??`unknown`);for(let e of d.comments.nodes){let t=e.author?.login??`unknown`;i.push({id:e.id,body:e.body,author:t,authorAssociation:`NONE`,createdAt:e.createdAt,updatedAt:e.updatedAt,isBot:Rl(t,e.body,n)})}if(!d.comments.pageInfo.hasNextPage)break;a=d.comments.pageInfo.endCursor,u++}return{type:`discussion`,number:t.number,title:s,body:c,author:l,comments:i,discussionId:o??void 0}}catch(e){return r.warning(`Failed to fetch discussion`,{target:t,error:V(e)}),null}}async function Hl(e,t,n,r){if(t.type===`discussion`)return Vl(e,t,n,r);let i=await zl(e,t,r);if(i==null)return null;let a=await Bl(e,t,n,r);return{type:t.type,number:t.number,title:i.title,body:i.body,author:i.author,comments:a}}function Ul(e,t){let n=e.comments.filter(e=>Ll(e.author,t)&&e.body.includes(``));return n.length===0?null:n.at(-1)??null}async function Wl(e,t,n,r){try{let{data:i}=await e.rest.issues.createComment({owner:t.owner,repo:t.repo,issue_number:t.number,body:n});return r.debug(`Created issue comment`,{commentId:i.id,target:t}),{commentId:i.id,created:!0,updated:!1,url:i.html_url}}catch(e){return r.warning(`Failed to create issue comment`,{target:t,error:V(e)}),null}}async function Gl(e,t,n,r,i){try{let{data:a}=await e.rest.issues.updateComment({owner:t.owner,repo:t.repo,comment_id:n,body:r});return i.debug(`Updated issue comment`,{commentId:a.id,target:t}),{commentId:a.id,created:!1,updated:!0,url:a.html_url}}catch(e){return i.warning(`Failed to update issue comment`,{target:t,commentId:n,error:V(e)}),null}}async function Kl(e,t,n,r){try{let i=(await e.graphql(` +`,{owner:t.owner,repo:t.repo,number:t.number,after:a})).repository.discussion;if(d==null)return r.debug(`Discussion not found`,{target:t}),null;u===0&&(o=d.id,s=d.title,c=d.body,l=d.author?.login??`unknown`);for(let e of d.comments.nodes){let t=e.author?.login??`unknown`;i.push({id:e.id,body:e.body,author:t,authorAssociation:`NONE`,createdAt:e.createdAt,updatedAt:e.updatedAt,isBot:zl(t,e.body,n)})}if(!d.comments.pageInfo.hasNextPage)break;a=d.comments.pageInfo.endCursor,u++}return{type:`discussion`,number:t.number,title:s,body:c,author:l,comments:i,discussionId:o??void 0}}catch(e){return r.warning(`Failed to fetch discussion`,{target:t,error:V(e)}),null}}async function Ul(e,t,n,r){if(t.type===`discussion`)return Hl(e,t,n,r);let i=await Bl(e,t,r);if(i==null)return null;let a=await Vl(e,t,n,r);return{type:t.type,number:t.number,title:i.title,body:i.body,author:i.author,comments:a}}function Wl(e,t){let n=e.comments.filter(e=>Rl(e.author,t)&&e.body.includes(``));return n.length===0?null:n.at(-1)??null}async function Gl(e,t,n,r){try{let{data:i}=await e.rest.issues.createComment({owner:t.owner,repo:t.repo,issue_number:t.number,body:n});return r.debug(`Created issue comment`,{commentId:i.id,target:t}),{commentId:i.id,created:!0,updated:!1,url:i.html_url}}catch(e){return r.warning(`Failed to create issue comment`,{target:t,error:V(e)}),null}}async function Kl(e,t,n,r,i){try{let{data:a}=await e.rest.issues.updateComment({owner:t.owner,repo:t.repo,comment_id:n,body:r});return i.debug(`Updated issue comment`,{commentId:a.id,target:t}),{commentId:a.id,created:!1,updated:!0,url:a.html_url}}catch(e){return i.warning(`Failed to update issue comment`,{target:t,commentId:n,error:V(e)}),null}}async function ql(e,t,n,r){try{let i=(await e.graphql(` query GetDiscussionId($owner: String!, $repo: String!, $number: Int!) { repository(owner: $owner, name: $repo) { discussion(number: $number) { @@ -167,7 +167,7 @@ import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r, } } } -`,{owner:t.owner,repo:t.repo,number:t.number})).repository.discussion;if(i==null)return r.warning(`Discussion not found`,{target:t}),null;if(n.updateExisting===!0&&n.botLogin!=null){let i=await Hl(e,t,n.botLogin,r);if(i!=null){let t=Ul(i,n.botLogin);if(t!=null&&typeof t.id==`string`){let i=await e.graphql(` +`,{owner:t.owner,repo:t.repo,number:t.number})).repository.discussion;if(i==null)return r.warning(`Discussion not found`,{target:t}),null;if(n.updateExisting===!0&&n.botLogin!=null){let i=await Ul(e,t,n.botLogin,r);if(i!=null){let t=Wl(i,n.botLogin);if(t!=null&&typeof t.id==`string`){let i=await e.graphql(` mutation UpdateDiscussionComment($commentId: ID!, $body: String!) { updateDiscussionComment(input: {commentId: $commentId, body: $body}) { comment { id url } @@ -179,10 +179,10 @@ import{o as e}from"./rolldown-runtime-Dlfrvzb7.js";import{$ as t,A as n,At as r, comment { id url } } } -`,{discussionId:i.id,body:n.body});return r.debug(`Created discussion comment`,{discussionId:i.id}),{commentId:a.addDiscussionComment.comment.id,created:!0,updated:!1,url:a.addDiscussionComment.comment.url}}catch(e){return r.warning(`Failed to post discussion comment`,{target:t,error:V(e)}),null}}async function ql(e,t,n,r){if(t.type===`discussion`)return Kl(e,t,n,r);if(n.updateExisting===!0&&n.botLogin!=null){let i=await Hl(e,t,n.botLogin,r);if(i!=null){let a=Ul(i,n.botLogin);if(a!=null&&typeof a.id==`number`)return Gl(e,t,a.id,n.body,r)}}return Wl(e,t,n.body,r)}function Jl(e){return e.toLowerCase().replace(/\[bot\]$/i,``)}async function Yl(e,t){let{octokit:n,owner:r,repo:i,prNumber:a,botLogin:o,event:s}=e,c=Jl(o),l=await n.rest.pulls.get({owner:r,repo:i,pull_number:a}),u=l.data.head.sha,d=l.data.user.login,f=l.data.head.repo?.full_name??``,p=l.data.base.repo.full_name,m=Jl(d)===c,h=f!==p;if(s===`APPROVE`){if(m)return t.info(`Review guard: blocking self-authored PR`,{prNumber:a,prAuthorLogin:d}),{allowed:!1,reason:`self-or-fork`};if(h)return t.info(`Review guard: blocking fork PR`,{prNumber:a,headRepoFullName:f,baseRepoFullName:p}),{allowed:!1,reason:`self-or-fork`}}return{allowed:!0,currentHeadSha:u}}async function Xl(e,t){let{octokit:n,owner:r,repo:i,prNumber:a,event:o,body:s,currentHeadSha:c,receipt:l}=e,u=(await n.rest.pulls.get({owner:r,repo:i,pull_number:a})).data.head.sha;if(u!==c)return t.info(`Review guard: head moved before submit, aborting`,{prNumber:a,originalHead:c,freshHead:u}),{submitted:!1,reason:`head-moved-before-submit`};let d=null;if(l!=null){let e=await l.ops.reserve(l.identity,l.attempt);if(e.kind===`blocked`)return t.warning(`Review guard: publication receipt blocked submission`,{prNumber:a,event:o,reason:e.reason,detail:e.detail}),{submitted:!1,reason:`receipt-blocked`,receiptReason:e.reason};if(e.kind===`reserved-configured`){d=e.etag;let o=(await n.rest.pulls.get({owner:r,repo:i,pull_number:a})).data.head.sha;if(o!==c)return t.info(`Review guard: head moved during reservation, releasing and aborting`,{prNumber:a,originalHead:c,freshHead:o}),await l.ops.release(l.identity,d),{submitted:!1,reason:`head-moved-before-submit`}}}t.info(`Review guard: submitting review`,{prNumber:a,event:o,currentHeadSha:c});let f=await pi(n,{prNumber:a,owner:r,repo:i,event:o,body:s,comments:[],commitSha:c},t);return l!=null&&d!=null&&await l.ops.recordDelivered(l.identity,d,l.attempt,f.reviewId),{submitted:!0,review:f,commitSha:c}}function Zl(e,t){return{delivered:!1,reason:e,detail:t}}function Ql(e){if(e instanceof Error&&`code`in e&&typeof e.code==`string`)return e.code}function $l(e){return K.join(K.dirname(e),``)}function eu(e,t){let n=V(e);return t.reduce((e,t)=>e.replaceAll(t,$l(t)),n)}async function tu(e,t){try{let n=await G.opendir(e),r=[];for await(let e of n)if(r.push(t.has(e.name)?``:e.name),r.length>=20)return{directoryStatus:`present`,directoryEntriesObserved:r.length,directoryEntriesTruncated:!0,directoryEntries:r};return{directoryStatus:r.length===0?`empty`:`present`,directoryEntriesObserved:r.length,directoryEntriesTruncated:!1,directoryEntries:r}}catch(e){let t=V(e);return Ql(e)===`ENOENT`?{directoryStatus:`missing`,directoryEntriesObserved:null,directoryEntriesTruncated:!1,directoryEntries:[]}:{directoryStatus:`inspection-failed`,directoryEntriesObserved:null,directoryEntriesTruncated:!1,directoryEntries:[],directoryInspectionError:t}}}async function nu(e,t){let{responseFilePath:n,agentContext:r,triggerResult:i,executionSucceeded:a}=e,o=[n,...(e.responseFilePathCandidates?.fallbackPaths??[]).filter(e=>e!==n)],s=new Set(o.map(e=>K.basename(e))),c,l=n,u;try{c=await G.readFile(n,`utf8`)}catch(e){if(u=e,Ql(e)===`ENOENT`)for(let e of o.slice(1))try{c=await G.readFile(e,`utf8`),l=e;break}catch(e){if(u=e,Ql(e)!==`ENOENT`)break}if(c===void 0){let e=eu(u,o),r={};for(let e of o){let t=K.dirname(e);r[t]===void 0&&(r[t]=await tu(t,s))}let i=r[K.dirname(n)],c={responseFileDirectory:K.dirname(n),error:e,...i??{directoryStatus:`inspection-failed`,directoryEntriesObserved:null,directoryEntriesTruncated:!1,directoryEntries:[]},directoryDiagnostics:r};return a===!1?t.debug(`Response-post: no response file after failed execution (expected)`,c):t.error(`Response-post: failed to read response file`,c),Zl(`file-read-failed`,e)}}let d=Ha(r,i.context),f=ce(c,{surface:d}),p=l!==n;if(f.success===!1&&(f.error.reason===`verdict-on-non-review`||C[d].verdictRequired===!1&&_[f.error.reason]===!0)){let e=f.error.reason===`verdict-on-non-review`,r=e?c:iu(c),i=r==null?null:ce(r,{surface:e?`pr-review`:d});if(i!=null&&i.success)return e===!1&&t.warning(`Response-post: invalid verdict on permitted surface; posting response body as a comment`,{surface:d,reason:f.error.reason}),p&&t.warning(`Response-post: recovered response file from fallback location`,{expectedResponsePath:$l(n),actualResponsePath:$l(l),expectedResponseDirectory:K.dirname(n),actualResponseDirectory:K.dirname(l)}),{success:!0,data:{parsed:{body:i.data.body},surface:d,recoveredFromFallback:p,actualResponseFilePath:l,droppedVerdict:!0}}}return f.success===!1?(t.error(`Response-post: response file failed validation`,{responseFileDirectory:K.dirname(l),reason:f.error.reason}),Zl(`parse-failed`,f.error.message)):(p&&t.warning(`Response-post: recovered response file from fallback location`,{expectedResponsePath:$l(n),actualResponsePath:$l(l),expectedResponseDirectory:K.dirname(n),actualResponseDirectory:K.dirname(l)}),{success:!0,data:{parsed:f.data,surface:d,recoveredFromFallback:p,actualResponseFilePath:l}})}function ru(e){return e.includes(``)?e:`${e}\n\n`}function iu(e){if(e.startsWith(`---`)===!1)return null;let t=e.slice(3),n=t.indexOf(` +`,{discussionId:i.id,body:n.body});return r.debug(`Created discussion comment`,{discussionId:i.id}),{commentId:a.addDiscussionComment.comment.id,created:!0,updated:!1,url:a.addDiscussionComment.comment.url}}catch(e){return r.warning(`Failed to post discussion comment`,{target:t,error:V(e)}),null}}async function Jl(e,t,n,r){if(t.type===`discussion`)return ql(e,t,n,r);if(n.updateExisting===!0&&n.botLogin!=null){let i=await Ul(e,t,n.botLogin,r);if(i!=null){let a=Wl(i,n.botLogin);if(a!=null&&typeof a.id==`number`)return Kl(e,t,a.id,n.body,r)}}return Gl(e,t,n.body,r)}function Yl(e){return e.toLowerCase().replace(/\[bot\]$/i,``)}async function Xl(e,t){let{octokit:n,owner:r,repo:i,prNumber:a,botLogin:o,event:s}=e,c=Yl(o),l=await n.rest.pulls.get({owner:r,repo:i,pull_number:a}),u=l.data.head.sha,d=l.data.user.login,f=l.data.head.repo?.full_name??``,p=l.data.base.repo.full_name,m=Yl(d)===c,h=f!==p;if(s===`APPROVE`){if(m)return t.info(`Review guard: blocking self-authored PR`,{prNumber:a,prAuthorLogin:d}),{allowed:!1,reason:`self-or-fork`};if(h)return t.info(`Review guard: blocking fork PR`,{prNumber:a,headRepoFullName:f,baseRepoFullName:p}),{allowed:!1,reason:`self-or-fork`}}return{allowed:!0,currentHeadSha:u}}async function Zl(e,t){let{octokit:n,owner:r,repo:i,prNumber:a,event:o,body:s,currentHeadSha:c,receipt:l}=e,u=(await n.rest.pulls.get({owner:r,repo:i,pull_number:a})).data.head.sha;if(u!==c)return t.info(`Review guard: head moved before submit, aborting`,{prNumber:a,originalHead:c,freshHead:u}),{submitted:!1,reason:`head-moved-before-submit`};let d=null;if(l!=null){let e=await l.ops.reserve(l.identity,l.attempt);if(e.kind===`blocked`)return t.warning(`Review guard: publication receipt blocked submission`,{prNumber:a,event:o,reason:e.reason,detail:e.detail}),{submitted:!1,reason:`receipt-blocked`,receiptReason:e.reason};if(e.kind===`reserved-configured`){d=e.etag;let o=(await n.rest.pulls.get({owner:r,repo:i,pull_number:a})).data.head.sha;if(o!==c)return t.info(`Review guard: head moved during reservation, releasing and aborting`,{prNumber:a,originalHead:c,freshHead:o}),await l.ops.release(l.identity,d),{submitted:!1,reason:`head-moved-before-submit`}}}t.info(`Review guard: submitting review`,{prNumber:a,event:o,currentHeadSha:c});let f=await mi(n,{prNumber:a,owner:r,repo:i,event:o,body:s,comments:[],commitSha:c},t);return l!=null&&d!=null&&await l.ops.recordDelivered(l.identity,d,l.attempt,f.reviewId),{submitted:!0,review:f,commitSha:c}}function Ql(e,t){return{delivered:!1,reason:e,detail:t}}function $l(e){if(e instanceof Error&&`code`in e&&typeof e.code==`string`)return e.code}function eu(e){return K.join(K.dirname(e),``)}function tu(e,t){let n=V(e);return t.reduce((e,t)=>e.replaceAll(t,eu(t)),n)}async function nu(e,t){try{let n=await G.opendir(e),r=[];for await(let e of n)if(r.push(t.has(e.name)?``:e.name),r.length>=20)return{directoryStatus:`present`,directoryEntriesObserved:r.length,directoryEntriesTruncated:!0,directoryEntries:r};return{directoryStatus:r.length===0?`empty`:`present`,directoryEntriesObserved:r.length,directoryEntriesTruncated:!1,directoryEntries:r}}catch(e){let t=V(e);return $l(e)===`ENOENT`?{directoryStatus:`missing`,directoryEntriesObserved:null,directoryEntriesTruncated:!1,directoryEntries:[]}:{directoryStatus:`inspection-failed`,directoryEntriesObserved:null,directoryEntriesTruncated:!1,directoryEntries:[],directoryInspectionError:t}}}async function ru(e,t){let{responseFilePath:n,agentContext:r,triggerResult:i,executionSucceeded:a}=e,o=[n,...(e.responseFilePathCandidates?.fallbackPaths??[]).filter(e=>e!==n)],s=new Set(o.map(e=>K.basename(e))),c,l=n,u;try{c=await G.readFile(n,`utf8`)}catch(e){if(u=e,$l(e)===`ENOENT`)for(let e of o.slice(1))try{c=await G.readFile(e,`utf8`),l=e;break}catch(e){if(u=e,$l(e)!==`ENOENT`)break}if(c===void 0){let e=tu(u,o),r={};for(let e of o){let t=K.dirname(e);r[t]===void 0&&(r[t]=await nu(t,s))}let i=r[K.dirname(n)],c={responseFileDirectory:K.dirname(n),error:e,...i??{directoryStatus:`inspection-failed`,directoryEntriesObserved:null,directoryEntriesTruncated:!1,directoryEntries:[]},directoryDiagnostics:r};return a===!1?t.debug(`Response-post: no response file after failed execution (expected)`,c):t.error(`Response-post: failed to read response file`,c),Ql(`file-read-failed`,e)}}let d=Ua(r,i.context),f=ce(c,{surface:d}),p=l!==n;if(f.success===!1&&(f.error.reason===`verdict-on-non-review`||C[d].verdictRequired===!1&&_[f.error.reason]===!0)){let e=f.error.reason===`verdict-on-non-review`,r=e?c:au(c),i=r==null?null:ce(r,{surface:e?`pr-review`:d});if(i!=null&&i.success)return e===!1&&t.warning(`Response-post: invalid verdict on permitted surface; posting response body as a comment`,{surface:d,reason:f.error.reason}),p&&t.warning(`Response-post: recovered response file from fallback location`,{expectedResponsePath:eu(n),actualResponsePath:eu(l),expectedResponseDirectory:K.dirname(n),actualResponseDirectory:K.dirname(l)}),{success:!0,data:{parsed:{body:i.data.body},surface:d,recoveredFromFallback:p,actualResponseFilePath:l,droppedVerdict:!0}}}return f.success===!1?(t.error(`Response-post: response file failed validation`,{responseFileDirectory:K.dirname(l),reason:f.error.reason}),Ql(`parse-failed`,f.error.message)):(p&&t.warning(`Response-post: recovered response file from fallback location`,{expectedResponsePath:eu(n),actualResponsePath:eu(l),expectedResponseDirectory:K.dirname(n),actualResponseDirectory:K.dirname(l)}),{success:!0,data:{parsed:f.data,surface:d,recoveredFromFallback:p,actualResponseFilePath:l}})}function iu(e){return e.includes(``)?e:`${e}\n\n`}function au(e){if(e.startsWith(`---`)===!1)return null;let t=e.slice(3),n=t.indexOf(` `);if(n===-1)return null;let r=t.slice(n+1),i=r.indexOf(` ----`);if(i===-1)return null;let a=r.slice(i+4),o=/^[ \t]*\n/.exec(a);return o==null?null:a.slice(o[0].length)}function au(e,t){return t==null||t.length===0?e:`${e}\n\n${t}`}function ou(e){return`${e}\n\n> **Harness note:** delivered as a comment, not a formal approval, because this invocation could not fully confirm it observed its own execution (an event-stream gap or unresolved background work). The findings above are unaffected.`}function su(){return``}function cu(e){return`${e}\n${su()}`}function lu(e,t){let n=Ha(e,t.context),[r,i]=e.repo.split(`/`);if(r==null||r.length===0||i==null||i.length===0||e.issueNumber==null)return{surface:n,target:null};let a=e.issueNumber;return{surface:n,target:{type:C[n].target,number:a,owner:r,repo:i}}}async function uu(e,t,n,r,i){let a=su();for(let o=1;o<=3;o+=1){if(o>1&&r!=null&&r.length>0&&((await Hl(e,t,r,i))?.comments.some(e=>e.isBot&&e.body.includes(a))??!1))return i.debug(`Response-post: probe found this run's comment already posted, skipping re-create`,{attempt:o,target:t}),!0;if(await ql(e,t,{body:n},i)!=null)return!0;i.warning(`Response-post: comment write failed, retrying`,{attempt:o,target:t})}return!1}async function du(e,t){let{octokit:n,agentContext:r,triggerResult:i,botLogin:a,responseFilePath:o,responseFilePathCandidates:s,deliveryFooter:c,knownExecutionVeto:l,reviewDeliveryReceiptOps:u}=e,d=await nu({agentContext:r,triggerResult:i,responseFilePath:o,responseFilePathCandidates:s},t);if(!(`success`in d))return d;let{surface:f,parsed:p,recoveredFromFallback:m,actualResponseFilePath:h,droppedVerdict:g}=d.data,{target:_}=lu(r,i);if(_==null)return t.error(`Response-post: missing target context`,{agentContext:{repo:r.repo}}),Zl(`missing-target-context`,`Cannot post: missing owner/repo/issue number in routing context`);g===!0&&t.warning(`Response-post: dropped verdict on "${f}" surface; posting response body as a comment`,{surface:f});let v=ru(au(p.body,c));if(p.verdict==null)return C[f].verdictRequired?(t.error(`Response-post: pr-review surface has no verdict frontmatter`,{responseFileDirectory:K.dirname(o)}),Zl(`missing-verdict`,`pull_request responses must carry a verdict frontmatter`)):await uu(n,_,cu(ru(au(p.body,c))),a,t)===!1?Zl(`post-failed`,`postComment returned null after retries`):{delivered:!0,kind:`comment`};if(a==null||a.length===0)return C[f].verdictRequired===!1?(t.warning(`Response-post: verdict could not be submitted; degrading to comment`,{surface:f,reason:`missing-target-context`}),await uu(n,_,cu(ru(au(p.body,c))),a,t)===!1?Zl(`post-failed`,`postComment returned null after retries`):{delivered:!0,kind:`comment`}):Zl(`missing-target-context`,`Cannot submit a review: bot login is unavailable`);let y=m||l===!0,b=p.verdict===`approve`?y?`COMMENT`:`APPROVE`:`REQUEST_CHANGES`;m&&p.verdict===`approve`?t.warning(`Response-post: withholding approving verdict from fallback response artifact`,{expectedResponsePath:$l(o),actualResponsePath:$l(h),expectedResponseDirectory:K.dirname(o),actualResponseDirectory:K.dirname(h)}):l===!0&&p.verdict===`approve`&&t.warning(`Response-post: withholding approving verdict — known execution veto`,{prNumber:_.number});let x=l===!0&&p.verdict===`approve`?ru(au(ou(p.body),c)):v,S=await Yl({octokit:n,owner:_.owner,repo:_.repo,prNumber:_.number,botLogin:a,event:b},t);if(S.allowed===!1)return C[f].verdictRequired===!1?(t.warning(`Response-post: review guard blocked the verdict; degrading to comment`,{reason:S.reason,prNumber:_.number,surface:f}),await uu(n,_,cu(ru(au(p.body,c))),a,t)===!1?Zl(`post-failed`,`postComment returned null after retries`):{delivered:!0,kind:`comment`}):(t.warning(`Response-post: review guard blocked the verdict, no review submitted`,{reason:S.reason,prNumber:_.number}),Zl(`review-guard-blocked`,`Review guard blocked submission: ${S.reason}`));try{let e=await Xl({octokit:n,owner:_.owner,repo:_.repo,prNumber:_.number,event:b,body:x,currentHeadSha:S.currentHeadSha,...u==null?{}:{receipt:{ops:u,identity:{repo:`${_.owner}/${_.repo}`,runId:U.env.GITHUB_RUN_ID??`local`,prNumber:_.number},attempt:Number.parseInt(U.env.GITHUB_RUN_ATTEMPT??`1`,10)}}},t);return e.submitted===!1?Zl(`review-guard-blocked`,`Review guard blocked submission: ${e.reason}`):{delivered:!0,kind:`review`}}catch(e){let n=V(e);return t.error(`Response-post: submitReview failed`,{error:n}),Zl(`post-failed`,n)}}function fu(e){return typeof e!=`object`||!e?!1:`status`in e&&e.status===404}const pu=[`OWNER`,`MEMBER`,`COLLABORATOR`];function mu(e){let{facts:t,trustedHeadSha:n}=e,{eventType:r,isPullRequest:i,authorAssociation:a,commentAuthor:o,issueNumber:s,owner:c,repo:l}=t;return c.trim()===``||l.trim()===``?{decision:`ineligible`,reason:`Repository identity is missing`}:r===`issue_comment`?i===!0?za(a,pu)===!1?{decision:`ineligible`,reason:`Comment author association is not authorized`}:n.trim()===``?{decision:`ineligible`,reason:`Trusted head SHA anchor is missing`}:{decision:`eligible`,owner:c,repo:l,prNumber:s,actor:o,trustedHeadSha:n}:{decision:`ineligible`,reason:`Issue comment is not on a pull request`}:{decision:`ineligible`,reason:`Event is not an issue comment`}}async function hu(e,t,n,r){try{let{data:i}=await e.rest.repos.getCollaboratorPermissionLevel({owner:t.owner,repo:t.repo,username:t.actor,...r==null?{}:{request:{signal:r}}});if(i.permission===`admin`||i.permission===`write`)return n.debug(`Brokered push permission confirmed`,{owner:t.owner,repo:t.repo,username:t.actor,permission:i.permission}),{decision:`allowed`,permission:i.permission};let a=`Live collaborator permission is insufficient or ambiguous: ${String(i.permission)}`;return n.warning(`Brokered push permission denied`,{owner:t.owner,repo:t.repo,username:t.actor,permission:i.permission}),{decision:`denied`,reason:a}}catch(e){let r=`Unable to verify live collaborator permission: ${V(e)}`;return n.warning(`Brokered push permission lookup failed`,{owner:t.owner,repo:t.repo,username:t.actor,error:V(e)}),{decision:`denied`,reason:r}}}async function gu(e,t,n,r){let{eligible:i,expectedHeadBranch:a}=t;try{let{data:t}=await e.rest.pulls.get({owner:i.owner,repo:i.repo,pull_number:i.prNumber,...r==null?{}:{request:{signal:r}}});if(t.state!==`open`)return yu(`Pull request is not open`,n,i);let o=`${i.owner}/${i.repo}`,s=t.base.repo?.full_name??``;if(s!==o)return yu(`Pull request base repository changed`,n,i);if((t.head.repo?.full_name??``)!==s)return yu(`Pull request head is no longer a same-repository branch`,n,i);if(t.head.ref!==a)return yu(`Pull request head branch changed`,n,i);if(t.head.sha!==i.trustedHeadSha)return yu(`Pull request head SHA changed`,n,i);let c=_u(t.head.ref);if(c!=null)return yu(c,n,i);let l={owner:i.owner,repo:i.repo,branch:t.head.ref};return n.debug(`Brokered push target confirmed`,l),{decision:`allowed`,target:l}}catch(e){let t=`Unable to re-resolve PR before write: ${V(e)}`;return n.warning(`Brokered push pre-write lookup failed`,{owner:i.owner,repo:i.repo,prNumber:i.prNumber,error:V(e)}),{decision:`denied`,reason:t}}}function _u(e){return typeof e!=`string`||e.length===0?`Live PR head branch is empty or not a string`:e.startsWith(`/`)||e.endsWith(`/`)?`Live PR head branch is not a valid ref: ${e}`:e.includes(`..`)?`Live PR head branch contains '..': ${e}`:vu(e)?`Live PR head branch contains an ASCII control character: ${e}`:e.includes(`@{`)?`Live PR head branch contains '@{': ${e}`:e.includes(`\\`)?`Live PR head branch contains a backslash: ${e}`:e.endsWith(`.lock`)?`Live PR head branch ends with '.lock': ${e}`:e.endsWith(`.`)||e.includes(`//`)||e===`@`?`Live PR head branch is not a valid ref: ${e}`:e.includes(` `)||/[~^:?*[\]]/.test(e)?`Live PR head branch contains a forbidden ref character: ${e}`:e.split(`/`).some(e=>e.startsWith(`.`))?`Live PR head branch contains a dot-prefixed component: ${e}`:null}function vu(e){for(let t=0;te.length===0))throw Error(`Malformed git ls-files output: empty untracked path`);return t}function Du(e,t){let n=/* @__PURE__ */ new Map;for(let t of e)n.set(t.path,t);for(let e of t)n.has(e)===!1&&n.set(e,{oldMode:xu,newMode:Su,status:`A`,path:e});return[...n.values()]}function Ou(e){if(e.length===0)return[];let t=e.split(`\0`),n=[];for(let e=0;ee!==xu).some(e=>e!==Su))throw Error(`${e.path}: only regular file mode ${Su} is supported`);if(e.status===`A`&&(e.oldMode!==xu||e.newMode!==Su))throw Error(`${e.path}: added entries must be regular files`);if(e.status===`M`&&(e.oldMode!==Su||e.newMode!==Su))throw Error(`${e.path}: modified entries must remain regular files`);if(e.status===`D`&&(e.oldMode!==Su||e.newMode!==xu))throw Error(`${e.path}: deleted entries must be regular files`)}function Au(e){if(e.startsWith(`/`)||/^[a-z]:[\\/]/i.test(e)||e.includes(`\\`)||e.split(`/`).includes(`..`))throw Error(`Unsafe workspace path: ${e}`);let t=Hs(e);if(t.valid===!1)throw Error(t.reason??`Invalid workspace path: ${e}`)}async function ju(e,t){let n=Ht(e),r=Ht(n,t);if(r!==n&&r.startsWith(`${n}${Ut}`)===!1)throw Error(`Workspace path escapes repository root: ${t}`);let i;try{i=await G.open(r,Wt.O_RDONLY|Wt.O_NOFOLLOW)}catch{throw Error(`${t}: only regular files may be reconstructed`)}try{let e=await i.stat(),n=typeof e.mode==`number`&&!!(e.mode&73);if(e.isFile()===!1||n)throw Error(`${t}: only regular files may be reconstructed`);if(e.size>Bs.MAX_FILE_SIZE_BYTES)throw Error(`${t}: File exceeds maximum size of ${Bs.MAX_FILE_SIZE_BYTES} bytes`);let r=await i.readFile();try{return{path:t,content:Cu.decode(r)}}catch{return{path:t,content:Et.from(r).toString(`base64`),encoding:`base64`}}}finally{await i.close()}}const Mu=`brokered push exceeded time budget`;async function Nu(e){let{octokit:t,execAdapter:n,logger:r,eventFacts:i,trustedHeadSha:a,expectedHeadBranch:o,repoRoot:s,signal:c}=e;try{let l=mu({facts:i,trustedHeadSha:a});if(l.decision===`ineligible`)return r.debug(`Brokered push bypassed by early eligibility gate`,{reason:l.reason}),{kind:`bypass`};let u=await hu(t,l,r,c);if(u.decision===`denied`)return Ru(c?.aborted===!0?Mu:u.reason,c?.aborted===!0?`timeout`:`permission`,r);let d=await Tu(n,a,s,r);if(d.success===!1){let e=Fu(d.error,c);return Ru(e?Mu:d.error.message,e?`timeout`:`reconstruction`,r)}if(d.data.kind===`bypass`)return r.debug(`Brokered push bypassed during reconstruction`,{reason:d.data.reason}),{kind:`bypass`};if(d.data.kind===`nothing-to-deliver`)return{kind:`nothing-to-deliver`};let f=d.data.changes,p=$s(f,e.extraPathPrefixes);if(p.valid===!1)return Ru(p.errors.join(`; `),`validation`,r,p.paths);let m={lookupFailed:!1,lookupNotFound:!1},h=await gu(Lu(t,m),{eligible:l,expectedHeadBranch:o},r,c);if(h.decision===`denied`){let e=m.lookupNotFound||m.lookupFailed===!1?`identity`:`permission`;return Ru(c?.aborted===!0?Mu:h.reason,c?.aborted===!0?`timeout`:e,r)}let g={changed:!1};try{return{kind:`pushed`,commit:await Gs(Iu(t,l.trustedHeadSha,g),{owner:h.target.owner,repo:h.target.repo,branch:h.target.branch,message:`chore: apply brokered changes`,expectedHeadSha:l.trustedHeadSha,files:f,signal:c},r),branch:h.target.branch,paths:f.map(e=>e.path)}}catch(e){let t=Fu(e,c);return Ru(t?Mu:Pu(e),t?`timeout`:g.changed?`moved-head`:`commit`,r)}}catch(e){let t=Fu(e,c);return Ru(t?Mu:Pu(e),t?`timeout`:`unknown`,r)}}function Pu(e){return V(e)}function Fu(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function Iu(e,t,n){let r=e.rest.git.getRef,i=Object.assign(async(...e)=>{let i=await r(...e);return i.data.object.sha!==t&&(n.changed=!0),i},r);return{...e,rest:{...e.rest,git:{...e.rest.git,getRef:i}}}}function Lu(e,t){let n=e.rest.pulls.get,r=Object.assign(async(...e)=>{try{return await n(...e)}catch(e){throw t.lookupFailed=!0,t.lookupNotFound=fu(e),e}},n);return{...e,rest:{...e.rest,pulls:{...e.rest.pulls,get:r}}}}function Ru(e,t,n,r){if(n.warning(`Brokered push delivery failed`,{reason:e}),t===`validation`){if(r==null)throw Error(`Validation brokered-push failures require offending paths`);return{kind:`fail-loud`,reason:e,failureClass:t,paths:r}}return{kind:`fail-loud`,reason:e,failureClass:t}}const zu=`Agent execution stopped: provider quota exceeded. Check the provider account/billing settings, wait for the quota to reset, or switch to a different model or provider.`,Bu=`Agent execution stopped: model provider authentication failed. Check the model provider credentials and configuration, then try again.`;function Vu(e){let[t,n]=e.agentContext.repo.split(`/`);return{type:e.triggerResult.context.eventType===`discussion_comment`?`discussion`:e.agentContext.issueType===`pr`?`pr`:`issue`,number:e.agentContext.issueNumber??0,owner:t??``,repo:n??``}}function Hu(e){return e.number>0&&e.owner.length>0&&e.repo.length>0}function Uu(e){return e===!0?`The agent execution completed, but the response artifact was not found at the expected path, so no response was delivered.`:`The agent execution failed before it could write a response artifact, so no response was delivered.`}function Wu(e){let t=e.error!=null&&e.error.length>0?`Agent execution failed: ${e.error}`:`Agent execution failed with exit code ${e.exitCode}`;return B(t),e.exitCode}const Gu={validation:`Brokered push failure (validation): a changed file path is outside the brokered-push allowlist.`,reconstruction:`Brokered push failure (reconstruction): the changed files could not be reconstructed.`,"moved-head":`Brokered push failure (moved-head): the pull request head moved during delivery.`,identity:`Brokered push failure (identity): the pull request identity changed during delivery.`,permission:`Brokered push failure (permission): the brokered-push permission check failed.`,commit:`Brokered push failure (commit): the commit could not be created.`,timeout:`Brokered push failure (timeout): delivery exceeded its time budget.`,unknown:`Brokered push failure (unknown): delivery failed before the cause could be classified.`};function Ku(e){return en(`internal`,Gu[e],!1,{suggestedAction:`Review the workflow logs and retry the run.`})}function qu(e){let t=e.replaceAll(`\\`,`/`).replaceAll(` -`,` `).replaceAll(`\r`,` `).replaceAll(`\u2028`,` `).replaceAll(`\u2029`,` `),n=(U.env.GITHUB_WORKSPACE??U.cwd()).replaceAll(`\\`,`/`).replace(/\/+$/,``);return t===n?`.`:t.startsWith(`${n}/`)?t.slice(n.length+1):t.replace(/^\/+/,``).replace(/^\.\//,``)}function Ju(e){return qu(e).replaceAll("`",``).replaceAll(`~`,``)}function Yu(e){let t=$t(Ku(e.failureClass));if(e.failureClass===`validation`){if(e.paths.length===0)return t;let n=e.paths.slice(0,10).map(Ju),r=e.paths.length-n.length,i=r>0?`\n… and ${r} more`:``;return`${t}\n\nOffending paths:\n\`\`\`\n${n.join(` -`)}\n\`\`\`${i}`}return t}function Xu(e){return{kind:`fail-loud`,failureClass:`unknown`,reason:V(e)}}function Zu(e){return e.replaceAll("`","\\`").replaceAll(` -`,` `).replaceAll(`\r`,` `)}function Qu(e){let t=e.paths.slice(0,50).map(e=>`\`${Zu(e)}\``),n=e.paths.length-t.length,r=n>0?`${t.join(`, `)}, … (+${n} more)`:t.join(`, `);return[`### Brokered push delivered`,`- Branch: \`${Zu(e.branch)}\``,`- Changed paths: ${r}`,`- Commit: \`${Zu(e.commit.sha.slice(0,7))}\``].join(` -`)}async function $u(e,t,n,r,i){let a=await ql(e.githubClient,t,{body:n},i);return a==null?(i.warning(`Failed to post LLM error comment`),!1):(i.info(`Posted LLM error comment`,{commentUrl:a.url}),r.incrementComments(),!0)}async function ed(e,t,n,r,i,a,s,c={}){let{knownExecutionVeto:l=!1,reviewDeliveryReceiptOps:u}=c,d=Date.now()-a;tc({sessionId:r.sessionId,resolvedOutputMode:r.resolvedOutputMode,outputModeMigration:r.outputModeMigration,brokeredPushAllowlist:Ys(e.inputs.brokeredPushExtraPaths),deliveryKind:`none`,cacheStatus:n.cacheStatus,duration:d});let f={eventType:t.agentContext.eventName,repo:t.agentContext.repo,ref:t.agentContext.ref,runId:Number(t.agentContext.runId),runUrl:`https://github.com/${t.agentContext.repo}/actions/runs/${t.agentContext.runId}`,metrics:i.getMetrics(),agent:e.inputs.agent??`build (default)`,resolvedOutputMode:r.resolvedOutputMode},p=async(e,t=`none`)=>(nc(t),r.overflowRecovery?.recovered===!0&&Ue.addRaw(`${mt(o(`Recovered from context overflow (fresh review session; archived ${r.overflowRecovery.archivedSessionId})`))}\n`),await dt({...f,deliveryKind:t},s,r.ownershipLedger),{exitCode:e,deliveryKind:t});if(r.llmError?.type===`quota_exceeded`){let n=Vu(t);if(e.delivery!==`none`&&r.commentsPosted===0&&Hu(n)){let e=await $u(t,n,$t(Cn({resetTime:r.llmError.resetTime})),i,s);return B(zu),p(1,e?`comment`:`none`)}return e.delivery!==`none`&&r.commentsPosted===0&&!Hu(n)&&s.warning(`Cannot post quota exceeded error comment: missing target context`),B(zu),p(1,r.commentsPosted>0?`comment`:`none`)}if(r.llmError?.type===`provider_auth_error`){let n=Vu(t);if(e.delivery!==`none`&&r.commentsPosted===0&&Hu(n)){let e=await $u(t,n,$t(un()),i,s);return B(Bu),p(1,e?`comment`:`none`)}return e.delivery!==`none`&&r.commentsPosted===0&&!Hu(n)&&s.warning(`Cannot post provider authentication error comment: missing target context`),B(Bu),p(1,r.commentsPosted>0?`comment`:`none`)}if(e.delivery===`file-convention`){if(e.responseFilePath==null)return B(`File-convention delivery is active but no response file path was resolved at bootstrap`),p(1);let n=M({phase:`response-post`}),a=await nu({agentContext:t.agentContext,triggerResult:t.triggerResult,responseFilePath:e.responseFilePath,responseFilePathCandidates:e.responseFilePathCandidates??void 0,executionSucceeded:r.success},n),o;if(!(`success`in a))o=a;else{let a;if(r.success===!0&&l===!1){let n=t.triggerResult.context,[o=``,c=``]=t.agentContext.repo.split(`/`),l={eventType:n.eventType,isPullRequest:t.agentContext.issueType===`pr`,authorAssociation:n.author?.association??``,commentAuthor:n.author?.login??``,issueNumber:t.agentContext.issueNumber??0,owner:o,repo:c},u=t.agentContext.hydratedContext?.type===`pull_request`?t.agentContext.hydratedContext.headBranch:``,d=new AbortController,f;try{let n=Promise.resolve().then(async()=>Nu({octokit:t.githubClient,execAdapter:Vo(),logger:s,eventFacts:l,trustedHeadSha:e.trustedHeadSha,expectedHeadBranch:u,repoRoot:U.env.GITHUB_WORKSPACE??U.cwd(),extraPathPrefixes:e.inputs.brokeredPushExtraPaths,signal:d.signal})).catch(Xu),o=await Promise.race([n,new Promise(e=>{f=setTimeout(()=>{d.abort(),e({kind:`fail-loud`,failureClass:`timeout`,reason:`brokered push exceeded time budget`})},12e4)})]);if(o.kind===`fail-loud`){let e=Vu(t),n=!1;return r.commentsPosted===0&&Hu(e)?n=await $u(t,e,Yu(o),i,s):r.commentsPosted===0&&!Hu(e)&&s.warning(`Cannot post brokered push failure comment: missing target context`),B(`Brokered push delivery failed: ${o.reason}`),await p(1,n?`comment`:`none`)}o.kind===`pushed`&&(a=Qu(o))}finally{f!=null&&clearTimeout(f)}}o=await du({octokit:t.githubClient,agentContext:t.agentContext,triggerResult:t.triggerResult,botLogin:t.botLogin,responseFilePath:e.responseFilePath,responseFilePathCandidates:e.responseFilePathCandidates??void 0,...a==null?{}:{deliveryFooter:a},...l?{knownExecutionVeto:l}:{},...u==null?{}:{reviewDeliveryReceiptOps:u}},n)}if(o.delivered===!1){if(o.reason===`file-read-failed`){if(r.success===!1&&r.commentsPosted===0){let e=Vu(t);if(Hu(e)){let n=await $u(t,e,Uu(!1),i,s);return p(Wu(r),n?`comment`:`none`)}return s.warning(`Cannot post missing-response fallback comment: missing target context`),p(Wu(r))}if(r.success===!0)return B(Uu(!0)),p(1)}return B(`Failed to deliver the agent's response from ${K.dirname(e.responseFilePath)}: ${o.reason} — ${o.detail}`),p(1)}return n.info(`Delivered file-convention response`,{kind:o.kind}),i.incrementComments(),r.success===!1?r.llmError==null?(B(`Agent execution failed with exit code ${r.exitCode}`),p(r.exitCode,o.kind)):(s.info(`Agent failed with recoverable LLM error, but a response was already delivered`,{error:r.llmError.message,type:r.llmError.type,durationMs:d}),p(0,o.kind)):(s.info(`Agent run completed successfully`,{durationMs:d}),p(0,o.kind))}if(r.success)return s.info(`Agent run completed successfully`,{durationMs:d}),p(0,r.commentsPosted>0?`comment`:`none`);if(r.llmError==null)return B(`Agent execution failed with exit code ${r.exitCode}`),p(r.exitCode,r.commentsPosted>0?`comment`:`none`);s.info(`Agent failed with recoverable LLM error`,{error:r.llmError.message,type:r.llmError.type,durationMs:d});let m=Vu(t);if(Hu(m))return p(0,await $u(t,m,$t(r.llmError),i,s)?`comment`:`none`);{s.warning(`Cannot post error comment: missing target context`),s.error(`Agent execution failed with no delivery surface to report it`,{type:r.llmError.type,error:r.llmError.message,suggestedAction:r.llmError.suggestedAction});let e=`Agent execution failed with a recoverable LLM error, and no delivery surface was available to report it.`;return B(r.llmError.type===`model_not_found`?`${e} Cause: ${r.llmError.message} ${r.llmError.suggestedAction??``}`.trim():e),p(r.exitCode===0?1:r.exitCode)}}function td(e){let t=/^\s*##\s+Verdict:\s+(\S+)/gm,n=/* @__PURE__ */ new Set([`PASS`,`CONDITIONAL`,`REJECT`]),r=/* @__PURE__ */ new Set,i=t.exec(e);for(;i!==null;){let a=i[1];if(a!==void 0){if(!n.has(a))return null;r.add(a)}i=t.exec(e)}if(r.size===0||r.size>1)return null;let[a]=r;return a}function nd(e){let{verdict:t,alreadyApprovedAtHead:n,verdictBelongsToRun:r,headMatches:i}=e;return t===null?{action:`skip`,reason:`no-verdict`}:t===`PASS`?n===!0?{action:`skip`,reason:`already-approved`}:r===!1?{action:`skip`,reason:`stale-or-not-this-run`}:i===!1?{action:`skip`,reason:`stale-head`}:{action:`approve`}:{action:`skip`,reason:`not-pass`}}function rd(e,t){return e.user!=null&&e.user.login===t&&e.user.type===`Bot`}async function id(e,t){let{octokit:n,botLogin:r,owner:i,repo:a,prNumber:o,isPullRequestReviewTrigger:s,responseModeIsGithub:c,agentSucceeded:l,runStartMs:u,isFileConventionDelivery:d,knownExecutionVeto:f,receipt:p}=e;if(d===!0)return{reconciled:!1,reason:`finalize-owns-response`};if(s===!1)return{reconciled:!1,reason:`not-pr-review-trigger`};if(o==null)return{reconciled:!1,reason:`no-pr-number`};if(c===!1)return{reconciled:!1,reason:`response-mode-not-github`};if(l===!1)return{reconciled:!1,reason:`agent-failed`};if(r==null||r.length===0)return{reconciled:!1,reason:`no-bot-login`};if(f===!0)return t.info(`Review reconciliation: skipping, known execution veto`,{prNumber:o}),{reconciled:!1,reason:`known-execution-veto`};t.info(`Review reconciliation: phase entered`,{prNumber:o});try{let e=await Yl({octokit:n,owner:i,repo:a,prNumber:o,botLogin:r,event:`APPROVE`},t);if(e.allowed===!1)return{reconciled:!1,reason:e.reason};let s=e.currentHeadSha,c=(await n.rest.pulls.listReviews({owner:i,repo:a,pull_number:o,per_page:100})).data,l=c.some(e=>rd(e,r)&&e.state===`APPROVED`&&e.commit_id===s),d=new Date(u).toISOString(),f=c.filter(e=>rd(e,r)&&e.submitted_at!=null&&e.submitted_at>=d);f.sort((e,t)=>{let n=e.submitted_at??``;return(t.submitted_at??``).localeCompare(n)});let m=f[0]??null;if(m==null)return t.info(`Review reconciliation: no qualifying bot review found this run`,{prNumber:o}),{reconciled:!1,reason:`no-bot-review`};let h=m.body??null,g=m.commit_id===s,_=nd({verdict:h==null?null:td(h),alreadyApprovedAtHead:l,verdictBelongsToRun:!0,headMatches:g});if(_.action===`skip`)return t.info(`Review reconciliation: skipping`,{prNumber:o,reason:_.reason}),{reconciled:!1,reason:_.reason};let v=await Xl({octokit:n,owner:i,repo:a,prNumber:o,event:`APPROVE`,body:`Approving to match the review verdict above.`,currentHeadSha:s,...p==null?{}:{receipt:{ops:p.ops,identity:{repo:`${i}/${a}`,runId:p.runId,prNumber:o},attempt:p.runAttempt}}},t);return v.submitted===!1?{reconciled:!1,reason:v.reason}:(t.info(`Review reconciliation: APPROVE submitted successfully`,{prNumber:o}),{reconciled:!0,reason:`approved`})}catch(e){let n=V(e);return t.warning(`Review reconciliation: error during phase, no-oping`,{prNumber:o,error:n}),{reconciled:!1,reason:`error`}}}function ad(e){switch(e){case`issue_comment`:return`issue_comment`;case`discussion`:case`discussion_comment`:return`discussion_comment`;case`workflow_dispatch`:return`workflow_dispatch`;case`issues`:return`issues`;case`pull_request`:return`pull_request`;case`pull_request_review_comment`:return`pull_request_review_comment`;case`schedule`:return`schedule`;default:return`unsupported`}}function od(e,t){switch(e){case`issue_comment`:{let e=t;return{type:`issue_comment`,action:e.action,issue:{number:e.issue.number,title:e.issue.title,body:e.issue.body??null,locked:e.issue.locked??!1,isPullRequest:e.issue.pull_request!=null},comment:{id:e.comment.id,body:e.comment.body,author:e.comment.user.login,authorAssociation:e.comment.author_association??`NONE`}}}case`discussion_comment`:{let e=t;return{type:`discussion_comment`,action:e.action,discussion:{number:e.discussion.number,title:e.discussion.title,body:e.discussion.body??null,locked:e.discussion.locked??!1},comment:{id:e.comment.id,body:e.comment.body??null,author:e.comment.user.login,authorAssociation:e.comment.author_association??`NONE`}}}case`issues`:{let e=t;return{type:`issues`,action:e.action,issue:{number:e.issue.number,title:e.issue.title,body:e.issue.body??null,locked:e.issue.locked??!1,authorAssociation:e.issue.author_association??`NONE`},sender:{login:e.sender.login}}}case`pull_request`:{let e=t,n=e.pull_request.requested_reviewers??[],r=`requested_reviewer`in e&&e.requested_reviewer!=null?{login:e.requested_reviewer.login,type:e.requested_reviewer.type}:null,i=`requested_team`in e&&e.requested_team!=null?{name:e.requested_team.name,slug:e.requested_team.slug}:null,a=n.flatMap(e=>`login`in e&&`type`in e?[{login:e.login,type:e.type}]:[]),o=(e.pull_request.labels??[]).flatMap(e=>typeof e.name==`string`&&e.name!==``?[e.name]:[]);return{type:`pull_request`,action:e.action,requestedReviewer:r,requestedTeam:i,pullRequest:{number:e.pull_request.number,title:e.pull_request.title,body:e.pull_request.body??null,locked:e.pull_request.locked??!1,draft:e.pull_request.draft??!1,authorAssociation:e.pull_request.author_association??`NONE`,requestedReviewers:a,labels:o},sender:{login:e.sender.login}}}case`pull_request_review_comment`:{let e=t;return{type:`pull_request_review_comment`,action:e.action,pullRequest:{number:e.pull_request.number,title:e.pull_request.title,locked:e.pull_request.locked??!1},comment:{id:e.comment.id,body:e.comment.body,author:e.comment.user.login,authorAssociation:e.comment.author_association,path:e.comment.path,line:e.comment.line??null,diffHunk:e.comment.diff_hunk,commitId:e.comment.commit_id}}}case`workflow_dispatch`:return{type:`workflow_dispatch`,inputs:{prompt:t.inputs?.prompt??void 0}};case`schedule`:return{type:`schedule`,schedule:t.schedule??void 0};case`unsupported`:return{type:`unsupported`}}}function sd(e){let t=vt,n=ad(t.eventName),r=od(n,t.payload);return e.debug(`Parsed GitHub context`,{eventName:t.eventName,eventType:n,repo:`${t.repo.owner}/${t.repo.repo}`}),{eventName:t.eventName,eventType:n,repo:t.repo,ref:t.ref,sha:t.sha,runId:t.runId,actor:t.actor,payload:t.payload,event:r}}function cd(e,t){if(t.length===0)return!1;let n=t.replace(/\[bot\]$/i,``);return n.length!==0&&new RegExp(String.raw`@${ld(n)}(?:\[bot\])?(?:$|[^\w])`,`i`).test(e)}function ld(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)}function ud(e,t){if(t.length===0)return null;let n=t.replace(/\[bot\]$/i,``);if(n.length===0)return null;let r=new RegExp(String.raw`@${ld(n)}(?:\[bot\])?\s*(.*)`,`is`).exec(e)?.[1];if(r==null)return null;let i=r.trim();if(i.length===0)return{raw:``,action:null,args:``};let a=i.split(/\s+/),o=a[0]??``;return{raw:i,action:o===``?null:o,args:a.slice(1).join(` `)}}function dd(e,t){if(t==null||t===``||e==null)return{hasMention:!1,command:null};let n=cd(e,t);return{hasMention:n,command:n?ud(e,t):null}}function fd(e,t){if(e.type!==`issue_comment`)throw Error(`Event type must be issue_comment`);let n={login:e.comment.author,association:e.comment.authorAssociation,isBot:Ba(e.comment.author)},r={kind:e.issue.isPullRequest?`pr`:`issue`,number:e.issue.number,title:e.issue.title,body:e.comment.body??null,locked:e.issue.locked},{hasMention:i,command:a}=dd(e.comment.body,t);return{action:e.action,author:n,target:r,commentBody:e.comment.body,commentId:e.comment.id,hasMention:i,command:a,isBotReviewRequested:!1}}function pd(e,t){if(e.type!==`discussion_comment`)throw Error(`Event type must be discussion_comment`);let n={login:e.comment.author,association:e.comment.authorAssociation,isBot:Ba(e.comment.author)},r=e.comment.body??null,i={kind:`discussion`,number:e.discussion.number,title:e.discussion.title,body:r??e.discussion.body??null,locked:e.discussion.locked},{hasMention:a,command:o}=dd(r,t);return{action:e.action,author:n,target:i,commentBody:r,commentId:e.comment.id,hasMention:a,command:o,isBotReviewRequested:!1}}function md(e,t){if(e.type!==`pull_request_review_comment`)throw Error(`Event type must be pull_request_review_comment`);let n={login:e.comment.author,association:e.comment.authorAssociation,isBot:Ba(e.comment.author)},r={kind:`pr`,number:e.pullRequest.number,title:e.pullRequest.title,body:e.comment.body,locked:e.pullRequest.locked,path:e.comment.path,line:e.comment.line??void 0,diffHunk:e.comment.diffHunk,commitId:e.comment.commitId},{hasMention:i,command:a}=dd(e.comment.body,t);return{action:e.action,author:n,target:r,commentBody:e.comment.body,commentId:e.comment.id,hasMention:i,command:a,isBotReviewRequested:!1}}function hd(e,t,n){if(e.type!==`workflow_dispatch`)throw Error(`Event type must be workflow_dispatch`);let r=(n??e.inputs?.prompt??``).trim();return{action:null,author:{login:t,association:`OWNER`,isBot:!1},target:{kind:`manual`,number:0,title:`Manual workflow dispatch`,body:r===``?null:r,locked:!1},commentBody:r===``?null:r,commentId:null,hasMention:!1,command:null,isBotReviewRequested:!1}}function gd(e,t,n){let r=n?.trim()??``;return{action:null,author:{login:t,association:`OWNER`,isBot:!1},target:{kind:`manual`,number:0,title:`Scheduled workflow`,body:r===``?null:r,locked:!1},commentBody:r===``?null:r,commentId:null,hasMention:!1,command:null,isBotReviewRequested:!1}}function _d(e){return e.toLowerCase().replace(/\[bot\]$/i,``)}function vd(e,t){if(e.type!==`pull_request`||t==null||t===``)return!1;let n=_d(t);if(n===``)return!1;if(e.action===`review_requested`){let t=e.requestedReviewer?.login;return t!=null&&_d(t)===n}return e.action===`ready_for_review`&&e.pullRequest.requestedReviewers.some(e=>_d(e.login)===n)}function yd(e,t){if(e.type!==`issues`)throw Error(`Event type must be issues`);let n={login:e.sender.login,association:e.issue.authorAssociation,isBot:Ba(e.sender.login)},r={kind:`issue`,number:e.issue.number,title:e.issue.title,body:e.issue.body,locked:e.issue.locked},{hasMention:i,command:a}=dd(e.issue.body??``,t);return{action:e.action,author:n,target:r,commentBody:e.issue.body,commentId:null,hasMention:i,command:a,isBotReviewRequested:!1}}function bd(e,t){if(e.type!==`pull_request`)throw Error(`Event type must be pull_request`);let n={login:e.sender.login,association:e.pullRequest.authorAssociation,isBot:Ba(e.sender.login)},r={kind:`pr`,number:e.pullRequest.number,title:e.pullRequest.title,body:e.pullRequest.body,locked:e.pullRequest.locked,isDraft:e.pullRequest.draft,requestedReviewerLogin:e.requestedReviewer?.login,requestedTeamSlug:e.requestedTeam?.slug,requestedReviewerLogins:e.pullRequest.requestedReviewers.map(e=>e.login),labels:e.pullRequest.labels},{hasMention:i,command:a}=dd(e.pullRequest.body??``,t);return{action:e.action,author:n,target:r,commentBody:e.pullRequest.body,commentId:null,hasMention:i,command:a,isBotReviewRequested:vd(e,t)}}function xd(e,t){return{...e,action:t.action,author:t.author,target:t.target,commentBody:t.commentBody,commentId:t.commentId,hasMention:t.hasMention,command:t.command,isBotReviewRequested:t.isBotReviewRequested}}function Sd(e,t,n){let r={eventType:e.eventType,eventName:e.eventName,repo:e.repo,ref:e.ref,sha:e.sha,runId:e.runId,actor:e.actor,raw:e};switch(e.eventType){case`issue_comment`:return xd(r,fd(e.event,t));case`discussion_comment`:return xd(r,pd(e.event,t));case`workflow_dispatch`:return xd(r,hd(e.event,e.actor,n));case`issues`:return xd(r,yd(e.event,t));case`pull_request`:return xd(r,bd(e.event,t));case`pull_request_review_comment`:return xd(r,md(e.event,t));case`schedule`:return xd(r,gd(e.event,e.actor,n));case`unsupported`:return{...r,action:null,author:null,target:null,commentBody:null,commentId:null,hasMention:!1,command:null,isBotReviewRequested:!1}}}function Cd(e,t,n){let{targetLabel:r,actionLabel:i}=n;return e.action===`created`?e.target?.locked===!0?{shouldSkip:!0,reason:`issue_locked`,message:`${r} is locked`}:e.author!=null&&e.author.isBot?{shouldSkip:!0,reason:`self_comment`,message:`Comments from bots (${e.author.login}) are not processed`}:e.author!=null&&!za(e.author.association,t.allowedAssociations)?{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`}:t.requireMention&&!e.hasMention?{shouldSkip:!0,reason:`no_mention`,message:`Comment does not mention the bot`}:{shouldSkip:!1}:{shouldSkip:!0,reason:`action_not_created`,message:`${i} action is '${e.action}', not 'created'`}}function wd(e,t){return Cd(e,t,{targetLabel:`Issue or PR`,actionLabel:`Comment`})}function Td(e,t){return Cd(e,t,{targetLabel:`Discussion`,actionLabel:`Discussion comment`})}const Ed=[`opened`,`edited`];function Dd(e){return Ed.includes(e)}function Od(e,t){let n=e.action;return n==null||!Dd(n)?{shouldSkip:!0,reason:`action_not_supported`,message:`Issues action '${n}' is not supported (only 'opened' and 'edited')`}:e.author!=null&&e.author.isBot?{shouldSkip:!0,reason:`self_comment`,message:`Issues from bots (${e.author.login}) are not processed`}:e.author!=null&&!za(e.author.association,t.allowedAssociations)?{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`}:n===`edited`&&!e.hasMention?{shouldSkip:!0,reason:`no_mention`,message:`Issue edit does not mention the bot`}:e.target?.locked===!0?{shouldSkip:!0,reason:`issue_locked`,message:`Issue is locked`}:{shouldSkip:!1}}function kd(e){return(e.promptInput?.trim()??``)===``?{shouldSkip:!0,reason:`prompt_required`,message:`Schedule trigger requires prompt input`}:{shouldSkip:!1}}function Ad(e){return(e.commentBody?.trim()??``)===``?{shouldSkip:!0,reason:`prompt_required`,message:`Workflow dispatch requires prompt input`}:{shouldSkip:!1}}const jd=[`opened`,`synchronize`,`reopened`,`ready_for_review`,`review_requested`];function Md(e){return jd.includes(e)}function Nd(e,t){let n=e.action;if(n==null||!Md(n))return{shouldSkip:!0,reason:`action_not_supported`,message:`Pull request action '${n}' is not supported`};if(e.action!==`review_requested`&&e.action!==`ready_for_review`&&e.author!=null&&e.author.isBot)return{shouldSkip:!0,reason:`self_comment`,message:`Pull requests from bots (${e.author.login}) are not processed`};if(e.author!=null&&!za(e.author.association,t.allowedAssociations))return{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`};if(t.skipDraftPRs&&e.target?.isDraft===!0)return{shouldSkip:!0,reason:`draft_pr`,message:`Pull request is a draft`};if(e.target?.locked===!0)return{shouldSkip:!0,reason:`issue_locked`,message:`Pull request is locked`};if(t.botLogin!=null&&t.botLogin!==``&&(e.action===`ready_for_review`||e.action===`review_requested`)&&e.isBotReviewRequested!==!0)return{shouldSkip:!0,reason:`bot_not_requested`,message:`Pull request action '${e.action}' did not request review from the bot`};if(t.reviewSkipLabel!=null){let n=t.reviewSkipLabel.trim().toLowerCase();if(n===``)return{shouldSkip:!1};let r=(e.target?.labels??[]).some(e=>e.toLowerCase()===n),i=e.hasMention===!0&&e.action!==`ready_for_review`&&e.action!==`review_requested`||e.action===`review_requested`&&e.isBotReviewRequested===!0;if(r&&!i)return{shouldSkip:!0,reason:`review_skip_label`,message:`Pull request has the opt-out label '${t.reviewSkipLabel}'`}}return{shouldSkip:!1}}function Pd(e,t){let n=e.action;return n===`created`?e.target?.locked===!0?{shouldSkip:!0,reason:`issue_locked`,message:`Pull request is locked`}:e.author!=null&&e.author.isBot?{shouldSkip:!0,reason:`self_comment`,message:`Review comments from bots (${e.author.login}) are not processed`}:e.author!=null&&!za(e.author.association,t.allowedAssociations)?{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`}:t.requireMention&&!e.hasMention?{shouldSkip:!0,reason:`no_mention`,message:`Review comment does not mention the bot`}:{shouldSkip:!1}:{shouldSkip:!0,reason:`action_not_created`,message:`Review comment action '${n}' is not supported (only 'created')`}}function Fd(e){return{shouldSkip:!0,reason:`unsupported_event`,message:`Unsupported event type: ${e}`}}function Id(e,t,n){if(e.eventType===`unsupported`)return n.debug(`Skipping unsupported event`,{eventName:e.eventName}),Fd(e.eventName);switch(e.eventType){case`issue_comment`:return wd(e,t);case`discussion_comment`:return Td(e,t);case`issues`:return Od(e,t);case`pull_request`:return Nd(e,t);case`pull_request_review_comment`:return Pd(e,t);case`schedule`:return kd(t);case`workflow_dispatch`:return Ad(e);default:return{shouldSkip:!1}}}function Ld(e,t,n={}){let r={...Va,...n},i=Sd(e,r.botLogin,r.promptInput);r.senderAssociation!=null&&(i.action===`review_requested`||i.action===`ready_for_review`)&&i.author!=null&&(i={...i,author:{...i.author,association:r.senderAssociation}}),t.debug(`Routing event`,{eventName:e.eventName,eventType:e.eventType,hasMention:i.hasMention});let a=Id(i,r,t);return a.shouldSkip?{shouldProcess:!1,skipReason:a.reason,skipMessage:a.message,context:i}:{shouldProcess:!0,context:i}}function Rd(e,t){try{Ke(`Fro Bot skipped this event (${e}): ${t}`,{title:`Fro Bot skipped event`})}catch{}}async function zd(e,t){let n=M({phase:`context`}),r=sd(n),i=Xo({token:e.inputs.githubToken,logger:n}),a=await Zo(i,n),o=null;if(r.event.type===`pull_request`&&(r.event.action===`review_requested`||r.event.action===`ready_for_review`)){let{owner:e,repo:t}=r.repo;o=await Qr(i,e,t,r.event.sender.login,n)}let s=M({phase:`trigger`}),c=Ld(r,s,{botLogin:a,requireMention:!0,promptInput:e.inputs.prompt,senderAssociation:o,reviewSkipLabel:e.inputs.reviewSkipLabel});return c.shouldProcess?(s.info(`Event routed for processing`,{eventType:c.context.eventType,hasMention:c.context.hasMention,command:c.context.command?.action??null}),H(z.SHOULD_SAVE_CACHE,`true`),{githubClient:i,triggerResult:c,agentContext:await hi({logger:n,octokit:i,triggerContext:c.context,botLogin:a}),botLogin:a}):(s.info(`Skipping event`,{reason:c.skipReason,message:c.skipMessage}),Rd(c.skipReason,c.skipMessage),{skipped:!0,skipReason:c.skipReason,skipMessage:c.skipMessage})}async function Bd(){let e=Date.now(),t=M({phase:`bootstrap`}),n=Ts();n.start();let r=null,i=0,a=null,o=null,s=null,c=null,l=``,u=``,d=null,f=null,m=null,h=!1,g,_=`omitted`,v=!1,y={enabled:!1,bucket:``,region:``,prefix:``},b=!1,x=!1,S=null,C=null,w=null,T=`pending`,E=null,D=()=>({requested:_,resolved:null}),O=e=>{tc({sessionId:null,resolvedOutputMode:null,outputModeMigration:D(),deliveryKind:`none`,cacheStatus:`miss`,duration:e})};H(z.SHOULD_SAVE_CACHE,`false`),H(z.CACHE_SAVED,`not-persisted`);try{t.info(`Starting Fro Bot Agent`),_=El();let D=await kc(t);if(D==null)return T=`failed`,O(Date.now()-e),1;s=D.opencodeResult.version,y=D.inputs.storeConfig,d=D.inputs.sessionRetention,w=D.inputs.responseMode;let k=await zd(D,e);if(`skipped`in k)return T=`skipped`,E={reason:k.skipReason,message:k.skipMessage},O(Date.now()-e),0;a=k.githubClient,S=k.triggerResult.context,l=`${k.triggerResult.context.repo.owner}/${k.triggerResult.context.repo.repo}`,u=k.agentContext.runId;let A=ks(y,M({phase:`review-delivery-receipt`})),ee=oe(),te=await bl(D.inputs.dedupWindow,k.triggerResult.context,l,e);if(!te.shouldProceed)return T=`skipped`,O(Date.now()-e),0;C=te.entity;let j=await Ze({storeConfig:y,repo:l,runId:u,runAttempt:oe(),jobIdentity:se()});switch(j.outcome){case`acquired`:f=j.lockEtag,m=j.renewal;break;case`held-by-other`:return t.info(`Skipping run — Action coordination lock held, or expired non-Action lease unconfirmed`,{heldBy:j.holder?.holder_id??null,surface:j.holder?.surface??null}),T=`skipped`,O(Date.now()-e),h=!0,H(z.SHOULD_SAVE_CACHE,`false`),await ol({githubClient:k.githubClient,triggerContext:k.triggerResult.context,holder:j.holder,reason:j.reason,responseMode:D.inputs.responseMode,logger:t}),0;case`error`:return T=`failed`,O(Date.now()-e),h=!0,H(z.SHOULD_SAVE_CACHE,`false`),B(`Action coordination lock unavailable; refusing to run without it: ${j.error.message}`),1}r=await sc(k,D.logger);let ne=await Fc(D,n);if(ne==null)return T=`failed`,O(Date.now()-e),1;c=ne.serverHandle;let re=await Tl(D,k,ne,n);o=re.attachmentResult;let ie=await kl(D,k,ne,re,n,e);g=ie.ownershipLedger,b=ie.observationGap===!0;let ae=M({phase:`drain`}),N=await Il({ledger:ie.ownershipLedger,client:ne.serverHandle.client,parentSessionId:ie.sessionId,directory:p(),deadlineMs:Ml(D.inputs.timeoutMs,ie.executionDurationMs),logger:ae});N.expired&&ae.warning(`Drain deadline reached before owned work settled; run reports incomplete`,{cancelledCount:N.cancelledCount,settledCount:N.settledCount,unknownCount:N.unknownCount}),x=N.unknownCount>0||ie.recoveryBoundaryUnresolved===!0;let P=b||x,ce=M({phase:`review-reconciliation`}),F=k.triggerResult.context,I=F.eventType===`pull_request`,le=F.target!=null&&F.target.kind===`pr`?F.target.number:null;await id({octokit:k.githubClient,botLogin:k.botLogin,owner:F.repo.owner,repo:F.repo.repo,prNumber:le,isPullRequestReviewTrigger:I,responseModeIsGithub:D.inputs.responseMode===`github`,agentSucceeded:ie.success,runStartMs:e,isFileConventionDelivery:D.delivery===`file-convention`,knownExecutionVeto:P,receipt:{ops:A,runId:u,runAttempt:ee}},ce),n.end(),v=!0,i=(await ed(D,k,ne,ie,n,e,D.logger,{knownExecutionVeto:P,reviewDeliveryReceiptOps:A})).exitCode}catch(r){i=1;let a=Date.now()-e,o=r instanceof Error?r.name:`UnknownError`,s=V(r);n.recordError(o,s,!1),n.end(),v===!1&&O(a),r instanceof Error?(t.error(`Agent failed`,{error:r.message}),B(r.message)):(t.error(`Agent failed with unknown error`),B(`An unknown error occurred`))}finally{let e=await Xc({bootstrapLogger:t,reactionCtx:r,githubClient:a,attachmentResult:o,serverHandle:c,sessionRetention:d,detectedOpencodeVersion:s,storeConfig:y,metrics:n,agentIdentity:`github`,repo:l,runId:u,lockEtag:f,ownershipLedger:g,leaseRenewal:m,skipSessionPersistence:h}),p,_=[];if(T===`skipped`)p=`skipped`;else{let t={observationGap:b,ownershipUnresolved:x,quiescenceConfirmed:e.quiescenceConfirmed,continuityUnverified:e.continuityUnverified},n=oc({deliverySucceeded:T!==`failed`&&i===0,verification:t});p=n.outcome,_=n.incompleteReasons,p===`incomplete`&&i===0&&(i=1)}p===`succeeded`&&C!=null&&S!=null&&await xl(S,C,l),r!=null&&a!=null&&p!==`skipped`&&await io(a,r,p,t),rc(p),await me(p,_,t,E??void 0),a!=null&&S!=null&&w!=null&&await ll({githubClient:a,triggerContext:S,outcome:p,responseMode:w,logger:t})}return i}await Bd().then(e=>{U.exit(e)});export{}; \ No newline at end of file +---`);if(i===-1)return null;let a=r.slice(i+4),o=/^[ \t]*\n/.exec(a);return o==null?null:a.slice(o[0].length)}function ou(e,t){return t==null||t.length===0?e:`${e}\n\n${t}`}function su(e){return`${e}\n\n> **Harness note:** delivered as a comment, not a formal approval, because this invocation could not fully confirm it observed its own execution (an event-stream gap or unresolved background work). The findings above are unaffected.`}function cu(){return``}function lu(e){return`${e}\n${cu()}`}function uu(e,t){let n=Ua(e,t.context),[r,i]=e.repo.split(`/`);if(r==null||r.length===0||i==null||i.length===0||e.issueNumber==null)return{surface:n,target:null};let a=e.issueNumber;return{surface:n,target:{type:C[n].target,number:a,owner:r,repo:i}}}async function du(e,t,n,r,i){let a=cu();for(let o=1;o<=3;o+=1){if(o>1&&r!=null&&r.length>0&&((await Ul(e,t,r,i))?.comments.some(e=>e.isBot&&e.body.includes(a))??!1))return i.debug(`Response-post: probe found this run's comment already posted, skipping re-create`,{attempt:o,target:t}),!0;if(await Jl(e,t,{body:n},i)!=null)return!0;i.warning(`Response-post: comment write failed, retrying`,{attempt:o,target:t})}return!1}async function fu(e,t){let{octokit:n,agentContext:r,triggerResult:i,botLogin:a,responseFilePath:o,responseFilePathCandidates:s,deliveryFooter:c,knownExecutionVeto:l,reviewDeliveryReceiptOps:u}=e,d=await ru({agentContext:r,triggerResult:i,responseFilePath:o,responseFilePathCandidates:s},t);if(!(`success`in d))return d;let{surface:f,parsed:p,recoveredFromFallback:m,actualResponseFilePath:h,droppedVerdict:g}=d.data,{target:_}=uu(r,i);if(_==null)return t.error(`Response-post: missing target context`,{agentContext:{repo:r.repo}}),Ql(`missing-target-context`,`Cannot post: missing owner/repo/issue number in routing context`);g===!0&&t.warning(`Response-post: dropped verdict on "${f}" surface; posting response body as a comment`,{surface:f});let v=iu(ou(p.body,c));if(p.verdict==null)return C[f].verdictRequired?(t.error(`Response-post: pr-review surface has no verdict frontmatter`,{responseFileDirectory:K.dirname(o)}),Ql(`missing-verdict`,`pull_request responses must carry a verdict frontmatter`)):await du(n,_,lu(iu(ou(p.body,c))),a,t)===!1?Ql(`post-failed`,`postComment returned null after retries`):{delivered:!0,kind:`comment`};if(a==null||a.length===0)return C[f].verdictRequired===!1?(t.warning(`Response-post: verdict could not be submitted; degrading to comment`,{surface:f,reason:`missing-target-context`}),await du(n,_,lu(iu(ou(p.body,c))),a,t)===!1?Ql(`post-failed`,`postComment returned null after retries`):{delivered:!0,kind:`comment`}):Ql(`missing-target-context`,`Cannot submit a review: bot login is unavailable`);let y=m||l===!0,b=p.verdict===`approve`?y?`COMMENT`:`APPROVE`:`REQUEST_CHANGES`;m&&p.verdict===`approve`?t.warning(`Response-post: withholding approving verdict from fallback response artifact`,{expectedResponsePath:eu(o),actualResponsePath:eu(h),expectedResponseDirectory:K.dirname(o),actualResponseDirectory:K.dirname(h)}):l===!0&&p.verdict===`approve`&&t.warning(`Response-post: withholding approving verdict — known execution veto`,{prNumber:_.number});let x=l===!0&&p.verdict===`approve`?iu(ou(su(p.body),c)):v,S=await Xl({octokit:n,owner:_.owner,repo:_.repo,prNumber:_.number,botLogin:a,event:b},t);if(S.allowed===!1)return C[f].verdictRequired===!1?(t.warning(`Response-post: review guard blocked the verdict; degrading to comment`,{reason:S.reason,prNumber:_.number,surface:f}),await du(n,_,lu(iu(ou(p.body,c))),a,t)===!1?Ql(`post-failed`,`postComment returned null after retries`):{delivered:!0,kind:`comment`}):(t.warning(`Response-post: review guard blocked the verdict, no review submitted`,{reason:S.reason,prNumber:_.number}),Ql(`review-guard-blocked`,`Review guard blocked submission: ${S.reason}`));try{let e=await Zl({octokit:n,owner:_.owner,repo:_.repo,prNumber:_.number,event:b,body:x,currentHeadSha:S.currentHeadSha,...u==null?{}:{receipt:{ops:u,identity:{repo:`${_.owner}/${_.repo}`,runId:U.env.GITHUB_RUN_ID??`local`,prNumber:_.number},attempt:Number.parseInt(U.env.GITHUB_RUN_ATTEMPT??`1`,10)}}},t);return e.submitted===!1?Ql(`review-guard-blocked`,`Review guard blocked submission: ${e.reason}`):{delivered:!0,kind:`review`}}catch(e){let n=V(e);return t.error(`Response-post: submitReview failed`,{error:n}),Ql(`post-failed`,n)}}function pu(e){return typeof e!=`object`||!e?!1:`status`in e&&e.status===404}const mu=[`OWNER`,`MEMBER`,`COLLABORATOR`];function hu(e){let{facts:t,trustedHeadSha:n}=e,{eventType:r,isPullRequest:i,authorAssociation:a,commentAuthor:o,issueNumber:s,owner:c,repo:l}=t;return c.trim()===``||l.trim()===``?{decision:`ineligible`,reason:`Repository identity is missing`}:r===`issue_comment`?i===!0?Ba(a,mu)===!1?{decision:`ineligible`,reason:`Comment author association is not authorized`}:n.trim()===``?{decision:`ineligible`,reason:`Trusted head SHA anchor is missing`}:{decision:`eligible`,owner:c,repo:l,prNumber:s,actor:o,trustedHeadSha:n}:{decision:`ineligible`,reason:`Issue comment is not on a pull request`}:{decision:`ineligible`,reason:`Event is not an issue comment`}}async function gu(e,t,n,r){try{let{data:i}=await e.rest.repos.getCollaboratorPermissionLevel({owner:t.owner,repo:t.repo,username:t.actor,...r==null?{}:{request:{signal:r}}});if(i.permission===`admin`||i.permission===`write`)return n.debug(`Brokered push permission confirmed`,{owner:t.owner,repo:t.repo,username:t.actor,permission:i.permission}),{decision:`allowed`,permission:i.permission};let a=`Live collaborator permission is insufficient or ambiguous: ${String(i.permission)}`;return n.warning(`Brokered push permission denied`,{owner:t.owner,repo:t.repo,username:t.actor,permission:i.permission}),{decision:`denied`,reason:a}}catch(e){let r=`Unable to verify live collaborator permission: ${V(e)}`;return n.warning(`Brokered push permission lookup failed`,{owner:t.owner,repo:t.repo,username:t.actor,error:V(e)}),{decision:`denied`,reason:r}}}async function _u(e,t,n,r){let{eligible:i,expectedHeadBranch:a}=t;try{let{data:t}=await e.rest.pulls.get({owner:i.owner,repo:i.repo,pull_number:i.prNumber,...r==null?{}:{request:{signal:r}}});if(t.state!==`open`)return bu(`Pull request is not open`,n,i);let o=`${i.owner}/${i.repo}`,s=t.base.repo?.full_name??``;if(s!==o)return bu(`Pull request base repository changed`,n,i);if((t.head.repo?.full_name??``)!==s)return bu(`Pull request head is no longer a same-repository branch`,n,i);if(t.head.ref!==a)return bu(`Pull request head branch changed`,n,i);if(t.head.sha!==i.trustedHeadSha)return bu(`Pull request head SHA changed`,n,i);let c=vu(t.head.ref);if(c!=null)return bu(c,n,i);let l={owner:i.owner,repo:i.repo,branch:t.head.ref};return n.debug(`Brokered push target confirmed`,l),{decision:`allowed`,target:l}}catch(e){let t=`Unable to re-resolve PR before write: ${V(e)}`;return n.warning(`Brokered push pre-write lookup failed`,{owner:i.owner,repo:i.repo,prNumber:i.prNumber,error:V(e)}),{decision:`denied`,reason:t}}}function vu(e){return typeof e!=`string`||e.length===0?`Live PR head branch is empty or not a string`:e.startsWith(`/`)||e.endsWith(`/`)?`Live PR head branch is not a valid ref: ${e}`:e.includes(`..`)?`Live PR head branch contains '..': ${e}`:yu(e)?`Live PR head branch contains an ASCII control character: ${e}`:e.includes(`@{`)?`Live PR head branch contains '@{': ${e}`:e.includes(`\\`)?`Live PR head branch contains a backslash: ${e}`:e.endsWith(`.lock`)?`Live PR head branch ends with '.lock': ${e}`:e.endsWith(`.`)||e.includes(`//`)||e===`@`?`Live PR head branch is not a valid ref: ${e}`:e.includes(` `)||/[~^:?*[\]]/.test(e)?`Live PR head branch contains a forbidden ref character: ${e}`:e.split(`/`).some(e=>e.startsWith(`.`))?`Live PR head branch contains a dot-prefixed component: ${e}`:null}function yu(e){for(let t=0;te.length===0))throw Error(`Malformed git ls-files output: empty untracked path`);return t}function Ou(e,t){let n=/* @__PURE__ */ new Map;for(let t of e)n.set(t.path,t);for(let e of t)n.has(e)===!1&&n.set(e,{oldMode:Su,newMode:Cu,status:`A`,path:e});return[...n.values()]}function ku(e){if(e.length===0)return[];let t=e.split(`\0`),n=[];for(let e=0;ee!==Su).some(e=>e!==Cu))throw Error(`${e.path}: only regular file mode ${Cu} is supported`);if(e.status===`A`&&(e.oldMode!==Su||e.newMode!==Cu))throw Error(`${e.path}: added entries must be regular files`);if(e.status===`M`&&(e.oldMode!==Cu||e.newMode!==Cu))throw Error(`${e.path}: modified entries must remain regular files`);if(e.status===`D`&&(e.oldMode!==Cu||e.newMode!==Su))throw Error(`${e.path}: deleted entries must be regular files`)}function ju(e){if(e.startsWith(`/`)||/^[a-z]:[\\/]/i.test(e)||e.includes(`\\`)||e.split(`/`).includes(`..`))throw Error(`Unsafe workspace path: ${e}`);let t=Us(e);if(t.valid===!1)throw Error(t.reason??`Invalid workspace path: ${e}`)}async function Mu(e,t){let n=Ht(e),r=Ht(n,t);if(r!==n&&r.startsWith(`${n}${Ut}`)===!1)throw Error(`Workspace path escapes repository root: ${t}`);let i;try{i=await G.open(r,Wt.O_RDONLY|Wt.O_NOFOLLOW)}catch{throw Error(`${t}: only regular files may be reconstructed`)}try{let e=await i.stat(),n=typeof e.mode==`number`&&!!(e.mode&73);if(e.isFile()===!1||n)throw Error(`${t}: only regular files may be reconstructed`);if(e.size>Vs.MAX_FILE_SIZE_BYTES)throw Error(`${t}: File exceeds maximum size of ${Vs.MAX_FILE_SIZE_BYTES} bytes`);let r=await i.readFile();try{return{path:t,content:wu.decode(r)}}catch{return{path:t,content:Et.from(r).toString(`base64`),encoding:`base64`}}}finally{await i.close()}}const Nu=`brokered push exceeded time budget`;async function Pu(e){let{octokit:t,execAdapter:n,logger:r,eventFacts:i,trustedHeadSha:a,expectedHeadBranch:o,repoRoot:s,signal:c}=e;try{let l=hu({facts:i,trustedHeadSha:a});if(l.decision===`ineligible`)return r.debug(`Brokered push bypassed by early eligibility gate`,{reason:l.reason}),{kind:`bypass`};let u=await gu(t,l,r,c);if(u.decision===`denied`)return zu(c?.aborted===!0?Nu:u.reason,c?.aborted===!0?`timeout`:`permission`,r);let d=await Eu(n,a,s,r);if(d.success===!1){let e=Iu(d.error,c);return zu(e?Nu:d.error.message,e?`timeout`:`reconstruction`,r)}if(d.data.kind===`bypass`)return r.debug(`Brokered push bypassed during reconstruction`,{reason:d.data.reason}),{kind:`bypass`};if(d.data.kind===`nothing-to-deliver`)return{kind:`nothing-to-deliver`};let f=d.data.changes,p=ec(f,e.extraPathPrefixes);if(p.valid===!1)return zu(p.errors.join(`; `),`validation`,r,p.paths);let m={lookupFailed:!1,lookupNotFound:!1},h=await _u(Ru(t,m),{eligible:l,expectedHeadBranch:o},r,c);if(h.decision===`denied`){let e=m.lookupNotFound||m.lookupFailed===!1?`identity`:`permission`;return zu(c?.aborted===!0?Nu:h.reason,c?.aborted===!0?`timeout`:e,r)}let g={changed:!1};try{return{kind:`pushed`,commit:await Ks(Lu(t,l.trustedHeadSha,g),{owner:h.target.owner,repo:h.target.repo,branch:h.target.branch,message:`chore: apply brokered changes`,expectedHeadSha:l.trustedHeadSha,files:f,signal:c},r),branch:h.target.branch,paths:f.map(e=>e.path)}}catch(e){let t=Iu(e,c);return zu(t?Nu:Fu(e),t?`timeout`:g.changed?`moved-head`:`commit`,r)}}catch(e){let t=Iu(e,c);return zu(t?Nu:Fu(e),t?`timeout`:`unknown`,r)}}function Fu(e){return V(e)}function Iu(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function Lu(e,t,n){let r=e.rest.git.getRef,i=Object.assign(async(...e)=>{let i=await r(...e);return i.data.object.sha!==t&&(n.changed=!0),i},r);return{...e,rest:{...e.rest,git:{...e.rest.git,getRef:i}}}}function Ru(e,t){let n=e.rest.pulls.get,r=Object.assign(async(...e)=>{try{return await n(...e)}catch(e){throw t.lookupFailed=!0,t.lookupNotFound=pu(e),e}},n);return{...e,rest:{...e.rest,pulls:{...e.rest.pulls,get:r}}}}function zu(e,t,n,r){if(n.warning(`Brokered push delivery failed`,{reason:e}),t===`validation`){if(r==null)throw Error(`Validation brokered-push failures require offending paths`);return{kind:`fail-loud`,reason:e,failureClass:t,paths:r}}return{kind:`fail-loud`,reason:e,failureClass:t}}const Bu=`Agent execution stopped: provider quota exceeded. Check the provider account/billing settings, wait for the quota to reset, or switch to a different model or provider.`,Vu=`Agent execution stopped: model provider authentication failed. Check the model provider credentials and configuration, then try again.`;function Hu(e){let[t,n]=e.agentContext.repo.split(`/`);return{type:e.triggerResult.context.eventType===`discussion_comment`?`discussion`:e.agentContext.issueType===`pr`?`pr`:`issue`,number:e.agentContext.issueNumber??0,owner:t??``,repo:n??``}}function Uu(e){return e.number>0&&e.owner.length>0&&e.repo.length>0}function Wu(e){return e===!0?`The agent execution completed, but the response artifact was not found at the expected path, so no response was delivered.`:`The agent execution failed before it could write a response artifact, so no response was delivered.`}function Gu(e){let t=e.error!=null&&e.error.length>0?`Agent execution failed: ${e.error}`:`Agent execution failed with exit code ${e.exitCode}`;return B(t),e.exitCode}const Ku={validation:`Brokered push failure (validation): a changed file path is outside the brokered-push allowlist.`,reconstruction:`Brokered push failure (reconstruction): the changed files could not be reconstructed.`,"moved-head":`Brokered push failure (moved-head): the pull request head moved during delivery.`,identity:`Brokered push failure (identity): the pull request identity changed during delivery.`,permission:`Brokered push failure (permission): the brokered-push permission check failed.`,commit:`Brokered push failure (commit): the commit could not be created.`,timeout:`Brokered push failure (timeout): delivery exceeded its time budget.`,unknown:`Brokered push failure (unknown): delivery failed before the cause could be classified.`};function qu(e){return en(`internal`,Ku[e],!1,{suggestedAction:`Review the workflow logs and retry the run.`})}function Ju(e){let t=e.replaceAll(`\\`,`/`).replaceAll(` +`,` `).replaceAll(`\r`,` `).replaceAll(`\u2028`,` `).replaceAll(`\u2029`,` `),n=(U.env.GITHUB_WORKSPACE??U.cwd()).replaceAll(`\\`,`/`).replace(/\/+$/,``);return t===n?`.`:t.startsWith(`${n}/`)?t.slice(n.length+1):t.replace(/^\/+/,``).replace(/^\.\//,``)}function Yu(e){return Ju(e).replaceAll("`",``).replaceAll(`~`,``)}function Xu(e){let t=$t(qu(e.failureClass));if(e.failureClass===`validation`){if(e.paths.length===0)return t;let n=e.paths.slice(0,10).map(Yu),r=e.paths.length-n.length,i=r>0?`\n… and ${r} more`:``;return`${t}\n\nOffending paths:\n\`\`\`\n${n.join(` +`)}\n\`\`\`${i}`}return t}function Zu(e){return{kind:`fail-loud`,failureClass:`unknown`,reason:V(e)}}function Qu(e){return e.replaceAll("`","\\`").replaceAll(` +`,` `).replaceAll(`\r`,` `)}function $u(e){let t=e.paths.slice(0,50).map(e=>`\`${Qu(e)}\``),n=e.paths.length-t.length,r=n>0?`${t.join(`, `)}, … (+${n} more)`:t.join(`, `);return[`### Brokered push delivered`,`- Branch: \`${Qu(e.branch)}\``,`- Changed paths: ${r}`,`- Commit: \`${Qu(e.commit.sha.slice(0,7))}\``].join(` +`)}async function ed(e,t,n,r,i){let a=await Jl(e.githubClient,t,{body:n},i);return a==null?(i.warning(`Failed to post LLM error comment`),!1):(i.info(`Posted LLM error comment`,{commentUrl:a.url}),r.incrementComments(),!0)}async function td(e,t,n,r,i,a,s,c={}){let{knownExecutionVeto:l=!1,reviewDeliveryReceiptOps:u}=c,d=Date.now()-a;nc({sessionId:r.sessionId,resolvedOutputMode:r.resolvedOutputMode,outputModeMigration:r.outputModeMigration,brokeredPushAllowlist:Xs(e.inputs.brokeredPushExtraPaths),deliveryKind:`none`,cacheStatus:n.cacheStatus,duration:d});let f={eventType:t.agentContext.eventName,repo:t.agentContext.repo,ref:t.agentContext.ref,runId:Number(t.agentContext.runId),runUrl:`https://github.com/${t.agentContext.repo}/actions/runs/${t.agentContext.runId}`,metrics:i.getMetrics(),agent:e.inputs.agent??`build (default)`,resolvedOutputMode:r.resolvedOutputMode},p=async(e,t=`none`)=>(rc(t),r.overflowRecovery?.recovered===!0&&Ue.addRaw(`${mt(o(`Recovered from context overflow (fresh review session; archived ${r.overflowRecovery.archivedSessionId})`))}\n`),await dt({...f,deliveryKind:t},s,r.ownershipLedger),{exitCode:e,deliveryKind:t});if(r.llmError?.type===`quota_exceeded`){let n=Hu(t);if(e.delivery!==`none`&&r.commentsPosted===0&&Uu(n)){let e=await ed(t,n,$t(Cn({resetTime:r.llmError.resetTime})),i,s);return B(Bu),p(1,e?`comment`:`none`)}return e.delivery!==`none`&&r.commentsPosted===0&&!Uu(n)&&s.warning(`Cannot post quota exceeded error comment: missing target context`),B(Bu),p(1,r.commentsPosted>0?`comment`:`none`)}if(r.llmError?.type===`provider_auth_error`){let n=Hu(t);if(e.delivery!==`none`&&r.commentsPosted===0&&Uu(n)){let e=await ed(t,n,$t(un()),i,s);return B(Vu),p(1,e?`comment`:`none`)}return e.delivery!==`none`&&r.commentsPosted===0&&!Uu(n)&&s.warning(`Cannot post provider authentication error comment: missing target context`),B(Vu),p(1,r.commentsPosted>0?`comment`:`none`)}if(e.delivery===`file-convention`){if(e.responseFilePath==null)return B(`File-convention delivery is active but no response file path was resolved at bootstrap`),p(1);let n=M({phase:`response-post`}),a=await ru({agentContext:t.agentContext,triggerResult:t.triggerResult,responseFilePath:e.responseFilePath,responseFilePathCandidates:e.responseFilePathCandidates??void 0,executionSucceeded:r.success},n),o;if(!(`success`in a))o=a;else{let a;if(r.success===!0&&l===!1){let n=t.triggerResult.context,[o=``,c=``]=t.agentContext.repo.split(`/`),l={eventType:n.eventType,isPullRequest:t.agentContext.issueType===`pr`,authorAssociation:n.author?.association??``,commentAuthor:n.author?.login??``,issueNumber:t.agentContext.issueNumber??0,owner:o,repo:c},u=t.agentContext.hydratedContext?.type===`pull_request`?t.agentContext.hydratedContext.headBranch:``,d=new AbortController,f;try{let n=Promise.resolve().then(async()=>Pu({octokit:t.githubClient,execAdapter:Ho(),logger:s,eventFacts:l,trustedHeadSha:e.trustedHeadSha,expectedHeadBranch:u,repoRoot:U.env.GITHUB_WORKSPACE??U.cwd(),extraPathPrefixes:e.inputs.brokeredPushExtraPaths,signal:d.signal})).catch(Zu),o=await Promise.race([n,new Promise(e=>{f=setTimeout(()=>{d.abort(),e({kind:`fail-loud`,failureClass:`timeout`,reason:`brokered push exceeded time budget`})},12e4)})]);if(o.kind===`fail-loud`){let e=Hu(t),n=!1;return r.commentsPosted===0&&Uu(e)?n=await ed(t,e,Xu(o),i,s):r.commentsPosted===0&&!Uu(e)&&s.warning(`Cannot post brokered push failure comment: missing target context`),B(`Brokered push delivery failed: ${o.reason}`),await p(1,n?`comment`:`none`)}o.kind===`pushed`&&(a=$u(o))}finally{f!=null&&clearTimeout(f)}}o=await fu({octokit:t.githubClient,agentContext:t.agentContext,triggerResult:t.triggerResult,botLogin:t.botLogin,responseFilePath:e.responseFilePath,responseFilePathCandidates:e.responseFilePathCandidates??void 0,...a==null?{}:{deliveryFooter:a},...l?{knownExecutionVeto:l}:{},...u==null?{}:{reviewDeliveryReceiptOps:u}},n)}if(o.delivered===!1){if(o.reason===`file-read-failed`){if(r.success===!1&&r.commentsPosted===0){let e=Hu(t);if(Uu(e)){let n=await ed(t,e,Wu(!1),i,s);return p(Gu(r),n?`comment`:`none`)}return s.warning(`Cannot post missing-response fallback comment: missing target context`),p(Gu(r))}if(r.success===!0)return B(Wu(!0)),p(1)}return B(`Failed to deliver the agent's response from ${K.dirname(e.responseFilePath)}: ${o.reason} — ${o.detail}`),p(1)}return n.info(`Delivered file-convention response`,{kind:o.kind}),i.incrementComments(),r.success===!1?r.llmError==null?(B(`Agent execution failed with exit code ${r.exitCode}`),p(r.exitCode,o.kind)):(s.info(`Agent failed with recoverable LLM error, but a response was already delivered`,{error:r.llmError.message,type:r.llmError.type,durationMs:d}),p(0,o.kind)):(s.info(`Agent run completed successfully`,{durationMs:d}),p(0,o.kind))}if(r.success)return s.info(`Agent run completed successfully`,{durationMs:d}),p(0,r.commentsPosted>0?`comment`:`none`);if(r.llmError==null)return B(`Agent execution failed with exit code ${r.exitCode}`),p(r.exitCode,r.commentsPosted>0?`comment`:`none`);s.info(`Agent failed with recoverable LLM error`,{error:r.llmError.message,type:r.llmError.type,durationMs:d});let m=Hu(t);if(Uu(m))return p(0,await ed(t,m,$t(r.llmError),i,s)?`comment`:`none`);{s.warning(`Cannot post error comment: missing target context`),s.error(`Agent execution failed with no delivery surface to report it`,{type:r.llmError.type,error:r.llmError.message,suggestedAction:r.llmError.suggestedAction});let e=`Agent execution failed with a recoverable LLM error, and no delivery surface was available to report it.`;return B(r.llmError.type===`model_not_found`?`${e} Cause: ${r.llmError.message} ${r.llmError.suggestedAction??``}`.trim():e),p(r.exitCode===0?1:r.exitCode)}}function nd(e){let t=/^\s*##\s+Verdict:\s+(\S+)/gm,n=/* @__PURE__ */ new Set([`PASS`,`CONDITIONAL`,`REJECT`]),r=/* @__PURE__ */ new Set,i=t.exec(e);for(;i!==null;){let a=i[1];if(a!==void 0){if(!n.has(a))return null;r.add(a)}i=t.exec(e)}if(r.size===0||r.size>1)return null;let[a]=r;return a}function rd(e){let{verdict:t,alreadyApprovedAtHead:n,verdictBelongsToRun:r,headMatches:i}=e;return t===null?{action:`skip`,reason:`no-verdict`}:t===`PASS`?n===!0?{action:`skip`,reason:`already-approved`}:r===!1?{action:`skip`,reason:`stale-or-not-this-run`}:i===!1?{action:`skip`,reason:`stale-head`}:{action:`approve`}:{action:`skip`,reason:`not-pass`}}function id(e,t){return e.user!=null&&e.user.login===t&&e.user.type===`Bot`}async function ad(e,t){let{octokit:n,botLogin:r,owner:i,repo:a,prNumber:o,isPullRequestReviewTrigger:s,responseModeIsGithub:c,agentSucceeded:l,runStartMs:u,isFileConventionDelivery:d,knownExecutionVeto:f,receipt:p}=e;if(d===!0)return{reconciled:!1,reason:`finalize-owns-response`};if(s===!1)return{reconciled:!1,reason:`not-pr-review-trigger`};if(o==null)return{reconciled:!1,reason:`no-pr-number`};if(c===!1)return{reconciled:!1,reason:`response-mode-not-github`};if(l===!1)return{reconciled:!1,reason:`agent-failed`};if(r==null||r.length===0)return{reconciled:!1,reason:`no-bot-login`};if(f===!0)return t.info(`Review reconciliation: skipping, known execution veto`,{prNumber:o}),{reconciled:!1,reason:`known-execution-veto`};t.info(`Review reconciliation: phase entered`,{prNumber:o});try{let e=await Xl({octokit:n,owner:i,repo:a,prNumber:o,botLogin:r,event:`APPROVE`},t);if(e.allowed===!1)return{reconciled:!1,reason:e.reason};let s=e.currentHeadSha,c=(await n.rest.pulls.listReviews({owner:i,repo:a,pull_number:o,per_page:100})).data,l=c.some(e=>id(e,r)&&e.state===`APPROVED`&&e.commit_id===s),d=new Date(u).toISOString(),f=c.filter(e=>id(e,r)&&e.submitted_at!=null&&e.submitted_at>=d);f.sort((e,t)=>{let n=e.submitted_at??``;return(t.submitted_at??``).localeCompare(n)});let m=f[0]??null;if(m==null)return t.info(`Review reconciliation: no qualifying bot review found this run`,{prNumber:o}),{reconciled:!1,reason:`no-bot-review`};let h=m.body??null,g=m.commit_id===s,_=rd({verdict:h==null?null:nd(h),alreadyApprovedAtHead:l,verdictBelongsToRun:!0,headMatches:g});if(_.action===`skip`)return t.info(`Review reconciliation: skipping`,{prNumber:o,reason:_.reason}),{reconciled:!1,reason:_.reason};let v=await Zl({octokit:n,owner:i,repo:a,prNumber:o,event:`APPROVE`,body:`Approving to match the review verdict above.`,currentHeadSha:s,...p==null?{}:{receipt:{ops:p.ops,identity:{repo:`${i}/${a}`,runId:p.runId,prNumber:o},attempt:p.runAttempt}}},t);return v.submitted===!1?{reconciled:!1,reason:v.reason}:(t.info(`Review reconciliation: APPROVE submitted successfully`,{prNumber:o}),{reconciled:!0,reason:`approved`})}catch(e){let n=V(e);return t.warning(`Review reconciliation: error during phase, no-oping`,{prNumber:o,error:n}),{reconciled:!1,reason:`error`}}}function od(e){switch(e){case`issue_comment`:return`issue_comment`;case`discussion`:case`discussion_comment`:return`discussion_comment`;case`workflow_dispatch`:return`workflow_dispatch`;case`issues`:return`issues`;case`pull_request`:return`pull_request`;case`pull_request_review_comment`:return`pull_request_review_comment`;case`schedule`:return`schedule`;default:return`unsupported`}}function sd(e,t){switch(e){case`issue_comment`:{let e=t;return{type:`issue_comment`,action:e.action,issue:{number:e.issue.number,title:e.issue.title,body:e.issue.body??null,locked:e.issue.locked??!1,isPullRequest:e.issue.pull_request!=null},comment:{id:e.comment.id,body:e.comment.body,author:e.comment.user.login,authorAssociation:e.comment.author_association??`NONE`}}}case`discussion_comment`:{let e=t;return{type:`discussion_comment`,action:e.action,discussion:{number:e.discussion.number,title:e.discussion.title,body:e.discussion.body??null,locked:e.discussion.locked??!1},comment:{id:e.comment.id,body:e.comment.body??null,author:e.comment.user.login,authorAssociation:e.comment.author_association??`NONE`}}}case`issues`:{let e=t;return{type:`issues`,action:e.action,issue:{number:e.issue.number,title:e.issue.title,body:e.issue.body??null,locked:e.issue.locked??!1,authorAssociation:e.issue.author_association??`NONE`},sender:{login:e.sender.login}}}case`pull_request`:{let e=t,n=e.pull_request.requested_reviewers??[],r=`requested_reviewer`in e&&e.requested_reviewer!=null?{login:e.requested_reviewer.login,type:e.requested_reviewer.type}:null,i=`requested_team`in e&&e.requested_team!=null?{name:e.requested_team.name,slug:e.requested_team.slug}:null,a=n.flatMap(e=>`login`in e&&`type`in e?[{login:e.login,type:e.type}]:[]),o=(e.pull_request.labels??[]).flatMap(e=>typeof e.name==`string`&&e.name!==``?[e.name]:[]);return{type:`pull_request`,action:e.action,requestedReviewer:r,requestedTeam:i,pullRequest:{number:e.pull_request.number,title:e.pull_request.title,body:e.pull_request.body??null,locked:e.pull_request.locked??!1,draft:e.pull_request.draft??!1,authorAssociation:e.pull_request.author_association??`NONE`,requestedReviewers:a,labels:o},sender:{login:e.sender.login}}}case`pull_request_review_comment`:{let e=t;return{type:`pull_request_review_comment`,action:e.action,pullRequest:{number:e.pull_request.number,title:e.pull_request.title,locked:e.pull_request.locked??!1},comment:{id:e.comment.id,body:e.comment.body,author:e.comment.user.login,authorAssociation:e.comment.author_association,path:e.comment.path,line:e.comment.line??null,diffHunk:e.comment.diff_hunk,commitId:e.comment.commit_id}}}case`workflow_dispatch`:return{type:`workflow_dispatch`,inputs:{prompt:t.inputs?.prompt??void 0}};case`schedule`:return{type:`schedule`,schedule:t.schedule??void 0};case`unsupported`:return{type:`unsupported`}}}function cd(e){let t=vt,n=od(t.eventName),r=sd(n,t.payload);return e.debug(`Parsed GitHub context`,{eventName:t.eventName,eventType:n,repo:`${t.repo.owner}/${t.repo.repo}`}),{eventName:t.eventName,eventType:n,repo:t.repo,ref:t.ref,sha:t.sha,runId:t.runId,actor:t.actor,payload:t.payload,event:r}}function ld(e,t){if(t.length===0)return!1;let n=t.replace(/\[bot\]$/i,``);return n.length!==0&&new RegExp(String.raw`@${ud(n)}(?:\[bot\])?(?:$|[^\w])`,`i`).test(e)}function ud(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)}function dd(e,t){if(t.length===0)return null;let n=t.replace(/\[bot\]$/i,``);if(n.length===0)return null;let r=new RegExp(String.raw`@${ud(n)}(?:\[bot\])?\s*(.*)`,`is`).exec(e)?.[1];if(r==null)return null;let i=r.trim();if(i.length===0)return{raw:``,action:null,args:``};let a=i.split(/\s+/),o=a[0]??``;return{raw:i,action:o===``?null:o,args:a.slice(1).join(` `)}}function fd(e,t){if(t==null||t===``||e==null)return{hasMention:!1,command:null};let n=ld(e,t);return{hasMention:n,command:n?dd(e,t):null}}function pd(e,t){if(e.type!==`issue_comment`)throw Error(`Event type must be issue_comment`);let n={login:e.comment.author,association:e.comment.authorAssociation,isBot:Va(e.comment.author)},r={kind:e.issue.isPullRequest?`pr`:`issue`,number:e.issue.number,title:e.issue.title,body:e.comment.body??null,locked:e.issue.locked},{hasMention:i,command:a}=fd(e.comment.body,t);return{action:e.action,author:n,target:r,commentBody:e.comment.body,commentId:e.comment.id,hasMention:i,command:a,isBotReviewRequested:!1}}function md(e,t){if(e.type!==`discussion_comment`)throw Error(`Event type must be discussion_comment`);let n={login:e.comment.author,association:e.comment.authorAssociation,isBot:Va(e.comment.author)},r=e.comment.body??null,i={kind:`discussion`,number:e.discussion.number,title:e.discussion.title,body:r??e.discussion.body??null,locked:e.discussion.locked},{hasMention:a,command:o}=fd(r,t);return{action:e.action,author:n,target:i,commentBody:r,commentId:e.comment.id,hasMention:a,command:o,isBotReviewRequested:!1}}function hd(e,t){if(e.type!==`pull_request_review_comment`)throw Error(`Event type must be pull_request_review_comment`);let n={login:e.comment.author,association:e.comment.authorAssociation,isBot:Va(e.comment.author)},r={kind:`pr`,number:e.pullRequest.number,title:e.pullRequest.title,body:e.comment.body,locked:e.pullRequest.locked,path:e.comment.path,line:e.comment.line??void 0,diffHunk:e.comment.diffHunk,commitId:e.comment.commitId},{hasMention:i,command:a}=fd(e.comment.body,t);return{action:e.action,author:n,target:r,commentBody:e.comment.body,commentId:e.comment.id,hasMention:i,command:a,isBotReviewRequested:!1}}function gd(e,t,n){if(e.type!==`workflow_dispatch`)throw Error(`Event type must be workflow_dispatch`);let r=(n??e.inputs?.prompt??``).trim();return{action:null,author:{login:t,association:`OWNER`,isBot:!1},target:{kind:`manual`,number:0,title:`Manual workflow dispatch`,body:r===``?null:r,locked:!1},commentBody:r===``?null:r,commentId:null,hasMention:!1,command:null,isBotReviewRequested:!1}}function _d(e,t,n){let r=n?.trim()??``;return{action:null,author:{login:t,association:`OWNER`,isBot:!1},target:{kind:`manual`,number:0,title:`Scheduled workflow`,body:r===``?null:r,locked:!1},commentBody:r===``?null:r,commentId:null,hasMention:!1,command:null,isBotReviewRequested:!1}}function vd(e){return e.toLowerCase().replace(/\[bot\]$/i,``)}function yd(e,t){if(e.type!==`pull_request`||t==null||t===``)return!1;let n=vd(t);if(n===``)return!1;if(e.action===`review_requested`){let t=e.requestedReviewer?.login;return t!=null&&vd(t)===n}return e.action===`ready_for_review`&&e.pullRequest.requestedReviewers.some(e=>vd(e.login)===n)}function bd(e,t){if(e.type!==`issues`)throw Error(`Event type must be issues`);let n={login:e.sender.login,association:e.issue.authorAssociation,isBot:Va(e.sender.login)},r={kind:`issue`,number:e.issue.number,title:e.issue.title,body:e.issue.body,locked:e.issue.locked},{hasMention:i,command:a}=fd(e.issue.body??``,t);return{action:e.action,author:n,target:r,commentBody:e.issue.body,commentId:null,hasMention:i,command:a,isBotReviewRequested:!1}}function xd(e,t){if(e.type!==`pull_request`)throw Error(`Event type must be pull_request`);let n={login:e.sender.login,association:e.pullRequest.authorAssociation,isBot:Va(e.sender.login)},r={kind:`pr`,number:e.pullRequest.number,title:e.pullRequest.title,body:e.pullRequest.body,locked:e.pullRequest.locked,isDraft:e.pullRequest.draft,requestedReviewerLogin:e.requestedReviewer?.login,requestedTeamSlug:e.requestedTeam?.slug,requestedReviewerLogins:e.pullRequest.requestedReviewers.map(e=>e.login),labels:e.pullRequest.labels},{hasMention:i,command:a}=fd(e.pullRequest.body??``,t);return{action:e.action,author:n,target:r,commentBody:e.pullRequest.body,commentId:null,hasMention:i,command:a,isBotReviewRequested:yd(e,t)}}function Sd(e,t){return{...e,action:t.action,author:t.author,target:t.target,commentBody:t.commentBody,commentId:t.commentId,hasMention:t.hasMention,command:t.command,isBotReviewRequested:t.isBotReviewRequested}}function Cd(e,t,n){let r={eventType:e.eventType,eventName:e.eventName,repo:e.repo,ref:e.ref,sha:e.sha,runId:e.runId,actor:e.actor,raw:e};switch(e.eventType){case`issue_comment`:return Sd(r,pd(e.event,t));case`discussion_comment`:return Sd(r,md(e.event,t));case`workflow_dispatch`:return Sd(r,gd(e.event,e.actor,n));case`issues`:return Sd(r,bd(e.event,t));case`pull_request`:return Sd(r,xd(e.event,t));case`pull_request_review_comment`:return Sd(r,hd(e.event,t));case`schedule`:return Sd(r,_d(e.event,e.actor,n));case`unsupported`:return{...r,action:null,author:null,target:null,commentBody:null,commentId:null,hasMention:!1,command:null,isBotReviewRequested:!1}}}function wd(e,t,n){let{targetLabel:r,actionLabel:i}=n;return e.action===`created`?e.target?.locked===!0?{shouldSkip:!0,reason:`issue_locked`,message:`${r} is locked`}:e.author!=null&&e.author.isBot?{shouldSkip:!0,reason:`self_comment`,message:`Comments from bots (${e.author.login}) are not processed`}:e.author!=null&&!Ba(e.author.association,t.allowedAssociations)?{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`}:t.requireMention&&!e.hasMention?{shouldSkip:!0,reason:`no_mention`,message:`Comment does not mention the bot`}:{shouldSkip:!1}:{shouldSkip:!0,reason:`action_not_created`,message:`${i} action is '${e.action}', not 'created'`}}function Td(e,t){return wd(e,t,{targetLabel:`Issue or PR`,actionLabel:`Comment`})}function Ed(e,t){return wd(e,t,{targetLabel:`Discussion`,actionLabel:`Discussion comment`})}const Dd=[`opened`,`edited`];function Od(e){return Dd.includes(e)}function kd(e,t){let n=e.action;return n==null||!Od(n)?{shouldSkip:!0,reason:`action_not_supported`,message:`Issues action '${n}' is not supported (only 'opened' and 'edited')`}:e.author!=null&&e.author.isBot?{shouldSkip:!0,reason:`self_comment`,message:`Issues from bots (${e.author.login}) are not processed`}:e.author!=null&&!Ba(e.author.association,t.allowedAssociations)?{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`}:n===`edited`&&!e.hasMention?{shouldSkip:!0,reason:`no_mention`,message:`Issue edit does not mention the bot`}:e.target?.locked===!0?{shouldSkip:!0,reason:`issue_locked`,message:`Issue is locked`}:{shouldSkip:!1}}function Ad(e){return(e.promptInput?.trim()??``)===``?{shouldSkip:!0,reason:`prompt_required`,message:`Schedule trigger requires prompt input`}:{shouldSkip:!1}}function jd(e){return(e.commentBody?.trim()??``)===``?{shouldSkip:!0,reason:`prompt_required`,message:`Workflow dispatch requires prompt input`}:{shouldSkip:!1}}const Md=[`opened`,`synchronize`,`reopened`,`ready_for_review`,`review_requested`];function Nd(e){return Md.includes(e)}function Pd(e,t){let n=e.action;if(n==null||!Nd(n))return{shouldSkip:!0,reason:`action_not_supported`,message:`Pull request action '${n}' is not supported`};if(e.action!==`review_requested`&&e.action!==`ready_for_review`&&e.author!=null&&e.author.isBot)return{shouldSkip:!0,reason:`self_comment`,message:`Pull requests from bots (${e.author.login}) are not processed`};if(e.author!=null&&!Ba(e.author.association,t.allowedAssociations))return{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`};if(t.skipDraftPRs&&e.target?.isDraft===!0)return{shouldSkip:!0,reason:`draft_pr`,message:`Pull request is a draft`};if(e.target?.locked===!0)return{shouldSkip:!0,reason:`issue_locked`,message:`Pull request is locked`};if(t.botLogin!=null&&t.botLogin!==``&&(e.action===`ready_for_review`||e.action===`review_requested`)&&e.isBotReviewRequested!==!0)return{shouldSkip:!0,reason:`bot_not_requested`,message:`Pull request action '${e.action}' did not request review from the bot`};if(t.reviewSkipLabel!=null){let n=t.reviewSkipLabel.trim().toLowerCase();if(n===``)return{shouldSkip:!1};let r=(e.target?.labels??[]).some(e=>e.toLowerCase()===n),i=e.hasMention===!0&&e.action!==`ready_for_review`&&e.action!==`review_requested`||e.action===`review_requested`&&e.isBotReviewRequested===!0;if(r&&!i)return{shouldSkip:!0,reason:`review_skip_label`,message:`Pull request has the opt-out label '${t.reviewSkipLabel}'`}}return{shouldSkip:!1}}function Fd(e,t){let n=e.action;return n===`created`?e.target?.locked===!0?{shouldSkip:!0,reason:`issue_locked`,message:`Pull request is locked`}:e.author!=null&&e.author.isBot?{shouldSkip:!0,reason:`self_comment`,message:`Review comments from bots (${e.author.login}) are not processed`}:e.author!=null&&!Ba(e.author.association,t.allowedAssociations)?{shouldSkip:!0,reason:`unauthorized_author`,message:`Author association '${e.author.association}' is not authorized`}:t.requireMention&&!e.hasMention?{shouldSkip:!0,reason:`no_mention`,message:`Review comment does not mention the bot`}:{shouldSkip:!1}:{shouldSkip:!0,reason:`action_not_created`,message:`Review comment action '${n}' is not supported (only 'created')`}}function Id(e){return{shouldSkip:!0,reason:`unsupported_event`,message:`Unsupported event type: ${e}`}}function Ld(e,t,n){if(e.eventType===`unsupported`)return n.debug(`Skipping unsupported event`,{eventName:e.eventName}),Id(e.eventName);switch(e.eventType){case`issue_comment`:return Td(e,t);case`discussion_comment`:return Ed(e,t);case`issues`:return kd(e,t);case`pull_request`:return Pd(e,t);case`pull_request_review_comment`:return Fd(e,t);case`schedule`:return Ad(t);case`workflow_dispatch`:return jd(e);default:return{shouldSkip:!1}}}function Rd(e,t,n={}){let r={...Ha,...n},i=Cd(e,r.botLogin,r.promptInput);r.senderAssociation!=null&&(i.action===`review_requested`||i.action===`ready_for_review`)&&i.author!=null&&(i={...i,author:{...i.author,association:r.senderAssociation}}),t.debug(`Routing event`,{eventName:e.eventName,eventType:e.eventType,hasMention:i.hasMention});let a=Ld(i,r,t);return a.shouldSkip?{shouldProcess:!1,skipReason:a.reason,skipMessage:a.message,context:i}:{shouldProcess:!0,context:i}}function zd(e,t){try{Ke(`Fro Bot skipped this event (${e}): ${t}`,{title:`Fro Bot skipped event`})}catch{}}async function Bd(e,t){let n=M({phase:`context`}),r=cd(n),i=Zo({token:e.inputs.githubToken,logger:n}),a=await Qo(i,n),o=null;if(r.event.type===`pull_request`&&(r.event.action===`review_requested`||r.event.action===`ready_for_review`)){let{owner:e,repo:t}=r.repo;o=await $r(i,e,t,r.event.sender.login,n)}let s=M({phase:`trigger`}),c=Rd(r,s,{botLogin:a,requireMention:!0,promptInput:e.inputs.prompt,senderAssociation:o,reviewSkipLabel:e.inputs.reviewSkipLabel});return c.shouldProcess?(s.info(`Event routed for processing`,{eventType:c.context.eventType,hasMention:c.context.hasMention,command:c.context.command?.action??null}),H(z.SHOULD_SAVE_CACHE,`true`),{githubClient:i,triggerResult:c,agentContext:await gi({logger:n,octokit:i,triggerContext:c.context,botLogin:a}),botLogin:a}):(s.info(`Skipping event`,{reason:c.skipReason,message:c.skipMessage}),zd(c.skipReason,c.skipMessage),{skipped:!0,skipReason:c.skipReason,skipMessage:c.skipMessage})}async function Vd(){let e=Date.now(),t=M({phase:`bootstrap`}),n=Es();n.start();let r=null,i=0,a=null,o=null,s=null,c=null,l=``,u=``,d=null,f=null,m=null,h=!1,g,_=`omitted`,v=!1,y={enabled:!1,bucket:``,region:``,prefix:``},b=!1,x=!1,S=null,C=null,w=null,T=`pending`,E=null,D=()=>({requested:_,resolved:null}),O=e=>{nc({sessionId:null,resolvedOutputMode:null,outputModeMigration:D(),deliveryKind:`none`,cacheStatus:`miss`,duration:e})};H(z.SHOULD_SAVE_CACHE,`false`),H(z.CACHE_SAVED,`not-persisted`);try{t.info(`Starting Fro Bot Agent`),_=Dl();let D=await Ac(t);if(D==null)return T=`failed`,O(Date.now()-e),1;s=D.opencodeResult.version,y=D.inputs.storeConfig,d=D.inputs.sessionRetention,w=D.inputs.responseMode;let k=await Bd(D,e);if(`skipped`in k)return T=`skipped`,E={reason:k.skipReason,message:k.skipMessage},O(Date.now()-e),0;a=k.githubClient,S=k.triggerResult.context,l=`${k.triggerResult.context.repo.owner}/${k.triggerResult.context.repo.repo}`,u=k.agentContext.runId;let A=As(y,M({phase:`review-delivery-receipt`})),ee=oe(),te=await xl(D.inputs.dedupWindow,k.triggerResult.context,l,e);if(!te.shouldProceed)return T=`skipped`,O(Date.now()-e),0;C=te.entity;let j=await Ze({storeConfig:y,repo:l,runId:u,runAttempt:oe(),jobIdentity:se()});switch(j.outcome){case`acquired`:f=j.lockEtag,m=j.renewal;break;case`held-by-other`:return t.info(`Skipping run — Action coordination lock held, or expired non-Action lease unconfirmed`,{heldBy:j.holder?.holder_id??null,surface:j.holder?.surface??null}),T=`skipped`,O(Date.now()-e),h=!0,H(z.SHOULD_SAVE_CACHE,`false`),await sl({githubClient:k.githubClient,triggerContext:k.triggerResult.context,holder:j.holder,reason:j.reason,responseMode:D.inputs.responseMode,logger:t}),0;case`error`:return T=`failed`,O(Date.now()-e),h=!0,H(z.SHOULD_SAVE_CACHE,`false`),B(`Action coordination lock unavailable; refusing to run without it: ${j.error.message}`),1}r=await cc(k,D.logger);let ne=await Ic(D,n);if(ne==null)return T=`failed`,O(Date.now()-e),1;c=ne.serverHandle;let re=await El(D,k,ne,n);o=re.attachmentResult;let ie=await Al(D,k,ne,re,n,e);g=ie.ownershipLedger,b=ie.observationGap===!0;let ae=M({phase:`drain`}),N=await Ll({ledger:ie.ownershipLedger,client:ne.serverHandle.client,parentSessionId:ie.sessionId,directory:p(),deadlineMs:Nl(D.inputs.timeoutMs,ie.executionDurationMs),logger:ae});N.expired&&ae.warning(`Drain deadline reached before owned work settled; run reports incomplete`,{cancelledCount:N.cancelledCount,settledCount:N.settledCount,unknownCount:N.unknownCount}),x=N.unknownCount>0||ie.recoveryBoundaryUnresolved===!0;let P=b||x,ce=M({phase:`review-reconciliation`}),F=k.triggerResult.context,I=F.eventType===`pull_request`,le=F.target!=null&&F.target.kind===`pr`?F.target.number:null;await ad({octokit:k.githubClient,botLogin:k.botLogin,owner:F.repo.owner,repo:F.repo.repo,prNumber:le,isPullRequestReviewTrigger:I,responseModeIsGithub:D.inputs.responseMode===`github`,agentSucceeded:ie.success,runStartMs:e,isFileConventionDelivery:D.delivery===`file-convention`,knownExecutionVeto:P,receipt:{ops:A,runId:u,runAttempt:ee}},ce),n.end(),v=!0,i=(await td(D,k,ne,ie,n,e,D.logger,{knownExecutionVeto:P,reviewDeliveryReceiptOps:A})).exitCode}catch(r){i=1;let a=Date.now()-e,o=r instanceof Error?r.name:`UnknownError`,s=V(r);n.recordError(o,s,!1),n.end(),v===!1&&O(a),r instanceof Error?(t.error(`Agent failed`,{error:r.message}),B(r.message)):(t.error(`Agent failed with unknown error`),B(`An unknown error occurred`))}finally{let e=await Zc({bootstrapLogger:t,reactionCtx:r,githubClient:a,attachmentResult:o,serverHandle:c,sessionRetention:d,detectedOpencodeVersion:s,storeConfig:y,metrics:n,agentIdentity:`github`,repo:l,runId:u,lockEtag:f,ownershipLedger:g,leaseRenewal:m,skipSessionPersistence:h}),p,_=[];if(T===`skipped`)p=`skipped`;else{let t={observationGap:b,ownershipUnresolved:x,quiescenceConfirmed:e.quiescenceConfirmed,continuityUnverified:e.continuityUnverified},n=sc({deliverySucceeded:T!==`failed`&&i===0,verification:t});p=n.outcome,_=n.incompleteReasons,p===`incomplete`&&i===0&&(i=1)}p===`succeeded`&&C!=null&&S!=null&&await Sl(S,C,l),r!=null&&a!=null&&p!==`skipped`&&await ao(a,r,p,t),ic(p),await me(p,_,t,E??void 0),a!=null&&S!=null&&w!=null&&await ul({githubClient:a,triggerContext:S,outcome:p,responseMode:w,logger:t})}return i}await Vd().then(e=>{U.exit(e)});export{}; \ No newline at end of file From ac57c68159a32344a863eb717abc5c93b668a819 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Thu, 29 Oct 2026 09:17:43 -0700 Subject: [PATCH 7/9] fix(runtime): trim the V2 client base URL without a polynomial regex --- .../runtime/src/agent/remote-client-v2.test.ts | 16 ++++++++++++++++ packages/runtime/src/agent/remote-client-v2.ts | 8 +++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/runtime/src/agent/remote-client-v2.test.ts b/packages/runtime/src/agent/remote-client-v2.test.ts index 97f1bd3534..2a4c5cfc89 100644 --- a/packages/runtime/src/agent/remote-client-v2.test.ts +++ b/packages/runtime/src/agent/remote-client-v2.test.ts @@ -78,6 +78,22 @@ describe('createRemoteOpenCodeV2Client', () => { expect(requests[0]?.headers.authorization).toBe('Bearer secret-token') }) + it('trims every trailing slash from the base URL in linear time', async () => { + // #given — a base URL ending in a long run of slashes + const {fetch, requests} = makeFetch(() => json(200, {data: {id: 'ses_1'}})) + const client = createRemoteOpenCodeV2Client({ + baseUrl: `http://workspace:9200${'/'.repeat(100_000)}`, + headers: AUTH, + fetch, + }) + + // #when + await client.createSession({directory: '/workspace/repo'}) + + // #then + expect(requests[0]?.url).toBe('http://workspace:9200/api/session') + }) + it('reports a 401 as an auth failure and never carries the body', async () => { // #given — the 401 body is always the same shape and says nothing about why const {fetch} = makeFetch(() => json(401, {_tag: 'UnauthorizedError', message: 'Authentication required'})) diff --git a/packages/runtime/src/agent/remote-client-v2.ts b/packages/runtime/src/agent/remote-client-v2.ts index 9931067ad0..36320afa83 100644 --- a/packages/runtime/src/agent/remote-client-v2.ts +++ b/packages/runtime/src/agent/remote-client-v2.ts @@ -244,8 +244,14 @@ async function* readFrames(response: Response, signal: AbortSignal | undefined): } } +function trimTrailingSlashes(value: string): string { + let end = value.length + while (end > 0 && value.charCodeAt(end - 1) === 0x2f) end-- + return value.slice(0, end) +} + export function createRemoteOpenCodeV2Client(options: RemoteOpenCodeV2ClientOptions): RemoteOpenCodeV2Client { - const baseUrl = options.baseUrl.replace(/\/+$/, '') + const baseUrl = trimTrailingSlashes(options.baseUrl) const baseHeaders = options.headers ?? {} const doFetch = options.fetch ?? fetch From 65aa2e4c3dd149bbcb1bc77b152c206e6a960a43 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Thu, 29 Oct 2026 10:30:38 -0700 Subject: [PATCH 8/9] refactor(gateway): release V2 runs on directory quiescence A V2 run is released by its directory, not by its own accounting. Stock v2.2.0 gives no way to prove that nothing the run started can still wake a session: a shell's DELETE wakes its owner, a notice is admitted and the wake starts in a separate step, and an interrupt reply is a delivery receipt. The checkout is released after the directory shows no active session, no running shell and no queued inbox item for 11 readings 500 ms apart. Every success waits for that window, and a stop repeats kill, interrupt and read until it passes or the bound ends it, then quarantines. A move of an owned session always quarantines. A reading is bounded so its cost does not grow with the workspace's history: - Active sessions are placed with GET /api/session/:id, not by listing the directory. - Inboxes are read for the run's root, the sessions it owns, and sessions updated since the run began less 10 minutes. Admitting an inbox item bumps time.updated, so a notice queued during the run always lands inside the bound. The list is read newest-first and the walk stops at the cut-off, so the page bound applies to recent sessions only. - The acquire check uses the same placement of active sessions. Also folds in the provider.auth and CRLF fixes and the documented relaxed invariant in packages/gateway/AGENTS.md. --- ...ifact-btV3Nd6h.js => artifact-evjF_miE.js} | 442 ++++----- dist/main.js | 30 +- dist/post.js | 2 +- packages/gateway/AGENTS.md | 18 + .../src/execute/drain-completion-v2.test.ts | 370 +++---- .../src/execute/drain-completion-v2.ts | 138 +-- .../src/execute/provider-failure-v2.test.ts | 39 + .../src/execute/provider-failure-v2.ts | 9 +- .../src/execute/repo-quiescence-v2.test.ts | 20 +- .../gateway/src/execute/repo-quiescence-v2.ts | 20 +- .../gateway/src/execute/root-stop-v2.test.ts | 530 +++++----- packages/gateway/src/execute/root-stop-v2.ts | 238 ++--- .../src/execute/run-core-v2.drain.test.ts | 181 ++-- .../src/execute/run-core-v2.e2e.test.ts | 5 +- .../src/execute/run-core-v2.fixture.ts | 76 +- .../execute/run-core-v2.root-abort.test.ts | 75 +- .../src/execute/run-core-v2.shell.test.ts | 478 ++++----- .../gateway/src/execute/run-core-v2.test.ts | 44 +- packages/gateway/src/execute/run-core-v2.ts | 385 +++----- .../execute/settle-owned-sessions-v2.test.ts | 923 +++++++----------- .../src/execute/settle-owned-sessions-v2.ts | 352 ++----- .../src/execute/shell-server-v2.fixture.ts | 31 +- .../src/agent/directory-quiescence-v2.test.ts | 854 ++++++++++++++++ .../src/agent/directory-quiescence-v2.ts | 457 +++++++++ packages/runtime/src/agent/index.ts | 50 +- .../src/agent/ledger-reconcile-v2.test.ts | 174 ++-- .../runtime/src/agent/ledger-reconcile-v2.ts | 82 +- .../src/agent/remote-client-v2.test.ts | 139 +++ .../runtime/src/agent/remote-client-v2.ts | 37 +- .../runtime/src/agent/shell-jobs-v2.test.ts | 235 +---- packages/runtime/src/agent/shell-jobs-v2.ts | 174 +--- 31 files changed, 3794 insertions(+), 2814 deletions(-) rename dist/{artifact-btV3Nd6h.js => artifact-evjF_miE.js} (66%) create mode 100644 packages/gateway/src/execute/provider-failure-v2.test.ts create mode 100644 packages/runtime/src/agent/directory-quiescence-v2.test.ts create mode 100644 packages/runtime/src/agent/directory-quiescence-v2.ts diff --git a/dist/artifact-btV3Nd6h.js b/dist/artifact-evjF_miE.js similarity index 66% rename from dist/artifact-btV3Nd6h.js rename to dist/artifact-evjF_miE.js index fdf44ab8c9..0357258d43 100644 --- a/dist/artifact-btV3Nd6h.js +++ b/dist/artifact-evjF_miE.js @@ -1,16 +1,16 @@ -import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-Dlfrvzb7.js";import{i as o,r as s,t as c}from"./client-BuN0IqFT.js";import{$n as l,An as u,Bn as d,Cn as f,Cr as p,Ct as m,Dn as h,Dt as g,Et as v,F as y,Fn as b,G as x,Hn as S,I as C,It as w,Jn as T,K as E,Kn as D,Kt as O,L as k,Lt as A,Mn as j,Nt as M,On as N,Ot as P,Pn as F,Q as I,Qt as ee,Rn as L,Tn as R,Tt as te,U as ne,Ut as re,V as ie,Vt as z,W as ae,Wn as oe,X as se,Xn as ce,Y as le,Yt as ue,_n as de,_r as fe,at as pe,bn as me,bt as he,cr as ge,dn as _e,en as ve,er as ye,et as be,fn as xe,fr as Se,ft as Ce,gr as we,gt as Te,hn as Ee,ir as De,jt as Oe,kt as ke,ln as Ae,lt as je,mr as Me,mt as Ne,n as Pe,nn as Fe,nr as Ie,nt as Le,on as Re,or as ze,ot as Be,pn as Ve,q as He,qn as Ue,qt as We,rn as Ge,rt as Ke,sn as qe,t as Je,tn as Ye,tt as Xe,ur as Ze,ut as Qe,vn as $e,wn as et,xr as tt,xt as nt,yr as rt,yt as it,z as at,zn as ot,zt as st}from"./event-streams-BzoYgVLv.js";import{t as ct}from"./dist-cjs-COfBbO4D.js";import{$ as lt,C as ut,F as dt,H as ft,J as pt,K as mt,L as ht,N as gt,O as _t,S as vt,T as yt,V as bt,W as xt,Z as St,_ as Ct,b as wt,c as Tt,et as Et,i as Dt,j as Ot,k as kt,n as At,nt as jt,o as Mt,p as Nt,r as Pt,s as Ft,t as It,u as Lt,w as Rt,z as zt}from"./serde-rz2OE_pF.js";import{$ as Bt,B as Vt,C as Ht,E as Ut,H as Wt,I as Gt,J as Kt,K as qt,N as Jt,O as Yt,P as Xt,W as Zt,X as Qt,Z as $t,_ as en,a as tn,b as nn,f as rn,g as an,h as on,j as sn,k as cn,l as ln,m as un,n as dn,r as fn,t as pn,tt as mn,x as hn,z as gn}from"./serde-BzaiL1X6.js";import{B as _n,C as vn,F as yn,H as bn,L as xn,N as Sn,O as Cn,Q as wn,S as Tn,T as En,W as Dn,X as On,Y as kn,_ as An,b as jn,c as Mn,i as Nn,j as Pn,k as Fn,n as In,o as Ln,p as Rn,q as zn,r as Bn,s as Vn,t as Hn,u as Un,w as Wn,z as Gn}from"./serde-B9ozA8s3.js";import{createRequire as Kn}from"node:module";import qn,{env as Jn,versions as B}from"node:process";import*as Yn from"os";import Xn,{EOL as Zn}from"os";import*as Qn from"crypto";import*as $n from"fs";import{constants as er,existsSync as tr,promises as nr,readFileSync as rr,writeFileSync as ir}from"fs";import*as V from"path";import{normalize as ar,resolve as or}from"path";import*as sr from"http";import*as cr from"https";import*as lr from"events";import{EventEmitter as ur}from"events";import dr,{ok as fr}from"assert";import*as pr from"util";import mr,*as eee from"node:net";import hr from"node:http";import gr,{Readable as _r,Transform as vr}from"node:stream";import yr,{inspect as br}from"node:util";import xr,{Buffer as Sr}from"node:buffer";import Cr from"node:zlib";import{createHash as wr,createHmac as Tr,randomUUID as Er}from"node:crypto";import{DatabaseSync as Dr}from"node:sqlite";import{fileURLToPath as Or}from"node:url";import*as kr from"node:fs/promises";import{readFile as Ar}from"node:fs/promises";import*as jr from"node:path";import Mr,{dirname as Nr,join as Pr,sep as tee}from"node:path";import{StringDecoder as Fr}from"string_decoder";import*as nee from"child_process";import{setTimeout as ree}from"timers";import*as Ir from"node:fs";import Lr,{createReadStream as Rr,readFileSync as zr}from"node:fs";import{spawnSync as Br}from"node:child_process";import*as Vr from"node:os";import Hr,{EOL as Ur,homedir as Wr,platform as Gr,release as Kr}from"node:os";import{pipeline as qr}from"node:stream/promises";import Jr from"node:https";import*as Yr from"stream";import{Readable as Xr}from"stream";import{URL as Zr}from"url";import Qr from"node:tty";import*as $r from"buffer";import{Buffer as ei}from"buffer";import ti,{realpath as H}from"fs/promises";function ni(e){return e==null?``:typeof e==`string`||e instanceof String?e:JSON.stringify(e)}function ri(e){return Object.keys(e).length?{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}:{}}function ii(e,t,n){let r=new ai(e,t,n);process.stdout.write(r.toString()+Yn.EOL)}var ai=class{constructor(e,t,n){e||=`missing.command`,this.command=e,this.properties=t,this.message=n}toString(){let e=`::`+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=` `;let t=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let r=this.properties[n];r&&(t?t=!1:e+=`,`,e+=`${n}=${si(r)}`)}}return e+=`::${oi(this.message)}`,e}};function oi(e){return ni(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`)}function si(e){return ni(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`).replace(/:/g,`%3A`).replace(/,/g,`%2C`)}function ci(e,t){let n=process.env[`GITHUB_${e}`];if(!n)throw Error(`Unable to find environment variable for file command ${e}`);if(!$n.existsSync(n))throw Error(`Missing file at path: ${n}`);$n.appendFileSync(n,`${ni(t)}${Yn.EOL}`,{encoding:`utf8`})}function li(e,t){let n=`ghadelimiter_${Qn.randomUUID()}`,r=ni(t);if(e.includes(n))throw Error(`Unexpected input: name should not contain the delimiter "${n}"`);if(r.includes(n))throw Error(`Unexpected input: value should not contain the delimiter "${n}"`);return`${e}<<${n}${Yn.EOL}${r}${Yn.EOL}${n}`}function ui(e){let t=e.protocol===`https:`;if(di(e))return;let n=t?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(n)try{return new pi(n)}catch{if(!n.startsWith(`http://`)&&!n.startsWith(`https://`))return new pi(`http://${n}`)}else return}function di(e){if(!e.hostname)return!1;let t=e.hostname;if(fi(t))return!0;let n=process.env.no_proxy||process.env.NO_PROXY||``;if(!n)return!1;let r;e.port?r=Number(e.port):e.protocol===`http:`?r=80:e.protocol===`https:`&&(r=443);let i=[e.hostname.toUpperCase()];typeof r==`number`&&i.push(`${i[0]}:${r}`);for(let e of n.split(`,`).map(e=>e.trim().toUpperCase()).filter(e=>e))if(e===`*`||i.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(`.`)&&t.endsWith(`${e}`)))return!0;return!1}function fi(e){let t=e.toLowerCase();return t===`localhost`||t.startsWith(`127.`)||t.startsWith(`[::1]`)||t.startsWith(`[0:0:0:0:0:0:0:1]`)}var pi=class extends URL{constructor(e,t){super(e,t),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}},mi=/* @__PURE__ */ a((e=>{t(`net`);var n=t(`tls`),r=t(`http`),i=t(`https`),a=t(`events`);t(`assert`);var o=t(`util`);e.httpOverHttp=s,e.httpsOverHttp=c,e.httpOverHttps=l,e.httpsOverHttps=u;function s(e){var t=new d(e);return t.request=r.request,t}function c(e){var t=new d(e);return t.request=r.request,t.createSocket=f,t.defaultPort=443,t}function l(e){var t=new d(e);return t.request=i.request,t}function u(e){var t=new d(e);return t.request=i.request,t.createSocket=f,t.defaultPort=443,t}function d(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||r.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on(`free`,function(e,n,r,i){for(var a=p(n,r,i),o=0,s=t.requests.length;o=this.maxSockets?i.requests.push(a):i.createSocket(a,function(t){t.on(`free`,n),t.on(`close`,r),t.on(`agentRemove`,r),e.onSocket(t);function n(){i.emit(`free`,t,a)}function r(e){i.removeSocket(t),t.removeListener(`free`,n),t.removeListener(`close`,r),t.removeListener(`agentRemove`,r)}})},d.prototype.createSocket=function(e,t){var n=this,r={};n.sockets.push(r);var i=m({},n.proxyOptions,{method:`CONNECT`,path:e.host+`:`+e.port,agent:!1,headers:{host:e.host+`:`+e.port}});e.localAddress&&(i.localAddress=e.localAddress),i.proxyAuth&&(i.headers=i.headers||{},i.headers[`Proxy-Authorization`]=`Basic `+new Buffer(i.proxyAuth).toString(`base64`)),h(`making CONNECT request`);var a=n.request(i);a.useChunkedEncodingByDefault=!1,a.once(`response`,o),a.once(`upgrade`,s),a.once(`connect`,c),a.once(`error`,l),a.end();function o(e){e.upgrade=!0}function s(e,t,n){process.nextTick(function(){c(e,t,n)})}function c(i,o,s){if(a.removeAllListeners(),o.removeAllListeners(),i.statusCode!==200){h(`tunneling socket could not be established, statusCode=%d`,i.statusCode),o.destroy();var c=/* @__PURE__ */ Error(`tunneling socket could not be established, statusCode=`+i.statusCode);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r)}else if(s.length>0){h(`got illegal response body from proxy`),o.destroy();var c=/* @__PURE__ */ Error(`got illegal response body from proxy`);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r)}else return h(`tunneling connection has established`),n.sockets[n.sockets.indexOf(r)]=o,t(o)}function l(t){a.removeAllListeners(),h(`tunneling socket could not be established, cause=%s -`,t.message,t.stack);var i=/* @__PURE__ */ Error(`tunneling socket could not be established, cause=`+t.message);i.code=`ECONNRESET`,e.request.emit(`error`,i),n.removeSocket(r)}},d.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var n=this.requests.shift();n&&this.createSocket(n,function(e){n.request.onSocket(e)})}};function f(e,t){var r=this;d.prototype.createSocket.call(r,e,function(i){var a=e.request.getHeader(`host`),o=m({},r.options,{socket:i,servername:a?a.replace(/:.*$/,``):e.host}),s=n.connect(0,o);r.sockets[r.sockets.indexOf(i)]=s,t(s)})}function p(e,t,n){return typeof e==`string`?{host:e,port:t,localAddress:n}:e}function m(e){for(var t=1,n=arguments.length;t{t.exports=mi()})),gi=/* @__PURE__ */ a(((e,t)=>{t.exports={kClose:Symbol(`close`),kDestroy:Symbol(`destroy`),kDispatch:Symbol(`dispatch`),kUrl:Symbol(`url`),kRequestOrigin:Symbol(`request origin`),kOriginless:Symbol(`originless`),kWriting:Symbol(`writing`),kResuming:Symbol(`resuming`),kQueue:Symbol(`queue`),kConnect:Symbol(`connect`),kConnecting:Symbol(`connecting`),kKeepAliveDefaultTimeout:Symbol(`default keep alive timeout`),kKeepAliveMaxTimeout:Symbol(`max keep alive timeout`),kKeepAliveTimeoutThreshold:Symbol(`keep alive timeout threshold`),kKeepAliveTimeoutValue:Symbol(`keep alive timeout`),kKeepAlive:Symbol(`keep alive`),kHeadersTimeout:Symbol(`headers timeout`),kBodyTimeout:Symbol(`body timeout`),kServerName:Symbol(`server name`),kLocalAddress:Symbol(`local address`),kHost:Symbol(`host`),kNoRef:Symbol(`no ref`),kBodyUsed:Symbol(`used`),kBody:Symbol(`abstracted request body`),kRunning:Symbol(`running`),kBlocking:Symbol(`blocking`),kPending:Symbol(`pending`),kSize:Symbol(`size`),kBusy:Symbol(`busy`),kQueued:Symbol(`queued`),kFree:Symbol(`free`),kConnected:Symbol(`connected`),kClosed:Symbol(`closed`),kNeedDrain:Symbol(`need drain`),kReset:Symbol(`reset`),kDestroyed:Symbol.for(`nodejs.stream.destroyed`),kResume:Symbol(`resume`),kOnError:Symbol(`on error`),kMaxHeadersSize:Symbol(`max headers size`),kRunningIdx:Symbol(`running index`),kPendingIdx:Symbol(`pending index`),kError:Symbol(`error`),kClients:Symbol(`clients`),kClient:Symbol(`client`),kParser:Symbol(`parser`),kOnDestroyed:Symbol(`destroy callbacks`),kPipelining:Symbol(`pipelining`),kSocket:Symbol(`socket`),kHostHeader:Symbol(`host header`),kConnector:Symbol(`connector`),kStrictContentLength:Symbol(`strict content length`),kMaxRedirections:Symbol(`maxRedirections`),kMaxRequests:Symbol(`maxRequestsPerClient`),kProxy:Symbol(`proxy agent options`),kCounter:Symbol(`socket request counter`),kMaxResponseSize:Symbol(`max response size`),kHTTP2Session:Symbol(`http2Session`),kHTTP2Options:Symbol(`http2 options`),kHTTP2SessionState:Symbol(`http2Session state`),kRetryHandlerDefaultRetry:Symbol(`retry agent default retry`),kConstruct:Symbol(`constructable`),kListeners:Symbol(`listeners`),kHTTPContext:Symbol(`http context`),kMaxConcurrentStreams:Symbol(`max concurrent streams`),kHostAuthority:Symbol(`host authority`),kHTTP2InitialWindowSize:Symbol(`http2 initial window size`),kHTTP2ConnectionWindowSize:Symbol(`http2 connection window size`),kEnableConnectProtocol:Symbol(`http2session connect protocol`),kRemoteSettings:Symbol(`http2session remote settings`),kHTTP2Stream:Symbol(`http2session client stream`),kPingInterval:Symbol(`ping interval`),kNoProxyAgent:Symbol(`no proxy agent`),kHttpProxyAgent:Symbol(`http proxy agent`),kHttpsProxyAgent:Symbol(`https proxy agent`),kSocks5ProxyAgent:Symbol(`socks5 proxy agent`)}})),_i=/* @__PURE__ */ a(((e,t)=>{let n=0,r=1e3,i,a=Symbol(`kFastTimer`),o=[];function s(){n+=499;let e=0,t=o.length;for(;e=r._idleStart+r._idleTimeout&&(r._state=-1,r._idleStart=-1,r._onTimeout(r._timerArg)),r._state===-1?(r._state=-2,--t!==0&&(o[e]=o[t])):++e}o.length=t,o.length!==0&&c()}function c(){i?.refresh?i.refresh():(clearTimeout(i),i=setTimeout(s,499),i?.unref())}var l=class{[a]=!0;_state=-2;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(e,t,n){this._onTimeout=e,this._idleTimeout=t,this._timerArg=n,this.refresh()}refresh(){this._state===-2&&o.push(this),i&&o.length!==1||c(),this._state=0}clear(){this._state=-1,this._idleStart=-1}};t.exports={setTimeout(e,t,n){return t<=r?setTimeout(e,t,n):new l(e,t,n)},clearTimeout(e){e[a]?e.clear():clearTimeout(e)},setFastTimeout(e,t,n){return new l(e,t,n)},clearFastTimeout(e){e.clear()},now(){return n},tick(e=0){n+=e-r+1,s(),s()},reset(){n=0,o.length=0,clearTimeout(i),i=null},kFastTimer:a}})),vi=/* @__PURE__ */ a(((e,t)=>{let n=Symbol.for(`undici.error.UND_ERR`);var r=class extends Error{constructor(e,t){super(e,t),this.name=`UndiciError`,this.code=`UND_ERR`}static[Symbol.hasInstance](e){return e&&e[n]===!0}get[n](){return!0}};let i=Symbol.for(`undici.error.UND_ERR_CONNECT_TIMEOUT`);var a=class extends r{constructor(e){super(e),this.name=`ConnectTimeoutError`,this.message=e||`Connect Timeout Error`,this.code=`UND_ERR_CONNECT_TIMEOUT`}static[Symbol.hasInstance](e){return e&&e[i]===!0}get[i](){return!0}};let o=Symbol.for(`undici.error.UND_ERR_HEADERS_TIMEOUT`);var s=class extends r{constructor(e){super(e),this.name=`HeadersTimeoutError`,this.message=e||`Headers Timeout Error`,this.code=`UND_ERR_HEADERS_TIMEOUT`}static[Symbol.hasInstance](e){return e&&e[o]===!0}get[o](){return!0}};let c=Symbol.for(`undici.error.UND_ERR_HEADERS_OVERFLOW`);var l=class extends r{constructor(e){super(e),this.name=`HeadersOverflowError`,this.message=e||`Headers Overflow Error`,this.code=`UND_ERR_HEADERS_OVERFLOW`}static[Symbol.hasInstance](e){return e&&e[c]===!0}get[c](){return!0}};let u=Symbol.for(`undici.error.UND_ERR_BODY_TIMEOUT`);var d=class extends r{constructor(e){super(e),this.name=`BodyTimeoutError`,this.message=e||`Body Timeout Error`,this.code=`UND_ERR_BODY_TIMEOUT`}static[Symbol.hasInstance](e){return e&&e[u]===!0}get[u](){return!0}};let f=Symbol.for(`undici.error.UND_ERR_INVALID_ARG`);var p=class extends r{constructor(e){super(e),this.name=`InvalidArgumentError`,this.message=e||`Invalid Argument Error`,this.code=`UND_ERR_INVALID_ARG`}static[Symbol.hasInstance](e){return e&&e[f]===!0}get[f](){return!0}};let m=Symbol.for(`undici.error.UND_ERR_INVALID_RETURN_VALUE`);var h=class extends r{constructor(e){super(e),this.name=`InvalidReturnValueError`,this.message=e||`Invalid Return Value Error`,this.code=`UND_ERR_INVALID_RETURN_VALUE`}static[Symbol.hasInstance](e){return e&&e[m]===!0}get[m](){return!0}};let g=Symbol.for(`undici.error.UND_ERR_ABORT`);var v=class extends r{constructor(e){super(e),this.name=`AbortError`,this.message=e||`The operation was aborted`,this.code=`UND_ERR_ABORT`}static[Symbol.hasInstance](e){return e&&e[g]===!0}get[g](){return!0}};let y=Symbol.for(`undici.error.UND_ERR_ABORTED`);var b=class extends v{constructor(e){super(e),this.name=`AbortError`,this.message=e||`Request aborted`,this.code=`UND_ERR_ABORTED`}static[Symbol.hasInstance](e){return e&&e[y]===!0}get[y](){return!0}};let x=Symbol.for(`undici.error.UND_ERR_INFO`);var S=class extends r{constructor(e,t){super(e,t),this.name=`InformationalError`,this.message=e||`Request information`,this.code=`UND_ERR_INFO`}static[Symbol.hasInstance](e){return e&&e[x]===!0}get[x](){return!0}};let C=Symbol.for(`undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH`);var w=class extends r{constructor(e){super(e),this.name=`RequestContentLengthMismatchError`,this.message=e||`Request body length does not match content-length header`,this.code=`UND_ERR_REQ_CONTENT_LENGTH_MISMATCH`}static[Symbol.hasInstance](e){return e&&e[C]===!0}get[C](){return!0}};let T=Symbol.for(`undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH`);var E=class extends r{constructor(e){super(e),this.name=`ResponseContentLengthMismatchError`,this.message=e||`Response body length does not match content-length header`,this.code=`UND_ERR_RES_CONTENT_LENGTH_MISMATCH`}static[Symbol.hasInstance](e){return e&&e[T]===!0}get[T](){return!0}};let D=Symbol.for(`undici.error.UND_ERR_DESTROYED`);var O=class extends r{constructor(e){super(e),this.name=`ClientDestroyedError`,this.message=e||`The client is destroyed`,this.code=`UND_ERR_DESTROYED`}static[Symbol.hasInstance](e){return e&&e[D]===!0}get[D](){return!0}};let k=Symbol.for(`undici.error.UND_ERR_CLOSED`);var A=class extends r{constructor(e){super(e),this.name=`ClientClosedError`,this.message=e||`The client is closed`,this.code=`UND_ERR_CLOSED`}static[Symbol.hasInstance](e){return e&&e[k]===!0}get[k](){return!0}};let j=Symbol.for(`undici.error.UND_ERR_SOCKET`);var M=class extends r{constructor(e,t){super(e),this.name=`SocketError`,this.message=e||`Socket error`,this.code=`UND_ERR_SOCKET`,this.socket=t}static[Symbol.hasInstance](e){return e&&e[j]===!0}get[j](){return!0}};let N=Symbol.for(`undici.error.UND_ERR_NOT_SUPPORTED`);var P=class extends r{constructor(e){super(e),this.name=`NotSupportedError`,this.message=e||`Not supported error`,this.code=`UND_ERR_NOT_SUPPORTED`}static[Symbol.hasInstance](e){return e&&e[N]===!0}get[N](){return!0}};let F=Symbol.for(`undici.error.UND_ERR_BPL_MISSING_UPSTREAM`);var I=class extends r{constructor(e){super(e),this.name=`MissingUpstreamError`,this.message=e||`No upstream has been added to the BalancedPool`,this.code=`UND_ERR_BPL_MISSING_UPSTREAM`}static[Symbol.hasInstance](e){return e&&e[F]===!0}get[F](){return!0}};let ee=Symbol.for(`undici.error.UND_ERR_HTTP_PARSER`);var L=class extends Error{constructor(e,t,n){super(e),this.name=`HTTPParserError`,this.code=t?`HPE_${t}`:void 0,this.data=n?n.toString():void 0}static[Symbol.hasInstance](e){return e&&e[ee]===!0}get[ee](){return!0}};let R=Symbol.for(`undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE`);var te=class extends r{constructor(e){super(e),this.name=`ResponseExceededMaxSizeError`,this.message=e||`Response content exceeded max size`,this.code=`UND_ERR_RES_EXCEEDED_MAX_SIZE`}static[Symbol.hasInstance](e){return e&&e[R]===!0}get[R](){return!0}};let ne=Symbol.for(`undici.error.UND_ERR_REQ_RETRY`);var re=class extends r{constructor(e,t,{headers:n,data:r}){super(e),this.name=`RequestRetryError`,this.message=e||`Request retry error`,this.code=`UND_ERR_REQ_RETRY`,this.statusCode=t,this.data=r,this.headers=n}static[Symbol.hasInstance](e){return e&&e[ne]===!0}get[ne](){return!0}};let ie=Symbol.for(`undici.error.UND_ERR_RESPONSE`);var z=class extends r{constructor(e,t,{headers:n,body:r}){super(e),this.name=`ResponseError`,this.message=e||`Response error`,this.code=`UND_ERR_RESPONSE`,this.statusCode=t,this.body=r,this.headers=n}static[Symbol.hasInstance](e){return e&&e[ie]===!0}get[ie](){return!0}};let ae=Symbol.for(`undici.error.UND_ERR_PRX_TLS`);var oe=class extends r{constructor(e,t,n={}){super(t,{cause:e,...n}),this.name=`SecureProxyConnectionError`,this.message=t||`Secure Proxy Connection failed`,this.code=`UND_ERR_PRX_TLS`,this.cause=e}static[Symbol.hasInstance](e){return e&&e[ae]===!0}get[ae](){return!0}};let se=Symbol.for(`undici.error.UND_ERR_PRX_CONN`);var ce=class extends r{constructor(e,t,n={}){super(t,{cause:e,...n}),this.name=`ProxyConnectionError`,this.message=t||`Proxy Connection failed`,this.code=`UND_ERR_PRX_CONN`,this.cause=e}static[Symbol.hasInstance](e){return e&&e[se]===!0}get[se](){return!0}};let le=Symbol.for(`undici.error.UND_ERR_MAX_ORIGINS_REACHED`);var ue=class extends r{constructor(e){super(e),this.name=`MaxOriginsReachedError`,this.message=e||`Maximum allowed origins reached`,this.code=`UND_ERR_MAX_ORIGINS_REACHED`}static[Symbol.hasInstance](e){return e&&e[le]===!0}get[le](){return!0}},de=class extends r{constructor(e,t){super(e),this.name=`Socks5ProxyError`,this.message=e||`SOCKS5 proxy error`,this.code=t||`UND_ERR_SOCKS5`}};let fe=Symbol.for(`undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED`);t.exports={AbortError:v,HTTPParserError:L,UndiciError:r,HeadersTimeoutError:s,HeadersOverflowError:l,BodyTimeoutError:d,RequestContentLengthMismatchError:w,ConnectTimeoutError:a,InvalidArgumentError:p,InvalidReturnValueError:h,RequestAbortedError:b,ClientDestroyedError:O,ClientClosedError:A,InformationalError:S,SocketError:M,NotSupportedError:P,ResponseContentLengthMismatchError:E,BalancedPoolMissingUpstreamError:I,ResponseExceededMaxSizeError:te,RequestRetryError:re,ResponseError:z,SecureProxyConnectionError:oe,ProxyConnectionError:ce,MaxOriginsReachedError:ue,Socks5ProxyError:de,MessageSizeExceededError:class extends r{constructor(e){super(e),this.name=`MessageSizeExceededError`,this.message=e||`Max decompressed message size exceeded`,this.code=`UND_ERR_WS_MESSAGE_SIZE_EXCEEDED`}static[Symbol.hasInstance](e){return e&&e[fe]===!0}get[fe](){return!0}}}})),yi=/* @__PURE__ */ a(((e,t)=>{let n=/* @__PURE__ */ `Accept.Accept-Encoding.Accept-Language.Accept-Ranges.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Age.Allow.Alt-Svc.Alt-Used.Authorization.Cache-Control.Clear-Site-Data.Connection.Content-Disposition.Content-Encoding.Content-Language.Content-Length.Content-Location.Content-Range.Content-Security-Policy.Content-Security-Policy-Report-Only.Content-Type.Cookie.Cross-Origin-Embedder-Policy.Cross-Origin-Opener-Policy.Cross-Origin-Resource-Policy.Date.Device-Memory.Downlink.ECT.ETag.Expect.Expect-CT.Expires.Forwarded.From.Host.If-Match.If-Modified-Since.If-None-Match.If-Range.If-Unmodified-Since.Keep-Alive.Last-Modified.Link.Location.Max-Forwards.Origin.Permissions-Policy.Pragma.Proxy-Authenticate.Proxy-Authorization.RTT.Range.Referer.Referrer-Policy.Refresh.Retry-After.Sec-WebSocket-Accept.Sec-WebSocket-Extensions.Sec-WebSocket-Key.Sec-WebSocket-Protocol.Sec-WebSocket-Version.Server.Server-Timing.Service-Worker-Allowed.Service-Worker-Navigation-Preload.Set-Cookie.SourceMap.Strict-Transport-Security.Supports-Loading-Mode.TE.Timing-Allow-Origin.Trailer.Transfer-Encoding.Upgrade.Upgrade-Insecure-Requests.User-Agent.Vary.Via.WWW-Authenticate.X-Content-Type-Options.X-DNS-Prefetch-Control.X-Frame-Options.X-Permitted-Cross-Domain-Policies.X-Powered-By.X-Requested-With.X-XSS-Protection`.split(`.`),r={};Object.setPrototypeOf(r,null);for(let e=0;e{let{wellknownHeaderNames:n,headerNameLowerCasedRecord:r}=yi();var i=class e{value=null;left=null;middle=null;right=null;code;constructor(t,n,r){if(r===void 0||r>=t.length)throw TypeError(`Unreachable`);if((this.code=t.charCodeAt(r))>127)throw TypeError(`key must be ascii string`);t.length===++r?this.value=n:this.middle=new e(t,n,r)}add(t,n){let r=t.length;if(r===0)throw TypeError(`Unreachable`);let i=0,a=this;for(;;){let o=t.charCodeAt(i);if(o>127)throw TypeError(`key must be ascii string`);if(a.code===o){if(r===++i){a.value=n;break}if(a.middle!==null)a=a.middle;else{a.middle=new e(t,n,i);break}}else if(a.code=65&&(i|=32);r!==null;){if(i===r.code){if(t===++n)return r;r=r.middle;break}r=r.code{let r=t(`node:assert`),{kDestroyed:i,kBodyUsed:a,kListeners:o,kBody:s}=gi(),{IncomingMessage:c}=t(`node:http`),l=t(`node:stream`),u=t(`node:net`),{stringify:d}=t(`node:querystring`),{EventEmitter:f,addAbortListener:p}=t(`node:events`),m=_i(),{InvalidArgumentError:h,ConnectTimeoutError:g}=vi(),{headerNameLowerCasedRecord:v}=yi(),{tree:y}=bi();var b=class{constructor(e){this[s]=e,this[a]=!1}async*[Symbol.asyncIterator](){r(!this[a],`disturbed`),this[a]=!0,yield*this[s]}};function x(){}function S(e){return C(e)?(ee(e)===0&&e.on(`data`,function(){r(!1)}),typeof e.readableDidRead!=`boolean`&&(e[a]=!1,f.prototype.on.call(e,`data`,function(){this[a]=!0})),e):e&&typeof e.pipeTo==`function`?new b(e):e&&fe(e)?e:e&&typeof e!=`string`&&!ArrayBuffer.isView(e)&&F(e)?new b(e):e}function C(e){return e&&typeof e==`object`&&typeof e.pipe==`function`&&typeof e.on==`function`}function w(e){return e instanceof Blob}function T(e){return e.includes(`?`)||e.includes(`#`)}function E(e,t){if(T(e))throw Error(`Query params cannot be passed when url already contains "?" or "#".`);let n=d(t);return n&&(e+=`?`+n),e}function D(e){let t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function O(e){return e!=null&&e[0]===`h`&&e[1]===`t`&&e[2]===`t`&&e[3]===`p`&&(e[4]===`:`||e[4]===`s`&&e[5]===`:`)}function k(e){if(typeof e==`string`){if(e=new URL(e),!O(e.origin||e.protocol))throw new h("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!=`object`)throw new h(`Invalid URL: The URL argument must be a non-null object.`);if(!(e instanceof URL)){if(e.port!=null&&e.port!==``&&D(e.port)===!1)throw new h(`Invalid URL: port must be a valid integer or a string representation of an integer.`);if(e.path!=null&&typeof e.path!=`string`)throw new h(`Invalid URL path: the path must be a string or null/undefined.`);if(e.pathname!=null&&typeof e.pathname!=`string`)throw new h(`Invalid URL pathname: the pathname must be a string or null/undefined.`);if(e.hostname!=null&&typeof e.hostname!=`string`)throw new h(`Invalid URL hostname: the hostname must be a string or null/undefined.`);if(e.origin!=null&&typeof e.origin!=`string`)throw new h(`Invalid URL origin: the origin must be a string or null/undefined.`);if(!O(e.origin||e.protocol))throw new h("Invalid URL protocol: the URL must start with `http:` or `https:`.");let t=e.port==null?e.protocol===`https:`?443:80:e.port,n=e.origin==null?`${e.protocol||``}//${e.hostname||``}:${t}`:e.origin,r=e.path==null?`${e.pathname||``}${e.search||``}`:e.path;return n[n.length-1]===`/`&&(n=n.slice(0,n.length-1)),r&&r[0]!==`/`&&(r=`/${r}`),new URL(`${n}${r}`)}if(!O(e.origin||e.protocol))throw new h("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function A(e){if(e=k(e),e.pathname!==`/`||e.search||e.hash)throw new h(`invalid url`);return e}function j(e){if(e[0]===`[`){let t=e.indexOf(`]`);return r(t!==-1),e.substring(1,t)}let t=e.indexOf(`:`);return t===-1?e:e.substring(0,t)}function M(e){if(!e)return null;r(typeof e==`string`);let t=j(e);return u.isIP(t)?``:t}function N(e){return JSON.parse(JSON.stringify(e))}function P(e){return e!=null&&typeof e[Symbol.asyncIterator]==`function`}function F(e){return!(e==null||typeof e[Symbol.iterator]!=`function`&&typeof e[Symbol.asyncIterator]!=`function`)}function I(e){let t=Object.getPrototypeOf(e);return Object.hasOwn(e,Symbol.iterator)||t!=null&&t!==Object.prototype&&typeof e[Symbol.iterator]==`function`}function ee(e){if(e==null)return 0;if(C(e)){let t=e._readableState;return t&&t.objectMode===!1&&t.ended===!0&&Number.isFinite(t.length)?t.length:null}return w(e)?e.size==null?null:e.size:ce(e)?e.byteLength:null}function L(e){return e&&!!(e.destroyed||e[i]||l.isDestroyed?.(e))}function R(e,t){if(e!=null&&C(e)&&!L(e)){if(typeof e.destroy==`function`){Object.getPrototypeOf(e).constructor===c&&(e.socket=null);try{e.destroy(t)}catch{}}else t&&queueMicrotask(()=>{e.emit(`error`,t)});e.destroyed!==!0&&(e[i]=!0)}}let te=/timeout=(\d+)/;function ne(e){let t=e.match(te);return t?parseInt(t[1],10)*1e3:null}function re(e){return typeof e==`string`?v[e]??e.toLowerCase():y.lookup(e)??e.toString(`latin1`).toLowerCase()}function ie(e){return y.lookup(e)??e.toString(`latin1`).toLowerCase()}function z(e,t){t===void 0&&(t={});for(let n=0;ne.toString(`latin1`)):e[n+1].toString(`latin1`);r===`__proto__`?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i}}else{let i=typeof e[n+1]==`string`?e[n+1]:Array.isArray(e[n+1])?e[n+1].map(e=>e.toString(`latin1`)):e[n+1].toString(`latin1`);t[r]=i}}return t}function ae(e){if(e==null)return[];if(!Array.isArray(e)){let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.push(n,`${e}`);else t.push(n,`${r}`);return t}let t=e.length,n=Array(t),r,i;for(let a=0;aBuffer.from(e))}function ce(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function le(e,t,n){if(!e||typeof e!=`object`)throw new h(`handler must be an object`);if(typeof e.onRequestStart!=`function`)throw new h(`invalid onRequestStart method`);if(typeof e.onResponseError!=`function`)throw new h(`invalid onResponseError method`);if(typeof e.onBodySent!=`function`&&e.onBodySent!==void 0)throw new h(`invalid onBodySent method`);if(typeof e.onRequestSent!=`function`&&e.onRequestSent!==void 0)throw new h(`invalid onRequestSent method`);if(n||t===`CONNECT`){if(typeof e.onRequestUpgrade!=`function`)throw new h(`invalid onRequestUpgrade method`)}else{if(typeof e.onResponseStart!=`function`)throw new h(`invalid onResponseStart method`);if(typeof e.onResponseData!=`function`)throw new h(`invalid onResponseData method`);if(typeof e.onResponseEnd!=`function`)throw new h(`invalid onResponseEnd method`)}}function ue(e){return!!(e&&(l.isDisturbed(e)||e[a]))}function de(e){return{localAddress:e.localAddress,localPort:e.localPort,remoteAddress:e.remoteAddress,remotePort:e.remotePort,remoteFamily:e.remoteFamily,timeout:e.timeout,bytesWritten:e.bytesWritten,bytesRead:e.bytesRead}}function fe(e){return e&&typeof e==`object`&&typeof e.append==`function`&&typeof e.delete==`function`&&typeof e.get==`function`&&typeof e.getAll==`function`&&typeof e.has==`function`&&typeof e.set==`function`&&e[Symbol.toStringTag]===`FormData`}function pe(e,t){return!e||`aborted`in e?p(e,t)[Symbol.dispose]:typeof e.addEventListener==`function`?(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)):(e.once(`abort`,t),()=>e.removeListener(`abort`,t))}let me=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function he(e){return me[e]===1}let ge=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;function _e(e){if(e.length>=12)return ge.test(e);if(e.length===0)return!1;for(let t=0;t{if(!t.timeout)return x;let n=null,r=null,i=m.setFastTimeout(()=>{n=setImmediate(()=>{r=setImmediate(()=>Ee(e.deref(),t))})},t.timeout);return()=>{m.clearFastTimeout(i),clearImmediate(n),clearImmediate(r)}}:(e,t)=>{if(!t.timeout)return x;let n=null,r=m.setFastTimeout(()=>{n=setImmediate(()=>{Ee(e.deref(),t)})},t.timeout);return()=>{m.clearFastTimeout(r),clearImmediate(n)}};function Ee(e,t){if(e==null)return;let n=`Connect Timeout Error`;Array.isArray(e.autoSelectFamilyAttemptedAddresses)?n+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(`, `)},`:n+=` (attempted address: ${t.hostname}:${t.port},`,n+=` timeout: ${t.timeout}ms)`,R(e,new g(n))}let De=null,Oe=null;function ke(e){if(e===De)return Oe;let t=Ae(e);return De=e,Oe=t,t}function Ae(e){if(e[0]===`h`&&e[1]===`t`&&e[2]===`t`&&e[3]===`p`)switch(e[4]){case`:`:return`http:`;case`s`:if(e[5]===`:`)return`https:`}return e.slice(0,e.indexOf(`:`)+1)}let je={__proto__:null,enumerable:!0},Me={delete:`DELETE`,DELETE:`DELETE`,get:`GET`,GET:`GET`,head:`HEAD`,HEAD:`HEAD`,options:`OPTIONS`,OPTIONS:`OPTIONS`,post:`POST`,POST:`POST`,put:`PUT`,PUT:`PUT`,query:`QUERY`,QUERY:`QUERY`},Ne={...Me,patch:`patch`,PATCH:`PATCH`};Object.setPrototypeOf(Me,null),Object.setPrototypeOf(Ne,null),n.exports={kEnumerableProperty:je,isDisturbed:ue,isBlobLike:w,parseOrigin:A,parseURL:k,getServerName:M,isStream:C,isIterable:F,hasSafeIterator:I,isAsyncIterable:P,isDestroyed:L,headerNameToString:re,bufferToLowerCasedHeaderName:ie,addListener:Se,removeAllListeners:Ce,errorRequest:we,parseRawHeaders:ae,toRawHeaders:oe,encodeRawHeaders:se,parseHeaders:z,parseKeepAliveTimeout:ne,destroy:R,bodyLength:ee,deepClone:N,isBuffer:ce,assertRequestHandler:le,getSocketInfo:de,isFormDataLike:fe,pathHasQueryOrFragment:T,serializePathWithQuery:E,addAbortListener:pe,isValidHTTPToken:_e,isValidHeaderValue:ye,isTokenCharCode:he,parseRangeHeader:xe,normalizedMethodRecordsBase:Me,normalizedMethodRecords:Ne,isValidPort:D,isHttpOrHttpsPrefixed:O,safeHTTPMethods:Object.freeze([`GET`,`HEAD`,`OPTIONS`,`TRACE`]),wrapRequestBody:S,setupConnectTimeout:Te,getProtocolFromUrlString:ke}})),Si=/* @__PURE__ */ a(((e,t)=>{let{kConnected:n,kPending:r,kRunning:i,kSize:a,kFree:o,kQueued:s}=gi();t.exports={ClientStats:class{constructor(e){this.connected=e[n],this.pending=e[r],this.running=e[i],this.size=e[a]}},PoolStats:class{constructor(e){this.connected=e[n],this.free=e[o],this.pending=e[r],this.queued=e[s],this.running=e[i],this.size=e[a]}}}})),Ci=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:diagnostics_channel`),i=t(`node:util`),a=i.debuglog(`undici`),o=i.debuglog(`fetch`),s=i.debuglog(`websocket`),c={beforeConnect:r.channel(`undici:client:beforeConnect`),connected:r.channel(`undici:client:connected`),connectError:r.channel(`undici:client:connectError`),sendHeaders:r.channel(`undici:client:sendHeaders`),create:r.channel(`undici:request:create`),bodySent:r.channel(`undici:request:bodySent`),bodyChunkSent:r.channel(`undici:request:bodyChunkSent`),bodyChunkReceived:r.channel(`undici:request:bodyChunkReceived`),headers:r.channel(`undici:request:headers`),trailers:r.channel(`undici:request:trailers`),error:r.channel(`undici:request:error`),open:r.channel(`undici:websocket:open`),close:r.channel(`undici:websocket:close`),socketError:r.channel(`undici:websocket:socket_error`),ping:r.channel(`undici:websocket:ping`),pong:r.channel(`undici:websocket:pong`),proxyConnected:r.channel(`undici:proxy:connected`)},l=!1;function u(e=a){l||(c.beforeConnect.hasSubscribers||c.connected.hasSubscribers||c.connectError.hasSubscribers||c.sendHeaders.hasSubscribers?l=!0:(l=!0,r.subscribe(`undici:client:beforeConnect`,t=>{let{connectParams:{version:n,protocol:r,port:i,host:a}}=t;e(`connecting to %s%s using %s%s`,a,i?`:${i}`:``,r,n)}),r.subscribe(`undici:client:connected`,t=>{let{connectParams:{version:n,protocol:r,port:i,host:a}}=t;e(`connected to %s%s using %s%s`,a,i?`:${i}`:``,r,n)}),r.subscribe(`undici:client:connectError`,t=>{let{connectParams:{version:n,protocol:r,port:i,host:a},error:o}=t;e(`connection to %s%s using %s%s errored - %s`,a,i?`:${i}`:``,r,n,o.message)}),r.subscribe(`undici:client:sendHeaders`,t=>{let{request:{method:n,path:r,origin:i}}=t;e(`sending request to %s %s%s`,n,i,r)})))}let d=!1;function f(e=a){d||(c.headers.hasSubscribers||c.trailers.hasSubscribers||c.error.hasSubscribers?d=!0:(d=!0,r.subscribe(`undici:request:headers`,t=>{let{request:{method:n,path:r,origin:i},response:{statusCode:a}}=t;e(`received response to %s %s%s - HTTP %d`,n,i,r,a)}),r.subscribe(`undici:request:trailers`,t=>{let{request:{method:n,path:r,origin:i}}=t;e(`trailers received from %s %s%s`,n,i,r)}),r.subscribe(`undici:request:error`,t=>{let{request:{method:n,path:r,origin:i},error:a}=t;e(`request to %s %s%s errored - %s`,n,i,r,a.message)})))}let p=!1;function m(e=s){p||(c.open.hasSubscribers||c.close.hasSubscribers||c.socketError.hasSubscribers||c.ping.hasSubscribers||c.pong.hasSubscribers?p=!0:(p=!0,r.subscribe(`undici:websocket:open`,t=>{if(t.address!=null){let{address:n,port:r}=t.address;e(`connection opened %s%s`,n,r?`:${r}`:``)}else e(`connection opened`)}),r.subscribe(`undici:websocket:close`,t=>{let{websocket:n,code:r,reason:i}=t;e(`closed connection to %s - %s %s`,n.url,r,i)}),r.subscribe(`undici:websocket:socket_error`,t=>{e(`connection errored - %s`,t.message)}),r.subscribe(`undici:websocket:ping`,t=>{e(`ping received`)}),r.subscribe(`undici:websocket:pong`,t=>{e(`pong received`)})))}(a.enabled||o.enabled)&&(u(o.enabled?o:a),f(o.enabled?o:a)),s.enabled&&(u(a.enabled?a:s),m(s)),n.exports={channels:c}})),wi=/* @__PURE__ */ a(((e,n)=>{let{InvalidArgumentError:r,NotSupportedError:i}=vi(),a=t(`node:assert`),{isValidHTTPToken:o,isValidHeaderValue:s,isStream:c,destroy:l,isBuffer:u,isFormDataLike:d,isIterable:f,hasSafeIterator:p,isBlobLike:m,serializePathWithQuery:h,parseHeaders:g,assertRequestHandler:v,getServerName:y,normalizedMethodRecords:b,getProtocolFromUrlString:x}=xi(),{channels:S}=Ci(),{headerNameLowerCasedRecord:C}=yi(),w=/[^\u0021-\u00ff]/;function T(e){if(typeof e!=`string`||e.length===0)return!1;for(let t=0;t57)return!1}return!0}let E=Symbol(`handler`),D=Symbol(`controller`),O=Symbol(`resume`);var k=class{#e=!1;#t=null;#n=!1;#r;[O]=null;rawHeaders=null;rawTrailers=null;constructor(e){this.#r=e}pause(){this.#e=!0}resume(){this.#e&&(this.#e=!1,this[O]?.())}abort(e){this.#n||(this.#n=!0,this.#t=e,this.#r(e))}get aborted(){return this.#n}get reason(){return this.#t}get paused(){return this.#e}},A=class{constructor(e,{path:t,method:n,body:i,headers:a,query:g,idempotent:C,blocking:T,upgrade:D,headersTimeout:O,bodyTimeout:k,reset:A,expectContinue:M,servername:N,throwOnError:P,maxRedirections:F,typeOfService:I},ee){if(typeof t!=`string`)throw new r(`path must be a string`);if(t[0]!==`/`&&!(t.startsWith(`http://`)||t.startsWith(`https://`))&&n!==`CONNECT`)throw new r(`path must be an absolute URL or start with a slash`);if(w.test(t))throw new r(`invalid request path`);if(typeof n!=`string`)throw new r(`method must be a string`);if(b[n]===void 0&&!o(n))throw new r(`invalid request method`);if(D&&typeof D!=`string`)throw new r(`upgrade must be a string`);if(D&&!s(D))throw new r(`invalid upgrade header`);if(O!=null&&(!Number.isFinite(O)||O<0))throw new r(`invalid headersTimeout`);if(k!=null&&(!Number.isFinite(k)||k<0))throw new r(`invalid bodyTimeout`);if(A!=null&&typeof A!=`boolean`)throw new r(`invalid reset`);if(M!=null&&typeof M!=`boolean`)throw new r(`invalid expectContinue`);if(P!=null)throw new r(`invalid throwOnError`);if(F!=null&&F!==0)throw new r(`maxRedirections is not supported, use the redirect interceptor`);if(I!=null&&(!Number.isInteger(I)||I<0||I>255))throw new r(`typeOfService must be an integer between 0 and 255`);if(this.headersTimeout=O,this.bodyTimeout=k,this.method=n,this.typeOfService=I,this.abort=null,i==null)this.body=null;else if(c(i)){this.body=i;let e=this.body._readableState;e&&e.autoDestroy||(this.endHandler=function(){l(this)},this.body.on(`end`,this.endHandler)),this.errorHandler=e=>{this.abort?this.abort(e):this.error=e},this.body.on(`error`,this.errorHandler)}else if(u(i))this.body=i.byteLength?i:null;else if(ArrayBuffer.isView(i))this.body=i.buffer.byteLength?Buffer.from(i.buffer,i.byteOffset,i.byteLength):null;else if(i instanceof ArrayBuffer)this.body=i.byteLength?Buffer.from(i):null;else if(typeof i==`string`)this.body=i.length?Buffer.from(i):null;else if(d(i)||f(i)||m(i))this.body=i;else throw new r(`body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable`);if(this.completed=!1,this.aborted=!1,this.upgrade=D||null,this.path=g?h(t,g):t,this.origin=e,this.protocol=x(e),this.idempotent=C??(n===`HEAD`||n===`GET`||n===`QUERY`),this.blocking=T??this.method!==`HEAD`,this.reset=A??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=M??!1,Array.isArray(a)){if(a.length%2!=0)throw new r(`headers array must be even`);for(let e=0;e{let r=t(`node:events`),{kOriginless:i,kUrl:a}=gi();n.exports=class extends r{dispatch(){throw Error(`not implemented`)}close(){throw Error(`not implemented`)}destroy(){throw Error(`not implemented`)}compose(...e){let t=Array.isArray(e[0])?e[0]:e,n=this[i]===!0?null:this[a]?.origin,r=this.dispatch.bind(this);for(let e of t)if(e!=null){if(typeof e!=`function`)throw TypeError(`invalid interceptor, expected function received ${typeof e}`);if(r=e(r,n),r==null||typeof r!=`function`||r.length!==2)throw TypeError(`invalid interceptor`)}let o=r,s=this;return r=function(e,t){return e&&typeof e==`object`&&!e.origin&&s[a]&&(e=Object.assign({},e,{origin:s[a].origin})),o(e,t)},new Proxy(this,{get:(e,t)=>t===`dispatch`?r:e[t]})}}})),Ei=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:buffer`),i=Ti(),{ClientDestroyedError:a,ClientClosedError:o,InvalidArgumentError:s}=vi(),{kDestroy:c,kClose:l,kClosed:u,kDestroyed:d,kDispatch:f}=gi(),p=Symbol(`onDestroyed`),m=Symbol(`onClosed`),h=Symbol(`webSocketOptions`),g=Symbol(`eventSourceOptions`);n.exports=class extends i{[d]=!1;[p]=null;[u]=!1;[m]=null;constructor(e){super(),this[h]=e?.webSocket??{},this[g]=e?.eventSource??{}}get webSocketOptions(){return{maxFragments:this[h].maxFragments??131072,maxPayloadSize:this[h].maxPayloadSize??134217728}}get eventSourceOptions(){return{maxEventSize:this[g].maxEventSize??r.kStringMaxLength}}get destroyed(){return this[d]}get closed(){return this[u]}close(e){if(e===void 0)return new Promise((e,t)=>{this.close((n,r)=>n?t(n):e(r))});if(typeof e!=`function`)throw new s(`invalid callback`);if(this[d]){let t=new a;queueMicrotask(()=>e(t,null));return}if(this[u]){this[m]?this[m].push(e):queueMicrotask(()=>e(null,null));return}this[u]=!0,this[m]??=[],this[m].push(e);let t=()=>{let e=this[m];this[m]=null;for(let t=0;tthis.destroy()).then(()=>queueMicrotask(t))}destroy(e,t){if(typeof e==`function`&&(t=e,e=null),t===void 0)return new Promise((t,n)=>{this.destroy(e,(e,r)=>e?n(e):t(r))});if(typeof t!=`function`)throw new s(`invalid callback`);if(this[d]){this[p]?this[p].push(t):queueMicrotask(()=>t(null,null));return}e||=new a,this[d]=!0,this[p]??=[],this[p].push(t);let n=()=>{let e=this[p];this[p]=null;for(let t=0;tqueueMicrotask(n))}dispatch(e,t){if(!t||typeof t!=`object`)throw new s(`handler must be an object`);try{if(!e||typeof e!=`object`)throw new s(`opts must be an object.`);if(e.dispatcher)throw new s(`opts.dispatcher is not supported by instance methods. Pass opts.dispatcher to the top-level undici functions or call the dispatcher instance method directly.`);if(this[d]||this[p])throw new a;if(this[u])throw new o;return this[f](e,t)}catch(e){if(typeof t.onResponseError!=`function`)throw e;return t.onResponseError(null,e),!1}}}})),Di=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:net`),i=t(`node:assert`),a=xi(),{InvalidArgumentError:o,ConnectTimeoutError:s}=vi(),c,l=class{constructor(e){this._maxCachedSessions=e,this._sessionCache=/* @__PURE__ */ new Map,this._sessionRegistry=new FinalizationRegistry(e=>{if(this._sessionCache.size=this._maxCachedSessions){for(let[e,t]of this._sessionCache)if(t.deref()===void 0){this._sessionCache.delete(e);return}let e=this._sessionCache.keys().next();e.done||this._sessionCache.delete(e.value)}this._sessionCache.set(e,new WeakRef(t)),this._sessionRegistry.register(t,e)}}};function u({allowH2:e,preferH2:n,useH2c:s,maxCachedSessions:u,socketPath:f,timeout:p,session:m,...h}){if(u!=null&&(!Number.isInteger(u)||u<0))throw new o(`maxCachedSessions must be a positive integer or zero`);let g={path:f,...h},v=new l(u??100);return p??=1e4,e??=!0,function({hostname:o,host:l,protocol:u,port:f,servername:h,localAddress:y,httpSocket:b},x){let S;if(u===`https:`){c||=t(`node:tls`),h=h||g.servername||a.getServerName(l)||null;let r=h||o;i(r);let s=m||v.get(r)||null;f||=443,S=c.connect({highWaterMark:16384,...g,servername:h,session:s,localAddress:y,ALPNProtocols:e?n?[`h2`,`http/1.1`]:[`http/1.1`,`h2`]:[`http/1.1`],socket:b,port:f,host:o}),S.on(`session`,function(e){v.set(r,e)})}else{i(!b,`httpSocket can only be sent on TLS update`),f||=80;let e={highWaterMark:65536,...g,localAddress:y,port:f,host:o},t=r.isIP(o);t!==0&&h&&h!==o&&(e.host=h,e.lookup=(e,n,r)=>{n.all?r(null,[{address:o,family:t}]):r(null,o,t)}),S=r.connect(e),s===!0&&(S.alpnProtocol=`h2`)}if(g.keepAlive==null||g.keepAlive){let e=g.keepAliveInitialDelay===void 0?6e4:g.keepAliveInitialDelay;S.setKeepAlive(!0,e)}let C=a.setupConnectTimeout(new WeakRef(S),{timeout:p,hostname:o,port:f});return S.setNoDelay(!0).once(u===`https:`?`secureConnect`:`connect`,function(){if(queueMicrotask(C),x){let e=x;x=null,e(null,this)}}).on(`error`,function(e){if(queueMicrotask(C),x){let t=x;x=null,t(d(e,this,{timeout:p,hostname:o,port:f}))}}),S}}function d(e,t,n){if(e instanceof AggregateError&&(e.code===`ETIMEDOUT`||e.errors.some(e=>e!=null&&e.code===`ETIMEDOUT`))){let r=`Connect Timeout Error`;Array.isArray(t.autoSelectFamilyAttemptedAddresses)?r+=` (attempted addresses: ${t.autoSelectFamilyAttemptedAddresses.join(`, `)},`:r+=` (attempted address: ${n.hostname}:${n.port},`,r+=` timeout: ${n.timeout}ms)`;let i=new s(r);return i.cause=e,i}return e}n.exports=u})),Oi=/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.enumToMap=t;function t(e,t=[],n=[]){let r=(t?.length??0)===0,i=(n?.length??0)===0;return Object.fromEntries(Object.entries(e).filter(([,e])=>typeof e==`number`&&(r||t.includes(e))&&(i||!n.includes(e))))}})),ki=/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SPECIAL_HEADERS=e.MINOR=e.MAJOR=e.HTAB_SP_VCHAR_OBS_TEXT=e.QUOTED_STRING=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.HEX=e.URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.STATUSES_HTTP=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.HEADER_STATE=e.FINISH=e.STATUSES=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;let t=Oi();e.ERROR={OK:0,INTERNAL:1,STRICT:2,CR_EXPECTED:25,LF_EXPECTED:3,UNEXPECTED_CONTENT_LENGTH:4,UNEXPECTED_SPACE:30,CLOSED_CONNECTION:5,INVALID_METHOD:6,INVALID_URL:7,INVALID_CONSTANT:8,INVALID_VERSION:9,INVALID_HEADER_TOKEN:10,INVALID_CONTENT_LENGTH:11,INVALID_CHUNK_SIZE:12,INVALID_STATUS:13,INVALID_EOF_STATE:14,INVALID_TRANSFER_ENCODING:15,CB_MESSAGE_BEGIN:16,CB_HEADERS_COMPLETE:17,CB_MESSAGE_COMPLETE:18,CB_CHUNK_HEADER:19,CB_CHUNK_COMPLETE:20,PAUSED:21,PAUSED_UPGRADE:22,PAUSED_H2_UPGRADE:23,USER:24,CB_URL_COMPLETE:26,CB_STATUS_COMPLETE:27,CB_METHOD_COMPLETE:32,CB_VERSION_COMPLETE:33,CB_HEADER_FIELD_COMPLETE:28,CB_HEADER_VALUE_COMPLETE:29,CB_CHUNK_EXTENSION_NAME_COMPLETE:34,CB_CHUNK_EXTENSION_VALUE_COMPLETE:35,CB_RESET:31,CB_PROTOCOL_COMPLETE:38},e.TYPE={BOTH:0,REQUEST:1,RESPONSE:2},e.FLAGS={CONNECTION_KEEP_ALIVE:1,CONNECTION_CLOSE:2,CONNECTION_UPGRADE:4,CHUNKED:8,UPGRADE:16,CONTENT_LENGTH:32,SKIPBODY:64,TRAILING:128,TRANSFER_ENCODING:512},e.LENIENT_FLAGS={HEADERS:1,CHUNKED_LENGTH:2,KEEP_ALIVE:4,TRANSFER_ENCODING:8,VERSION:16,DATA_AFTER_CLOSE:32,OPTIONAL_LF_AFTER_CR:64,OPTIONAL_CRLF_AFTER_CHUNK:128,OPTIONAL_CR_BEFORE_LF:256,SPACES_AFTER_CHUNK_SIZE:512},e.METHODS={DELETE:0,GET:1,HEAD:2,POST:3,PUT:4,CONNECT:5,OPTIONS:6,TRACE:7,COPY:8,LOCK:9,MKCOL:10,MOVE:11,PROPFIND:12,PROPPATCH:13,SEARCH:14,UNLOCK:15,BIND:16,REBIND:17,UNBIND:18,ACL:19,REPORT:20,MKACTIVITY:21,CHECKOUT:22,MERGE:23,"M-SEARCH":24,NOTIFY:25,SUBSCRIBE:26,UNSUBSCRIBE:27,PATCH:28,PURGE:29,MKCALENDAR:30,LINK:31,UNLINK:32,SOURCE:33,PRI:34,DESCRIBE:35,ANNOUNCE:36,SETUP:37,PLAY:38,PAUSE:39,TEARDOWN:40,GET_PARAMETER:41,SET_PARAMETER:42,REDIRECT:43,RECORD:44,FLUSH:45,QUERY:46},e.STATUSES={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,RESPONSE_IS_STALE:110,REVALIDATION_FAILED:111,DISCONNECTED_OPERATION:112,HEURISTIC_EXPIRATION:113,MISCELLANEOUS_WARNING:199,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,TRANSFORMATION_APPLIED:214,IM_USED:226,MISCELLANEOUS_PERSISTENT_WARNING:299,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,SWITCH_PROXY:306,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,PAGE_EXPIRED:419,ENHANCE_YOUR_CALM:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL:430,REQUEST_HEADER_FIELDS_TOO_LARGE:431,LOGIN_TIMEOUT:440,NO_RESPONSE:444,RETRY_WITH:449,BLOCKED_BY_PARENTAL_CONTROL:450,UNAVAILABLE_FOR_LEGAL_REASONS:451,CLIENT_CLOSED_LOAD_BALANCED_REQUEST:460,INVALID_X_FORWARDED_FOR:463,REQUEST_HEADER_TOO_LARGE:494,SSL_CERTIFICATE_ERROR:495,SSL_CERTIFICATE_REQUIRED:496,HTTP_REQUEST_SENT_TO_HTTPS_PORT:497,INVALID_TOKEN:498,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,BANDWIDTH_LIMIT_EXCEEDED:509,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511,WEB_SERVER_UNKNOWN_ERROR:520,WEB_SERVER_IS_DOWN:521,CONNECTION_TIMEOUT:522,ORIGIN_IS_UNREACHABLE:523,TIMEOUT_OCCURED:524,SSL_HANDSHAKE_FAILED:525,INVALID_SSL_CERTIFICATE:526,RAILGUN_ERROR:527,SITE_IS_OVERLOADED:529,SITE_IS_FROZEN:530,IDENTITY_PROVIDER_AUTHENTICATION_ERROR:561,NETWORK_READ_TIMEOUT:598,NETWORK_CONNECT_TIMEOUT:599},e.FINISH={SAFE:0,SAFE_WITH_CB:1,UNSAFE:2},e.HEADER_STATE={GENERAL:0,CONNECTION:1,CONTENT_LENGTH:2,TRANSFER_ENCODING:3,UPGRADE:4,CONNECTION_KEEP_ALIVE:5,CONNECTION_CLOSE:6,CONNECTION_UPGRADE:7,TRANSFER_ENCODING_CHUNKED:8},e.METHODS_HTTP=[e.METHODS.DELETE,e.METHODS.GET,e.METHODS.HEAD,e.METHODS.POST,e.METHODS.PUT,e.METHODS.CONNECT,e.METHODS.OPTIONS,e.METHODS.TRACE,e.METHODS.COPY,e.METHODS.LOCK,e.METHODS.MKCOL,e.METHODS.MOVE,e.METHODS.PROPFIND,e.METHODS.PROPPATCH,e.METHODS.SEARCH,e.METHODS.UNLOCK,e.METHODS.BIND,e.METHODS.REBIND,e.METHODS.UNBIND,e.METHODS.ACL,e.METHODS.REPORT,e.METHODS.MKACTIVITY,e.METHODS.CHECKOUT,e.METHODS.MERGE,e.METHODS[`M-SEARCH`],e.METHODS.NOTIFY,e.METHODS.SUBSCRIBE,e.METHODS.UNSUBSCRIBE,e.METHODS.PATCH,e.METHODS.PURGE,e.METHODS.MKCALENDAR,e.METHODS.LINK,e.METHODS.UNLINK,e.METHODS.PRI,e.METHODS.SOURCE,e.METHODS.QUERY],e.METHODS_ICE=[e.METHODS.SOURCE],e.METHODS_RTSP=[e.METHODS.OPTIONS,e.METHODS.DESCRIBE,e.METHODS.ANNOUNCE,e.METHODS.SETUP,e.METHODS.PLAY,e.METHODS.PAUSE,e.METHODS.TEARDOWN,e.METHODS.GET_PARAMETER,e.METHODS.SET_PARAMETER,e.METHODS.REDIRECT,e.METHODS.RECORD,e.METHODS.FLUSH,e.METHODS.GET,e.METHODS.POST],e.METHOD_MAP=(0,t.enumToMap)(e.METHODS),e.H_METHOD_MAP=Object.fromEntries(Object.entries(e.METHODS).filter(([e])=>e.startsWith(`H`))),e.STATUSES_HTTP=[e.STATUSES.CONTINUE,e.STATUSES.SWITCHING_PROTOCOLS,e.STATUSES.PROCESSING,e.STATUSES.EARLY_HINTS,e.STATUSES.RESPONSE_IS_STALE,e.STATUSES.REVALIDATION_FAILED,e.STATUSES.DISCONNECTED_OPERATION,e.STATUSES.HEURISTIC_EXPIRATION,e.STATUSES.MISCELLANEOUS_WARNING,e.STATUSES.OK,e.STATUSES.CREATED,e.STATUSES.ACCEPTED,e.STATUSES.NON_AUTHORITATIVE_INFORMATION,e.STATUSES.NO_CONTENT,e.STATUSES.RESET_CONTENT,e.STATUSES.PARTIAL_CONTENT,e.STATUSES.MULTI_STATUS,e.STATUSES.ALREADY_REPORTED,e.STATUSES.TRANSFORMATION_APPLIED,e.STATUSES.IM_USED,e.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,e.STATUSES.MULTIPLE_CHOICES,e.STATUSES.MOVED_PERMANENTLY,e.STATUSES.FOUND,e.STATUSES.SEE_OTHER,e.STATUSES.NOT_MODIFIED,e.STATUSES.USE_PROXY,e.STATUSES.SWITCH_PROXY,e.STATUSES.TEMPORARY_REDIRECT,e.STATUSES.PERMANENT_REDIRECT,e.STATUSES.BAD_REQUEST,e.STATUSES.UNAUTHORIZED,e.STATUSES.PAYMENT_REQUIRED,e.STATUSES.FORBIDDEN,e.STATUSES.NOT_FOUND,e.STATUSES.METHOD_NOT_ALLOWED,e.STATUSES.NOT_ACCEPTABLE,e.STATUSES.PROXY_AUTHENTICATION_REQUIRED,e.STATUSES.REQUEST_TIMEOUT,e.STATUSES.CONFLICT,e.STATUSES.GONE,e.STATUSES.LENGTH_REQUIRED,e.STATUSES.PRECONDITION_FAILED,e.STATUSES.PAYLOAD_TOO_LARGE,e.STATUSES.URI_TOO_LONG,e.STATUSES.UNSUPPORTED_MEDIA_TYPE,e.STATUSES.RANGE_NOT_SATISFIABLE,e.STATUSES.EXPECTATION_FAILED,e.STATUSES.IM_A_TEAPOT,e.STATUSES.PAGE_EXPIRED,e.STATUSES.ENHANCE_YOUR_CALM,e.STATUSES.MISDIRECTED_REQUEST,e.STATUSES.UNPROCESSABLE_ENTITY,e.STATUSES.LOCKED,e.STATUSES.FAILED_DEPENDENCY,e.STATUSES.TOO_EARLY,e.STATUSES.UPGRADE_REQUIRED,e.STATUSES.PRECONDITION_REQUIRED,e.STATUSES.TOO_MANY_REQUESTS,e.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,e.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,e.STATUSES.LOGIN_TIMEOUT,e.STATUSES.NO_RESPONSE,e.STATUSES.RETRY_WITH,e.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,e.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,e.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,e.STATUSES.INVALID_X_FORWARDED_FOR,e.STATUSES.REQUEST_HEADER_TOO_LARGE,e.STATUSES.SSL_CERTIFICATE_ERROR,e.STATUSES.SSL_CERTIFICATE_REQUIRED,e.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,e.STATUSES.INVALID_TOKEN,e.STATUSES.CLIENT_CLOSED_REQUEST,e.STATUSES.INTERNAL_SERVER_ERROR,e.STATUSES.NOT_IMPLEMENTED,e.STATUSES.BAD_GATEWAY,e.STATUSES.SERVICE_UNAVAILABLE,e.STATUSES.GATEWAY_TIMEOUT,e.STATUSES.HTTP_VERSION_NOT_SUPPORTED,e.STATUSES.VARIANT_ALSO_NEGOTIATES,e.STATUSES.INSUFFICIENT_STORAGE,e.STATUSES.LOOP_DETECTED,e.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,e.STATUSES.NOT_EXTENDED,e.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,e.STATUSES.WEB_SERVER_UNKNOWN_ERROR,e.STATUSES.WEB_SERVER_IS_DOWN,e.STATUSES.CONNECTION_TIMEOUT,e.STATUSES.ORIGIN_IS_UNREACHABLE,e.STATUSES.TIMEOUT_OCCURED,e.STATUSES.SSL_HANDSHAKE_FAILED,e.STATUSES.INVALID_SSL_CERTIFICATE,e.STATUSES.RAILGUN_ERROR,e.STATUSES.SITE_IS_OVERLOADED,e.STATUSES.SITE_IS_FROZEN,e.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,e.STATUSES.NETWORK_READ_TIMEOUT,e.STATUSES.NETWORK_CONNECT_TIMEOUT],e.ALPHA=[];for(let t=65;t<=90;t++)e.ALPHA.push(String.fromCharCode(t)),e.ALPHA.push(String.fromCharCode(t+32));e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9},e.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},e.NUM=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],e.ALPHANUM=e.ALPHA.concat(e.NUM),e.MARK=[`-`,`_`,`.`,`!`,`~`,`*`,`'`,`(`,`)`],e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat([`%`,`;`,`:`,`&`,`=`,`+`,`$`,`,`]),e.URL_CHAR=(/* @__PURE__ */ `!"$%&'()*+,-./:;<=>@[\\]^_\`{|}~`.split(``)).concat(e.ALPHANUM),e.HEX=e.NUM.concat([`a`,`b`,`c`,`d`,`e`,`f`,`A`,`B`,`C`,`D`,`E`,`F`]),e.TOKEN=[`!`,`#`,`$`,`%`,`&`,`'`,`*`,`+`,`-`,`.`,`^`,`_`,"`",`|`,`~`].concat(e.ALPHANUM),e.HEADER_CHARS=[` `];for(let t=32;t<=255;t++)t!==127&&e.HEADER_CHARS.push(t);e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter(e=>e!==44),e.QUOTED_STRING=[` `,` `];for(let t=33;t<=255;t++)t!==34&&t!==92&&e.QUOTED_STRING.push(t);e.HTAB_SP_VCHAR_OBS_TEXT=[` `,` `];for(let t=33;t<=126;t++)e.HTAB_SP_VCHAR_OBS_TEXT.push(t);for(let t=128;t<=255;t++)e.HTAB_SP_VCHAR_OBS_TEXT.push(t);e.MAJOR=e.NUM_MAP,e.MINOR=e.MAJOR,e.SPECIAL_HEADERS={connection:e.HEADER_STATE.CONNECTION,"content-length":e.HEADER_STATE.CONTENT_LENGTH,"proxy-connection":e.HEADER_STATE.CONNECTION,"transfer-encoding":e.HEADER_STATE.TRANSFER_ENCODING,upgrade:e.HEADER_STATE.UPGRADE},e.default={ERROR:e.ERROR,TYPE:e.TYPE,FLAGS:e.FLAGS,LENIENT_FLAGS:e.LENIENT_FLAGS,METHODS:e.METHODS,STATUSES:e.STATUSES,FINISH:e.FINISH,HEADER_STATE:e.HEADER_STATE,ALPHA:e.ALPHA,NUM_MAP:e.NUM_MAP,HEX_MAP:e.HEX_MAP,NUM:e.NUM,ALPHANUM:e.ALPHANUM,MARK:e.MARK,USERINFO_CHARS:e.USERINFO_CHARS,URL_CHAR:e.URL_CHAR,HEX:e.HEX,TOKEN:e.TOKEN,HEADER_CHARS:e.HEADER_CHARS,CONNECTION_TOKEN_CHARS:e.CONNECTION_TOKEN_CHARS,QUOTED_STRING:e.QUOTED_STRING,HTAB_SP_VCHAR_OBS_TEXT:e.HTAB_SP_VCHAR_OBS_TEXT,MAJOR:e.MAJOR,MINOR:e.MINOR,SPECIAL_HEADERS:e.SPECIAL_HEADERS,METHODS_HTTP:e.METHODS_HTTP,METHODS_ICE:e.METHODS_ICE,METHODS_RTSP:e.METHODS_RTSP,METHOD_MAP:e.METHOD_MAP,H_METHOD_MAP:e.H_METHOD_MAP,STATUSES_HTTP:e.STATUSES_HTTP}})),Ai=/* @__PURE__ */ a(((e,n)=>{let{Buffer:r}=t(`node:buffer`),i;Object.defineProperty(n,"exports",{get:()=>i||=r.from(`AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==`,`base64`)})})),ji=/* @__PURE__ */ a(((e,n)=>{let{Buffer:r}=t(`node:buffer`),i;Object.defineProperty(n,"exports",{get:()=>i||=r.from(`AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==`,`base64`)})})),Mi=/* @__PURE__ */ a(((e,t)=>{let n=[`GET`,`HEAD`,`POST`],r=new Set(n),i=[101,204,205,304],a=[301,302,303,307,308],o=new Set(a),s=/* @__PURE__ */ `1.7.9.11.13.15.17.19.20.21.22.23.25.37.42.43.53.69.77.79.87.95.101.102.103.104.109.110.111.113.115.117.119.123.135.137.139.143.161.179.389.427.465.512.513.514.515.526.530.531.532.540.548.554.556.563.587.601.636.989.990.993.995.1719.1720.1723.2049.3659.4045.4190.5060.5061.6000.6566.6665.6666.6667.6668.6669.6679.6697.10080`.split(`.`),c=new Set(s),l=[`no-referrer`,`no-referrer-when-downgrade`,`same-origin`,`origin`,`strict-origin`,`origin-when-cross-origin`,`strict-origin-when-cross-origin`,`unsafe-url`],u=[``,...l],d=new Set(l),f=[`follow`,`manual`,`error`],p=[`GET`,`HEAD`,`OPTIONS`,`TRACE`,`QUERY`],m=new Set(p),h=[`navigate`,`same-origin`,`no-cors`,`cors`],g=[`omit`,`same-origin`,`include`],v=[`default`,`no-store`,`reload`,`no-cache`,`force-cache`,`only-if-cached`],y=[`content-encoding`,`content-language`,`content-location`,`content-type`,`content-length`],b=[`half`],x=[`CONNECT`,`TRACE`,`TRACK`],S=new Set(x),C=[`audio`,`audioworklet`,`font`,`image`,`manifest`,`paintworklet`,`script`,`style`,`track`,`video`,`xslt`,``];t.exports={subresource:C,forbiddenMethods:x,requestBodyHeader:y,referrerPolicy:u,requestRedirect:f,requestMode:h,requestCredentials:g,requestCache:v,redirectStatus:a,corsSafeListedMethods:n,nullBodyStatus:i,safeMethods:p,badPorts:s,requestDuplex:b,subresourceSet:new Set(C),badPortsSet:c,redirectStatusSet:o,corsSafeListedMethodsSet:r,safeMethodsSet:m,forbiddenMethodsSet:S,referrerPolicyTokens:d}})),Ni=/* @__PURE__ */ a(((e,t)=>{let n=Symbol.for(`undici.globalOrigin.1`);function r(){return globalThis[n]}function i(e){if(e===void 0){Object.defineProperty(globalThis,n,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw TypeError(`Only http & https urls are allowed, received ${t.protocol}`);Object.defineProperty(globalThis,n,{value:t,writable:!0,enumerable:!1,configurable:!1})}t.exports={getGlobalOrigin:r,setGlobalOrigin:i}})),Pi=/* @__PURE__ */ a(((e,t)=>{let n=new TextDecoder;function r(e){return e.length===0?``:(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),n.decode(e))}t.exports={utf8DecodeBytes:r}})),Fi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{utf8DecodeBytes:i}=Pi();function a(e,t,n){let r=``;for(;n.positiont)return String.fromCharCode.apply(null,e);let n=``,r=0,i=65535;for(;rt&&(i=t-r),n+=String.fromCharCode.apply(null,e.subarray(r,r+=i));return n}let d=/[^\x00-\xFF]/;function f(e){return r(!d.test(e)),e}let p=/[^\x00-\x7F]/;function m(e){return p.test(e)?e.replace(/[A-Z]+/g,e=>e.toLowerCase()):e.toLowerCase()}function h(e){return JSON.parse(i(e))}function g(e,t=!0,n=!0){return v(e,t,n,l)}function v(e,t,n,r){let i=0,a=e.length-1;if(t)for(;i=i&&r(e.charCodeAt(a));)a--;return i===0&&a===e.length-1?e:e.slice(i,a+1)}function y(e){let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Value is not JSON serializable`);return r(typeof t==`string`),t}n.exports={asciiLowercase:m,collectASequenceOfCodePoints:a,collectASequenceOfCodePointsFast:o,forgivingBase64:c,isASCIIWhitespace:l,isomorphicDecode:u,isomorphicEncode:f,parseJSONFromBytes:h,removeASCIIWhitespace:g,removeChars:v,serializeJavascriptValueToJSONString:y}})),Ii=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{asciiLowercase:i,forgivingBase64:a,collectASequenceOfCodePoints:o,collectASequenceOfCodePointsFast:s,isomorphicDecode:c,removeASCIIWhitespace:l,removeChars:u}=Fi(),d=new TextEncoder,f=/^[-!#$%&'*+.^_`|~A-Za-z0-9]+$/u,p=/[\u000A\u000D\u0009\u0020]/u,m=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/u;function h(e){r(e.protocol===`data:`);let t=g(e,!0);t=t.slice(5);let n={position:0},i=s(`,`,t,n),o=i.length;if(i=l(i,!0,!0),n.position>=t.length)return`failure`;n.position++;let u=v(t.slice(o+1));if(/;\u0020*[Bb][Aa][Ss][Ee]64$/u.test(i)){let e=c(u);if(u=a(e),u===`failure`)return`failure`;i=i.slice(0,-6),i=i.replace(/(\u0020+)$/u,``),i=i.slice(0,-1)}i.startsWith(`;`)&&(i=`text/plain`+i);let d=S(i);return d===`failure`&&(d=S(`text/plain;charset=US-ASCII`)),{mimeType:d,body:u}}function g(e,t=!1){if(!t)return e.href;let n=e.href,r=e.hash.length,i=r===0?n:n.substring(0,n.length-r);return!r&&n.endsWith(`#`)?i.slice(0,-1):i}function v(e){return x(d.encode(e))}function y(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function b(e){return e>=48&&e<=57?e-48:(e&223)-55}function x(e){let t=e.length,n=new Uint8Array(t),r=0,i=0;for(;i=e.length)return`failure`;t.position++;let r=s(`;`,e,t);if(r=E(r,!1,!0),r.length===0||!f.test(r))return`failure`;let a=i(n),c=i(r),l={type:a,subtype:c,parameters:/* @__PURE__ */ new Map,essence:`${a}/${c}`};for(;t.positionp.test(e),e,t);let n=o(e=>e!==`;`&&e!==`=`,e,t);if(n=i(n),t.position=e.length)break;let r=null;if(e[t.position]===`"`)r=C(e,t,!0),s(`;`,e,t);else if(r=s(`;`,e,t),r=E(r,!1,!0),r.length===0)continue;n.length!==0&&f.test(n)&&(r.length===0||m.test(r))&&!l.parameters.has(n)&&l.parameters.set(n,r)}return l}function C(e,t,n=!1){let i=t.position,a=``;for(r(e[t.position]===`"`),t.position++;a+=o(e=>e!==`"`&&e!==`\\`,e,t),!(t.position>=e.length);){let n=e[t.position];if(t.position++,n===`\\`){if(t.position>=e.length){a+=`\\`;break}a+=e[t.position],t.position++}else{r(n===`"`);break}}return n?a:e.slice(i,t.position)}function w(e){r(e!==`failure`);let{parameters:t,essence:n}=e,i=n;for(let[e,n]of t.entries())i+=`;`,i+=e,i+=`=`,f.test(n)||(n=n.replace(/[\\"]/gu,`\\$&`),n=`"`+n,n+=`"`),i+=n;return i}function T(e){return e===13||e===10||e===9||e===32}function E(e,t=!0,n=!0){return u(e,t,n,T)}function D(e){switch(e.essence){case`application/ecmascript`:case`application/javascript`:case`application/x-ecmascript`:case`application/x-javascript`:case`text/ecmascript`:case`text/javascript`:case`text/javascript1.0`:case`text/javascript1.1`:case`text/javascript1.2`:case`text/javascript1.3`:case`text/javascript1.4`:case`text/javascript1.5`:case`text/jscript`:case`text/livescript`:case`text/x-ecmascript`:case`text/x-javascript`:return`text/javascript`;case`application/json`:case`text/json`:return`application/json`;case`image/svg+xml`:return`image/svg+xml`;case`text/xml`:case`application/xml`:return`application/xml`}return e.subtype.endsWith(`+json`)?`application/json`:e.subtype.endsWith(`+xml`)?`application/xml`:``}n.exports={dataURLProcessor:h,URLSerializer:g,stringPercentDecode:v,parseMIMEType:S,collectAnHTTPQuotedString:C,serializeAMimeType:w,removeHTTPWhitespace:E,minimizeSupportedMimeType:D,HTTP_TOKEN_CODEPOINTS:f}})),Li=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{types:i,inspect:a}=t(`node:util`),{markAsUncloneable:o}=t(`node:worker_threads`),s=Function.call.bind(Function.prototype[Symbol.hasInstance]),c={converters:{},util:{},errors:{},is:{}};c.errors.exception=function(e){return/* @__PURE__ */ TypeError(`${e.header}: ${e.message}`)},c.errors.conversionFailed=function(e){let t=e.types.length===1?``:` one of`,n=`${e.argument} could not be converted to${t}: ${e.types.join(`, `)}.`;return c.errors.exception({header:e.prefix,message:n})},c.errors.invalidArgument=function(e){return c.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})},c.brandCheck=function(e,t){if(!t(e)){let e=/* @__PURE__ */ TypeError(`Illegal invocation`);throw e.code=`ERR_INVALID_THIS`,e}},c.argumentLengthCheck=function({length:e},t,n){if(es(e,t)},c.util.Type=function(e){switch(typeof e){case`undefined`:return 1;case`boolean`:return 2;case`string`:return 3;case`symbol`:return 4;case`number`:return 5;case`bigint`:return 6;case`function`:case`object`:return e===null?7:8}},c.util.Types={UNDEFINED:1,BOOLEAN:2,STRING:3,SYMBOL:4,NUMBER:5,BIGINT:6,NULL:7,OBJECT:8},c.util.TypeValueToString=function(e){switch(c.util.Type(e)){case 1:return`Undefined`;case 2:return`Boolean`;case 3:return`String`;case 4:return`Symbol`;case 5:return`Number`;case 6:return`BigInt`;case 7:return`Null`;case 8:return`Object`}},c.util.markAsUncloneable=o,c.util.ConvertToInt=function(e,t,n,r){let i,a;t===64?(i=2**53-1,a=n===`unsigned`?0:(-2)**53+1):n===`unsigned`?(a=0,i=2**t-1):(a=-(2**(t-1)),i=2**(t-1)-1);let o=Number(e);if(o===0&&(o=0),c.util.HasFlag(r,c.attributes.EnforceRange)){if(Number.isNaN(o)||o===1/0||o===-1/0)throw c.errors.exception({header:`Integer conversion`,message:`Could not convert ${c.util.Stringify(e)} to an integer.`});if(o=c.util.IntegerPart(o),oi)throw c.errors.exception({header:`Integer conversion`,message:`Value must be between ${a}-${i}, got ${o}.`});return o}return!Number.isNaN(o)&&c.util.HasFlag(r,c.attributes.Clamp)?(o=Math.min(Math.max(o,a),i),o=Math.floor(o)%2==0?Math.floor(o):Math.ceil(o),o):Number.isNaN(o)||o===0&&Object.is(0,o)||o===1/0||o===-1/0?0:(o=c.util.IntegerPart(o),o%=2**t,n===`signed`&&o>=2**(t-1)?o-2**t:o)},c.util.IntegerPart=function(e){let t=Math.floor(Math.abs(e));return e<0?-1*t:t},c.util.Stringify=function(e){switch(c.util.Type(e)){case 4:return`Symbol(${e.description})`;case 8:return a(e);case 3:return`"${e}"`;case 6:return`${e}n`;default:return`${e}`}},c.util.IsResizableArrayBuffer=function(e){if(i.isArrayBuffer(e))return e.resizable;if(i.isSharedArrayBuffer(e))return e.growable;throw c.errors.exception({header:`IsResizableArrayBuffer`,message:`"${c.util.Stringify(e)}" is not an array buffer.`})},c.util.HasFlag=function(e,t){return typeof e==`number`&&(e&t)===t},c.sequenceConverter=function(e){return(t,n,r,i)=>{if(c.util.Type(t)!==8)throw c.errors.exception({header:n,message:`${r} (${c.util.Stringify(t)}) is not iterable.`});let a=typeof i==`function`?i():t?.[Symbol.iterator]?.(),o=[],s=0;if(a===void 0||typeof a.next!=`function`)throw c.errors.exception({header:n,message:`${r} is not iterable.`});for(;;){let{done:t,value:i}=a.next();if(t)break;o.push(e(i,n,`${r}[${s++}]`))}return o}},c.recordConverter=function(e,t){return(n,r,a)=>{if(c.util.Type(n)!==8)throw c.errors.exception({header:r,message:`${a} ("${c.util.TypeValueToString(n)}") is not an Object.`});let o={};if(!i.isProxy(n)){let i=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(let s of i){let i=c.util.Stringify(s),l=e(s,r,`Key ${i} in ${a}`);o[l]=t(n[s],r,`${a}[${i}]`)}return o}let s=Reflect.ownKeys(n);for(let i of s)if(Reflect.getOwnPropertyDescriptor(n,i)?.enumerable){let s=e(i,r,a);o[s]=t(n[i],r,a)}return o}},c.interfaceConverter=function(e,t){return(n,r,i)=>{if(!e(n))throw c.errors.exception({header:r,message:`Expected ${i} ("${c.util.Stringify(n)}") to be an instance of ${t}.`});return n}},c.dictionaryConverter=function(e){return e.sort((e,t)=>(e.key>t.key)-(e.key{let i={};if(t!=null&&c.util.Type(t)!==8)throw c.errors.exception({header:n,message:`Expected ${t} to be one of: Null, Undefined, Object.`});for(let a of e){let{key:e,defaultValue:o,required:s,converter:l}=a;if(s===!0&&(t==null||!Object.hasOwn(t,e)))throw c.errors.exception({header:n,message:`Missing required key "${e}".`});let u=t?.[e],d=o!==void 0;if(d&&u===void 0&&(u=o()),s||d||u!==void 0){if(u=l(u,n,`${r}.${e}`),a.allowedValues&&!a.allowedValues.includes(u))throw c.errors.exception({header:n,message:`${u} is not an accepted type. Expected one of ${a.allowedValues.join(`, `)}.`});i[e]=u}}return i}},c.nullableConverter=function(e){return(t,n,r)=>t===null?t:e(t,n,r)},c.is.USVString=function(e){return typeof e==`string`&&e.isWellFormed()},c.is.ReadableStream=c.util.MakeTypeAssertion(ReadableStream),c.is.Blob=c.util.MakeTypeAssertion(Blob),c.is.URLSearchParams=c.util.MakeTypeAssertion(URLSearchParams),c.is.File=c.util.MakeTypeAssertion(File),c.is.URL=c.util.MakeTypeAssertion(URL),c.is.AbortSignal=c.util.MakeTypeAssertion(AbortSignal),c.is.MessagePort=c.util.MakeTypeAssertion(MessagePort),c.is.BufferSource=function(e){return i.isArrayBuffer(e)||ArrayBuffer.isView(e)&&i.isArrayBuffer(e.buffer)},c.util.getCopyOfBytesHeldByBufferSource=function(e){let t=e,n=t,a=0,o=0;if(i.isTypedArray(t)||i.isDataView(t)?(n=t.buffer,a=t.byteOffset,o=t.byteLength):(r(i.isAnyArrayBuffer(t)),o=t.byteLength),n.detached)return/* @__PURE__ */ new Uint8Array;let s=new Uint8Array(o),c=new Uint8Array(n,a,o);return s.set(c),s},c.converters.DOMString=function(e,t,n,r){if(e===null&&c.util.HasFlag(r,c.attributes.LegacyNullToEmptyString))return``;if(typeof e==`symbol`)throw c.errors.exception({header:t,message:`${n} is a symbol, which cannot be converted to a DOMString.`});return String(e)},c.converters.ByteString=function(e,t,n){if(typeof e==`symbol`)throw c.errors.exception({header:t,message:`${n} is a symbol, which cannot be converted to a ByteString.`});let r=String(e);for(let e=0;e255)throw TypeError(`Cannot convert argument to a ByteString because the character at index ${e} has a value of ${r.charCodeAt(e)} which is greater than 255.`);return r},c.converters.USVString=function(e){return typeof e==`string`?e.toWellFormed():`${e}`.toWellFormed()},c.converters.boolean=function(e){return!!e},c.converters.any=function(e){return e},c.converters[`long long`]=function(e,t,n){return c.util.ConvertToInt(e,64,`signed`,0,t,n)},c.converters[`unsigned long long`]=function(e,t,n){return c.util.ConvertToInt(e,64,`unsigned`,0,t,n)},c.converters[`unsigned long`]=function(e,t,n){return c.util.ConvertToInt(e,32,`unsigned`,0,t,n)},c.converters[`unsigned short`]=function(e,t,n,r){return c.util.ConvertToInt(e,16,`unsigned`,r,t,n)},c.converters.ArrayBuffer=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isArrayBuffer(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBuffer`]});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e))throw c.errors.exception({header:t,message:`${n} cannot be a resizable ArrayBuffer.`});return e},c.converters.SharedArrayBuffer=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isSharedArrayBuffer(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`SharedArrayBuffer`]});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e))throw c.errors.exception({header:t,message:`${n} cannot be a resizable SharedArrayBuffer.`});return e},c.converters.TypedArray=function(e,t,n,r,a){if(c.util.Type(e)!==8||!i.isTypedArray(e)||e.constructor.name!==t.name)throw c.errors.conversionFailed({prefix:n,argument:`${r} ("${c.util.Stringify(e)}")`,types:[t.name]});if(!c.util.HasFlag(a,c.attributes.AllowShared)&&i.isSharedArrayBuffer(e.buffer))throw c.errors.exception({header:n,message:`${r} cannot be a view on a shared array buffer.`});if(!c.util.HasFlag(a,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e.buffer))throw c.errors.exception({header:n,message:`${r} cannot be a view on a resizable array buffer.`});return e},c.converters.DataView=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isDataView(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`DataView`]});if(!c.util.HasFlag(r,c.attributes.AllowShared)&&i.isSharedArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a shared array buffer.`});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a resizable array buffer.`});return e},c.converters.ArrayBufferView=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isArrayBufferView(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBufferView`]});if(!c.util.HasFlag(r,c.attributes.AllowShared)&&i.isSharedArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a shared array buffer.`});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a resizable array buffer.`});return e},c.converters.BufferSource=function(e,t,n,r){if(i.isArrayBuffer(e))return c.converters.ArrayBuffer(e,t,n,r);if(i.isArrayBufferView(e))return r&=~c.attributes.AllowShared,c.converters.ArrayBufferView(e,t,n,r);throw i.isSharedArrayBuffer(e)?c.errors.exception({header:t,message:`${n} cannot be a SharedArrayBuffer.`}):c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBuffer`,`ArrayBufferView`]})},c.converters.AllowSharedBufferSource=function(e,t,n,r){if(i.isArrayBuffer(e))return c.converters.ArrayBuffer(e,t,n,r);if(i.isSharedArrayBuffer(e))return c.converters.SharedArrayBuffer(e,t,n,r);if(i.isArrayBufferView(e))return r|=c.attributes.AllowShared,c.converters.ArrayBufferView(e,t,n,r);throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBuffer`,`SharedArrayBuffer`,`ArrayBufferView`]})},c.converters[`sequence`]=c.sequenceConverter(c.converters.ByteString),c.converters[`sequence>`]=c.sequenceConverter(c.converters[`sequence`]),c.converters[`record`]=c.recordConverter(c.converters.ByteString,c.converters.ByteString),c.converters.Blob=c.interfaceConverter(c.is.Blob,`Blob`),c.converters.AbortSignal=c.interfaceConverter(c.is.AbortSignal,`AbortSignal`),c.converters.EventHandlerNonNull=function(e){return c.util.Type(e)===8?typeof e==`function`?e:()=>{}:null},c.attributes={Clamp:1,EnforceRange:2,AllowShared:4,AllowResizable:8,LegacyNullToEmptyString:16},n.exports={webidl:c}})),Ri=/* @__PURE__ */ a(((e,n)=>{let{Transform:r}=t(`node:stream`),i=t(`node:zlib`),{redirectStatusSet:a,referrerPolicyTokens:o,badPortsSet:s}=Mi(),{getGlobalOrigin:c}=Ni(),{collectAnHTTPQuotedString:l,parseMIMEType:u}=Ii(),{performance:d}=t(`node:perf_hooks`),{isValidHTTPToken:f,normalizedMethodRecordsBase:p}=xi(),m=t(`node:assert`),{isUint8Array:h}=t(`node:util/types`),{webidl:g}=Li(),{isomorphicEncode:v,collectASequenceOfCodePoints:y,removeChars:b}=Fi();function x(e){let t=e.urlList,n=t.length;return n===0?null:t[n-1].toString()}function S(e,t){if(!a.has(e.status))return null;let n=e.headersList.get(`location`,!0);return n!==null&&A(n)&&(C(n)||(n=w(n)),n=new URL(n,x(e))),n&&!n.hash&&(n.hash=t),n}function C(e){for(let t=0;t126||n<32)return!1}return!0}function w(e){return Buffer.from(e,`binary`).toString(`utf8`)}function T(e){return e.urlList[e.urlList.length-1]}function E(e){let t=T(e);return we(t)&&s.has(t.port)?`blocked`:`allowed`}function D(e){return e instanceof Error||e?.constructor?.name===`Error`||e?.constructor?.name===`DOMException`}function O(e){for(let t=0;t=32&&n<=126||n>=128&&n<=255))return!1}return!0}let k=f;function A(e){return(e[0]===` `||e[0]===` `||e[e.length-1]===` `||e[e.length-1]===` `||e.includes(` -`)||e.includes(`\r`)||e.includes(`\0`))===!1}function j(e){let t=(e.headersList.get(`referrer-policy`,!0)??``).split(`,`),n=``;if(t.length)for(let e=t.length;e!==0;e--){let r=t[e-1].trim();if(o.has(r)){n=r;break}}return n}function M(e,t){let n=j(t);n!==``&&(e.referrerPolicy=n)}function N(){return`allowed`}function P(){return`success`}function F(){return`success`}function I(e){if(!ue(T(e)))return;let t=null;t=e.mode,e.headersList.set(`sec-fetch-mode`,t,!0)}function ee(e){let t=e.origin;if(t!==`client`&&t!==void 0){if(e.responseTainting===`cors`||e.mode===`websocket`)e.headersList.append(`origin`,t,!0);else if(e.method!==`GET`&&e.method!==`HEAD`){switch(e.referrerPolicy){case`no-referrer`:t=null;break;case`no-referrer-when-downgrade`:case`strict-origin`:case`strict-origin-when-cross-origin`:e.origin&&Ce(e.origin)&&!Ce(T(e))&&(t=null);break;case`same-origin`:fe(e,T(e))||(t=null)}e.headersList.append(`origin`,t,!0)}}}function L(e,t){return e}function R(e,t,n){return!e?.startTime||e.startTime4096&&(r=i),t){case`no-referrer`:return`no-referrer`;case`origin`:return i??ae(n,!0);case`unsafe-url`:return r;case`strict-origin`:{let t=T(e);return ue(r)&&!ue(t)?`no-referrer`:i}case`strict-origin-when-cross-origin`:{let t=T(e);return fe(r,t)?r:ue(r)&&!ue(t)?`no-referrer`:i}case`same-origin`:return fe(e,r)?r:`no-referrer`;case`origin-when-cross-origin`:return fe(e,r)?r:i;case`no-referrer-when-downgrade`:{let t=T(e);return ue(r)&&!ue(t)?`no-referrer`:r}}}function ae(e,t=!1){return m(g.is.URL(e)),e=new URL(e),Se(e)?`no-referrer`:(e.username=``,e.password=``,e.hash=``,t===!0&&(e.pathname=``,e.search=``),e)}let oe=RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/),se=RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);function ce(e){return e.includes(`:`)?(e[0]===`[`&&e[e.length-1]===`]`&&(e=e.slice(1,-1)),se(e)):oe(e)}function le(e){return e==null||e===`null`?!1:(e=new URL(e),!!(e.protocol===`https:`||e.protocol===`wss:`||ce(e.hostname)||e.hostname===`localhost`||e.hostname===`localhost.`||e.hostname.endsWith(`.localhost`)||e.hostname.endsWith(`.localhost.`)||e.protocol===`file:`))}function ue(e){return g.is.URL(e)?e.href===`about:blank`||e.href===`about:srcdoc`||e.protocol===`data:`||e.protocol===`blob:`||le(e.origin):!1}function de(e){}function fe(e,t){return e.origin===t.origin&&e.origin===`null`||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function pe(e){return e.controller.state===`aborted`}function me(e){return e.controller.state===`aborted`||e.controller.state===`terminated`}function he(e){return p[e.toLowerCase()]??e}let ge=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function _e(e,t,n=0,r=1){class i{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=0}next(){if(typeof this!=`object`||this===null||!(#e in this))throw TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let i=this.#n,a=t(this.#e);if(i>=a.length)return{value:void 0,done:!0};let{[n]:o,[r]:s}=a[i];this.#n=i+1;let c;switch(this.#t){case`key`:c=o;break;case`value`:c=s;break;case`key+value`:c=[o,s]}return{value:c,done:!1}}}return delete i.prototype.constructor,Object.setPrototypeOf(i.prototype,ge),Object.defineProperties(i.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(e,t){return new i(e,t)}}function ve(e,t,n,r=0,i=1,a){let o=_e(e,n,r,i),s={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return g.brandCheck(this,a),o(this,`key`)}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return g.brandCheck(this,a),o(this,`value`)}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return g.brandCheck(this,a),o(this,`key+value`)}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(t,n=globalThis){if(g.brandCheck(this,a),g.argumentLengthCheck(arguments,1,`${e}.forEach`),typeof t!=`function`)throw TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`);for(let{0:e,1:r}of o(this,`key+value`))t.call(n,r,e,this)}}};return Object.defineProperties(t.prototype,{...s,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:s.entries.value}})}function ye(e,t,n){let r=t,i=n;try{xe(e.stream.getReader(),r,i)}catch(e){i(e)}}function be(e){try{e.close(),e.byobRequest?.respond(0)}catch(e){if(!e.message.includes(`Controller is already closed`)&&!e.message.includes(`ReadableStream is already closed`))throw e}}async function xe(e,t,n){try{let r=[],i=0;do{let{done:a,value:o}=await e.read();if(a){t(Buffer.concat(r,i));return}if(!h(o)){n(/* @__PURE__ */ TypeError(`Received non-Uint8Array chunk`));return}r.push(o),i+=o.length}while(1)}catch(e){n(e)}}function Se(e){m(`protocol`in e);let t=e.protocol;return t===`about:`||t===`blob:`||t===`data:`}function Ce(e){return typeof e==`string`&&e[5]===`:`&&e[0]===`h`&&e[1]===`t`&&e[2]===`t`&&e[3]===`p`&&e[4]===`s`||e.protocol===`https:`}function we(e){m(`protocol`in e);let t=e.protocol;return t===`http:`||t===`https:`}function Te(e,t){let n=e;if(!n.startsWith(`bytes`))return`failure`;let r={position:5};if(t&&y(e=>e===` `||e===` `,n,r),n.charCodeAt(r.position)!==61)return`failure`;r.position++,t&&y(e=>e===` `||e===` `,n,r);let i=y(e=>{let t=e.charCodeAt(0);return t>=48&&t<=57},n,r),a=i.length?Number(i):null;if(t&&y(e=>e===` `||e===` `,n,r),n.charCodeAt(r.position)!==45)return`failure`;r.position++,t&&y(e=>e===` `||e===` `,n,r);let o=y(e=>{let t=e.charCodeAt(0);return t>=48&&t<=57},n,r),s=o.length?Number(o):null;return r.positions?`failure`:{rangeStartValue:a,rangeEndValue:s}}function Ee(e,t,n){let r=`bytes `;return r+=v(`${e}`),r+=`-`,r+=v(`${t}`),r+=`/`,r+=v(`${n}`),r}var De=class extends r{#e;constructor(e){super(),this.#e=e}_transform(e,t,n){if(!this._inflateStream){if(e.length===0){n();return}this._inflateStream=(e[0]&15)==8?i.createInflate(this.#e):i.createInflateRaw(this.#e),this._inflateStream.on(`data`,this.push.bind(this)),this._inflateStream.on(`end`,()=>this.push(null)),this._inflateStream.on(`error`,e=>this.destroy(e))}this._inflateStream.write(e,t,n)}_final(e){this._inflateStream&&=(this._inflateStream.end(),null),e()}};function Oe(e){return new De(e)}function ke(e){let t=null,n=null,r=null,i=je(`content-type`,e);if(i===null)return`failure`;for(let e of i){let i=u(e);i!==`failure`&&i.essence!==`*/*`&&(r=i,r.essence===n?!r.parameters.has(`charset`)&&t!==null&&r.parameters.set(`charset`,t):(t=null,r.parameters.has(`charset`)&&(t=r.parameters.get(`charset`)),n=r.essence))}return r??`failure`}function Ae(e){let t=e,n={position:0},r=[],i=``;for(;n.positione!==`"`&&e!==`,`,t,n),n.positione===9||e===32),r.push(i),i=``}return r}function je(e,t){let n=t.get(e,!0);return n===null?null:Ae(n)}function Me(e){return!1}function Ne(e){return!!(e.username||e.password)}function Pe(e){return e!=null&&e!==`client`&&e!==`no-traversable`}var Fe=class{get baseUrl(){return c()}get origin(){return this.baseUrl?.origin}policyContainer=re()};n.exports={isAborted:pe,isCancelled:me,isValidEncodedURL:C,tryUpgradeRequestToAPotentiallyTrustworthyURL:de,clampAndCoarsenConnectionTimingInfo:R,coarsenedSharedCurrentTime:te,determineRequestsReferrer:z,makePolicyContainer:re,clonePolicyContainer:ie,appendFetchMetadata:I,appendRequestOriginHeader:ee,TAOCheck:F,corsCheck:P,crossOriginResourcePolicyCheck:N,createOpaqueTimingInfo:ne,setRequestReferrerPolicyOnRedirect:M,isValidHTTPToken:f,requestBadPort:E,requestCurrentURL:T,responseURL:x,responseLocationURL:S,isURLPotentiallyTrustworthy:ue,isValidReasonPhrase:O,sameOrigin:fe,normalizeMethod:he,iteratorMixin:ve,createIterator:_e,isValidHeaderName:k,isValidHeaderValue:A,isErrorLike:D,fullyReadBody:ye,readableStreamClose:be,urlIsLocal:Se,urlHasHttpsScheme:Ce,urlIsHttpHttpsScheme:we,readAllBytes:xe,simpleRangeHeaderValue:Te,buildContentRange:Ee,createInflate:Oe,extractMimeType:ke,getDecodeSplit:je,environmentSettingsObject:new class{settingsObject=new Fe},isOriginIPPotentiallyTrustworthy:ce,hasAuthenticationEntry:Me,includesCredentials:Ne,isTraversableNavigable:Pe}})),zi=/* @__PURE__ */ a(((e,n)=>{let r={__proto__:null,"node:crypto":()=>t(`node:crypto`),"node:sqlite":()=>t(`node:sqlite`)};function i(e){try{return r[e](),!0}catch(e){if(e.code!==`ERR_UNKNOWN_BUILTIN_MODULE`&&e.code!==`ERR_NO_CRYPTO`)throw e;return!1}}let a=[`crypto`,`sqlite`];function o(e){if(a.includes(e))return i(`node:${e}`);throw TypeError(`unknown feature: ${e}`)}let s=new class{#e=/* @__PURE__ */ new Map;clear(){this.#e.clear()}has(e){return this.#e.get(e)??this.#t(e)}set(e,t){if(a.includes(e)===!1)throw TypeError(`unknown feature: ${e}`);this.#e.set(e,t)}#t(e){let t=o(e);return this.#e.set(e,t),t}};n.exports.runtimeFeatures=s,n.exports.default=s})),Bi=/* @__PURE__ */ a(((e,n)=>{let{iteratorMixin:r}=Ri(),{kEnumerableProperty:i}=xi(),{webidl:a}=Li(),o=t(`node:util`),{runtimeFeatures:s}=zi(),c=s.has(`crypto`)?t(`node:crypto`).randomInt:e=>Math.floor(Math.random()*e),l,u,d;var f=class{#e=[];#t=null;constructor(e=void 0){if(a.util.markAsUncloneable(this),e!==void 0)throw a.errors.conversionFailed({prefix:`FormData constructor`,argument:`Argument 1`,types:[`undefined`]})}append(e,t,n=void 0){a.brandCheck(this,a.is.FormData);let r=`FormData.append`;a.argumentLengthCheck(arguments,2,r),e=a.converters.USVString(e),arguments.length===3||a.is.Blob(t)?(t=a.converters.Blob(t,r,`value`),n!==void 0&&(n=a.converters.USVString(n))):t=a.converters.USVString(t);let i=p(e,t,n);this.#e.push(i)}delete(e){a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.delete`),e=a.converters.USVString(e),this.#e=this.#e.filter(t=>t.name!==e)}get(e){a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.get`),e=a.converters.USVString(e);let t=this.#e.findIndex(t=>t.name===e);return t===-1?null:this.#e[t].value}getAll(e){return a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.getAll`),e=a.converters.USVString(e),this.#e.filter(t=>t.name===e).map(e=>e.value)}has(e){return a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.has`),e=a.converters.USVString(e),this.#e.findIndex(t=>t.name===e)!==-1}set(e,t,n=void 0){a.brandCheck(this,a.is.FormData);let r=`FormData.set`;a.argumentLengthCheck(arguments,2,r),e=a.converters.USVString(e),arguments.length===3||a.is.Blob(t)?(t=a.converters.Blob(t,r,`value`),n!==void 0&&(n=a.converters.USVString(n))):t=a.converters.USVString(t);let i=p(e,t,n),o=this.#e.findIndex(t=>t.name===e);o===-1?this.#e.push(i):this.#e=[...this.#e.slice(0,o),i,...this.#e.slice(o+1).filter(t=>t.name!==e)]}[o.inspect.custom](e,t){let n=this.#e.reduce((e,t)=>(e[t.name]?Array.isArray(e[t.name])?e[t.name].push(t.value):e[t.name]=[e[t.name],t.value]:e[t.name]=t.value,e),{__proto__:null});t.depth??=e,t.colors??=!0;let r=o.formatWithOptions(t,n);return`FormData ${r.slice(r.indexOf(`]`)+2)}`}static{l=e=>e.#e,u=(e,t)=>{e.#e=t},d=e=>e.#t??=`----formdata-undici-0${`${c(1e11)}`.padStart(11,`0`)}`,a.is.FormData=e=>typeof e==`object`&&!!e&&#e in e}};r(`FormData`,f,l,`name`,`value`,a.is.FormData),Object.defineProperties(f.prototype,{append:i,delete:i,get:i,getAll:i,has:i,set:i,[Symbol.toStringTag]:{value:`FormData`,configurable:!0}});function p(e,t,n){if(typeof t!=`string`&&(a.is.File(t)||(t=new File([t],`blob`,{type:t.type})),n!==void 0)){let e={type:t.type,lastModified:t.lastModified};t=new File([t],n,e)}return{name:e,value:t}}n.exports={FormData:f,makeEntry:p,setFormDataState:u,getFormDataBoundary:d}})),Vi=/* @__PURE__ */ a(((e,n)=>{let{bufferToLowerCasedHeaderName:r}=xi(),{HTTP_TOKEN_CODEPOINTS:i}=Ii(),{makeEntry:a}=Bi(),{webidl:o}=Li(),s=t(`node:assert`),{isomorphicDecode:c}=Fi(),l=Buffer.from(`--`),u=new TextDecoder,d=new TextDecoder(`utf-8`,{ignoreBOM:!0});function f(e){for(let t=0;t70)return!1;for(let n=0;n=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===39||t===45||t===95))return!1}return!0}function m(e,t){s(t!==`failure`&&t.essence===`multipart/form-data`);let n=t.parameters.get(`boundary`);if(n===void 0)throw x(`missing boundary in content-type header`);let r=Buffer.from(`--${n}`,`utf8`),i=[],c={position:0},u=e.indexOf(r);if(u===-1)throw x(`no boundary found in multipart body`);for(c.position=u;;){if(e.subarray(c.position,c.position+r.length).equals(r))c.position+=r.length;else throw x(`expected a value starting with -- and the boundary`);if(b(e,l,c))return i;if(e[c.position]!==13||e[c.position+1]!==10)throw x(`expected CRLF`);c.position+=2;let{name:t,filename:n,contentType:u,encoding:p}=g(e,c);c.position+=2;let m;{let t=e.indexOf(r.subarray(2),c.position);if(t===-1)throw x(`expected boundary after body`);m=e.subarray(c.position,t-4),c.position+=m.length,p===`base64`&&(m=Buffer.from(m.toString(),`base64`))}if(e[c.position]!==13||e[c.position+1]!==10)throw x(`expected CRLF`);c.position+=2;let h;n===null?h=d.decode(Buffer.from(m)):(u??=`text/plain`,f(u)||(u=``),h=new File([m],n,{type:u})),s(o.is.USVString(t)),s(typeof h==`string`&&o.is.USVString(h)||o.is.File(h)),i.push(a(t,h,n))}}function h(e,t){e[t.position]===59&&t.position++,v(e=>e===32||e===9,e,t);let n=v(e=>w(e)&&e!==61&&e!==42,e,t);if(n.length===0)return null;let r=n.toString(`ascii`).toLowerCase(),i=e[t.position]===42;if(i&&t.position++,e[t.position]!==61)return null;t.position++,v(e=>e===32||e===9,e,t);let a;if(i){let n=v(e=>e!==32&&e!==13&&e!==10&&e!==59,e,t);if(n[0]!==117&&n[0]!==85||n[1]!==116&&n[1]!==84||n[2]!==102&&n[2]!==70||n[3]!==45||n[4]!==56)throw x(`unknown encoding, expected utf-8''`);a=decodeURIComponent(u.decode(n.subarray(7)))}else if(e[t.position]===34){t.position++;let n=v(e=>e!==10&&e!==13&&e!==34,e,t);if(e[t.position]!==34)throw x(`Closing quote not found`);t.position++,a=u.decode(n).replace(/%0A/gi,` -`).replace(/%0D/gi,`\r`).replace(/%22/g,`"`)}else{let n=v(e=>w(e)&&e!==59,e,t);a=u.decode(n)}return{name:r,value:a,extended:i}}function g(e,t){let n=null,a=null,o=null,s=null;for(;;){if(e[t.position]===13&&e[t.position+1]===10){if(n===null)throw x(`header name is null`);return{name:n,filename:a,contentType:o,encoding:s}}let l=v(e=>e!==10&&e!==13&&e!==58,e,t);if(l=y(l,!0,!0,e=>e===9||e===32),!i.test(l.toString()))throw x(`header name does not match the field-name token production`);if(e[t.position]!==58)throw x(`expected :`);switch(t.position++,v(e=>e===32||e===9,e,t),r(l)){case`content-disposition`:{n=a=null;let r=!1;if(v(e=>w(e),e,t).toString(`ascii`).toLowerCase()!==`form-data`)throw x(`expected form-data for content-disposition header`);for(;t.positione!==10&&e!==13,e,t);n=y(n,!1,!0,e=>e===9||e===32),o=c(n);break}case`content-transfer-encoding`:{let n=v(e=>e!==10&&e!==13,e,t);n=y(n,!1,!0,e=>e===9||e===32),s=c(n);break}default:v(e=>e!==10&&e!==13,e,t)}if(e[t.position]!==13||e[t.position+1]!==10)throw x(`expected CRLF`);t.position+=2}}function v(e,t,n){let r=n.position;for(;r0&&r(e[a]);)a--;return i===0&&a===e.length-1?e:e.subarray(i,a+1)}function b(e,t,n){if(e.length{let r=xi(),{readableStreamClose:i,fullyReadBody:a,extractMimeType:o}=Ri(),{FormData:s,setFormDataState:c,getFormDataBoundary:l}=Bi(),{webidl:u}=Li(),d=t(`node:assert`),{isErrored:f,isDisturbed:p}=t(`node:stream`),{isUint8Array:m}=t(`node:util/types`),{serializeAMimeType:h}=Ii(),{multipartFormDataParser:g}=Vi(),{parseJSONFromBytes:v}=Fi(),{utf8DecodeBytes:y}=Pi(),{ReadableStreamTee:b}=t(`node:stream/web`),x=new TextEncoder;function S(){}let C=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!p(t)&&!f(t)&&t.cancel(`Response object has been garbage collected`).catch(S)});function w(e,t=!1){let n=null,a=null;n=u.is.ReadableStream(e)?e:u.is.Blob(e)?e.stream():new ReadableStream({pull(){},start(e){a=e},cancel(){},type:`bytes`}),d(u.is.ReadableStream(n));let o=null,s=null,c=null,p=null;if(typeof e==`string`)s=e,p=`text/plain;charset=UTF-8`;else if(u.is.URLSearchParams(e))s=e.toString(),p=`application/x-www-form-urlencoded;charset=UTF-8`;else if(u.is.BufferSource(e))s=u.util.getCopyOfBytesHeldByBufferSource(e);else if(u.is.FormData(e)){let t=l(e),n=`--${t}\r\nContent-Disposition: form-data`,r=e=>e.replace(/\n/g,`%0A`).replace(/\r/g,`%0D`).replace(/"/g,`%22`),i=e=>e.replace(/\r?\n|\r/g,`\r +import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-Dlfrvzb7.js";import{i as o,r as s,t as c}from"./client-BuN0IqFT.js";import{$n as l,An as u,Bn as d,Cn as f,Cr as p,Ct as m,Dn as h,Dt as g,Et as v,F as y,Fn as b,G as x,Hn as S,I as C,It as w,Jn as T,K as E,Kn as D,Kt as O,L as k,Lt as A,Mn as j,Nt as M,On as N,Ot as P,Pn as F,Q as I,Qt as ee,Rn as L,Tn as R,Tt as te,U as ne,Ut as re,V as ie,Vt as z,W as ae,Wn as oe,X as se,Xn as ce,Y as le,Yt as ue,_n as de,_r as fe,at as pe,bn as me,bt as he,cr as ge,dn as _e,en as ve,er as ye,et as be,fn as xe,fr as Se,ft as Ce,gr as we,gt as Te,hn as Ee,ir as De,jt as Oe,kt as ke,ln as Ae,lt as je,mr as Me,mt as Ne,n as Pe,nn as Fe,nr as Ie,nt as Le,on as Re,or as ze,ot as Be,pn as Ve,q as He,qn as Ue,qt as We,rn as Ge,rt as Ke,sn as qe,t as Je,tn as Ye,tt as Xe,ur as Ze,ut as Qe,vn as $e,wn as et,xr as tt,xt as nt,yr as rt,yt as it,z as at,zn as ot,zt as st}from"./event-streams-BzoYgVLv.js";import{t as ct}from"./dist-cjs-COfBbO4D.js";import{$ as lt,C as ut,F as dt,H as ft,J as pt,K as mt,L as ht,N as gt,O as _t,S as vt,T as yt,V as bt,W as xt,Z as St,_ as Ct,b as wt,c as Tt,et as Et,i as Dt,j as Ot,k as kt,n as At,nt as jt,o as Mt,p as Nt,r as Pt,s as Ft,t as It,u as Lt,w as Rt,z as zt}from"./serde-rz2OE_pF.js";import{$ as Bt,B as Vt,C as Ht,E as Ut,H as Wt,I as Gt,J as Kt,K as qt,N as Jt,O as Yt,P as Xt,W as Zt,X as Qt,Z as $t,_ as en,a as tn,b as nn,f as rn,g as an,h as on,j as sn,k as cn,l as ln,m as un,n as dn,r as fn,t as pn,tt as mn,x as hn,z as gn}from"./serde-BzaiL1X6.js";import{B as _n,C as vn,F as yn,H as bn,L as xn,N as Sn,O as Cn,Q as wn,S as Tn,T as En,W as Dn,X as On,Y as kn,_ as An,b as jn,c as Mn,i as Nn,j as Pn,k as Fn,n as In,o as Ln,p as Rn,q as zn,r as Bn,s as Vn,t as Hn,u as Un,w as Wn,z as Gn}from"./serde-B9ozA8s3.js";import{createRequire as Kn}from"node:module";import qn,{env as Jn,versions as B}from"node:process";import*as Yn from"os";import Xn,{EOL as Zn}from"os";import*as Qn from"crypto";import*as $n from"fs";import{constants as er,existsSync as tr,promises as nr,readFileSync as rr,writeFileSync as ir}from"fs";import*as V from"path";import{normalize as ar,resolve as or}from"path";import*as sr from"http";import*as cr from"https";import*as lr from"events";import{EventEmitter as ur}from"events";import dr,{ok as fr}from"assert";import*as pr from"util";import mr,*as hr from"node:net";import gr from"node:http";import _r,{Readable as vr,Transform as yr}from"node:stream";import br,{inspect as xr}from"node:util";import Sr,{Buffer as Cr}from"node:buffer";import wr from"node:zlib";import{createHash as Tr,createHmac as Er,randomUUID as Dr}from"node:crypto";import{DatabaseSync as Or}from"node:sqlite";import{fileURLToPath as kr}from"node:url";import*as Ar from"node:fs/promises";import{readFile as jr}from"node:fs/promises";import*as Mr from"node:path";import eee,{dirname as tee,join as Nr,sep as nee}from"node:path";import{StringDecoder as Pr}from"string_decoder";import*as Fr from"child_process";import{setTimeout as Ir}from"timers";import*as Lr from"node:fs";import Rr,{createReadStream as zr,readFileSync as Br}from"node:fs";import{spawnSync as Vr}from"node:child_process";import*as Hr from"node:os";import Ur,{EOL as Wr,homedir as Gr,platform as Kr,release as qr}from"node:os";import{pipeline as Jr}from"node:stream/promises";import Yr from"node:https";import*as Xr from"stream";import{Readable as Zr}from"stream";import{URL as Qr}from"url";import $r from"node:tty";import*as ei from"buffer";import{Buffer as ti}from"buffer";import ni,{realpath as H}from"fs/promises";function ri(e){return e==null?``:typeof e==`string`||e instanceof String?e:JSON.stringify(e)}function ii(e){return Object.keys(e).length?{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}:{}}function ai(e,t,n){let r=new oi(e,t,n);process.stdout.write(r.toString()+Yn.EOL)}var oi=class{constructor(e,t,n){e||=`missing.command`,this.command=e,this.properties=t,this.message=n}toString(){let e=`::`+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=` `;let t=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let r=this.properties[n];r&&(t?t=!1:e+=`,`,e+=`${n}=${ci(r)}`)}}return e+=`::${si(this.message)}`,e}};function si(e){return ri(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`)}function ci(e){return ri(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`).replace(/:/g,`%3A`).replace(/,/g,`%2C`)}function li(e,t){let n=process.env[`GITHUB_${e}`];if(!n)throw Error(`Unable to find environment variable for file command ${e}`);if(!$n.existsSync(n))throw Error(`Missing file at path: ${n}`);$n.appendFileSync(n,`${ri(t)}${Yn.EOL}`,{encoding:`utf8`})}function ui(e,t){let n=`ghadelimiter_${Qn.randomUUID()}`,r=ri(t);if(e.includes(n))throw Error(`Unexpected input: name should not contain the delimiter "${n}"`);if(r.includes(n))throw Error(`Unexpected input: value should not contain the delimiter "${n}"`);return`${e}<<${n}${Yn.EOL}${r}${Yn.EOL}${n}`}function di(e){let t=e.protocol===`https:`;if(fi(e))return;let n=t?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(n)try{return new mi(n)}catch{if(!n.startsWith(`http://`)&&!n.startsWith(`https://`))return new mi(`http://${n}`)}else return}function fi(e){if(!e.hostname)return!1;let t=e.hostname;if(pi(t))return!0;let n=process.env.no_proxy||process.env.NO_PROXY||``;if(!n)return!1;let r;e.port?r=Number(e.port):e.protocol===`http:`?r=80:e.protocol===`https:`&&(r=443);let i=[e.hostname.toUpperCase()];typeof r==`number`&&i.push(`${i[0]}:${r}`);for(let e of n.split(`,`).map(e=>e.trim().toUpperCase()).filter(e=>e))if(e===`*`||i.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(`.`)&&t.endsWith(`${e}`)))return!0;return!1}function pi(e){let t=e.toLowerCase();return t===`localhost`||t.startsWith(`127.`)||t.startsWith(`[::1]`)||t.startsWith(`[0:0:0:0:0:0:0:1]`)}var mi=class extends URL{constructor(e,t){super(e,t),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}},hi=/* @__PURE__ */ a((e=>{t(`net`);var n=t(`tls`),r=t(`http`),i=t(`https`),a=t(`events`);t(`assert`);var o=t(`util`);e.httpOverHttp=s,e.httpsOverHttp=c,e.httpOverHttps=l,e.httpsOverHttps=u;function s(e){var t=new d(e);return t.request=r.request,t}function c(e){var t=new d(e);return t.request=r.request,t.createSocket=f,t.defaultPort=443,t}function l(e){var t=new d(e);return t.request=i.request,t}function u(e){var t=new d(e);return t.request=i.request,t.createSocket=f,t.defaultPort=443,t}function d(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||r.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on(`free`,function(e,n,r,i){for(var a=p(n,r,i),o=0,s=t.requests.length;o=this.maxSockets?i.requests.push(a):i.createSocket(a,function(t){t.on(`free`,n),t.on(`close`,r),t.on(`agentRemove`,r),e.onSocket(t);function n(){i.emit(`free`,t,a)}function r(e){i.removeSocket(t),t.removeListener(`free`,n),t.removeListener(`close`,r),t.removeListener(`agentRemove`,r)}})},d.prototype.createSocket=function(e,t){var n=this,r={};n.sockets.push(r);var i=m({},n.proxyOptions,{method:`CONNECT`,path:e.host+`:`+e.port,agent:!1,headers:{host:e.host+`:`+e.port}});e.localAddress&&(i.localAddress=e.localAddress),i.proxyAuth&&(i.headers=i.headers||{},i.headers[`Proxy-Authorization`]=`Basic `+new Buffer(i.proxyAuth).toString(`base64`)),h(`making CONNECT request`);var a=n.request(i);a.useChunkedEncodingByDefault=!1,a.once(`response`,o),a.once(`upgrade`,s),a.once(`connect`,c),a.once(`error`,l),a.end();function o(e){e.upgrade=!0}function s(e,t,n){process.nextTick(function(){c(e,t,n)})}function c(i,o,s){if(a.removeAllListeners(),o.removeAllListeners(),i.statusCode!==200){h(`tunneling socket could not be established, statusCode=%d`,i.statusCode),o.destroy();var c=/* @__PURE__ */ Error(`tunneling socket could not be established, statusCode=`+i.statusCode);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r)}else if(s.length>0){h(`got illegal response body from proxy`),o.destroy();var c=/* @__PURE__ */ Error(`got illegal response body from proxy`);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r)}else return h(`tunneling connection has established`),n.sockets[n.sockets.indexOf(r)]=o,t(o)}function l(t){a.removeAllListeners(),h(`tunneling socket could not be established, cause=%s +`,t.message,t.stack);var i=/* @__PURE__ */ Error(`tunneling socket could not be established, cause=`+t.message);i.code=`ECONNRESET`,e.request.emit(`error`,i),n.removeSocket(r)}},d.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var n=this.requests.shift();n&&this.createSocket(n,function(e){n.request.onSocket(e)})}};function f(e,t){var r=this;d.prototype.createSocket.call(r,e,function(i){var a=e.request.getHeader(`host`),o=m({},r.options,{socket:i,servername:a?a.replace(/:.*$/,``):e.host}),s=n.connect(0,o);r.sockets[r.sockets.indexOf(i)]=s,t(s)})}function p(e,t,n){return typeof e==`string`?{host:e,port:t,localAddress:n}:e}function m(e){for(var t=1,n=arguments.length;t{t.exports=hi()})),_i=/* @__PURE__ */ a(((e,t)=>{t.exports={kClose:Symbol(`close`),kDestroy:Symbol(`destroy`),kDispatch:Symbol(`dispatch`),kUrl:Symbol(`url`),kRequestOrigin:Symbol(`request origin`),kOriginless:Symbol(`originless`),kWriting:Symbol(`writing`),kResuming:Symbol(`resuming`),kQueue:Symbol(`queue`),kConnect:Symbol(`connect`),kConnecting:Symbol(`connecting`),kKeepAliveDefaultTimeout:Symbol(`default keep alive timeout`),kKeepAliveMaxTimeout:Symbol(`max keep alive timeout`),kKeepAliveTimeoutThreshold:Symbol(`keep alive timeout threshold`),kKeepAliveTimeoutValue:Symbol(`keep alive timeout`),kKeepAlive:Symbol(`keep alive`),kHeadersTimeout:Symbol(`headers timeout`),kBodyTimeout:Symbol(`body timeout`),kServerName:Symbol(`server name`),kLocalAddress:Symbol(`local address`),kHost:Symbol(`host`),kNoRef:Symbol(`no ref`),kBodyUsed:Symbol(`used`),kBody:Symbol(`abstracted request body`),kRunning:Symbol(`running`),kBlocking:Symbol(`blocking`),kPending:Symbol(`pending`),kSize:Symbol(`size`),kBusy:Symbol(`busy`),kQueued:Symbol(`queued`),kFree:Symbol(`free`),kConnected:Symbol(`connected`),kClosed:Symbol(`closed`),kNeedDrain:Symbol(`need drain`),kReset:Symbol(`reset`),kDestroyed:Symbol.for(`nodejs.stream.destroyed`),kResume:Symbol(`resume`),kOnError:Symbol(`on error`),kMaxHeadersSize:Symbol(`max headers size`),kRunningIdx:Symbol(`running index`),kPendingIdx:Symbol(`pending index`),kError:Symbol(`error`),kClients:Symbol(`clients`),kClient:Symbol(`client`),kParser:Symbol(`parser`),kOnDestroyed:Symbol(`destroy callbacks`),kPipelining:Symbol(`pipelining`),kSocket:Symbol(`socket`),kHostHeader:Symbol(`host header`),kConnector:Symbol(`connector`),kStrictContentLength:Symbol(`strict content length`),kMaxRedirections:Symbol(`maxRedirections`),kMaxRequests:Symbol(`maxRequestsPerClient`),kProxy:Symbol(`proxy agent options`),kCounter:Symbol(`socket request counter`),kMaxResponseSize:Symbol(`max response size`),kHTTP2Session:Symbol(`http2Session`),kHTTP2Options:Symbol(`http2 options`),kHTTP2SessionState:Symbol(`http2Session state`),kRetryHandlerDefaultRetry:Symbol(`retry agent default retry`),kConstruct:Symbol(`constructable`),kListeners:Symbol(`listeners`),kHTTPContext:Symbol(`http context`),kMaxConcurrentStreams:Symbol(`max concurrent streams`),kHostAuthority:Symbol(`host authority`),kHTTP2InitialWindowSize:Symbol(`http2 initial window size`),kHTTP2ConnectionWindowSize:Symbol(`http2 connection window size`),kEnableConnectProtocol:Symbol(`http2session connect protocol`),kRemoteSettings:Symbol(`http2session remote settings`),kHTTP2Stream:Symbol(`http2session client stream`),kPingInterval:Symbol(`ping interval`),kNoProxyAgent:Symbol(`no proxy agent`),kHttpProxyAgent:Symbol(`http proxy agent`),kHttpsProxyAgent:Symbol(`https proxy agent`),kSocks5ProxyAgent:Symbol(`socks5 proxy agent`)}})),vi=/* @__PURE__ */ a(((e,t)=>{let n=0,r=1e3,i,a=Symbol(`kFastTimer`),o=[];function s(){n+=499;let e=0,t=o.length;for(;e=r._idleStart+r._idleTimeout&&(r._state=-1,r._idleStart=-1,r._onTimeout(r._timerArg)),r._state===-1?(r._state=-2,--t!==0&&(o[e]=o[t])):++e}o.length=t,o.length!==0&&c()}function c(){i?.refresh?i.refresh():(clearTimeout(i),i=setTimeout(s,499),i?.unref())}var l=class{[a]=!0;_state=-2;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(e,t,n){this._onTimeout=e,this._idleTimeout=t,this._timerArg=n,this.refresh()}refresh(){this._state===-2&&o.push(this),i&&o.length!==1||c(),this._state=0}clear(){this._state=-1,this._idleStart=-1}};t.exports={setTimeout(e,t,n){return t<=r?setTimeout(e,t,n):new l(e,t,n)},clearTimeout(e){e[a]?e.clear():clearTimeout(e)},setFastTimeout(e,t,n){return new l(e,t,n)},clearFastTimeout(e){e.clear()},now(){return n},tick(e=0){n+=e-r+1,s(),s()},reset(){n=0,o.length=0,clearTimeout(i),i=null},kFastTimer:a}})),yi=/* @__PURE__ */ a(((e,t)=>{let n=Symbol.for(`undici.error.UND_ERR`);var r=class extends Error{constructor(e,t){super(e,t),this.name=`UndiciError`,this.code=`UND_ERR`}static[Symbol.hasInstance](e){return e&&e[n]===!0}get[n](){return!0}};let i=Symbol.for(`undici.error.UND_ERR_CONNECT_TIMEOUT`);var a=class extends r{constructor(e){super(e),this.name=`ConnectTimeoutError`,this.message=e||`Connect Timeout Error`,this.code=`UND_ERR_CONNECT_TIMEOUT`}static[Symbol.hasInstance](e){return e&&e[i]===!0}get[i](){return!0}};let o=Symbol.for(`undici.error.UND_ERR_HEADERS_TIMEOUT`);var s=class extends r{constructor(e){super(e),this.name=`HeadersTimeoutError`,this.message=e||`Headers Timeout Error`,this.code=`UND_ERR_HEADERS_TIMEOUT`}static[Symbol.hasInstance](e){return e&&e[o]===!0}get[o](){return!0}};let c=Symbol.for(`undici.error.UND_ERR_HEADERS_OVERFLOW`);var l=class extends r{constructor(e){super(e),this.name=`HeadersOverflowError`,this.message=e||`Headers Overflow Error`,this.code=`UND_ERR_HEADERS_OVERFLOW`}static[Symbol.hasInstance](e){return e&&e[c]===!0}get[c](){return!0}};let u=Symbol.for(`undici.error.UND_ERR_BODY_TIMEOUT`);var d=class extends r{constructor(e){super(e),this.name=`BodyTimeoutError`,this.message=e||`Body Timeout Error`,this.code=`UND_ERR_BODY_TIMEOUT`}static[Symbol.hasInstance](e){return e&&e[u]===!0}get[u](){return!0}};let f=Symbol.for(`undici.error.UND_ERR_INVALID_ARG`);var p=class extends r{constructor(e){super(e),this.name=`InvalidArgumentError`,this.message=e||`Invalid Argument Error`,this.code=`UND_ERR_INVALID_ARG`}static[Symbol.hasInstance](e){return e&&e[f]===!0}get[f](){return!0}};let m=Symbol.for(`undici.error.UND_ERR_INVALID_RETURN_VALUE`);var h=class extends r{constructor(e){super(e),this.name=`InvalidReturnValueError`,this.message=e||`Invalid Return Value Error`,this.code=`UND_ERR_INVALID_RETURN_VALUE`}static[Symbol.hasInstance](e){return e&&e[m]===!0}get[m](){return!0}};let g=Symbol.for(`undici.error.UND_ERR_ABORT`);var v=class extends r{constructor(e){super(e),this.name=`AbortError`,this.message=e||`The operation was aborted`,this.code=`UND_ERR_ABORT`}static[Symbol.hasInstance](e){return e&&e[g]===!0}get[g](){return!0}};let y=Symbol.for(`undici.error.UND_ERR_ABORTED`);var b=class extends v{constructor(e){super(e),this.name=`AbortError`,this.message=e||`Request aborted`,this.code=`UND_ERR_ABORTED`}static[Symbol.hasInstance](e){return e&&e[y]===!0}get[y](){return!0}};let x=Symbol.for(`undici.error.UND_ERR_INFO`);var S=class extends r{constructor(e,t){super(e,t),this.name=`InformationalError`,this.message=e||`Request information`,this.code=`UND_ERR_INFO`}static[Symbol.hasInstance](e){return e&&e[x]===!0}get[x](){return!0}};let C=Symbol.for(`undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH`);var w=class extends r{constructor(e){super(e),this.name=`RequestContentLengthMismatchError`,this.message=e||`Request body length does not match content-length header`,this.code=`UND_ERR_REQ_CONTENT_LENGTH_MISMATCH`}static[Symbol.hasInstance](e){return e&&e[C]===!0}get[C](){return!0}};let T=Symbol.for(`undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH`);var E=class extends r{constructor(e){super(e),this.name=`ResponseContentLengthMismatchError`,this.message=e||`Response body length does not match content-length header`,this.code=`UND_ERR_RES_CONTENT_LENGTH_MISMATCH`}static[Symbol.hasInstance](e){return e&&e[T]===!0}get[T](){return!0}};let D=Symbol.for(`undici.error.UND_ERR_DESTROYED`);var O=class extends r{constructor(e){super(e),this.name=`ClientDestroyedError`,this.message=e||`The client is destroyed`,this.code=`UND_ERR_DESTROYED`}static[Symbol.hasInstance](e){return e&&e[D]===!0}get[D](){return!0}};let k=Symbol.for(`undici.error.UND_ERR_CLOSED`);var A=class extends r{constructor(e){super(e),this.name=`ClientClosedError`,this.message=e||`The client is closed`,this.code=`UND_ERR_CLOSED`}static[Symbol.hasInstance](e){return e&&e[k]===!0}get[k](){return!0}};let j=Symbol.for(`undici.error.UND_ERR_SOCKET`);var M=class extends r{constructor(e,t){super(e),this.name=`SocketError`,this.message=e||`Socket error`,this.code=`UND_ERR_SOCKET`,this.socket=t}static[Symbol.hasInstance](e){return e&&e[j]===!0}get[j](){return!0}};let N=Symbol.for(`undici.error.UND_ERR_NOT_SUPPORTED`);var P=class extends r{constructor(e){super(e),this.name=`NotSupportedError`,this.message=e||`Not supported error`,this.code=`UND_ERR_NOT_SUPPORTED`}static[Symbol.hasInstance](e){return e&&e[N]===!0}get[N](){return!0}};let F=Symbol.for(`undici.error.UND_ERR_BPL_MISSING_UPSTREAM`);var I=class extends r{constructor(e){super(e),this.name=`MissingUpstreamError`,this.message=e||`No upstream has been added to the BalancedPool`,this.code=`UND_ERR_BPL_MISSING_UPSTREAM`}static[Symbol.hasInstance](e){return e&&e[F]===!0}get[F](){return!0}};let ee=Symbol.for(`undici.error.UND_ERR_HTTP_PARSER`);var L=class extends Error{constructor(e,t,n){super(e),this.name=`HTTPParserError`,this.code=t?`HPE_${t}`:void 0,this.data=n?n.toString():void 0}static[Symbol.hasInstance](e){return e&&e[ee]===!0}get[ee](){return!0}};let R=Symbol.for(`undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE`);var te=class extends r{constructor(e){super(e),this.name=`ResponseExceededMaxSizeError`,this.message=e||`Response content exceeded max size`,this.code=`UND_ERR_RES_EXCEEDED_MAX_SIZE`}static[Symbol.hasInstance](e){return e&&e[R]===!0}get[R](){return!0}};let ne=Symbol.for(`undici.error.UND_ERR_REQ_RETRY`);var re=class extends r{constructor(e,t,{headers:n,data:r}){super(e),this.name=`RequestRetryError`,this.message=e||`Request retry error`,this.code=`UND_ERR_REQ_RETRY`,this.statusCode=t,this.data=r,this.headers=n}static[Symbol.hasInstance](e){return e&&e[ne]===!0}get[ne](){return!0}};let ie=Symbol.for(`undici.error.UND_ERR_RESPONSE`);var z=class extends r{constructor(e,t,{headers:n,body:r}){super(e),this.name=`ResponseError`,this.message=e||`Response error`,this.code=`UND_ERR_RESPONSE`,this.statusCode=t,this.body=r,this.headers=n}static[Symbol.hasInstance](e){return e&&e[ie]===!0}get[ie](){return!0}};let ae=Symbol.for(`undici.error.UND_ERR_PRX_TLS`);var oe=class extends r{constructor(e,t,n={}){super(t,{cause:e,...n}),this.name=`SecureProxyConnectionError`,this.message=t||`Secure Proxy Connection failed`,this.code=`UND_ERR_PRX_TLS`,this.cause=e}static[Symbol.hasInstance](e){return e&&e[ae]===!0}get[ae](){return!0}};let se=Symbol.for(`undici.error.UND_ERR_PRX_CONN`);var ce=class extends r{constructor(e,t,n={}){super(t,{cause:e,...n}),this.name=`ProxyConnectionError`,this.message=t||`Proxy Connection failed`,this.code=`UND_ERR_PRX_CONN`,this.cause=e}static[Symbol.hasInstance](e){return e&&e[se]===!0}get[se](){return!0}};let le=Symbol.for(`undici.error.UND_ERR_MAX_ORIGINS_REACHED`);var ue=class extends r{constructor(e){super(e),this.name=`MaxOriginsReachedError`,this.message=e||`Maximum allowed origins reached`,this.code=`UND_ERR_MAX_ORIGINS_REACHED`}static[Symbol.hasInstance](e){return e&&e[le]===!0}get[le](){return!0}},de=class extends r{constructor(e,t){super(e),this.name=`Socks5ProxyError`,this.message=e||`SOCKS5 proxy error`,this.code=t||`UND_ERR_SOCKS5`}};let fe=Symbol.for(`undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED`);t.exports={AbortError:v,HTTPParserError:L,UndiciError:r,HeadersTimeoutError:s,HeadersOverflowError:l,BodyTimeoutError:d,RequestContentLengthMismatchError:w,ConnectTimeoutError:a,InvalidArgumentError:p,InvalidReturnValueError:h,RequestAbortedError:b,ClientDestroyedError:O,ClientClosedError:A,InformationalError:S,SocketError:M,NotSupportedError:P,ResponseContentLengthMismatchError:E,BalancedPoolMissingUpstreamError:I,ResponseExceededMaxSizeError:te,RequestRetryError:re,ResponseError:z,SecureProxyConnectionError:oe,ProxyConnectionError:ce,MaxOriginsReachedError:ue,Socks5ProxyError:de,MessageSizeExceededError:class extends r{constructor(e){super(e),this.name=`MessageSizeExceededError`,this.message=e||`Max decompressed message size exceeded`,this.code=`UND_ERR_WS_MESSAGE_SIZE_EXCEEDED`}static[Symbol.hasInstance](e){return e&&e[fe]===!0}get[fe](){return!0}}}})),bi=/* @__PURE__ */ a(((e,t)=>{let n=/* @__PURE__ */ `Accept.Accept-Encoding.Accept-Language.Accept-Ranges.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Age.Allow.Alt-Svc.Alt-Used.Authorization.Cache-Control.Clear-Site-Data.Connection.Content-Disposition.Content-Encoding.Content-Language.Content-Length.Content-Location.Content-Range.Content-Security-Policy.Content-Security-Policy-Report-Only.Content-Type.Cookie.Cross-Origin-Embedder-Policy.Cross-Origin-Opener-Policy.Cross-Origin-Resource-Policy.Date.Device-Memory.Downlink.ECT.ETag.Expect.Expect-CT.Expires.Forwarded.From.Host.If-Match.If-Modified-Since.If-None-Match.If-Range.If-Unmodified-Since.Keep-Alive.Last-Modified.Link.Location.Max-Forwards.Origin.Permissions-Policy.Pragma.Proxy-Authenticate.Proxy-Authorization.RTT.Range.Referer.Referrer-Policy.Refresh.Retry-After.Sec-WebSocket-Accept.Sec-WebSocket-Extensions.Sec-WebSocket-Key.Sec-WebSocket-Protocol.Sec-WebSocket-Version.Server.Server-Timing.Service-Worker-Allowed.Service-Worker-Navigation-Preload.Set-Cookie.SourceMap.Strict-Transport-Security.Supports-Loading-Mode.TE.Timing-Allow-Origin.Trailer.Transfer-Encoding.Upgrade.Upgrade-Insecure-Requests.User-Agent.Vary.Via.WWW-Authenticate.X-Content-Type-Options.X-DNS-Prefetch-Control.X-Frame-Options.X-Permitted-Cross-Domain-Policies.X-Powered-By.X-Requested-With.X-XSS-Protection`.split(`.`),r={};Object.setPrototypeOf(r,null);for(let e=0;e{let{wellknownHeaderNames:n,headerNameLowerCasedRecord:r}=bi();var i=class e{value=null;left=null;middle=null;right=null;code;constructor(t,n,r){if(r===void 0||r>=t.length)throw TypeError(`Unreachable`);if((this.code=t.charCodeAt(r))>127)throw TypeError(`key must be ascii string`);t.length===++r?this.value=n:this.middle=new e(t,n,r)}add(t,n){let r=t.length;if(r===0)throw TypeError(`Unreachable`);let i=0,a=this;for(;;){let o=t.charCodeAt(i);if(o>127)throw TypeError(`key must be ascii string`);if(a.code===o){if(r===++i){a.value=n;break}if(a.middle!==null)a=a.middle;else{a.middle=new e(t,n,i);break}}else if(a.code=65&&(i|=32);r!==null;){if(i===r.code){if(t===++n)return r;r=r.middle;break}r=r.code{let r=t(`node:assert`),{kDestroyed:i,kBodyUsed:a,kListeners:o,kBody:s}=_i(),{IncomingMessage:c}=t(`node:http`),l=t(`node:stream`),u=t(`node:net`),{stringify:d}=t(`node:querystring`),{EventEmitter:f,addAbortListener:p}=t(`node:events`),m=vi(),{InvalidArgumentError:h,ConnectTimeoutError:g}=yi(),{headerNameLowerCasedRecord:v}=bi(),{tree:y}=xi();var b=class{constructor(e){this[s]=e,this[a]=!1}async*[Symbol.asyncIterator](){r(!this[a],`disturbed`),this[a]=!0,yield*this[s]}};function x(){}function S(e){return C(e)?(ee(e)===0&&e.on(`data`,function(){r(!1)}),typeof e.readableDidRead!=`boolean`&&(e[a]=!1,f.prototype.on.call(e,`data`,function(){this[a]=!0})),e):e&&typeof e.pipeTo==`function`?new b(e):e&&fe(e)?e:e&&typeof e!=`string`&&!ArrayBuffer.isView(e)&&F(e)?new b(e):e}function C(e){return e&&typeof e==`object`&&typeof e.pipe==`function`&&typeof e.on==`function`}function w(e){return e instanceof Blob}function T(e){return e.includes(`?`)||e.includes(`#`)}function E(e,t){if(T(e))throw Error(`Query params cannot be passed when url already contains "?" or "#".`);let n=d(t);return n&&(e+=`?`+n),e}function D(e){let t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function O(e){return e!=null&&e[0]===`h`&&e[1]===`t`&&e[2]===`t`&&e[3]===`p`&&(e[4]===`:`||e[4]===`s`&&e[5]===`:`)}function k(e){if(typeof e==`string`){if(e=new URL(e),!O(e.origin||e.protocol))throw new h("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!=`object`)throw new h(`Invalid URL: The URL argument must be a non-null object.`);if(!(e instanceof URL)){if(e.port!=null&&e.port!==``&&D(e.port)===!1)throw new h(`Invalid URL: port must be a valid integer or a string representation of an integer.`);if(e.path!=null&&typeof e.path!=`string`)throw new h(`Invalid URL path: the path must be a string or null/undefined.`);if(e.pathname!=null&&typeof e.pathname!=`string`)throw new h(`Invalid URL pathname: the pathname must be a string or null/undefined.`);if(e.hostname!=null&&typeof e.hostname!=`string`)throw new h(`Invalid URL hostname: the hostname must be a string or null/undefined.`);if(e.origin!=null&&typeof e.origin!=`string`)throw new h(`Invalid URL origin: the origin must be a string or null/undefined.`);if(!O(e.origin||e.protocol))throw new h("Invalid URL protocol: the URL must start with `http:` or `https:`.");let t=e.port==null?e.protocol===`https:`?443:80:e.port,n=e.origin==null?`${e.protocol||``}//${e.hostname||``}:${t}`:e.origin,r=e.path==null?`${e.pathname||``}${e.search||``}`:e.path;return n[n.length-1]===`/`&&(n=n.slice(0,n.length-1)),r&&r[0]!==`/`&&(r=`/${r}`),new URL(`${n}${r}`)}if(!O(e.origin||e.protocol))throw new h("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function A(e){if(e=k(e),e.pathname!==`/`||e.search||e.hash)throw new h(`invalid url`);return e}function j(e){if(e[0]===`[`){let t=e.indexOf(`]`);return r(t!==-1),e.substring(1,t)}let t=e.indexOf(`:`);return t===-1?e:e.substring(0,t)}function M(e){if(!e)return null;r(typeof e==`string`);let t=j(e);return u.isIP(t)?``:t}function N(e){return JSON.parse(JSON.stringify(e))}function P(e){return e!=null&&typeof e[Symbol.asyncIterator]==`function`}function F(e){return!(e==null||typeof e[Symbol.iterator]!=`function`&&typeof e[Symbol.asyncIterator]!=`function`)}function I(e){let t=Object.getPrototypeOf(e);return Object.hasOwn(e,Symbol.iterator)||t!=null&&t!==Object.prototype&&typeof e[Symbol.iterator]==`function`}function ee(e){if(e==null)return 0;if(C(e)){let t=e._readableState;return t&&t.objectMode===!1&&t.ended===!0&&Number.isFinite(t.length)?t.length:null}return w(e)?e.size==null?null:e.size:ce(e)?e.byteLength:null}function L(e){return e&&!!(e.destroyed||e[i]||l.isDestroyed?.(e))}function R(e,t){if(e!=null&&C(e)&&!L(e)){if(typeof e.destroy==`function`){Object.getPrototypeOf(e).constructor===c&&(e.socket=null);try{e.destroy(t)}catch{}}else t&&queueMicrotask(()=>{e.emit(`error`,t)});e.destroyed!==!0&&(e[i]=!0)}}let te=/timeout=(\d+)/;function ne(e){let t=e.match(te);return t?parseInt(t[1],10)*1e3:null}function re(e){return typeof e==`string`?v[e]??e.toLowerCase():y.lookup(e)??e.toString(`latin1`).toLowerCase()}function ie(e){return y.lookup(e)??e.toString(`latin1`).toLowerCase()}function z(e,t){t===void 0&&(t={});for(let n=0;ne.toString(`latin1`)):e[n+1].toString(`latin1`);r===`__proto__`?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i}}else{let i=typeof e[n+1]==`string`?e[n+1]:Array.isArray(e[n+1])?e[n+1].map(e=>e.toString(`latin1`)):e[n+1].toString(`latin1`);t[r]=i}}return t}function ae(e){if(e==null)return[];if(!Array.isArray(e)){let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.push(n,`${e}`);else t.push(n,`${r}`);return t}let t=e.length,n=Array(t),r,i;for(let a=0;aBuffer.from(e))}function ce(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function le(e,t,n){if(!e||typeof e!=`object`)throw new h(`handler must be an object`);if(typeof e.onRequestStart!=`function`)throw new h(`invalid onRequestStart method`);if(typeof e.onResponseError!=`function`)throw new h(`invalid onResponseError method`);if(typeof e.onBodySent!=`function`&&e.onBodySent!==void 0)throw new h(`invalid onBodySent method`);if(typeof e.onRequestSent!=`function`&&e.onRequestSent!==void 0)throw new h(`invalid onRequestSent method`);if(n||t===`CONNECT`){if(typeof e.onRequestUpgrade!=`function`)throw new h(`invalid onRequestUpgrade method`)}else{if(typeof e.onResponseStart!=`function`)throw new h(`invalid onResponseStart method`);if(typeof e.onResponseData!=`function`)throw new h(`invalid onResponseData method`);if(typeof e.onResponseEnd!=`function`)throw new h(`invalid onResponseEnd method`)}}function ue(e){return!!(e&&(l.isDisturbed(e)||e[a]))}function de(e){return{localAddress:e.localAddress,localPort:e.localPort,remoteAddress:e.remoteAddress,remotePort:e.remotePort,remoteFamily:e.remoteFamily,timeout:e.timeout,bytesWritten:e.bytesWritten,bytesRead:e.bytesRead}}function fe(e){return e&&typeof e==`object`&&typeof e.append==`function`&&typeof e.delete==`function`&&typeof e.get==`function`&&typeof e.getAll==`function`&&typeof e.has==`function`&&typeof e.set==`function`&&e[Symbol.toStringTag]===`FormData`}function pe(e,t){return!e||`aborted`in e?p(e,t)[Symbol.dispose]:typeof e.addEventListener==`function`?(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)):(e.once(`abort`,t),()=>e.removeListener(`abort`,t))}let me=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function he(e){return me[e]===1}let ge=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;function _e(e){if(e.length>=12)return ge.test(e);if(e.length===0)return!1;for(let t=0;t{if(!t.timeout)return x;let n=null,r=null,i=m.setFastTimeout(()=>{n=setImmediate(()=>{r=setImmediate(()=>Ee(e.deref(),t))})},t.timeout);return()=>{m.clearFastTimeout(i),clearImmediate(n),clearImmediate(r)}}:(e,t)=>{if(!t.timeout)return x;let n=null,r=m.setFastTimeout(()=>{n=setImmediate(()=>{Ee(e.deref(),t)})},t.timeout);return()=>{m.clearFastTimeout(r),clearImmediate(n)}};function Ee(e,t){if(e==null)return;let n=`Connect Timeout Error`;Array.isArray(e.autoSelectFamilyAttemptedAddresses)?n+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(`, `)},`:n+=` (attempted address: ${t.hostname}:${t.port},`,n+=` timeout: ${t.timeout}ms)`,R(e,new g(n))}let De=null,Oe=null;function ke(e){if(e===De)return Oe;let t=Ae(e);return De=e,Oe=t,t}function Ae(e){if(e[0]===`h`&&e[1]===`t`&&e[2]===`t`&&e[3]===`p`)switch(e[4]){case`:`:return`http:`;case`s`:if(e[5]===`:`)return`https:`}return e.slice(0,e.indexOf(`:`)+1)}let je={__proto__:null,enumerable:!0},Me={delete:`DELETE`,DELETE:`DELETE`,get:`GET`,GET:`GET`,head:`HEAD`,HEAD:`HEAD`,options:`OPTIONS`,OPTIONS:`OPTIONS`,post:`POST`,POST:`POST`,put:`PUT`,PUT:`PUT`,query:`QUERY`,QUERY:`QUERY`},Ne={...Me,patch:`patch`,PATCH:`PATCH`};Object.setPrototypeOf(Me,null),Object.setPrototypeOf(Ne,null),n.exports={kEnumerableProperty:je,isDisturbed:ue,isBlobLike:w,parseOrigin:A,parseURL:k,getServerName:M,isStream:C,isIterable:F,hasSafeIterator:I,isAsyncIterable:P,isDestroyed:L,headerNameToString:re,bufferToLowerCasedHeaderName:ie,addListener:Se,removeAllListeners:Ce,errorRequest:we,parseRawHeaders:ae,toRawHeaders:oe,encodeRawHeaders:se,parseHeaders:z,parseKeepAliveTimeout:ne,destroy:R,bodyLength:ee,deepClone:N,isBuffer:ce,assertRequestHandler:le,getSocketInfo:de,isFormDataLike:fe,pathHasQueryOrFragment:T,serializePathWithQuery:E,addAbortListener:pe,isValidHTTPToken:_e,isValidHeaderValue:ye,isTokenCharCode:he,parseRangeHeader:xe,normalizedMethodRecordsBase:Me,normalizedMethodRecords:Ne,isValidPort:D,isHttpOrHttpsPrefixed:O,safeHTTPMethods:Object.freeze([`GET`,`HEAD`,`OPTIONS`,`TRACE`]),wrapRequestBody:S,setupConnectTimeout:Te,getProtocolFromUrlString:ke}})),Ci=/* @__PURE__ */ a(((e,t)=>{let{kConnected:n,kPending:r,kRunning:i,kSize:a,kFree:o,kQueued:s}=_i();t.exports={ClientStats:class{constructor(e){this.connected=e[n],this.pending=e[r],this.running=e[i],this.size=e[a]}},PoolStats:class{constructor(e){this.connected=e[n],this.free=e[o],this.pending=e[r],this.queued=e[s],this.running=e[i],this.size=e[a]}}}})),wi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:diagnostics_channel`),i=t(`node:util`),a=i.debuglog(`undici`),o=i.debuglog(`fetch`),s=i.debuglog(`websocket`),c={beforeConnect:r.channel(`undici:client:beforeConnect`),connected:r.channel(`undici:client:connected`),connectError:r.channel(`undici:client:connectError`),sendHeaders:r.channel(`undici:client:sendHeaders`),create:r.channel(`undici:request:create`),bodySent:r.channel(`undici:request:bodySent`),bodyChunkSent:r.channel(`undici:request:bodyChunkSent`),bodyChunkReceived:r.channel(`undici:request:bodyChunkReceived`),headers:r.channel(`undici:request:headers`),trailers:r.channel(`undici:request:trailers`),error:r.channel(`undici:request:error`),open:r.channel(`undici:websocket:open`),close:r.channel(`undici:websocket:close`),socketError:r.channel(`undici:websocket:socket_error`),ping:r.channel(`undici:websocket:ping`),pong:r.channel(`undici:websocket:pong`),proxyConnected:r.channel(`undici:proxy:connected`)},l=!1;function u(e=a){l||(c.beforeConnect.hasSubscribers||c.connected.hasSubscribers||c.connectError.hasSubscribers||c.sendHeaders.hasSubscribers?l=!0:(l=!0,r.subscribe(`undici:client:beforeConnect`,t=>{let{connectParams:{version:n,protocol:r,port:i,host:a}}=t;e(`connecting to %s%s using %s%s`,a,i?`:${i}`:``,r,n)}),r.subscribe(`undici:client:connected`,t=>{let{connectParams:{version:n,protocol:r,port:i,host:a}}=t;e(`connected to %s%s using %s%s`,a,i?`:${i}`:``,r,n)}),r.subscribe(`undici:client:connectError`,t=>{let{connectParams:{version:n,protocol:r,port:i,host:a},error:o}=t;e(`connection to %s%s using %s%s errored - %s`,a,i?`:${i}`:``,r,n,o.message)}),r.subscribe(`undici:client:sendHeaders`,t=>{let{request:{method:n,path:r,origin:i}}=t;e(`sending request to %s %s%s`,n,i,r)})))}let d=!1;function f(e=a){d||(c.headers.hasSubscribers||c.trailers.hasSubscribers||c.error.hasSubscribers?d=!0:(d=!0,r.subscribe(`undici:request:headers`,t=>{let{request:{method:n,path:r,origin:i},response:{statusCode:a}}=t;e(`received response to %s %s%s - HTTP %d`,n,i,r,a)}),r.subscribe(`undici:request:trailers`,t=>{let{request:{method:n,path:r,origin:i}}=t;e(`trailers received from %s %s%s`,n,i,r)}),r.subscribe(`undici:request:error`,t=>{let{request:{method:n,path:r,origin:i},error:a}=t;e(`request to %s %s%s errored - %s`,n,i,r,a.message)})))}let p=!1;function m(e=s){p||(c.open.hasSubscribers||c.close.hasSubscribers||c.socketError.hasSubscribers||c.ping.hasSubscribers||c.pong.hasSubscribers?p=!0:(p=!0,r.subscribe(`undici:websocket:open`,t=>{if(t.address!=null){let{address:n,port:r}=t.address;e(`connection opened %s%s`,n,r?`:${r}`:``)}else e(`connection opened`)}),r.subscribe(`undici:websocket:close`,t=>{let{websocket:n,code:r,reason:i}=t;e(`closed connection to %s - %s %s`,n.url,r,i)}),r.subscribe(`undici:websocket:socket_error`,t=>{e(`connection errored - %s`,t.message)}),r.subscribe(`undici:websocket:ping`,t=>{e(`ping received`)}),r.subscribe(`undici:websocket:pong`,t=>{e(`pong received`)})))}(a.enabled||o.enabled)&&(u(o.enabled?o:a),f(o.enabled?o:a)),s.enabled&&(u(a.enabled?a:s),m(s)),n.exports={channels:c}})),Ti=/* @__PURE__ */ a(((e,n)=>{let{InvalidArgumentError:r,NotSupportedError:i}=yi(),a=t(`node:assert`),{isValidHTTPToken:o,isValidHeaderValue:s,isStream:c,destroy:l,isBuffer:u,isFormDataLike:d,isIterable:f,hasSafeIterator:p,isBlobLike:m,serializePathWithQuery:h,parseHeaders:g,assertRequestHandler:v,getServerName:y,normalizedMethodRecords:b,getProtocolFromUrlString:x}=Si(),{channels:S}=wi(),{headerNameLowerCasedRecord:C}=bi(),w=/[^\u0021-\u00ff]/;function T(e){if(typeof e!=`string`||e.length===0)return!1;for(let t=0;t57)return!1}return!0}let E=Symbol(`handler`),D=Symbol(`controller`),O=Symbol(`resume`);var k=class{#e=!1;#t=null;#n=!1;#r;[O]=null;rawHeaders=null;rawTrailers=null;constructor(e){this.#r=e}pause(){this.#e=!0}resume(){this.#e&&(this.#e=!1,this[O]?.())}abort(e){this.#n||(this.#n=!0,this.#t=e,this.#r(e))}get aborted(){return this.#n}get reason(){return this.#t}get paused(){return this.#e}},A=class{constructor(e,{path:t,method:n,body:i,headers:a,query:g,idempotent:C,blocking:T,upgrade:D,headersTimeout:O,bodyTimeout:k,reset:A,expectContinue:M,servername:N,throwOnError:P,maxRedirections:F,typeOfService:I},ee){if(typeof t!=`string`)throw new r(`path must be a string`);if(t[0]!==`/`&&!(t.startsWith(`http://`)||t.startsWith(`https://`))&&n!==`CONNECT`)throw new r(`path must be an absolute URL or start with a slash`);if(w.test(t))throw new r(`invalid request path`);if(typeof n!=`string`)throw new r(`method must be a string`);if(b[n]===void 0&&!o(n))throw new r(`invalid request method`);if(D&&typeof D!=`string`)throw new r(`upgrade must be a string`);if(D&&!s(D))throw new r(`invalid upgrade header`);if(O!=null&&(!Number.isFinite(O)||O<0))throw new r(`invalid headersTimeout`);if(k!=null&&(!Number.isFinite(k)||k<0))throw new r(`invalid bodyTimeout`);if(A!=null&&typeof A!=`boolean`)throw new r(`invalid reset`);if(M!=null&&typeof M!=`boolean`)throw new r(`invalid expectContinue`);if(P!=null)throw new r(`invalid throwOnError`);if(F!=null&&F!==0)throw new r(`maxRedirections is not supported, use the redirect interceptor`);if(I!=null&&(!Number.isInteger(I)||I<0||I>255))throw new r(`typeOfService must be an integer between 0 and 255`);if(this.headersTimeout=O,this.bodyTimeout=k,this.method=n,this.typeOfService=I,this.abort=null,i==null)this.body=null;else if(c(i)){this.body=i;let e=this.body._readableState;e&&e.autoDestroy||(this.endHandler=function(){l(this)},this.body.on(`end`,this.endHandler)),this.errorHandler=e=>{this.abort?this.abort(e):this.error=e},this.body.on(`error`,this.errorHandler)}else if(u(i))this.body=i.byteLength?i:null;else if(ArrayBuffer.isView(i))this.body=i.buffer.byteLength?Buffer.from(i.buffer,i.byteOffset,i.byteLength):null;else if(i instanceof ArrayBuffer)this.body=i.byteLength?Buffer.from(i):null;else if(typeof i==`string`)this.body=i.length?Buffer.from(i):null;else if(d(i)||f(i)||m(i))this.body=i;else throw new r(`body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable`);if(this.completed=!1,this.aborted=!1,this.upgrade=D||null,this.path=g?h(t,g):t,this.origin=e,this.protocol=x(e),this.idempotent=C??(n===`HEAD`||n===`GET`||n===`QUERY`),this.blocking=T??this.method!==`HEAD`,this.reset=A??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=M??!1,Array.isArray(a)){if(a.length%2!=0)throw new r(`headers array must be even`);for(let e=0;e{let r=t(`node:events`),{kOriginless:i,kUrl:a}=_i();n.exports=class extends r{dispatch(){throw Error(`not implemented`)}close(){throw Error(`not implemented`)}destroy(){throw Error(`not implemented`)}compose(...e){let t=Array.isArray(e[0])?e[0]:e,n=this[i]===!0?null:this[a]?.origin,r=this.dispatch.bind(this);for(let e of t)if(e!=null){if(typeof e!=`function`)throw TypeError(`invalid interceptor, expected function received ${typeof e}`);if(r=e(r,n),r==null||typeof r!=`function`||r.length!==2)throw TypeError(`invalid interceptor`)}let o=r,s=this;return r=function(e,t){return e&&typeof e==`object`&&!e.origin&&s[a]&&(e=Object.assign({},e,{origin:s[a].origin})),o(e,t)},new Proxy(this,{get:(e,t)=>t===`dispatch`?r:e[t]})}}})),Di=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:buffer`),i=Ei(),{ClientDestroyedError:a,ClientClosedError:o,InvalidArgumentError:s}=yi(),{kDestroy:c,kClose:l,kClosed:u,kDestroyed:d,kDispatch:f}=_i(),p=Symbol(`onDestroyed`),m=Symbol(`onClosed`),h=Symbol(`webSocketOptions`),g=Symbol(`eventSourceOptions`);n.exports=class extends i{[d]=!1;[p]=null;[u]=!1;[m]=null;constructor(e){super(),this[h]=e?.webSocket??{},this[g]=e?.eventSource??{}}get webSocketOptions(){return{maxFragments:this[h].maxFragments??131072,maxPayloadSize:this[h].maxPayloadSize??134217728}}get eventSourceOptions(){return{maxEventSize:this[g].maxEventSize??r.kStringMaxLength}}get destroyed(){return this[d]}get closed(){return this[u]}close(e){if(e===void 0)return new Promise((e,t)=>{this.close((n,r)=>n?t(n):e(r))});if(typeof e!=`function`)throw new s(`invalid callback`);if(this[d]){let t=new a;queueMicrotask(()=>e(t,null));return}if(this[u]){this[m]?this[m].push(e):queueMicrotask(()=>e(null,null));return}this[u]=!0,this[m]??=[],this[m].push(e);let t=()=>{let e=this[m];this[m]=null;for(let t=0;tthis.destroy()).then(()=>queueMicrotask(t))}destroy(e,t){if(typeof e==`function`&&(t=e,e=null),t===void 0)return new Promise((t,n)=>{this.destroy(e,(e,r)=>e?n(e):t(r))});if(typeof t!=`function`)throw new s(`invalid callback`);if(this[d]){this[p]?this[p].push(t):queueMicrotask(()=>t(null,null));return}e||=new a,this[d]=!0,this[p]??=[],this[p].push(t);let n=()=>{let e=this[p];this[p]=null;for(let t=0;tqueueMicrotask(n))}dispatch(e,t){if(!t||typeof t!=`object`)throw new s(`handler must be an object`);try{if(!e||typeof e!=`object`)throw new s(`opts must be an object.`);if(e.dispatcher)throw new s(`opts.dispatcher is not supported by instance methods. Pass opts.dispatcher to the top-level undici functions or call the dispatcher instance method directly.`);if(this[d]||this[p])throw new a;if(this[u])throw new o;return this[f](e,t)}catch(e){if(typeof t.onResponseError!=`function`)throw e;return t.onResponseError(null,e),!1}}}})),Oi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:net`),i=t(`node:assert`),a=Si(),{InvalidArgumentError:o,ConnectTimeoutError:s}=yi(),c,l=class{constructor(e){this._maxCachedSessions=e,this._sessionCache=/* @__PURE__ */ new Map,this._sessionRegistry=new FinalizationRegistry(e=>{if(this._sessionCache.size=this._maxCachedSessions){for(let[e,t]of this._sessionCache)if(t.deref()===void 0){this._sessionCache.delete(e);return}let e=this._sessionCache.keys().next();e.done||this._sessionCache.delete(e.value)}this._sessionCache.set(e,new WeakRef(t)),this._sessionRegistry.register(t,e)}}};function u({allowH2:e,preferH2:n,useH2c:s,maxCachedSessions:u,socketPath:f,timeout:p,session:m,...h}){if(u!=null&&(!Number.isInteger(u)||u<0))throw new o(`maxCachedSessions must be a positive integer or zero`);let g={path:f,...h},v=new l(u??100);return p??=1e4,e??=!0,function({hostname:o,host:l,protocol:u,port:f,servername:h,localAddress:y,httpSocket:b},x){let S;if(u===`https:`){c||=t(`node:tls`),h=h||g.servername||a.getServerName(l)||null;let r=h||o;i(r);let s=m||v.get(r)||null;f||=443,S=c.connect({highWaterMark:16384,...g,servername:h,session:s,localAddress:y,ALPNProtocols:e?n?[`h2`,`http/1.1`]:[`http/1.1`,`h2`]:[`http/1.1`],socket:b,port:f,host:o}),S.on(`session`,function(e){v.set(r,e)})}else{i(!b,`httpSocket can only be sent on TLS update`),f||=80;let e={highWaterMark:65536,...g,localAddress:y,port:f,host:o},t=r.isIP(o);t!==0&&h&&h!==o&&(e.host=h,e.lookup=(e,n,r)=>{n.all?r(null,[{address:o,family:t}]):r(null,o,t)}),S=r.connect(e),s===!0&&(S.alpnProtocol=`h2`)}if(g.keepAlive==null||g.keepAlive){let e=g.keepAliveInitialDelay===void 0?6e4:g.keepAliveInitialDelay;S.setKeepAlive(!0,e)}let C=a.setupConnectTimeout(new WeakRef(S),{timeout:p,hostname:o,port:f});return S.setNoDelay(!0).once(u===`https:`?`secureConnect`:`connect`,function(){if(queueMicrotask(C),x){let e=x;x=null,e(null,this)}}).on(`error`,function(e){if(queueMicrotask(C),x){let t=x;x=null,t(d(e,this,{timeout:p,hostname:o,port:f}))}}),S}}function d(e,t,n){if(e instanceof AggregateError&&(e.code===`ETIMEDOUT`||e.errors.some(e=>e!=null&&e.code===`ETIMEDOUT`))){let r=`Connect Timeout Error`;Array.isArray(t.autoSelectFamilyAttemptedAddresses)?r+=` (attempted addresses: ${t.autoSelectFamilyAttemptedAddresses.join(`, `)},`:r+=` (attempted address: ${n.hostname}:${n.port},`,r+=` timeout: ${n.timeout}ms)`;let i=new s(r);return i.cause=e,i}return e}n.exports=u})),ki=/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.enumToMap=t;function t(e,t=[],n=[]){let r=(t?.length??0)===0,i=(n?.length??0)===0;return Object.fromEntries(Object.entries(e).filter(([,e])=>typeof e==`number`&&(r||t.includes(e))&&(i||!n.includes(e))))}})),Ai=/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SPECIAL_HEADERS=e.MINOR=e.MAJOR=e.HTAB_SP_VCHAR_OBS_TEXT=e.QUOTED_STRING=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.HEX=e.URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.STATUSES_HTTP=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.HEADER_STATE=e.FINISH=e.STATUSES=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;let t=ki();e.ERROR={OK:0,INTERNAL:1,STRICT:2,CR_EXPECTED:25,LF_EXPECTED:3,UNEXPECTED_CONTENT_LENGTH:4,UNEXPECTED_SPACE:30,CLOSED_CONNECTION:5,INVALID_METHOD:6,INVALID_URL:7,INVALID_CONSTANT:8,INVALID_VERSION:9,INVALID_HEADER_TOKEN:10,INVALID_CONTENT_LENGTH:11,INVALID_CHUNK_SIZE:12,INVALID_STATUS:13,INVALID_EOF_STATE:14,INVALID_TRANSFER_ENCODING:15,CB_MESSAGE_BEGIN:16,CB_HEADERS_COMPLETE:17,CB_MESSAGE_COMPLETE:18,CB_CHUNK_HEADER:19,CB_CHUNK_COMPLETE:20,PAUSED:21,PAUSED_UPGRADE:22,PAUSED_H2_UPGRADE:23,USER:24,CB_URL_COMPLETE:26,CB_STATUS_COMPLETE:27,CB_METHOD_COMPLETE:32,CB_VERSION_COMPLETE:33,CB_HEADER_FIELD_COMPLETE:28,CB_HEADER_VALUE_COMPLETE:29,CB_CHUNK_EXTENSION_NAME_COMPLETE:34,CB_CHUNK_EXTENSION_VALUE_COMPLETE:35,CB_RESET:31,CB_PROTOCOL_COMPLETE:38},e.TYPE={BOTH:0,REQUEST:1,RESPONSE:2},e.FLAGS={CONNECTION_KEEP_ALIVE:1,CONNECTION_CLOSE:2,CONNECTION_UPGRADE:4,CHUNKED:8,UPGRADE:16,CONTENT_LENGTH:32,SKIPBODY:64,TRAILING:128,TRANSFER_ENCODING:512},e.LENIENT_FLAGS={HEADERS:1,CHUNKED_LENGTH:2,KEEP_ALIVE:4,TRANSFER_ENCODING:8,VERSION:16,DATA_AFTER_CLOSE:32,OPTIONAL_LF_AFTER_CR:64,OPTIONAL_CRLF_AFTER_CHUNK:128,OPTIONAL_CR_BEFORE_LF:256,SPACES_AFTER_CHUNK_SIZE:512},e.METHODS={DELETE:0,GET:1,HEAD:2,POST:3,PUT:4,CONNECT:5,OPTIONS:6,TRACE:7,COPY:8,LOCK:9,MKCOL:10,MOVE:11,PROPFIND:12,PROPPATCH:13,SEARCH:14,UNLOCK:15,BIND:16,REBIND:17,UNBIND:18,ACL:19,REPORT:20,MKACTIVITY:21,CHECKOUT:22,MERGE:23,"M-SEARCH":24,NOTIFY:25,SUBSCRIBE:26,UNSUBSCRIBE:27,PATCH:28,PURGE:29,MKCALENDAR:30,LINK:31,UNLINK:32,SOURCE:33,PRI:34,DESCRIBE:35,ANNOUNCE:36,SETUP:37,PLAY:38,PAUSE:39,TEARDOWN:40,GET_PARAMETER:41,SET_PARAMETER:42,REDIRECT:43,RECORD:44,FLUSH:45,QUERY:46},e.STATUSES={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,RESPONSE_IS_STALE:110,REVALIDATION_FAILED:111,DISCONNECTED_OPERATION:112,HEURISTIC_EXPIRATION:113,MISCELLANEOUS_WARNING:199,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,TRANSFORMATION_APPLIED:214,IM_USED:226,MISCELLANEOUS_PERSISTENT_WARNING:299,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,SWITCH_PROXY:306,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,PAGE_EXPIRED:419,ENHANCE_YOUR_CALM:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL:430,REQUEST_HEADER_FIELDS_TOO_LARGE:431,LOGIN_TIMEOUT:440,NO_RESPONSE:444,RETRY_WITH:449,BLOCKED_BY_PARENTAL_CONTROL:450,UNAVAILABLE_FOR_LEGAL_REASONS:451,CLIENT_CLOSED_LOAD_BALANCED_REQUEST:460,INVALID_X_FORWARDED_FOR:463,REQUEST_HEADER_TOO_LARGE:494,SSL_CERTIFICATE_ERROR:495,SSL_CERTIFICATE_REQUIRED:496,HTTP_REQUEST_SENT_TO_HTTPS_PORT:497,INVALID_TOKEN:498,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,BANDWIDTH_LIMIT_EXCEEDED:509,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511,WEB_SERVER_UNKNOWN_ERROR:520,WEB_SERVER_IS_DOWN:521,CONNECTION_TIMEOUT:522,ORIGIN_IS_UNREACHABLE:523,TIMEOUT_OCCURED:524,SSL_HANDSHAKE_FAILED:525,INVALID_SSL_CERTIFICATE:526,RAILGUN_ERROR:527,SITE_IS_OVERLOADED:529,SITE_IS_FROZEN:530,IDENTITY_PROVIDER_AUTHENTICATION_ERROR:561,NETWORK_READ_TIMEOUT:598,NETWORK_CONNECT_TIMEOUT:599},e.FINISH={SAFE:0,SAFE_WITH_CB:1,UNSAFE:2},e.HEADER_STATE={GENERAL:0,CONNECTION:1,CONTENT_LENGTH:2,TRANSFER_ENCODING:3,UPGRADE:4,CONNECTION_KEEP_ALIVE:5,CONNECTION_CLOSE:6,CONNECTION_UPGRADE:7,TRANSFER_ENCODING_CHUNKED:8},e.METHODS_HTTP=[e.METHODS.DELETE,e.METHODS.GET,e.METHODS.HEAD,e.METHODS.POST,e.METHODS.PUT,e.METHODS.CONNECT,e.METHODS.OPTIONS,e.METHODS.TRACE,e.METHODS.COPY,e.METHODS.LOCK,e.METHODS.MKCOL,e.METHODS.MOVE,e.METHODS.PROPFIND,e.METHODS.PROPPATCH,e.METHODS.SEARCH,e.METHODS.UNLOCK,e.METHODS.BIND,e.METHODS.REBIND,e.METHODS.UNBIND,e.METHODS.ACL,e.METHODS.REPORT,e.METHODS.MKACTIVITY,e.METHODS.CHECKOUT,e.METHODS.MERGE,e.METHODS[`M-SEARCH`],e.METHODS.NOTIFY,e.METHODS.SUBSCRIBE,e.METHODS.UNSUBSCRIBE,e.METHODS.PATCH,e.METHODS.PURGE,e.METHODS.MKCALENDAR,e.METHODS.LINK,e.METHODS.UNLINK,e.METHODS.PRI,e.METHODS.SOURCE,e.METHODS.QUERY],e.METHODS_ICE=[e.METHODS.SOURCE],e.METHODS_RTSP=[e.METHODS.OPTIONS,e.METHODS.DESCRIBE,e.METHODS.ANNOUNCE,e.METHODS.SETUP,e.METHODS.PLAY,e.METHODS.PAUSE,e.METHODS.TEARDOWN,e.METHODS.GET_PARAMETER,e.METHODS.SET_PARAMETER,e.METHODS.REDIRECT,e.METHODS.RECORD,e.METHODS.FLUSH,e.METHODS.GET,e.METHODS.POST],e.METHOD_MAP=(0,t.enumToMap)(e.METHODS),e.H_METHOD_MAP=Object.fromEntries(Object.entries(e.METHODS).filter(([e])=>e.startsWith(`H`))),e.STATUSES_HTTP=[e.STATUSES.CONTINUE,e.STATUSES.SWITCHING_PROTOCOLS,e.STATUSES.PROCESSING,e.STATUSES.EARLY_HINTS,e.STATUSES.RESPONSE_IS_STALE,e.STATUSES.REVALIDATION_FAILED,e.STATUSES.DISCONNECTED_OPERATION,e.STATUSES.HEURISTIC_EXPIRATION,e.STATUSES.MISCELLANEOUS_WARNING,e.STATUSES.OK,e.STATUSES.CREATED,e.STATUSES.ACCEPTED,e.STATUSES.NON_AUTHORITATIVE_INFORMATION,e.STATUSES.NO_CONTENT,e.STATUSES.RESET_CONTENT,e.STATUSES.PARTIAL_CONTENT,e.STATUSES.MULTI_STATUS,e.STATUSES.ALREADY_REPORTED,e.STATUSES.TRANSFORMATION_APPLIED,e.STATUSES.IM_USED,e.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,e.STATUSES.MULTIPLE_CHOICES,e.STATUSES.MOVED_PERMANENTLY,e.STATUSES.FOUND,e.STATUSES.SEE_OTHER,e.STATUSES.NOT_MODIFIED,e.STATUSES.USE_PROXY,e.STATUSES.SWITCH_PROXY,e.STATUSES.TEMPORARY_REDIRECT,e.STATUSES.PERMANENT_REDIRECT,e.STATUSES.BAD_REQUEST,e.STATUSES.UNAUTHORIZED,e.STATUSES.PAYMENT_REQUIRED,e.STATUSES.FORBIDDEN,e.STATUSES.NOT_FOUND,e.STATUSES.METHOD_NOT_ALLOWED,e.STATUSES.NOT_ACCEPTABLE,e.STATUSES.PROXY_AUTHENTICATION_REQUIRED,e.STATUSES.REQUEST_TIMEOUT,e.STATUSES.CONFLICT,e.STATUSES.GONE,e.STATUSES.LENGTH_REQUIRED,e.STATUSES.PRECONDITION_FAILED,e.STATUSES.PAYLOAD_TOO_LARGE,e.STATUSES.URI_TOO_LONG,e.STATUSES.UNSUPPORTED_MEDIA_TYPE,e.STATUSES.RANGE_NOT_SATISFIABLE,e.STATUSES.EXPECTATION_FAILED,e.STATUSES.IM_A_TEAPOT,e.STATUSES.PAGE_EXPIRED,e.STATUSES.ENHANCE_YOUR_CALM,e.STATUSES.MISDIRECTED_REQUEST,e.STATUSES.UNPROCESSABLE_ENTITY,e.STATUSES.LOCKED,e.STATUSES.FAILED_DEPENDENCY,e.STATUSES.TOO_EARLY,e.STATUSES.UPGRADE_REQUIRED,e.STATUSES.PRECONDITION_REQUIRED,e.STATUSES.TOO_MANY_REQUESTS,e.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,e.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,e.STATUSES.LOGIN_TIMEOUT,e.STATUSES.NO_RESPONSE,e.STATUSES.RETRY_WITH,e.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,e.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,e.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,e.STATUSES.INVALID_X_FORWARDED_FOR,e.STATUSES.REQUEST_HEADER_TOO_LARGE,e.STATUSES.SSL_CERTIFICATE_ERROR,e.STATUSES.SSL_CERTIFICATE_REQUIRED,e.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,e.STATUSES.INVALID_TOKEN,e.STATUSES.CLIENT_CLOSED_REQUEST,e.STATUSES.INTERNAL_SERVER_ERROR,e.STATUSES.NOT_IMPLEMENTED,e.STATUSES.BAD_GATEWAY,e.STATUSES.SERVICE_UNAVAILABLE,e.STATUSES.GATEWAY_TIMEOUT,e.STATUSES.HTTP_VERSION_NOT_SUPPORTED,e.STATUSES.VARIANT_ALSO_NEGOTIATES,e.STATUSES.INSUFFICIENT_STORAGE,e.STATUSES.LOOP_DETECTED,e.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,e.STATUSES.NOT_EXTENDED,e.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,e.STATUSES.WEB_SERVER_UNKNOWN_ERROR,e.STATUSES.WEB_SERVER_IS_DOWN,e.STATUSES.CONNECTION_TIMEOUT,e.STATUSES.ORIGIN_IS_UNREACHABLE,e.STATUSES.TIMEOUT_OCCURED,e.STATUSES.SSL_HANDSHAKE_FAILED,e.STATUSES.INVALID_SSL_CERTIFICATE,e.STATUSES.RAILGUN_ERROR,e.STATUSES.SITE_IS_OVERLOADED,e.STATUSES.SITE_IS_FROZEN,e.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,e.STATUSES.NETWORK_READ_TIMEOUT,e.STATUSES.NETWORK_CONNECT_TIMEOUT],e.ALPHA=[];for(let t=65;t<=90;t++)e.ALPHA.push(String.fromCharCode(t)),e.ALPHA.push(String.fromCharCode(t+32));e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9},e.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},e.NUM=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],e.ALPHANUM=e.ALPHA.concat(e.NUM),e.MARK=[`-`,`_`,`.`,`!`,`~`,`*`,`'`,`(`,`)`],e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat([`%`,`;`,`:`,`&`,`=`,`+`,`$`,`,`]),e.URL_CHAR=(/* @__PURE__ */ `!"$%&'()*+,-./:;<=>@[\\]^_\`{|}~`.split(``)).concat(e.ALPHANUM),e.HEX=e.NUM.concat([`a`,`b`,`c`,`d`,`e`,`f`,`A`,`B`,`C`,`D`,`E`,`F`]),e.TOKEN=[`!`,`#`,`$`,`%`,`&`,`'`,`*`,`+`,`-`,`.`,`^`,`_`,"`",`|`,`~`].concat(e.ALPHANUM),e.HEADER_CHARS=[` `];for(let t=32;t<=255;t++)t!==127&&e.HEADER_CHARS.push(t);e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter(e=>e!==44),e.QUOTED_STRING=[` `,` `];for(let t=33;t<=255;t++)t!==34&&t!==92&&e.QUOTED_STRING.push(t);e.HTAB_SP_VCHAR_OBS_TEXT=[` `,` `];for(let t=33;t<=126;t++)e.HTAB_SP_VCHAR_OBS_TEXT.push(t);for(let t=128;t<=255;t++)e.HTAB_SP_VCHAR_OBS_TEXT.push(t);e.MAJOR=e.NUM_MAP,e.MINOR=e.MAJOR,e.SPECIAL_HEADERS={connection:e.HEADER_STATE.CONNECTION,"content-length":e.HEADER_STATE.CONTENT_LENGTH,"proxy-connection":e.HEADER_STATE.CONNECTION,"transfer-encoding":e.HEADER_STATE.TRANSFER_ENCODING,upgrade:e.HEADER_STATE.UPGRADE},e.default={ERROR:e.ERROR,TYPE:e.TYPE,FLAGS:e.FLAGS,LENIENT_FLAGS:e.LENIENT_FLAGS,METHODS:e.METHODS,STATUSES:e.STATUSES,FINISH:e.FINISH,HEADER_STATE:e.HEADER_STATE,ALPHA:e.ALPHA,NUM_MAP:e.NUM_MAP,HEX_MAP:e.HEX_MAP,NUM:e.NUM,ALPHANUM:e.ALPHANUM,MARK:e.MARK,USERINFO_CHARS:e.USERINFO_CHARS,URL_CHAR:e.URL_CHAR,HEX:e.HEX,TOKEN:e.TOKEN,HEADER_CHARS:e.HEADER_CHARS,CONNECTION_TOKEN_CHARS:e.CONNECTION_TOKEN_CHARS,QUOTED_STRING:e.QUOTED_STRING,HTAB_SP_VCHAR_OBS_TEXT:e.HTAB_SP_VCHAR_OBS_TEXT,MAJOR:e.MAJOR,MINOR:e.MINOR,SPECIAL_HEADERS:e.SPECIAL_HEADERS,METHODS_HTTP:e.METHODS_HTTP,METHODS_ICE:e.METHODS_ICE,METHODS_RTSP:e.METHODS_RTSP,METHOD_MAP:e.METHOD_MAP,H_METHOD_MAP:e.H_METHOD_MAP,STATUSES_HTTP:e.STATUSES_HTTP}})),ji=/* @__PURE__ */ a(((e,n)=>{let{Buffer:r}=t(`node:buffer`),i;Object.defineProperty(n,"exports",{get:()=>i||=r.from(`AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==`,`base64`)})})),Mi=/* @__PURE__ */ a(((e,n)=>{let{Buffer:r}=t(`node:buffer`),i;Object.defineProperty(n,"exports",{get:()=>i||=r.from(`AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRwX3NldF9sZW5pZW50X2hlYWRlcnMAISFsbGh0dHBfc2V0X2xlbmllbnRfY2h1bmtlZF9sZW5ndGgAIh1sbGh0dHBfc2V0X2xlbmllbnRfa2VlcF9hbGl2ZQAjJGxsaHR0cF9zZXRfbGVuaWVudF90cmFuc2Zlcl9lbmNvZGluZwAkGmxsaHR0cF9zZXRfbGVuaWVudF92ZXJzaW9uACUjbGxodHRwX3NldF9sZW5pZW50X2RhdGFfYWZ0ZXJfY2xvc2UAJidsbGh0dHBfc2V0X2xlbmllbnRfb3B0aW9uYWxfbGZfYWZ0ZXJfY3IAJyxsbGh0dHBfc2V0X2xlbmllbnRfb3B0aW9uYWxfY3JsZl9hZnRlcl9jaHVuawAoKGxsaHR0cF9zZXRfbGVuaWVudF9vcHRpb25hbF9jcl9iZWZvcmVfbGYAKSpsbGh0dHBfc2V0X2xlbmllbnRfc3BhY2VzX2FmdGVyX2NodW5rX3NpemUAKhhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YANgkYAQBBAQsSAQIDBAUKBgcyNDMuKy8tLDAxCuzaAjQWAEHA1QAoAgAEQAALQcDVAEEBNgIACxQAIAAQOCAAIAI2AjggACABOgAoCxQAIAAgAC8BNCAALQAwIAAQNxAACx4BAX9BwAAQOiIBEDggAUGACDYCOCABIAA6ACggAQuPDAEHfwJAIABFDQAgAEEIayIBIABBBGsoAgAiAEF4cSIEaiEFAkAgAEEBcQ0AIABBA3FFDQEgASABKAIAIgBrIgFB1NUAKAIASQ0BIAAgBGohBAJAAkBB2NUAKAIAIAFHBEAgAEH/AU0EQCAAQQN2IQMgASgCCCIAIAEoAgwiAkYEQEHE1QBBxNUAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgASgCGCEGIAEgASgCDCIARwRAIAAgASgCCCICNgIIIAIgADYCDAwDCyABQRRqIgMoAgAiAkUEQCABKAIQIgJFDQIgAUEQaiEDCwNAIAMhByACIgBBFGoiAygCACICDQAgAEEQaiEDIAAoAhAiAg0ACyAHQQA2AgAMAgsgBSgCBCIAQQNxQQNHDQIgBSAAQX5xNgIEQczVACAENgIAIAUgBDYCACABIARBAXI2AgQMAwtBACEACyAGRQ0AAkAgASgCHCICQQJ0QfTXAGoiAygCACABRgRAIAMgADYCACAADQFByNUAQcjVACgCAEF+IAJ3cTYCAAwCCyAGQRBBFCAGKAIQIAFGG2ogADYCACAARQ0BCyAAIAY2AhggASgCECICBEAgACACNgIQIAIgADYCGAsgAUEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgBU8NACAFKAIEIgBBAXFFDQACQAJAAkACQCAAQQJxRQRAQdzVACgCACAFRgRAQdzVACABNgIAQdDVAEHQ1QAoAgAgBGoiADYCACABIABBAXI2AgQgAUHY1QAoAgBHDQZBzNUAQQA2AgBB2NUAQQA2AgAMBgtB2NUAKAIAIAVGBEBB2NUAIAE2AgBBzNUAQczVACgCACAEaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAMBgsgAEF4cSAEaiEEIABB/wFNBEAgAEEDdiEDIAUoAggiACAFKAIMIgJGBEBBxNUAQcTVACgCAEF+IAN3cTYCAAwFCyACIAA2AgggACACNgIMDAQLIAUoAhghBiAFIAUoAgwiAEcEQEHU1QAoAgAaIAAgBSgCCCICNgIIIAIgADYCDAwDCyAFQRRqIgMoAgAiAkUEQCAFKAIQIgJFDQIgBUEQaiEDCwNAIAMhByACIgBBFGoiAygCACICDQAgAEEQaiEDIAAoAhAiAg0ACyAHQQA2AgAMAgsgBSAAQX5xNgIEIAEgBGogBDYCACABIARBAXI2AgQMAwtBACEACyAGRQ0AAkAgBSgCHCICQQJ0QfTXAGoiAygCACAFRgRAIAMgADYCACAADQFByNUAQcjVACgCAEF+IAJ3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogADYCACAARQ0BCyAAIAY2AhggBSgCECICBEAgACACNgIQIAIgADYCGAsgBUEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgBGogBDYCACABIARBAXI2AgQgAUHY1QAoAgBHDQBBzNUAIAQ2AgAMAQsgBEH/AU0EQCAEQXhxQezVAGohAAJ/QcTVACgCACICQQEgBEEDdnQiA3FFBEBBxNUAIAIgA3I2AgAgAAwBCyAAKAIICyICIAE2AgwgACABNgIIIAEgADYCDCABIAI2AggMAQtBHyECIARB////B00EQCAEQSYgBEEIdmciAGt2QQFxIABBAXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==`,`base64`)})})),Ni=/* @__PURE__ */ a(((e,t)=>{let n=[`GET`,`HEAD`,`POST`],r=new Set(n),i=[101,204,205,304],a=[301,302,303,307,308],o=new Set(a),s=/* @__PURE__ */ `1.7.9.11.13.15.17.19.20.21.22.23.25.37.42.43.53.69.77.79.87.95.101.102.103.104.109.110.111.113.115.117.119.123.135.137.139.143.161.179.389.427.465.512.513.514.515.526.530.531.532.540.548.554.556.563.587.601.636.989.990.993.995.1719.1720.1723.2049.3659.4045.4190.5060.5061.6000.6566.6665.6666.6667.6668.6669.6679.6697.10080`.split(`.`),c=new Set(s),l=[`no-referrer`,`no-referrer-when-downgrade`,`same-origin`,`origin`,`strict-origin`,`origin-when-cross-origin`,`strict-origin-when-cross-origin`,`unsafe-url`],u=[``,...l],d=new Set(l),f=[`follow`,`manual`,`error`],p=[`GET`,`HEAD`,`OPTIONS`,`TRACE`,`QUERY`],m=new Set(p),h=[`navigate`,`same-origin`,`no-cors`,`cors`],g=[`omit`,`same-origin`,`include`],v=[`default`,`no-store`,`reload`,`no-cache`,`force-cache`,`only-if-cached`],y=[`content-encoding`,`content-language`,`content-location`,`content-type`,`content-length`],b=[`half`],x=[`CONNECT`,`TRACE`,`TRACK`],S=new Set(x),C=[`audio`,`audioworklet`,`font`,`image`,`manifest`,`paintworklet`,`script`,`style`,`track`,`video`,`xslt`,``];t.exports={subresource:C,forbiddenMethods:x,requestBodyHeader:y,referrerPolicy:u,requestRedirect:f,requestMode:h,requestCredentials:g,requestCache:v,redirectStatus:a,corsSafeListedMethods:n,nullBodyStatus:i,safeMethods:p,badPorts:s,requestDuplex:b,subresourceSet:new Set(C),badPortsSet:c,redirectStatusSet:o,corsSafeListedMethodsSet:r,safeMethodsSet:m,forbiddenMethodsSet:S,referrerPolicyTokens:d}})),Pi=/* @__PURE__ */ a(((e,t)=>{let n=Symbol.for(`undici.globalOrigin.1`);function r(){return globalThis[n]}function i(e){if(e===void 0){Object.defineProperty(globalThis,n,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw TypeError(`Only http & https urls are allowed, received ${t.protocol}`);Object.defineProperty(globalThis,n,{value:t,writable:!0,enumerable:!1,configurable:!1})}t.exports={getGlobalOrigin:r,setGlobalOrigin:i}})),Fi=/* @__PURE__ */ a(((e,t)=>{let n=new TextDecoder;function r(e){return e.length===0?``:(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),n.decode(e))}t.exports={utf8DecodeBytes:r}})),Ii=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{utf8DecodeBytes:i}=Fi();function a(e,t,n){let r=``;for(;n.positiont)return String.fromCharCode.apply(null,e);let n=``,r=0,i=65535;for(;rt&&(i=t-r),n+=String.fromCharCode.apply(null,e.subarray(r,r+=i));return n}let d=/[^\x00-\xFF]/;function f(e){return r(!d.test(e)),e}let p=/[^\x00-\x7F]/;function m(e){return p.test(e)?e.replace(/[A-Z]+/g,e=>e.toLowerCase()):e.toLowerCase()}function h(e){return JSON.parse(i(e))}function g(e,t=!0,n=!0){return v(e,t,n,l)}function v(e,t,n,r){let i=0,a=e.length-1;if(t)for(;i=i&&r(e.charCodeAt(a));)a--;return i===0&&a===e.length-1?e:e.slice(i,a+1)}function y(e){let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Value is not JSON serializable`);return r(typeof t==`string`),t}n.exports={asciiLowercase:m,collectASequenceOfCodePoints:a,collectASequenceOfCodePointsFast:o,forgivingBase64:c,isASCIIWhitespace:l,isomorphicDecode:u,isomorphicEncode:f,parseJSONFromBytes:h,removeASCIIWhitespace:g,removeChars:v,serializeJavascriptValueToJSONString:y}})),Li=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{asciiLowercase:i,forgivingBase64:a,collectASequenceOfCodePoints:o,collectASequenceOfCodePointsFast:s,isomorphicDecode:c,removeASCIIWhitespace:l,removeChars:u}=Ii(),d=new TextEncoder,f=/^[-!#$%&'*+.^_`|~A-Za-z0-9]+$/u,p=/[\u000A\u000D\u0009\u0020]/u,m=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/u;function h(e){r(e.protocol===`data:`);let t=g(e,!0);t=t.slice(5);let n={position:0},i=s(`,`,t,n),o=i.length;if(i=l(i,!0,!0),n.position>=t.length)return`failure`;n.position++;let u=v(t.slice(o+1));if(/;\u0020*[Bb][Aa][Ss][Ee]64$/u.test(i)){let e=c(u);if(u=a(e),u===`failure`)return`failure`;i=i.slice(0,-6),i=i.replace(/(\u0020+)$/u,``),i=i.slice(0,-1)}i.startsWith(`;`)&&(i=`text/plain`+i);let d=S(i);return d===`failure`&&(d=S(`text/plain;charset=US-ASCII`)),{mimeType:d,body:u}}function g(e,t=!1){if(!t)return e.href;let n=e.href,r=e.hash.length,i=r===0?n:n.substring(0,n.length-r);return!r&&n.endsWith(`#`)?i.slice(0,-1):i}function v(e){return x(d.encode(e))}function y(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function b(e){return e>=48&&e<=57?e-48:(e&223)-55}function x(e){let t=e.length,n=new Uint8Array(t),r=0,i=0;for(;i=e.length)return`failure`;t.position++;let r=s(`;`,e,t);if(r=E(r,!1,!0),r.length===0||!f.test(r))return`failure`;let a=i(n),c=i(r),l={type:a,subtype:c,parameters:/* @__PURE__ */ new Map,essence:`${a}/${c}`};for(;t.positionp.test(e),e,t);let n=o(e=>e!==`;`&&e!==`=`,e,t);if(n=i(n),t.position=e.length)break;let r=null;if(e[t.position]===`"`)r=C(e,t,!0),s(`;`,e,t);else if(r=s(`;`,e,t),r=E(r,!1,!0),r.length===0)continue;n.length!==0&&f.test(n)&&(r.length===0||m.test(r))&&!l.parameters.has(n)&&l.parameters.set(n,r)}return l}function C(e,t,n=!1){let i=t.position,a=``;for(r(e[t.position]===`"`),t.position++;a+=o(e=>e!==`"`&&e!==`\\`,e,t),!(t.position>=e.length);){let n=e[t.position];if(t.position++,n===`\\`){if(t.position>=e.length){a+=`\\`;break}a+=e[t.position],t.position++}else{r(n===`"`);break}}return n?a:e.slice(i,t.position)}function w(e){r(e!==`failure`);let{parameters:t,essence:n}=e,i=n;for(let[e,n]of t.entries())i+=`;`,i+=e,i+=`=`,f.test(n)||(n=n.replace(/[\\"]/gu,`\\$&`),n=`"`+n,n+=`"`),i+=n;return i}function T(e){return e===13||e===10||e===9||e===32}function E(e,t=!0,n=!0){return u(e,t,n,T)}function D(e){switch(e.essence){case`application/ecmascript`:case`application/javascript`:case`application/x-ecmascript`:case`application/x-javascript`:case`text/ecmascript`:case`text/javascript`:case`text/javascript1.0`:case`text/javascript1.1`:case`text/javascript1.2`:case`text/javascript1.3`:case`text/javascript1.4`:case`text/javascript1.5`:case`text/jscript`:case`text/livescript`:case`text/x-ecmascript`:case`text/x-javascript`:return`text/javascript`;case`application/json`:case`text/json`:return`application/json`;case`image/svg+xml`:return`image/svg+xml`;case`text/xml`:case`application/xml`:return`application/xml`}return e.subtype.endsWith(`+json`)?`application/json`:e.subtype.endsWith(`+xml`)?`application/xml`:``}n.exports={dataURLProcessor:h,URLSerializer:g,stringPercentDecode:v,parseMIMEType:S,collectAnHTTPQuotedString:C,serializeAMimeType:w,removeHTTPWhitespace:E,minimizeSupportedMimeType:D,HTTP_TOKEN_CODEPOINTS:f}})),Ri=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{types:i,inspect:a}=t(`node:util`),{markAsUncloneable:o}=t(`node:worker_threads`),s=Function.call.bind(Function.prototype[Symbol.hasInstance]),c={converters:{},util:{},errors:{},is:{}};c.errors.exception=function(e){return/* @__PURE__ */ TypeError(`${e.header}: ${e.message}`)},c.errors.conversionFailed=function(e){let t=e.types.length===1?``:` one of`,n=`${e.argument} could not be converted to${t}: ${e.types.join(`, `)}.`;return c.errors.exception({header:e.prefix,message:n})},c.errors.invalidArgument=function(e){return c.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})},c.brandCheck=function(e,t){if(!t(e)){let e=/* @__PURE__ */ TypeError(`Illegal invocation`);throw e.code=`ERR_INVALID_THIS`,e}},c.argumentLengthCheck=function({length:e},t,n){if(es(e,t)},c.util.Type=function(e){switch(typeof e){case`undefined`:return 1;case`boolean`:return 2;case`string`:return 3;case`symbol`:return 4;case`number`:return 5;case`bigint`:return 6;case`function`:case`object`:return e===null?7:8}},c.util.Types={UNDEFINED:1,BOOLEAN:2,STRING:3,SYMBOL:4,NUMBER:5,BIGINT:6,NULL:7,OBJECT:8},c.util.TypeValueToString=function(e){switch(c.util.Type(e)){case 1:return`Undefined`;case 2:return`Boolean`;case 3:return`String`;case 4:return`Symbol`;case 5:return`Number`;case 6:return`BigInt`;case 7:return`Null`;case 8:return`Object`}},c.util.markAsUncloneable=o,c.util.ConvertToInt=function(e,t,n,r){let i,a;t===64?(i=2**53-1,a=n===`unsigned`?0:(-2)**53+1):n===`unsigned`?(a=0,i=2**t-1):(a=-(2**(t-1)),i=2**(t-1)-1);let o=Number(e);if(o===0&&(o=0),c.util.HasFlag(r,c.attributes.EnforceRange)){if(Number.isNaN(o)||o===1/0||o===-1/0)throw c.errors.exception({header:`Integer conversion`,message:`Could not convert ${c.util.Stringify(e)} to an integer.`});if(o=c.util.IntegerPart(o),oi)throw c.errors.exception({header:`Integer conversion`,message:`Value must be between ${a}-${i}, got ${o}.`});return o}return!Number.isNaN(o)&&c.util.HasFlag(r,c.attributes.Clamp)?(o=Math.min(Math.max(o,a),i),o=Math.floor(o)%2==0?Math.floor(o):Math.ceil(o),o):Number.isNaN(o)||o===0&&Object.is(0,o)||o===1/0||o===-1/0?0:(o=c.util.IntegerPart(o),o%=2**t,n===`signed`&&o>=2**(t-1)?o-2**t:o)},c.util.IntegerPart=function(e){let t=Math.floor(Math.abs(e));return e<0?-1*t:t},c.util.Stringify=function(e){switch(c.util.Type(e)){case 4:return`Symbol(${e.description})`;case 8:return a(e);case 3:return`"${e}"`;case 6:return`${e}n`;default:return`${e}`}},c.util.IsResizableArrayBuffer=function(e){if(i.isArrayBuffer(e))return e.resizable;if(i.isSharedArrayBuffer(e))return e.growable;throw c.errors.exception({header:`IsResizableArrayBuffer`,message:`"${c.util.Stringify(e)}" is not an array buffer.`})},c.util.HasFlag=function(e,t){return typeof e==`number`&&(e&t)===t},c.sequenceConverter=function(e){return(t,n,r,i)=>{if(c.util.Type(t)!==8)throw c.errors.exception({header:n,message:`${r} (${c.util.Stringify(t)}) is not iterable.`});let a=typeof i==`function`?i():t?.[Symbol.iterator]?.(),o=[],s=0;if(a===void 0||typeof a.next!=`function`)throw c.errors.exception({header:n,message:`${r} is not iterable.`});for(;;){let{done:t,value:i}=a.next();if(t)break;o.push(e(i,n,`${r}[${s++}]`))}return o}},c.recordConverter=function(e,t){return(n,r,a)=>{if(c.util.Type(n)!==8)throw c.errors.exception({header:r,message:`${a} ("${c.util.TypeValueToString(n)}") is not an Object.`});let o={};if(!i.isProxy(n)){let i=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(let s of i){let i=c.util.Stringify(s),l=e(s,r,`Key ${i} in ${a}`);o[l]=t(n[s],r,`${a}[${i}]`)}return o}let s=Reflect.ownKeys(n);for(let i of s)if(Reflect.getOwnPropertyDescriptor(n,i)?.enumerable){let s=e(i,r,a);o[s]=t(n[i],r,a)}return o}},c.interfaceConverter=function(e,t){return(n,r,i)=>{if(!e(n))throw c.errors.exception({header:r,message:`Expected ${i} ("${c.util.Stringify(n)}") to be an instance of ${t}.`});return n}},c.dictionaryConverter=function(e){return e.sort((e,t)=>(e.key>t.key)-(e.key{let i={};if(t!=null&&c.util.Type(t)!==8)throw c.errors.exception({header:n,message:`Expected ${t} to be one of: Null, Undefined, Object.`});for(let a of e){let{key:e,defaultValue:o,required:s,converter:l}=a;if(s===!0&&(t==null||!Object.hasOwn(t,e)))throw c.errors.exception({header:n,message:`Missing required key "${e}".`});let u=t?.[e],d=o!==void 0;if(d&&u===void 0&&(u=o()),s||d||u!==void 0){if(u=l(u,n,`${r}.${e}`),a.allowedValues&&!a.allowedValues.includes(u))throw c.errors.exception({header:n,message:`${u} is not an accepted type. Expected one of ${a.allowedValues.join(`, `)}.`});i[e]=u}}return i}},c.nullableConverter=function(e){return(t,n,r)=>t===null?t:e(t,n,r)},c.is.USVString=function(e){return typeof e==`string`&&e.isWellFormed()},c.is.ReadableStream=c.util.MakeTypeAssertion(ReadableStream),c.is.Blob=c.util.MakeTypeAssertion(Blob),c.is.URLSearchParams=c.util.MakeTypeAssertion(URLSearchParams),c.is.File=c.util.MakeTypeAssertion(File),c.is.URL=c.util.MakeTypeAssertion(URL),c.is.AbortSignal=c.util.MakeTypeAssertion(AbortSignal),c.is.MessagePort=c.util.MakeTypeAssertion(MessagePort),c.is.BufferSource=function(e){return i.isArrayBuffer(e)||ArrayBuffer.isView(e)&&i.isArrayBuffer(e.buffer)},c.util.getCopyOfBytesHeldByBufferSource=function(e){let t=e,n=t,a=0,o=0;if(i.isTypedArray(t)||i.isDataView(t)?(n=t.buffer,a=t.byteOffset,o=t.byteLength):(r(i.isAnyArrayBuffer(t)),o=t.byteLength),n.detached)return/* @__PURE__ */ new Uint8Array;let s=new Uint8Array(o),c=new Uint8Array(n,a,o);return s.set(c),s},c.converters.DOMString=function(e,t,n,r){if(e===null&&c.util.HasFlag(r,c.attributes.LegacyNullToEmptyString))return``;if(typeof e==`symbol`)throw c.errors.exception({header:t,message:`${n} is a symbol, which cannot be converted to a DOMString.`});return String(e)},c.converters.ByteString=function(e,t,n){if(typeof e==`symbol`)throw c.errors.exception({header:t,message:`${n} is a symbol, which cannot be converted to a ByteString.`});let r=String(e);for(let e=0;e255)throw TypeError(`Cannot convert argument to a ByteString because the character at index ${e} has a value of ${r.charCodeAt(e)} which is greater than 255.`);return r},c.converters.USVString=function(e){return typeof e==`string`?e.toWellFormed():`${e}`.toWellFormed()},c.converters.boolean=function(e){return!!e},c.converters.any=function(e){return e},c.converters[`long long`]=function(e,t,n){return c.util.ConvertToInt(e,64,`signed`,0,t,n)},c.converters[`unsigned long long`]=function(e,t,n){return c.util.ConvertToInt(e,64,`unsigned`,0,t,n)},c.converters[`unsigned long`]=function(e,t,n){return c.util.ConvertToInt(e,32,`unsigned`,0,t,n)},c.converters[`unsigned short`]=function(e,t,n,r){return c.util.ConvertToInt(e,16,`unsigned`,r,t,n)},c.converters.ArrayBuffer=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isArrayBuffer(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBuffer`]});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e))throw c.errors.exception({header:t,message:`${n} cannot be a resizable ArrayBuffer.`});return e},c.converters.SharedArrayBuffer=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isSharedArrayBuffer(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`SharedArrayBuffer`]});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e))throw c.errors.exception({header:t,message:`${n} cannot be a resizable SharedArrayBuffer.`});return e},c.converters.TypedArray=function(e,t,n,r,a){if(c.util.Type(e)!==8||!i.isTypedArray(e)||e.constructor.name!==t.name)throw c.errors.conversionFailed({prefix:n,argument:`${r} ("${c.util.Stringify(e)}")`,types:[t.name]});if(!c.util.HasFlag(a,c.attributes.AllowShared)&&i.isSharedArrayBuffer(e.buffer))throw c.errors.exception({header:n,message:`${r} cannot be a view on a shared array buffer.`});if(!c.util.HasFlag(a,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e.buffer))throw c.errors.exception({header:n,message:`${r} cannot be a view on a resizable array buffer.`});return e},c.converters.DataView=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isDataView(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`DataView`]});if(!c.util.HasFlag(r,c.attributes.AllowShared)&&i.isSharedArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a shared array buffer.`});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a resizable array buffer.`});return e},c.converters.ArrayBufferView=function(e,t,n,r){if(c.util.Type(e)!==8||!i.isArrayBufferView(e))throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBufferView`]});if(!c.util.HasFlag(r,c.attributes.AllowShared)&&i.isSharedArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a shared array buffer.`});if(!c.util.HasFlag(r,c.attributes.AllowResizable)&&c.util.IsResizableArrayBuffer(e.buffer))throw c.errors.exception({header:t,message:`${n} cannot be a view on a resizable array buffer.`});return e},c.converters.BufferSource=function(e,t,n,r){if(i.isArrayBuffer(e))return c.converters.ArrayBuffer(e,t,n,r);if(i.isArrayBufferView(e))return r&=~c.attributes.AllowShared,c.converters.ArrayBufferView(e,t,n,r);throw i.isSharedArrayBuffer(e)?c.errors.exception({header:t,message:`${n} cannot be a SharedArrayBuffer.`}):c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBuffer`,`ArrayBufferView`]})},c.converters.AllowSharedBufferSource=function(e,t,n,r){if(i.isArrayBuffer(e))return c.converters.ArrayBuffer(e,t,n,r);if(i.isSharedArrayBuffer(e))return c.converters.SharedArrayBuffer(e,t,n,r);if(i.isArrayBufferView(e))return r|=c.attributes.AllowShared,c.converters.ArrayBufferView(e,t,n,r);throw c.errors.conversionFailed({prefix:t,argument:`${n} ("${c.util.Stringify(e)}")`,types:[`ArrayBuffer`,`SharedArrayBuffer`,`ArrayBufferView`]})},c.converters[`sequence`]=c.sequenceConverter(c.converters.ByteString),c.converters[`sequence>`]=c.sequenceConverter(c.converters[`sequence`]),c.converters[`record`]=c.recordConverter(c.converters.ByteString,c.converters.ByteString),c.converters.Blob=c.interfaceConverter(c.is.Blob,`Blob`),c.converters.AbortSignal=c.interfaceConverter(c.is.AbortSignal,`AbortSignal`),c.converters.EventHandlerNonNull=function(e){return c.util.Type(e)===8?typeof e==`function`?e:()=>{}:null},c.attributes={Clamp:1,EnforceRange:2,AllowShared:4,AllowResizable:8,LegacyNullToEmptyString:16},n.exports={webidl:c}})),zi=/* @__PURE__ */ a(((e,n)=>{let{Transform:r}=t(`node:stream`),i=t(`node:zlib`),{redirectStatusSet:a,referrerPolicyTokens:o,badPortsSet:s}=Ni(),{getGlobalOrigin:c}=Pi(),{collectAnHTTPQuotedString:l,parseMIMEType:u}=Li(),{performance:d}=t(`node:perf_hooks`),{isValidHTTPToken:f,normalizedMethodRecordsBase:p}=Si(),m=t(`node:assert`),{isUint8Array:h}=t(`node:util/types`),{webidl:g}=Ri(),{isomorphicEncode:v,collectASequenceOfCodePoints:y,removeChars:b}=Ii();function x(e){let t=e.urlList,n=t.length;return n===0?null:t[n-1].toString()}function S(e,t){if(!a.has(e.status))return null;let n=e.headersList.get(`location`,!0);return n!==null&&A(n)&&(C(n)||(n=w(n)),n=new URL(n,x(e))),n&&!n.hash&&(n.hash=t),n}function C(e){for(let t=0;t126||n<32)return!1}return!0}function w(e){return Buffer.from(e,`binary`).toString(`utf8`)}function T(e){return e.urlList[e.urlList.length-1]}function E(e){let t=T(e);return we(t)&&s.has(t.port)?`blocked`:`allowed`}function D(e){return e instanceof Error||e?.constructor?.name===`Error`||e?.constructor?.name===`DOMException`}function O(e){for(let t=0;t=32&&n<=126||n>=128&&n<=255))return!1}return!0}let k=f;function A(e){return(e[0]===` `||e[0]===` `||e[e.length-1]===` `||e[e.length-1]===` `||e.includes(` +`)||e.includes(`\r`)||e.includes(`\0`))===!1}function j(e){let t=(e.headersList.get(`referrer-policy`,!0)??``).split(`,`),n=``;if(t.length)for(let e=t.length;e!==0;e--){let r=t[e-1].trim();if(o.has(r)){n=r;break}}return n}function M(e,t){let n=j(t);n!==``&&(e.referrerPolicy=n)}function N(){return`allowed`}function P(){return`success`}function F(){return`success`}function I(e){if(!ue(T(e)))return;let t=null;t=e.mode,e.headersList.set(`sec-fetch-mode`,t,!0)}function ee(e){let t=e.origin;if(t!==`client`&&t!==void 0){if(e.responseTainting===`cors`||e.mode===`websocket`)e.headersList.append(`origin`,t,!0);else if(e.method!==`GET`&&e.method!==`HEAD`){switch(e.referrerPolicy){case`no-referrer`:t=null;break;case`no-referrer-when-downgrade`:case`strict-origin`:case`strict-origin-when-cross-origin`:e.origin&&Ce(e.origin)&&!Ce(T(e))&&(t=null);break;case`same-origin`:fe(e,T(e))||(t=null)}e.headersList.append(`origin`,t,!0)}}}function L(e,t){return e}function R(e,t,n){return!e?.startTime||e.startTime4096&&(r=i),t){case`no-referrer`:return`no-referrer`;case`origin`:return i??ae(n,!0);case`unsafe-url`:return r;case`strict-origin`:{let t=T(e);return ue(r)&&!ue(t)?`no-referrer`:i}case`strict-origin-when-cross-origin`:{let t=T(e);return fe(r,t)?r:ue(r)&&!ue(t)?`no-referrer`:i}case`same-origin`:return fe(e,r)?r:`no-referrer`;case`origin-when-cross-origin`:return fe(e,r)?r:i;case`no-referrer-when-downgrade`:{let t=T(e);return ue(r)&&!ue(t)?`no-referrer`:r}}}function ae(e,t=!1){return m(g.is.URL(e)),e=new URL(e),Se(e)?`no-referrer`:(e.username=``,e.password=``,e.hash=``,t===!0&&(e.pathname=``,e.search=``),e)}let oe=RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/),se=RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);function ce(e){return e.includes(`:`)?(e[0]===`[`&&e[e.length-1]===`]`&&(e=e.slice(1,-1)),se(e)):oe(e)}function le(e){return e==null||e===`null`?!1:(e=new URL(e),!!(e.protocol===`https:`||e.protocol===`wss:`||ce(e.hostname)||e.hostname===`localhost`||e.hostname===`localhost.`||e.hostname.endsWith(`.localhost`)||e.hostname.endsWith(`.localhost.`)||e.protocol===`file:`))}function ue(e){return g.is.URL(e)?e.href===`about:blank`||e.href===`about:srcdoc`||e.protocol===`data:`||e.protocol===`blob:`||le(e.origin):!1}function de(e){}function fe(e,t){return e.origin===t.origin&&e.origin===`null`||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function pe(e){return e.controller.state===`aborted`}function me(e){return e.controller.state===`aborted`||e.controller.state===`terminated`}function he(e){return p[e.toLowerCase()]??e}let ge=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function _e(e,t,n=0,r=1){class i{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=0}next(){if(typeof this!=`object`||this===null||!(#e in this))throw TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let i=this.#n,a=t(this.#e);if(i>=a.length)return{value:void 0,done:!0};let{[n]:o,[r]:s}=a[i];this.#n=i+1;let c;switch(this.#t){case`key`:c=o;break;case`value`:c=s;break;case`key+value`:c=[o,s]}return{value:c,done:!1}}}return delete i.prototype.constructor,Object.setPrototypeOf(i.prototype,ge),Object.defineProperties(i.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(e,t){return new i(e,t)}}function ve(e,t,n,r=0,i=1,a){let o=_e(e,n,r,i),s={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return g.brandCheck(this,a),o(this,`key`)}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return g.brandCheck(this,a),o(this,`value`)}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return g.brandCheck(this,a),o(this,`key+value`)}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(t,n=globalThis){if(g.brandCheck(this,a),g.argumentLengthCheck(arguments,1,`${e}.forEach`),typeof t!=`function`)throw TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`);for(let{0:e,1:r}of o(this,`key+value`))t.call(n,r,e,this)}}};return Object.defineProperties(t.prototype,{...s,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:s.entries.value}})}function ye(e,t,n){let r=t,i=n;try{xe(e.stream.getReader(),r,i)}catch(e){i(e)}}function be(e){try{e.close(),e.byobRequest?.respond(0)}catch(e){if(!e.message.includes(`Controller is already closed`)&&!e.message.includes(`ReadableStream is already closed`))throw e}}async function xe(e,t,n){try{let r=[],i=0;do{let{done:a,value:o}=await e.read();if(a){t(Buffer.concat(r,i));return}if(!h(o)){n(/* @__PURE__ */ TypeError(`Received non-Uint8Array chunk`));return}r.push(o),i+=o.length}while(1)}catch(e){n(e)}}function Se(e){m(`protocol`in e);let t=e.protocol;return t===`about:`||t===`blob:`||t===`data:`}function Ce(e){return typeof e==`string`&&e[5]===`:`&&e[0]===`h`&&e[1]===`t`&&e[2]===`t`&&e[3]===`p`&&e[4]===`s`||e.protocol===`https:`}function we(e){m(`protocol`in e);let t=e.protocol;return t===`http:`||t===`https:`}function Te(e,t){let n=e;if(!n.startsWith(`bytes`))return`failure`;let r={position:5};if(t&&y(e=>e===` `||e===` `,n,r),n.charCodeAt(r.position)!==61)return`failure`;r.position++,t&&y(e=>e===` `||e===` `,n,r);let i=y(e=>{let t=e.charCodeAt(0);return t>=48&&t<=57},n,r),a=i.length?Number(i):null;if(t&&y(e=>e===` `||e===` `,n,r),n.charCodeAt(r.position)!==45)return`failure`;r.position++,t&&y(e=>e===` `||e===` `,n,r);let o=y(e=>{let t=e.charCodeAt(0);return t>=48&&t<=57},n,r),s=o.length?Number(o):null;return r.positions?`failure`:{rangeStartValue:a,rangeEndValue:s}}function Ee(e,t,n){let r=`bytes `;return r+=v(`${e}`),r+=`-`,r+=v(`${t}`),r+=`/`,r+=v(`${n}`),r}var De=class extends r{#e;constructor(e){super(),this.#e=e}_transform(e,t,n){if(!this._inflateStream){if(e.length===0){n();return}this._inflateStream=(e[0]&15)==8?i.createInflate(this.#e):i.createInflateRaw(this.#e),this._inflateStream.on(`data`,this.push.bind(this)),this._inflateStream.on(`end`,()=>this.push(null)),this._inflateStream.on(`error`,e=>this.destroy(e))}this._inflateStream.write(e,t,n)}_final(e){this._inflateStream&&=(this._inflateStream.end(),null),e()}};function Oe(e){return new De(e)}function ke(e){let t=null,n=null,r=null,i=je(`content-type`,e);if(i===null)return`failure`;for(let e of i){let i=u(e);i!==`failure`&&i.essence!==`*/*`&&(r=i,r.essence===n?!r.parameters.has(`charset`)&&t!==null&&r.parameters.set(`charset`,t):(t=null,r.parameters.has(`charset`)&&(t=r.parameters.get(`charset`)),n=r.essence))}return r??`failure`}function Ae(e){let t=e,n={position:0},r=[],i=``;for(;n.positione!==`"`&&e!==`,`,t,n),n.positione===9||e===32),r.push(i),i=``}return r}function je(e,t){let n=t.get(e,!0);return n===null?null:Ae(n)}function Me(e){return!1}function Ne(e){return!!(e.username||e.password)}function Pe(e){return e!=null&&e!==`client`&&e!==`no-traversable`}var Fe=class{get baseUrl(){return c()}get origin(){return this.baseUrl?.origin}policyContainer=re()};n.exports={isAborted:pe,isCancelled:me,isValidEncodedURL:C,tryUpgradeRequestToAPotentiallyTrustworthyURL:de,clampAndCoarsenConnectionTimingInfo:R,coarsenedSharedCurrentTime:te,determineRequestsReferrer:z,makePolicyContainer:re,clonePolicyContainer:ie,appendFetchMetadata:I,appendRequestOriginHeader:ee,TAOCheck:F,corsCheck:P,crossOriginResourcePolicyCheck:N,createOpaqueTimingInfo:ne,setRequestReferrerPolicyOnRedirect:M,isValidHTTPToken:f,requestBadPort:E,requestCurrentURL:T,responseURL:x,responseLocationURL:S,isURLPotentiallyTrustworthy:ue,isValidReasonPhrase:O,sameOrigin:fe,normalizeMethod:he,iteratorMixin:ve,createIterator:_e,isValidHeaderName:k,isValidHeaderValue:A,isErrorLike:D,fullyReadBody:ye,readableStreamClose:be,urlIsLocal:Se,urlHasHttpsScheme:Ce,urlIsHttpHttpsScheme:we,readAllBytes:xe,simpleRangeHeaderValue:Te,buildContentRange:Ee,createInflate:Oe,extractMimeType:ke,getDecodeSplit:je,environmentSettingsObject:new class{settingsObject=new Fe},isOriginIPPotentiallyTrustworthy:ce,hasAuthenticationEntry:Me,includesCredentials:Ne,isTraversableNavigable:Pe}})),Bi=/* @__PURE__ */ a(((e,n)=>{let r={__proto__:null,"node:crypto":()=>t(`node:crypto`),"node:sqlite":()=>t(`node:sqlite`)};function i(e){try{return r[e](),!0}catch(e){if(e.code!==`ERR_UNKNOWN_BUILTIN_MODULE`&&e.code!==`ERR_NO_CRYPTO`)throw e;return!1}}let a=[`crypto`,`sqlite`];function o(e){if(a.includes(e))return i(`node:${e}`);throw TypeError(`unknown feature: ${e}`)}let s=new class{#e=/* @__PURE__ */ new Map;clear(){this.#e.clear()}has(e){return this.#e.get(e)??this.#t(e)}set(e,t){if(a.includes(e)===!1)throw TypeError(`unknown feature: ${e}`);this.#e.set(e,t)}#t(e){let t=o(e);return this.#e.set(e,t),t}};n.exports.runtimeFeatures=s,n.exports.default=s})),Vi=/* @__PURE__ */ a(((e,n)=>{let{iteratorMixin:r}=zi(),{kEnumerableProperty:i}=Si(),{webidl:a}=Ri(),o=t(`node:util`),{runtimeFeatures:s}=Bi(),c=s.has(`crypto`)?t(`node:crypto`).randomInt:e=>Math.floor(Math.random()*e),l,u,d;var f=class{#e=[];#t=null;constructor(e=void 0){if(a.util.markAsUncloneable(this),e!==void 0)throw a.errors.conversionFailed({prefix:`FormData constructor`,argument:`Argument 1`,types:[`undefined`]})}append(e,t,n=void 0){a.brandCheck(this,a.is.FormData);let r=`FormData.append`;a.argumentLengthCheck(arguments,2,r),e=a.converters.USVString(e),arguments.length===3||a.is.Blob(t)?(t=a.converters.Blob(t,r,`value`),n!==void 0&&(n=a.converters.USVString(n))):t=a.converters.USVString(t);let i=p(e,t,n);this.#e.push(i)}delete(e){a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.delete`),e=a.converters.USVString(e),this.#e=this.#e.filter(t=>t.name!==e)}get(e){a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.get`),e=a.converters.USVString(e);let t=this.#e.findIndex(t=>t.name===e);return t===-1?null:this.#e[t].value}getAll(e){return a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.getAll`),e=a.converters.USVString(e),this.#e.filter(t=>t.name===e).map(e=>e.value)}has(e){return a.brandCheck(this,a.is.FormData),a.argumentLengthCheck(arguments,1,`FormData.has`),e=a.converters.USVString(e),this.#e.findIndex(t=>t.name===e)!==-1}set(e,t,n=void 0){a.brandCheck(this,a.is.FormData);let r=`FormData.set`;a.argumentLengthCheck(arguments,2,r),e=a.converters.USVString(e),arguments.length===3||a.is.Blob(t)?(t=a.converters.Blob(t,r,`value`),n!==void 0&&(n=a.converters.USVString(n))):t=a.converters.USVString(t);let i=p(e,t,n),o=this.#e.findIndex(t=>t.name===e);o===-1?this.#e.push(i):this.#e=[...this.#e.slice(0,o),i,...this.#e.slice(o+1).filter(t=>t.name!==e)]}[o.inspect.custom](e,t){let n=this.#e.reduce((e,t)=>(e[t.name]?Array.isArray(e[t.name])?e[t.name].push(t.value):e[t.name]=[e[t.name],t.value]:e[t.name]=t.value,e),{__proto__:null});t.depth??=e,t.colors??=!0;let r=o.formatWithOptions(t,n);return`FormData ${r.slice(r.indexOf(`]`)+2)}`}static{l=e=>e.#e,u=(e,t)=>{e.#e=t},d=e=>e.#t??=`----formdata-undici-0${`${c(1e11)}`.padStart(11,`0`)}`,a.is.FormData=e=>typeof e==`object`&&!!e&&#e in e}};r(`FormData`,f,l,`name`,`value`,a.is.FormData),Object.defineProperties(f.prototype,{append:i,delete:i,get:i,getAll:i,has:i,set:i,[Symbol.toStringTag]:{value:`FormData`,configurable:!0}});function p(e,t,n){if(typeof t!=`string`&&(a.is.File(t)||(t=new File([t],`blob`,{type:t.type})),n!==void 0)){let e={type:t.type,lastModified:t.lastModified};t=new File([t],n,e)}return{name:e,value:t}}n.exports={FormData:f,makeEntry:p,setFormDataState:u,getFormDataBoundary:d}})),Hi=/* @__PURE__ */ a(((e,n)=>{let{bufferToLowerCasedHeaderName:r}=Si(),{HTTP_TOKEN_CODEPOINTS:i}=Li(),{makeEntry:a}=Vi(),{webidl:o}=Ri(),s=t(`node:assert`),{isomorphicDecode:c}=Ii(),l=Buffer.from(`--`),u=new TextDecoder,d=new TextDecoder(`utf-8`,{ignoreBOM:!0});function f(e){for(let t=0;t70)return!1;for(let n=0;n=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===39||t===45||t===95))return!1}return!0}function m(e,t){s(t!==`failure`&&t.essence===`multipart/form-data`);let n=t.parameters.get(`boundary`);if(n===void 0)throw x(`missing boundary in content-type header`);let r=Buffer.from(`--${n}`,`utf8`),i=[],c={position:0},u=e.indexOf(r);if(u===-1)throw x(`no boundary found in multipart body`);for(c.position=u;;){if(e.subarray(c.position,c.position+r.length).equals(r))c.position+=r.length;else throw x(`expected a value starting with -- and the boundary`);if(b(e,l,c))return i;if(e[c.position]!==13||e[c.position+1]!==10)throw x(`expected CRLF`);c.position+=2;let{name:t,filename:n,contentType:u,encoding:p}=g(e,c);c.position+=2;let m;{let t=e.indexOf(r.subarray(2),c.position);if(t===-1)throw x(`expected boundary after body`);m=e.subarray(c.position,t-4),c.position+=m.length,p===`base64`&&(m=Buffer.from(m.toString(),`base64`))}if(e[c.position]!==13||e[c.position+1]!==10)throw x(`expected CRLF`);c.position+=2;let h;n===null?h=d.decode(Buffer.from(m)):(u??=`text/plain`,f(u)||(u=``),h=new File([m],n,{type:u})),s(o.is.USVString(t)),s(typeof h==`string`&&o.is.USVString(h)||o.is.File(h)),i.push(a(t,h,n))}}function h(e,t){e[t.position]===59&&t.position++,v(e=>e===32||e===9,e,t);let n=v(e=>w(e)&&e!==61&&e!==42,e,t);if(n.length===0)return null;let r=n.toString(`ascii`).toLowerCase(),i=e[t.position]===42;if(i&&t.position++,e[t.position]!==61)return null;t.position++,v(e=>e===32||e===9,e,t);let a;if(i){let n=v(e=>e!==32&&e!==13&&e!==10&&e!==59,e,t);if(n[0]!==117&&n[0]!==85||n[1]!==116&&n[1]!==84||n[2]!==102&&n[2]!==70||n[3]!==45||n[4]!==56)throw x(`unknown encoding, expected utf-8''`);a=decodeURIComponent(u.decode(n.subarray(7)))}else if(e[t.position]===34){t.position++;let n=v(e=>e!==10&&e!==13&&e!==34,e,t);if(e[t.position]!==34)throw x(`Closing quote not found`);t.position++,a=u.decode(n).replace(/%0A/gi,` +`).replace(/%0D/gi,`\r`).replace(/%22/g,`"`)}else{let n=v(e=>w(e)&&e!==59,e,t);a=u.decode(n)}return{name:r,value:a,extended:i}}function g(e,t){let n=null,a=null,o=null,s=null;for(;;){if(e[t.position]===13&&e[t.position+1]===10){if(n===null)throw x(`header name is null`);return{name:n,filename:a,contentType:o,encoding:s}}let l=v(e=>e!==10&&e!==13&&e!==58,e,t);if(l=y(l,!0,!0,e=>e===9||e===32),!i.test(l.toString()))throw x(`header name does not match the field-name token production`);if(e[t.position]!==58)throw x(`expected :`);switch(t.position++,v(e=>e===32||e===9,e,t),r(l)){case`content-disposition`:{n=a=null;let r=!1;if(v(e=>w(e),e,t).toString(`ascii`).toLowerCase()!==`form-data`)throw x(`expected form-data for content-disposition header`);for(;t.positione!==10&&e!==13,e,t);n=y(n,!1,!0,e=>e===9||e===32),o=c(n);break}case`content-transfer-encoding`:{let n=v(e=>e!==10&&e!==13,e,t);n=y(n,!1,!0,e=>e===9||e===32),s=c(n);break}default:v(e=>e!==10&&e!==13,e,t)}if(e[t.position]!==13||e[t.position+1]!==10)throw x(`expected CRLF`);t.position+=2}}function v(e,t,n){let r=n.position;for(;r0&&r(e[a]);)a--;return i===0&&a===e.length-1?e:e.subarray(i,a+1)}function b(e,t,n){if(e.length{let r=Si(),{readableStreamClose:i,fullyReadBody:a,extractMimeType:o}=zi(),{FormData:s,setFormDataState:c,getFormDataBoundary:l}=Vi(),{webidl:u}=Ri(),d=t(`node:assert`),{isErrored:f,isDisturbed:p}=t(`node:stream`),{isUint8Array:m}=t(`node:util/types`),{serializeAMimeType:h}=Li(),{multipartFormDataParser:g}=Hi(),{parseJSONFromBytes:v}=Ii(),{utf8DecodeBytes:y}=Fi(),{ReadableStreamTee:b}=t(`node:stream/web`),x=new TextEncoder;function S(){}let C=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!p(t)&&!f(t)&&t.cancel(`Response object has been garbage collected`).catch(S)});function w(e,t=!1){let n=null,a=null;n=u.is.ReadableStream(e)?e:u.is.Blob(e)?e.stream():new ReadableStream({pull(){},start(e){a=e},cancel(){},type:`bytes`}),d(u.is.ReadableStream(n));let o=null,s=null,c=null,p=null;if(typeof e==`string`)s=e,p=`text/plain;charset=UTF-8`;else if(u.is.URLSearchParams(e))s=e.toString(),p=`application/x-www-form-urlencoded;charset=UTF-8`;else if(u.is.BufferSource(e))s=u.util.getCopyOfBytesHeldByBufferSource(e);else if(u.is.FormData(e)){let t=l(e),n=`--${t}\r\nContent-Disposition: form-data`,r=e=>e.replace(/\n/g,`%0A`).replace(/\r/g,`%0D`).replace(/"/g,`%22`),i=e=>e.replace(/\r?\n|\r/g,`\r `),a=[],u=new Uint8Array([13,10]) /*! formdata-polyfill. MIT License. Jimmy Wärting */ ;c=0;let d=!1;for(let[t,o]of e)if(typeof o==`string`){let e=x.encode(n+`; name="${r(i(t))}"\r\n\r\n${i(o)}\r\n`);a.push(e),c+=e.byteLength}else{let e=x.encode(`${n}; name="${r(i(t))}"`+(o.name?`; filename="${r(o.name)}"`:``)+`\r -Content-Type: ${o.type||`application/octet-stream`}\r\n\r\n`);a.push(e,o,u),typeof o.size==`number`?c+=e.byteLength+o.size+u.byteLength:d=!0}let f=x.encode(`--${t}--\r\n`);a.push(f),c+=f.byteLength,d&&(c=null),s=e,o=async function*(){for(let e of a)e.stream?yield*e.stream():yield e},p=`multipart/form-data; boundary=${t}`}else if(u.is.Blob(e))s=e,c=e.size,e.type&&(p=e.type);else if(typeof e[Symbol.asyncIterator]==`function`){if(t)throw TypeError(`keepalive`);if(r.isDisturbed(e)||e.locked)throw TypeError(`Response body object should not be disturbed or locked`);n=u.is.ReadableStream(e)?e:ReadableStream.from(e).pipeThrough(new TransformStream({transform(e,t){let n=m(e)?e:Buffer.from(e);n.byteLength&&t.enqueue(n)}}))}return(typeof s==`string`||m(s))&&(o=()=>(c=typeof s==`string`?Buffer.byteLength(s):s.length,s)),o!=null&&(async()=>{let e=o(),t=e?.[Symbol.asyncIterator]?.();if(t)for await(let e of t){if(f(n))break;e.length&&a.enqueue(new Uint8Array(e))}else e?.length&&!f(n)&&a.enqueue(typeof e==`string`?x.encode(e):new Uint8Array(e));queueMicrotask(()=>i(a))})(),[{stream:n,source:s,length:c},p]}function T(e,t=!1){return u.is.ReadableStream(e)&&(d(!r.isDisturbed(e),`The body has already been consumed.`),d(!e.locked,`The stream is locked.`)),w(e,t)}function E(e){let{0:t,1:n}=b?.(e.stream,!0)??e.stream.tee();return e.stream=t,{stream:n,length:e.length,source:e.source}}function D(e,t){return{blob(){return k(this,e=>{let n=j(t(this));return n===null?n=``:n&&=h(n),new Blob([e],{type:n})},e,t)},arrayBuffer(){return k(this,e=>new Uint8Array(e).buffer,e,t)},text(){return k(this,y,e,t)},json(){return k(this,v,e,t)},formData(){return k(this,e=>{let n=j(t(this));if(n!==null)switch(n.essence){case`multipart/form-data`:{let t=g(e,n),r=new s;return c(r,t),r}case`application/x-www-form-urlencoded`:{let t=new URLSearchParams(e.toString()),n=new s;for(let[e,r]of t)n.append(e,r);return n}}throw TypeError(`Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".`)},e,t)},bytes(){return k(this,e=>new Uint8Array(e),e,t)},textStream(){let e=t(this);if(A(e))throw TypeError(`Body is unusable: Body has already been read`);if(e.body==null){let e,t=new ReadableStream({start:t=>{e=t},pull:()=>Promise.resolve(),cancel:()=>Promise.resolve()},{size:()=>1});return e.close(),t}let n=e.body.stream,r=new TextDecoderStream(`UTF-8`);return n.pipeThrough(r)}}}function O(e,t,n){Object.assign(e.prototype,D(n,t))}function k(e,t,n,r){try{u.brandCheck(e,n)}catch(e){return Promise.reject(e)}if(e=r(e),A(e))return Promise.reject(/* @__PURE__ */ TypeError(`Body is unusable: Body has already been read`));let i=Promise.withResolvers(),o=i.reject,s=e=>{try{i.resolve(t(e))}catch(e){o(e)}};return e.body==null?(s(Buffer.allocUnsafe(0)),i.promise):(a(e.body,s,o),i.promise)}function A(e){let t=e.body;return t!=null&&(t.stream.locked||r.isDisturbed(t.stream))}function j(e){let t=e.headersList,n=o(t);return n===`failure`?null:n}n.exports={extractBody:w,safelyExtractBody:T,cloneBody:E,mixinBody:O,streamRegistry:C,bodyUnusable:A}})),Ui=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),i=xi(),{channels:a}=Ci(),o=_i(),{RequestContentLengthMismatchError:s,ResponseContentLengthMismatchError:c,RequestAbortedError:l,InvalidArgumentError:u,HeadersTimeoutError:d,HeadersOverflowError:f,SocketError:p,InformationalError:m,BodyTimeoutError:h,HTTPParserError:g,ResponseExceededMaxSizeError:v}=vi(),{kUrl:y,kReset:b,kClient:x,kParser:S,kBlocking:C,kRunning:w,kPending:T,kSize:E,kWriting:D,kQueue:O,kNoRef:k,kKeepAliveDefaultTimeout:A,kHostHeader:j,kPendingIdx:M,kRunningIdx:N,kError:P,kPipelining:F,kSocket:I,kKeepAliveTimeoutValue:ee,kMaxHeadersSize:L,kKeepAliveMaxTimeout:R,kKeepAliveTimeoutThreshold:te,kHeadersTimeout:ne,kBodyTimeout:re,kStrictContentLength:ie,kMaxRequests:z,kCounter:ae,kMaxResponseSize:oe,kOnError:se,kResume:ce,kHTTPContext:le,kClosed:ue}=gi(),de=ki(),fe=Buffer.alloc(0),pe=Buffer[Symbol.species],me=i.removeAllListeners,he=Symbol(`kIdleSocketValidation`),ge=Symbol(`kIdleSocketValidationTimeout`),_e=Symbol(`kSocketUsed`),ve=Symbol(`kTypeOfService`),ye;function be(){let e=process.env.JEST_WORKER_ID?Ai():void 0,t,n=!0;if(process.arch===`ppc64`){let[e,t]=process.versions.node.split(`.`).map(e=>parseInt(e,10));(e<24||e===24&&t<12)&&(n=!1)}if(process.env.UNDICI_NO_WASM_SIMD===`1`?n=!1:process.env.UNDICI_NO_WASM_SIMD===`0`&&(n=!0),n)try{t=new WebAssembly.Module(ji())}catch{}return t||=new WebAssembly.Module(e||Ai()),new WebAssembly.Instance(t,{env:{wasm_on_url:(e,t,n)=>0,wasm_on_status:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onStatus(new pe(Ce.buffer,i,n))},wasm_on_message_begin:e=>(r(Se.ptr===e),Se.onMessageBegin()),wasm_on_header_field:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onHeaderField(new pe(Ce.buffer,i,n))},wasm_on_header_value:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onHeaderValue(new pe(Ce.buffer,i,n))},wasm_on_headers_complete:(e,t,n,i)=>(r(Se.ptr===e),Se.onHeadersComplete(t,n===1,i===1)),wasm_on_body:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onBody(new pe(Ce.buffer,i,n))},wasm_on_message_complete:e=>(r(Se.ptr===e),Se.onMessageComplete())}})}let xe=null,Se=null,Ce=null,we=0,Te=null,Ee=null;var De=class{constructor(e,t,{exports:n}){this.llhttp=n,this.ptr=this.llhttp.llhttp_alloc(de.TYPE.RESPONSE),this.client=e,this.socket=t,this.timeout=null,this.timeoutWeakRef=new WeakRef(this),this.timeoutValue=null,this.timeoutType=null,this.statusCode=0,this.statusText=``,this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=e[L],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive=``,this.contentLength=-1,this.connectionKeepAlive=!1,this.maxResponseSize=e[oe]}setTimeout(e,t){e!==this.timeoutValue||t&1^this.timeoutType&1?(this.timeout&&=(o.clearTimeout(this.timeout),null),e&&(t&1?this.timeout=o.setFastTimeout(Oe,e,this.timeoutWeakRef):(this.timeout=setTimeout(Oe,e,this.timeoutWeakRef),this.timeout?.unref())),this.timeoutValue=e):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=t}resume(){!this.socket.destroyed&&this.paused&&(r(this.ptr!=null),r(Se===null),this.llhttp.llhttp_resume(this.ptr),r(this.timeoutType===5),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||fe),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let e=this.socket.read();if(e===null)break;this.execute(e)}}execute(e){r(Se===null),r(this.ptr!=null),r(!this.paused);let{socket:t,llhttp:n}=this;e.length>we&&(Te&&n.free(Te),we=Math.ceil(e.length/4096)*4096,Te=n.malloc(we)),(Ee===null||Ee.buffer!==n.memory.buffer||Ee.byteOffset!==Te||Ee.byteLength!==we)&&(Ee=new Uint8Array(n.memory.buffer,Te,we)),Ee.set(e);try{let r;try{Ce=e,Se=this,r=n.llhttp_execute(this.ptr,Te,e.length)}finally{Se=null,Ce=null}if(r!==de.ERROR.OK){let i=e.subarray(n.llhttp_get_error_pos(this.ptr)-Te);if(r===de.ERROR.PAUSED_UPGRADE)this.onUpgrade(i);else if(r===de.ERROR.PAUSED)this.paused=!0,t.unshift(i);else throw this.createError(r,i)}}catch(e){i.destroy(t,e)}}finish(){r(Se===null),r(this.ptr!=null);let{llhttp:e}=this;if(this.paused){let t;do e.llhttp_resume(this.ptr),this.paused=!1,t=this.socket.read()||fe,this.execute(t);while(this.paused&&t.length>0);this.paused&&=(e.llhttp_resume(this.ptr),!1)}let t;try{Se=this,t=e.llhttp_finish(this.ptr)}finally{Se=null}return t===de.ERROR.OK?null:t===de.ERROR.PAUSED||t===de.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(t,fe)}createError(e,t){let{llhttp:n,contentLength:r,bytesRead:i}=this;if(r!==-1&&i!==r)return new c;let a=n.llhttp_get_error_reason(this.ptr),o=``;if(a){let e=new Uint8Array(n.memory.buffer,a).indexOf(0);o=`Response does not match the HTTP/1.1 protocol (`+Buffer.from(n.memory.buffer,a,e).toString()+`)`}return new g(o,de.ERROR[e],t)}destroy(){r(Se===null),r(this.ptr!=null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&o.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(e){return this.statusText=e.toString(),0}onMessageBegin(){let{socket:e,client:t}=this;if(e.destroyed)return-1;if(t[w]===0)return i.destroy(e,new p(`bad response`,i.getSocketInfo(e))),-1;let n=t[O][t[N]];return n?(n.onResponseStarted(),0):-1}onHeaderField(e){let t=this.headers.length;return t&1?this.headers[t-1]=Buffer.concat([this.headers[t-1],e]):this.headers.push(e),this.trackHeader(e.length),0}onHeaderValue(e){let t=this.headers.length;(t&1)==1?(this.headers.push(e),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],e]);let n=this.headers[t-2];if(n.length===10){let r=i.bufferToLowerCasedHeaderName(n);r===`keep-alive`?this.keepAlive+=e.toString():r===`connection`&&(this.connectionKeepAlive=this.headers[t-1].length===10&&i.bufferToLowerCasedHeaderName(this.headers[t-1])===`keep-alive`)}else if(n.length===14&&i.bufferToLowerCasedHeaderName(n)===`content-length`){this.contentLength===-1&&(this.contentLength=0);for(let t=0;t=this.headersMaxSize&&i.destroy(this.socket,new f)}onUpgrade(e){let{upgrade:t,client:n,socket:a,headers:o,statusCode:s,statusText:c}=this;r(t),r(n[I]===a),r(!a.destroyed),r(!this.paused),r(!(o.length&1));let l=n[O][n[N]];r(l),r(l.upgrade||l.method===`CONNECT`),this.statusCode=0,this.statusText=``,this.shouldKeepAlive=!1,this.headers=[],this.headersSize=0,a.unshift(e),a[S].destroy(),a[S]=null,a[x]=null,a[P]=null,me(a),n[I]=null,n[le]=null,n[O][n[N]++]=null,n.emit(`disconnect`,n[y],[n],new m(`upgrade`));try{l.onRequestUpgrade(s,o,a,c)}catch(e){i.errorRequest(n,l,e),i.destroy(a,e)}n[ce]()}onHeadersComplete(e,t,n){let{client:a,socket:o,headers:s,statusText:c}=this;if(o.destroyed)return-1;if(a[w]===0)return i.destroy(o,new p(`bad response`,i.getSocketInfo(o))),-1;let l=a[O][a[N]];if(!l)return-1;if(r(!this.upgrade),r(this.statusCode<200),e===100)return i.destroy(o,new p(`bad response`,i.getSocketInfo(o))),-1;if(t&&!l.upgrade)return i.destroy(o,new p(`bad upgrade`,i.getSocketInfo(o))),-1;if(r(this.timeoutType===3),this.statusCode=e,this.shouldKeepAlive=n||l.method===`HEAD`&&!o[b]&&this.connectionKeepAlive,this.statusCode>=200){let e=l.bodyTimeout==null?a[re]:l.bodyTimeout;this.setTimeout(e,5)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(l.method===`CONNECT`||t)return r(a[w]===1),this.upgrade=!0,2;if(r(!(this.headers.length&1)),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&a[F]){let e=this.keepAlive?i.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){let t=Math.min(e-a[te],a[R]);t<=0?o[b]=!0:a[ee]=t}else a[ee]=a[A]}else o[b]=!0;let u=l.onResponseStart(e,s,this.resume,c)===!1;return l.aborted?-1:l.method===`HEAD`||e<200?1:(o[C]&&(o[C]=!1,a[ce]()),u?de.ERROR.PAUSED:0)}onBody(e){let{client:t,socket:n,statusCode:a,maxResponseSize:o}=this;if(n.destroyed)return-1;let s=t[O][t[N]];return r(s),r(this.timeoutType===5),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),r(a>=200),o>-1&&this.bytesRead+e.length>o?(i.destroy(n,new v),-1):(this.bytesRead+=e.length,s.onResponseData(e)===!1?de.ERROR.PAUSED:0)}onMessageComplete(){let{client:e,socket:t,statusCode:n,upgrade:a,headers:o,contentLength:s,bytesRead:l,shouldKeepAlive:u}=this;if(t.destroyed&&(!n||u))return-1;if(a)return 0;r(n>=100),r(!(this.headers.length&1));let d=e[O][e[N]];return r(d),this.statusCode=0,this.statusText=``,this.bytesRead=0,this.contentLength=-1,this.keepAlive=``,this.connectionKeepAlive=!1,this.headers=[],this.headersSize=0,n<200?0:d.method!==`HEAD`&&s!==-1&&l!==s?(i.destroy(t,new c),-1):(d.onResponseEnd(o),e[O][e[N]++]=null,t[_e]=e[T]===0,t[D]?(r(e[w]===0),i.destroy(t,new m(`reset`)),de.ERROR.PAUSED):!u||t[b]&&e[w]===0?(i.destroy(t,new m(`reset`)),de.ERROR.PAUSED):(e[F]==null||e[F]===1?setImmediate(e[ce]):e[ce](),0))}};function Oe(e){let t=e.deref();if(!t)return;let{socket:n,timeoutType:a,client:o,paused:s}=t;a===3?(!n[D]||n.writableNeedDrain||o[w]>1)&&(r(!s,`cannot be paused while waiting for headers`),i.destroy(n,new d)):a===5?s||i.destroy(n,new h):a===8&&(r(o[w]===0&&o[ee]),i.destroy(n,new m(`socket idle timeout`)))}function ke(e,t){if(e[I]=t,xe||=be(),t.errored)throw t.errored;if(t.destroyed)throw new p(`destroyed`);return t[k]=!1,t[D]=!1,t[b]=!1,t[C]=!1,t[he]=0,t[ge]=null,t[_e]=!1,t[S]=new De(e,t,xe),i.addListener(t,`error`,Ae),i.addListener(t,`readable`,je),i.addListener(t,`end`,Me),i.addListener(t,`close`,Ne),t[ue]=!1,t.on(`close`,Pe),{version:`h1`,defaultPipelining:1,write(t){return Be(e,t)},resume(){Le(e)},destroy(e,n){t[ue]?queueMicrotask(n):(t.on(`close`,n),t.destroy(e))},get destroyed(){return t.destroyed},busy(n){return!!(t[D]||t[b]||t[C]||t[he]===1||n&&(e[w]>0&&!n.idempotent||e[w]>0&&(n.upgrade||n.method===`CONNECT`)||e[w]>0&&i.bodyLength(n.body)!==0&&(i.isStream(n.body)||i.isAsyncIterable(n.body)||i.isFormDataLike(n.body))))}}}function Ae(e){r(e.code!==`ERR_TLS_CERT_ALTNAME_INVALID`);let t=this[S];if(e.code===`ECONNRESET`&&t.statusCode&&!t.shouldKeepAlive){let e=t.finish();e&&(this[P]=e,this[x][se](e))}else this[P]=e,this[x][se](e)}function je(){this[S]?.readMore()}function Me(){let e=this[S];if(e.statusCode&&!e.shouldKeepAlive){let t=e.finish();t&&i.destroy(this,t)}else i.destroy(this,new p(`other side closed`,i.getSocketInfo(this)))}function Ne(){let e=this[S];Fe(this),e&&(!this[P]&&e.statusCode&&!e.shouldKeepAlive&&(this[P]=e.finish()||this[P]),this[S].destroy(),this[S]=null);let t=this[P]||new p(`closed`,i.getSocketInfo(this)),n=this[x];if(n[I]=null,n[le]=null,n.destroyed){r(n[T]===0);let e=n[O].splice(n[N]);for(let r=0;r0&&t.code!==`UND_ERR_INFO`){let e=n[O][n[N]];n[O][n[N]++]=null,i.errorRequest(n,e,t)}n[M]=n[N],r(n[w]===0),n.emit(`disconnect`,n[y],[n],t),n[ce]()}function Pe(){this[ue]=!0}function Fe(e){e[ge]&&(clearImmediate(e[ge]),e[ge]=null),e[he]=0}function Ie(e,t){t[he]=1,t[ge]=setImmediate(()=>{t[ge]=null,t[he]=2,e[I]===t&&!t.destroyed&&e[ce]()})}function Le(e){let t=e[I];if(t&&!t.destroyed){if(e[E]===0?!t[k]&&t.unref&&(t.unref(),t[k]=!0):t[k]&&t.ref&&(t.ref(),t[k]=!1),e[w]===0&&e[T]>0&&t[_e]){if(t[he]===0){Ie(e,t),t[S].readMore(),t.destroyed;return}if(t[he]===1){t[S].readMore(),t.destroyed;return}}if(e[w]===0&&(t[S].readMore(),t.destroyed))return;if(e[E]===0)t[S].timeoutType!==8&&t[S].setTimeout(e[ee],8);else if(e[w]>0&&t[S].statusCode<200&&t[S].timeoutType!==3){let n=e[O][e[N]],r=n.headersTimeout==null?e[ne]:n.headersTimeout;t[S].setTimeout(r,3)}}}function Re(e){return e!==`GET`&&e!==`HEAD`&&e!==`OPTIONS`&&e!==`TRACE`&&e!==`CONNECT`}function ze(e,t){if(typeof e.setTypeOfService!=`function`)return;let n=t.typeOfService;if(n!==void 0&&e[ve]!==n)try{e.setTypeOfService(n),e[ve]=n}catch{}}function Be(e,t){let{method:n,path:o,host:c,upgrade:d,blocking:f,reset:p}=t,{body:h,headers:g,contentLength:v}=t,y=n===`PUT`||n===`POST`||n===`PATCH`||n===`QUERY`||n===`PROPFIND`||n===`PROPPATCH`;if(i.isFormDataLike(h)){ye||=Hi().extractBody;let[e,n]=ye(h);t.contentType??g.push(`content-type`,n),h=e.stream,v=e.length}else if(i.isBlobLike(h)&&t.contentType==null){let n=h.type;if(n){let r=`${n}`;if(!i.isValidHeaderValue(r))return i.errorRequest(e,t,new u(`invalid content-type header`)),!1;g.push(`content-type`,r)}}h&&typeof h.read==`function`&&h.read(0);let x=i.bodyLength(h);if(v=x??v,v===null&&(v=t.contentLength),v===0&&!y&&(v=null),Re(n)&&v>0&&t.contentLength!==null&&t.contentLength!==v){if(e[ie])return i.errorRequest(e,t,new s),!1;process.emitWarning(new s)}let S=e[I];Fe(S);let w=n=>{t.aborted||t.completed||(i.errorRequest(e,t,n||new l),i.destroy(h),i.destroy(S,new m(`aborted`)))};try{t.onRequestStart(w,null)}catch(n){i.errorRequest(e,t,n)}if(t.aborted)return!1;n===`HEAD`&&(S[b]=!0),(d||n===`CONNECT`)&&(S[b]=!0),p!=null&&(S[b]=p),e[z]&&++S[ae]>=e[z]&&(S[b]=!0),f&&(S[C]=!0),ze(S,t);let T=`${n} ${o} HTTP/1.1\r\n`;if(T+=typeof c==`string`?`host: ${c}\r\n`:e[j],d?T+=`connection: upgrade\r\nupgrade: ${d}\r\n`:e[F]&&!S[b]?T+=`connection: keep-alive\r +Content-Type: ${o.type||`application/octet-stream`}\r\n\r\n`);a.push(e,o,u),typeof o.size==`number`?c+=e.byteLength+o.size+u.byteLength:d=!0}let f=x.encode(`--${t}--\r\n`);a.push(f),c+=f.byteLength,d&&(c=null),s=e,o=async function*(){for(let e of a)e.stream?yield*e.stream():yield e},p=`multipart/form-data; boundary=${t}`}else if(u.is.Blob(e))s=e,c=e.size,e.type&&(p=e.type);else if(typeof e[Symbol.asyncIterator]==`function`){if(t)throw TypeError(`keepalive`);if(r.isDisturbed(e)||e.locked)throw TypeError(`Response body object should not be disturbed or locked`);n=u.is.ReadableStream(e)?e:ReadableStream.from(e).pipeThrough(new TransformStream({transform(e,t){let n=m(e)?e:Buffer.from(e);n.byteLength&&t.enqueue(n)}}))}return(typeof s==`string`||m(s))&&(o=()=>(c=typeof s==`string`?Buffer.byteLength(s):s.length,s)),o!=null&&(async()=>{let e=o(),t=e?.[Symbol.asyncIterator]?.();if(t)for await(let e of t){if(f(n))break;e.length&&a.enqueue(new Uint8Array(e))}else e?.length&&!f(n)&&a.enqueue(typeof e==`string`?x.encode(e):new Uint8Array(e));queueMicrotask(()=>i(a))})(),[{stream:n,source:s,length:c},p]}function T(e,t=!1){return u.is.ReadableStream(e)&&(d(!r.isDisturbed(e),`The body has already been consumed.`),d(!e.locked,`The stream is locked.`)),w(e,t)}function E(e){let{0:t,1:n}=b?.(e.stream,!0)??e.stream.tee();return e.stream=t,{stream:n,length:e.length,source:e.source}}function D(e,t){return{blob(){return k(this,e=>{let n=j(t(this));return n===null?n=``:n&&=h(n),new Blob([e],{type:n})},e,t)},arrayBuffer(){return k(this,e=>new Uint8Array(e).buffer,e,t)},text(){return k(this,y,e,t)},json(){return k(this,v,e,t)},formData(){return k(this,e=>{let n=j(t(this));if(n!==null)switch(n.essence){case`multipart/form-data`:{let t=g(e,n),r=new s;return c(r,t),r}case`application/x-www-form-urlencoded`:{let t=new URLSearchParams(e.toString()),n=new s;for(let[e,r]of t)n.append(e,r);return n}}throw TypeError(`Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".`)},e,t)},bytes(){return k(this,e=>new Uint8Array(e),e,t)},textStream(){let e=t(this);if(A(e))throw TypeError(`Body is unusable: Body has already been read`);if(e.body==null){let e,t=new ReadableStream({start:t=>{e=t},pull:()=>Promise.resolve(),cancel:()=>Promise.resolve()},{size:()=>1});return e.close(),t}let n=e.body.stream,r=new TextDecoderStream(`UTF-8`);return n.pipeThrough(r)}}}function O(e,t,n){Object.assign(e.prototype,D(n,t))}function k(e,t,n,r){try{u.brandCheck(e,n)}catch(e){return Promise.reject(e)}if(e=r(e),A(e))return Promise.reject(/* @__PURE__ */ TypeError(`Body is unusable: Body has already been read`));let i=Promise.withResolvers(),o=i.reject,s=e=>{try{i.resolve(t(e))}catch(e){o(e)}};return e.body==null?(s(Buffer.allocUnsafe(0)),i.promise):(a(e.body,s,o),i.promise)}function A(e){let t=e.body;return t!=null&&(t.stream.locked||r.isDisturbed(t.stream))}function j(e){let t=e.headersList,n=o(t);return n===`failure`?null:n}n.exports={extractBody:w,safelyExtractBody:T,cloneBody:E,mixinBody:O,streamRegistry:C,bodyUnusable:A}})),Wi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),i=Si(),{channels:a}=wi(),o=vi(),{RequestContentLengthMismatchError:s,ResponseContentLengthMismatchError:c,RequestAbortedError:l,InvalidArgumentError:u,HeadersTimeoutError:d,HeadersOverflowError:f,SocketError:p,InformationalError:m,BodyTimeoutError:h,HTTPParserError:g,ResponseExceededMaxSizeError:v}=yi(),{kUrl:y,kReset:b,kClient:x,kParser:S,kBlocking:C,kRunning:w,kPending:T,kSize:E,kWriting:D,kQueue:O,kNoRef:k,kKeepAliveDefaultTimeout:A,kHostHeader:j,kPendingIdx:M,kRunningIdx:N,kError:P,kPipelining:F,kSocket:I,kKeepAliveTimeoutValue:ee,kMaxHeadersSize:L,kKeepAliveMaxTimeout:R,kKeepAliveTimeoutThreshold:te,kHeadersTimeout:ne,kBodyTimeout:re,kStrictContentLength:ie,kMaxRequests:z,kCounter:ae,kMaxResponseSize:oe,kOnError:se,kResume:ce,kHTTPContext:le,kClosed:ue}=_i(),de=Ai(),fe=Buffer.alloc(0),pe=Buffer[Symbol.species],me=i.removeAllListeners,he=Symbol(`kIdleSocketValidation`),ge=Symbol(`kIdleSocketValidationTimeout`),_e=Symbol(`kSocketUsed`),ve=Symbol(`kTypeOfService`),ye;function be(){let e=process.env.JEST_WORKER_ID?ji():void 0,t,n=!0;if(process.arch===`ppc64`){let[e,t]=process.versions.node.split(`.`).map(e=>parseInt(e,10));(e<24||e===24&&t<12)&&(n=!1)}if(process.env.UNDICI_NO_WASM_SIMD===`1`?n=!1:process.env.UNDICI_NO_WASM_SIMD===`0`&&(n=!0),n)try{t=new WebAssembly.Module(Mi())}catch{}return t||=new WebAssembly.Module(e||ji()),new WebAssembly.Instance(t,{env:{wasm_on_url:(e,t,n)=>0,wasm_on_status:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onStatus(new pe(Ce.buffer,i,n))},wasm_on_message_begin:e=>(r(Se.ptr===e),Se.onMessageBegin()),wasm_on_header_field:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onHeaderField(new pe(Ce.buffer,i,n))},wasm_on_header_value:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onHeaderValue(new pe(Ce.buffer,i,n))},wasm_on_headers_complete:(e,t,n,i)=>(r(Se.ptr===e),Se.onHeadersComplete(t,n===1,i===1)),wasm_on_body:(e,t,n)=>{r(Se.ptr===e);let i=t-Te+Ce.byteOffset;return Se.onBody(new pe(Ce.buffer,i,n))},wasm_on_message_complete:e=>(r(Se.ptr===e),Se.onMessageComplete())}})}let xe=null,Se=null,Ce=null,we=0,Te=null,Ee=null;var De=class{constructor(e,t,{exports:n}){this.llhttp=n,this.ptr=this.llhttp.llhttp_alloc(de.TYPE.RESPONSE),this.client=e,this.socket=t,this.timeout=null,this.timeoutWeakRef=new WeakRef(this),this.timeoutValue=null,this.timeoutType=null,this.statusCode=0,this.statusText=``,this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=e[L],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive=``,this.contentLength=-1,this.connectionKeepAlive=!1,this.maxResponseSize=e[oe]}setTimeout(e,t){e!==this.timeoutValue||t&1^this.timeoutType&1?(this.timeout&&=(o.clearTimeout(this.timeout),null),e&&(t&1?this.timeout=o.setFastTimeout(Oe,e,this.timeoutWeakRef):(this.timeout=setTimeout(Oe,e,this.timeoutWeakRef),this.timeout?.unref())),this.timeoutValue=e):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=t}resume(){!this.socket.destroyed&&this.paused&&(r(this.ptr!=null),r(Se===null),this.llhttp.llhttp_resume(this.ptr),r(this.timeoutType===5),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||fe),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let e=this.socket.read();if(e===null)break;this.execute(e)}}execute(e){r(Se===null),r(this.ptr!=null),r(!this.paused);let{socket:t,llhttp:n}=this;e.length>we&&(Te&&n.free(Te),we=Math.ceil(e.length/4096)*4096,Te=n.malloc(we)),(Ee===null||Ee.buffer!==n.memory.buffer||Ee.byteOffset!==Te||Ee.byteLength!==we)&&(Ee=new Uint8Array(n.memory.buffer,Te,we)),Ee.set(e);try{let r;try{Ce=e,Se=this,r=n.llhttp_execute(this.ptr,Te,e.length)}finally{Se=null,Ce=null}if(r!==de.ERROR.OK){let i=e.subarray(n.llhttp_get_error_pos(this.ptr)-Te);if(r===de.ERROR.PAUSED_UPGRADE)this.onUpgrade(i);else if(r===de.ERROR.PAUSED)this.paused=!0,t.unshift(i);else throw this.createError(r,i)}}catch(e){i.destroy(t,e)}}finish(){r(Se===null),r(this.ptr!=null);let{llhttp:e}=this;if(this.paused){let t;do e.llhttp_resume(this.ptr),this.paused=!1,t=this.socket.read()||fe,this.execute(t);while(this.paused&&t.length>0);this.paused&&=(e.llhttp_resume(this.ptr),!1)}let t;try{Se=this,t=e.llhttp_finish(this.ptr)}finally{Se=null}return t===de.ERROR.OK?null:t===de.ERROR.PAUSED||t===de.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(t,fe)}createError(e,t){let{llhttp:n,contentLength:r,bytesRead:i}=this;if(r!==-1&&i!==r)return new c;let a=n.llhttp_get_error_reason(this.ptr),o=``;if(a){let e=new Uint8Array(n.memory.buffer,a).indexOf(0);o=`Response does not match the HTTP/1.1 protocol (`+Buffer.from(n.memory.buffer,a,e).toString()+`)`}return new g(o,de.ERROR[e],t)}destroy(){r(Se===null),r(this.ptr!=null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&o.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(e){return this.statusText=e.toString(),0}onMessageBegin(){let{socket:e,client:t}=this;if(e.destroyed)return-1;if(t[w]===0)return i.destroy(e,new p(`bad response`,i.getSocketInfo(e))),-1;let n=t[O][t[N]];return n?(n.onResponseStarted(),0):-1}onHeaderField(e){let t=this.headers.length;return t&1?this.headers[t-1]=Buffer.concat([this.headers[t-1],e]):this.headers.push(e),this.trackHeader(e.length),0}onHeaderValue(e){let t=this.headers.length;(t&1)==1?(this.headers.push(e),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],e]);let n=this.headers[t-2];if(n.length===10){let r=i.bufferToLowerCasedHeaderName(n);r===`keep-alive`?this.keepAlive+=e.toString():r===`connection`&&(this.connectionKeepAlive=this.headers[t-1].length===10&&i.bufferToLowerCasedHeaderName(this.headers[t-1])===`keep-alive`)}else if(n.length===14&&i.bufferToLowerCasedHeaderName(n)===`content-length`){this.contentLength===-1&&(this.contentLength=0);for(let t=0;t=this.headersMaxSize&&i.destroy(this.socket,new f)}onUpgrade(e){let{upgrade:t,client:n,socket:a,headers:o,statusCode:s,statusText:c}=this;r(t),r(n[I]===a),r(!a.destroyed),r(!this.paused),r(!(o.length&1));let l=n[O][n[N]];r(l),r(l.upgrade||l.method===`CONNECT`),this.statusCode=0,this.statusText=``,this.shouldKeepAlive=!1,this.headers=[],this.headersSize=0,a.unshift(e),a[S].destroy(),a[S]=null,a[x]=null,a[P]=null,me(a),n[I]=null,n[le]=null,n[O][n[N]++]=null,n.emit(`disconnect`,n[y],[n],new m(`upgrade`));try{l.onRequestUpgrade(s,o,a,c)}catch(e){i.errorRequest(n,l,e),i.destroy(a,e)}n[ce]()}onHeadersComplete(e,t,n){let{client:a,socket:o,headers:s,statusText:c}=this;if(o.destroyed)return-1;if(a[w]===0)return i.destroy(o,new p(`bad response`,i.getSocketInfo(o))),-1;let l=a[O][a[N]];if(!l)return-1;if(r(!this.upgrade),r(this.statusCode<200),e===100)return i.destroy(o,new p(`bad response`,i.getSocketInfo(o))),-1;if(t&&!l.upgrade)return i.destroy(o,new p(`bad upgrade`,i.getSocketInfo(o))),-1;if(r(this.timeoutType===3),this.statusCode=e,this.shouldKeepAlive=n||l.method===`HEAD`&&!o[b]&&this.connectionKeepAlive,this.statusCode>=200){let e=l.bodyTimeout==null?a[re]:l.bodyTimeout;this.setTimeout(e,5)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(l.method===`CONNECT`||t)return r(a[w]===1),this.upgrade=!0,2;if(r(!(this.headers.length&1)),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&a[F]){let e=this.keepAlive?i.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){let t=Math.min(e-a[te],a[R]);t<=0?o[b]=!0:a[ee]=t}else a[ee]=a[A]}else o[b]=!0;let u=l.onResponseStart(e,s,this.resume,c)===!1;return l.aborted?-1:l.method===`HEAD`||e<200?1:(o[C]&&(o[C]=!1,a[ce]()),u?de.ERROR.PAUSED:0)}onBody(e){let{client:t,socket:n,statusCode:a,maxResponseSize:o}=this;if(n.destroyed)return-1;let s=t[O][t[N]];return r(s),r(this.timeoutType===5),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),r(a>=200),o>-1&&this.bytesRead+e.length>o?(i.destroy(n,new v),-1):(this.bytesRead+=e.length,s.onResponseData(e)===!1?de.ERROR.PAUSED:0)}onMessageComplete(){let{client:e,socket:t,statusCode:n,upgrade:a,headers:o,contentLength:s,bytesRead:l,shouldKeepAlive:u}=this;if(t.destroyed&&(!n||u))return-1;if(a)return 0;r(n>=100),r(!(this.headers.length&1));let d=e[O][e[N]];return r(d),this.statusCode=0,this.statusText=``,this.bytesRead=0,this.contentLength=-1,this.keepAlive=``,this.connectionKeepAlive=!1,this.headers=[],this.headersSize=0,n<200?0:d.method!==`HEAD`&&s!==-1&&l!==s?(i.destroy(t,new c),-1):(d.onResponseEnd(o),e[O][e[N]++]=null,t[_e]=e[T]===0,t[D]?(r(e[w]===0),i.destroy(t,new m(`reset`)),de.ERROR.PAUSED):!u||t[b]&&e[w]===0?(i.destroy(t,new m(`reset`)),de.ERROR.PAUSED):(e[F]==null||e[F]===1?setImmediate(e[ce]):e[ce](),0))}};function Oe(e){let t=e.deref();if(!t)return;let{socket:n,timeoutType:a,client:o,paused:s}=t;a===3?(!n[D]||n.writableNeedDrain||o[w]>1)&&(r(!s,`cannot be paused while waiting for headers`),i.destroy(n,new d)):a===5?s||i.destroy(n,new h):a===8&&(r(o[w]===0&&o[ee]),i.destroy(n,new m(`socket idle timeout`)))}function ke(e,t){if(e[I]=t,xe||=be(),t.errored)throw t.errored;if(t.destroyed)throw new p(`destroyed`);return t[k]=!1,t[D]=!1,t[b]=!1,t[C]=!1,t[he]=0,t[ge]=null,t[_e]=!1,t[S]=new De(e,t,xe),i.addListener(t,`error`,Ae),i.addListener(t,`readable`,je),i.addListener(t,`end`,Me),i.addListener(t,`close`,Ne),t[ue]=!1,t.on(`close`,Pe),{version:`h1`,defaultPipelining:1,write(t){return Be(e,t)},resume(){Le(e)},destroy(e,n){t[ue]?queueMicrotask(n):(t.on(`close`,n),t.destroy(e))},get destroyed(){return t.destroyed},busy(n){return!!(t[D]||t[b]||t[C]||t[he]===1||n&&(e[w]>0&&!n.idempotent||e[w]>0&&(n.upgrade||n.method===`CONNECT`)||e[w]>0&&i.bodyLength(n.body)!==0&&(i.isStream(n.body)||i.isAsyncIterable(n.body)||i.isFormDataLike(n.body))))}}}function Ae(e){r(e.code!==`ERR_TLS_CERT_ALTNAME_INVALID`);let t=this[S];if(e.code===`ECONNRESET`&&t.statusCode&&!t.shouldKeepAlive){let e=t.finish();e&&(this[P]=e,this[x][se](e))}else this[P]=e,this[x][se](e)}function je(){this[S]?.readMore()}function Me(){let e=this[S];if(e.statusCode&&!e.shouldKeepAlive){let t=e.finish();t&&i.destroy(this,t)}else i.destroy(this,new p(`other side closed`,i.getSocketInfo(this)))}function Ne(){let e=this[S];Fe(this),e&&(!this[P]&&e.statusCode&&!e.shouldKeepAlive&&(this[P]=e.finish()||this[P]),this[S].destroy(),this[S]=null);let t=this[P]||new p(`closed`,i.getSocketInfo(this)),n=this[x];if(n[I]=null,n[le]=null,n.destroyed){r(n[T]===0);let e=n[O].splice(n[N]);for(let r=0;r0&&t.code!==`UND_ERR_INFO`){let e=n[O][n[N]];n[O][n[N]++]=null,i.errorRequest(n,e,t)}n[M]=n[N],r(n[w]===0),n.emit(`disconnect`,n[y],[n],t),n[ce]()}function Pe(){this[ue]=!0}function Fe(e){e[ge]&&(clearImmediate(e[ge]),e[ge]=null),e[he]=0}function Ie(e,t){t[he]=1,t[ge]=setImmediate(()=>{t[ge]=null,t[he]=2,e[I]===t&&!t.destroyed&&e[ce]()})}function Le(e){let t=e[I];if(t&&!t.destroyed){if(e[E]===0?!t[k]&&t.unref&&(t.unref(),t[k]=!0):t[k]&&t.ref&&(t.ref(),t[k]=!1),e[w]===0&&e[T]>0&&t[_e]){if(t[he]===0){Ie(e,t),t[S].readMore(),t.destroyed;return}if(t[he]===1){t[S].readMore(),t.destroyed;return}}if(e[w]===0&&(t[S].readMore(),t.destroyed))return;if(e[E]===0)t[S].timeoutType!==8&&t[S].setTimeout(e[ee],8);else if(e[w]>0&&t[S].statusCode<200&&t[S].timeoutType!==3){let n=e[O][e[N]],r=n.headersTimeout==null?e[ne]:n.headersTimeout;t[S].setTimeout(r,3)}}}function Re(e){return e!==`GET`&&e!==`HEAD`&&e!==`OPTIONS`&&e!==`TRACE`&&e!==`CONNECT`}function ze(e,t){if(typeof e.setTypeOfService!=`function`)return;let n=t.typeOfService;if(n!==void 0&&e[ve]!==n)try{e.setTypeOfService(n),e[ve]=n}catch{}}function Be(e,t){let{method:n,path:o,host:c,upgrade:d,blocking:f,reset:p}=t,{body:h,headers:g,contentLength:v}=t,y=n===`PUT`||n===`POST`||n===`PATCH`||n===`QUERY`||n===`PROPFIND`||n===`PROPPATCH`;if(i.isFormDataLike(h)){ye||=Ui().extractBody;let[e,n]=ye(h);t.contentType??g.push(`content-type`,n),h=e.stream,v=e.length}else if(i.isBlobLike(h)&&t.contentType==null){let n=h.type;if(n){let r=`${n}`;if(!i.isValidHeaderValue(r))return i.errorRequest(e,t,new u(`invalid content-type header`)),!1;g.push(`content-type`,r)}}h&&typeof h.read==`function`&&h.read(0);let x=i.bodyLength(h);if(v=x??v,v===null&&(v=t.contentLength),v===0&&!y&&(v=null),Re(n)&&v>0&&t.contentLength!==null&&t.contentLength!==v){if(e[ie])return i.errorRequest(e,t,new s),!1;process.emitWarning(new s)}let S=e[I];Fe(S);let w=n=>{t.aborted||t.completed||(i.errorRequest(e,t,n||new l),i.destroy(h),i.destroy(S,new m(`aborted`)))};try{t.onRequestStart(w,null)}catch(n){i.errorRequest(e,t,n)}if(t.aborted)return!1;n===`HEAD`&&(S[b]=!0),(d||n===`CONNECT`)&&(S[b]=!0),p!=null&&(S[b]=p),e[z]&&++S[ae]>=e[z]&&(S[b]=!0),f&&(S[C]=!0),ze(S,t);let T=`${n} ${o} HTTP/1.1\r\n`;if(T+=typeof c==`string`?`host: ${c}\r\n`:e[j],d?T+=`connection: upgrade\r\nupgrade: ${d}\r\n`:e[F]&&!S[b]?T+=`connection: keep-alive\r `:T+=`connection: close\r `,Array.isArray(g))for(let e=0;e{t.removeListener(`error`,g)}),!d){let e=new l;queueMicrotask(()=>g(e))}},g=function(e){if(!d){if(d=!0,r(o.destroyed||o[D]&&n[w]<=1),o.off(`drain`,m).off(`error`,g),t.removeListener(`data`,p).removeListener(`end`,g).removeListener(`close`,h),!e)try{f.end()}catch(t){e=t}f.destroy(e),e&&(e.code!==`UND_ERR_INFO`||e.message!==`reset`)?i.destroy(t,e):i.destroy(t)}};t.on(`data`,p).on(`end`,g).on(`error`,g).on(`close`,h),t.resume&&t.resume(),o.on(`drain`,m).on(`error`,g),t.errorEmitted??t.errored?setImmediate(g,t.errored):(t.endEmitted??t.readableEnded)&&setImmediate(g,null),(t.closeEmitted??t.closed)&&setImmediate(h)}function He(e,t,n,a,o,s,c,l){try{t?i.isBuffer(t)&&(r(s===t.byteLength,`buffer body must have content length`),o.cork(),o.write(`${c}content-length: ${s}\r\n\r\n`,`latin1`),o.write(t),o.uncork(),a.onBodySent(t),!l&&a.reset!==!1&&(o[b]=!0)):s===0?o.write(`${c}content-length: 0\r\n\r\n`,`latin1`):(r(s===null,`no body must not have content length`),o.write(`${c}\r\n`,`latin1`)),a.onRequestSent(),n[ce]()}catch(t){e(t)}}async function Ue(e,t,n,r,i,a,o,c){try{if(a!=null&&a!==t.size)throw new s;let e=Buffer.from(await t.arrayBuffer());i.cork(),i.write(`${o}content-length: ${a}\r\n\r\n`,`latin1`),i.write(e),i.uncork(),r.onBodySent(e),r.onRequestSent(),!c&&r.reset!==!1&&(i[b]=!0),n[ce]()}catch(t){e(t)}}async function We(e,t,n,i,a,o,s,c){r(o!==0||n[w]===0,`iterator body cannot be pipelined`);let l=null;function u(){if(l){let e=l;l=null,e()}}let d=()=>new Promise((e,t)=>{r(l===null),a[P]?t(a[P]):l=e});a.on(`close`,u).on(`drain`,u);let f=new Ge({abort:e,socket:a,request:i,contentLength:o,client:n,expectsPayload:c,header:s});try{for await(let e of t){if(a[P])throw a[P];f.write(e)||await d()}f.end()}catch(e){f.destroy(e)}finally{a.off(`close`,u).off(`drain`,u)}}var Ge=class{constructor({abort:e,socket:t,request:n,contentLength:r,client:i,expectsPayload:a,header:o}){this.socket=t,this.request=n,this.contentLength=r,this.client=i,this.bytesWritten=0,this.expectsPayload=a,this.header=o,this.abort=e,t[D]=!0}write(e){let{socket:t,request:n,contentLength:r,client:i,bytesWritten:a,expectsPayload:o,header:c}=this;if(t[P])throw t[P];if(t.destroyed)return!1;let l=e instanceof Uint8Array?e.byteLength:Buffer.byteLength(e);if(!l)return!0;if(r!==null&&a+l>r){if(i[ie])throw new s;process.emitWarning(new s)}t.cork(),a===0&&(!o&&n.reset!==!1&&(t[b]=!0),r===null?t.write(`${c}transfer-encoding: chunked\r\n`,`latin1`):t.write(`${c}content-length: ${r}\r\n\r\n`,`latin1`)),r===null&&t.write(`\r\n${l.toString(16)}\r\n`,`latin1`),this.bytesWritten+=l;let u=t.write(e);return t.uncork(),n.onBodySent(e),u||t[S].timeout&&t[S].timeoutType===3&&t[S].timeout.refresh&&t[S].timeout.refresh(),u}end(){let{socket:e,contentLength:t,client:n,bytesWritten:r,expectsPayload:i,header:a,request:o}=this;if(o.onRequestSent(),e[D]=!1,e[P])throw e[P];if(!e.destroyed){if(r===0?i?e.write(`${a}content-length: 0\r\n\r\n`,`latin1`):e.write(`${a}\r\n`,`latin1`):t===null&&e.write(`\r 0\r \r -`,`latin1`),t!==null&&r!==t){if(n[ie])throw new s;process.emitWarning(new s)}e[S].timeout&&e[S].timeoutType===3&&e[S].timeout.refresh&&e[S].timeout.refresh(),n[ce]()}}destroy(e){let{socket:t,client:n,abort:i}=this;t[D]=!1,e&&(r(n[w]<=1,`pipeline should only contain this request`),i(e))}};n.exports=ke})),Wi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{pipeline:i}=t(`node:stream`),a=xi(),{RequestContentLengthMismatchError:o,ResponseContentLengthMismatchError:s,RequestAbortedError:c,SocketError:l,InformationalError:u,InvalidArgumentError:d,HeadersTimeoutError:f,BodyTimeoutError:p,ResponseExceededMaxSizeError:m}=vi(),{kUrl:h,kReset:g,kClient:v,kRunning:y,kPending:b,kQueue:x,kPendingIdx:S,kRunningIdx:C,kError:w,kSocket:T,kStrictContentLength:E,kOnError:D,kMaxConcurrentStreams:O,kHTTP2Session:k,kHostAuthority:A,kResume:j,kSize:M,kHTTPContext:N,kClosed:P,kKeepAliveDefaultTimeout:F,kHeadersTimeout:I,kBodyTimeout:ee,kEnableConnectProtocol:L,kRemoteSettings:R,kHTTP2Stream:te,kHTTP2SessionState:ne,kHTTP2Options:re,kMaxResponseSize:ie}=gi(),{channels:z}=Ci(),ae=Symbol(`open streams`),oe=Symbol(`request stream id`),se=Symbol(`request stream`),ce=Symbol(`request stream cleanup`),le=Symbol(`request stream state`),ue=Symbol(`received goaway`),de=Symbol(`goaway replay attempts`),fe=Symbol(`refused stream retry`),pe,me;try{me=t(`node:http2`)}catch{me={constants:{}}}let{constants:{HTTP2_HEADER_AUTHORITY:he,HTTP2_HEADER_METHOD:ge,HTTP2_HEADER_PATH:_e,HTTP2_HEADER_SCHEME:ve,HTTP2_HEADER_CONTENT_LENGTH:ye,HTTP2_HEADER_EXPECT:be,HTTP2_HEADER_STATUS:xe,HTTP2_HEADER_PROTOCOL:Se,NGHTTP2_NO_ERROR:Ce,NGHTTP2_REFUSED_STREAM:we}}=me;function Te(e,t){return e[w]||(t===Ce?new u(`HTTP/2: "GOAWAY" frame received with code ${t}`):new l(`HTTP/2: "GOAWAY" frame received with code ${t}`,a.getSocketInfo(e[T])))}function Ee(e,t){let n=e[v],r=e[T];if(n[k]===e&&(n[T]=null,n[N]=null,n[k]=null),r!=null&&r[w]==null&&(r[w]=t),!e.closed&&!e.destroyed)try{e.destroy(t)}catch{}a.destroy(r,t)}function De(e,t){let n=Number.isInteger(t)?t:2**53-1;for(let t=e[C];tn))return t}return e[S]}function Oe(e){e[oe]=null,e[se]=null,e[ce]=null}function ke(e,t,n){let r=e[ce],i=e[se];Oe(e),r?.(i),e[oe]=t.id,e[se]=t,e[ce]=n}function Ae(e){let t=e[ce],n=e[se];Oe(e),t?.(n)}function je(e,t){e[x].splice(e[S]+1,0,t)}function Me(e,t,n=!1){let r=e[x],i=e[C];if(i=e[S]||(r.splice(a,1),e[S]--,n&&e[S]t,peerMaxConcurrentStreams:e[re].maxConcurrentStreams,settings:{enablePush:!1,...n==null?null:{initialWindowSize:n}}});return e[T]=t,i[ae]=0,i[v]=e,i[T]=t,i[ne]={idleTimeout:null,noStreamsTimeout:null,refed:!0,ping:{interval:e[re].pingInterval===0?null:setInterval(Ze,e[re].pingInterval,i).unref()}},i[ue]=!1,i[L]=!1,i[R]=!1,r&&a.addListener(i,`connect`,Ye.bind(i,r)),a.addListener(i,`error`,Qe),a.addListener(i,`frameError`,$e),a.addListener(i,`goaway`,et),a.addListener(i,`close`,tt),a.addListener(i,`remoteSettings`,Xe),Ve(i),e[k]=i,t[k]=i,a.addListener(t,`error`,rt),a.addListener(t,`end`,it),a.addListener(t,`close`,nt),t[P]=!1,t.on(`close`,at),{version:`h2`,defaultPipelining:1/0,write(t){return St(e,t)},resume(){He(e)},destroy(e,n){t[P]?queueMicrotask(n):t.destroy(e).on(`close`,n)},get destroyed(){return t.destroyed},busy(t){if(i[R]===!1&&e[y]>0||e[y]>=e[O])return!0;if(t!=null){if(e[y]>0){if((t.upgrade===`websocket`||t.method===`CONNECT`)&&i[R]===!1)return!0}else return(t.upgrade===`websocket`||t.method===`CONNECT`)&&i[R]===!1}return!1}}}function Be(e){let t=e[ne];t.refed===!1&&(t.refed=!0,e.ref())}function Ve(e){let t=e[ne];t.refed===!0&&(t.refed=!1,e.unref())}function He(e){let t=e[T],n=e[k];t?.destroyed===!1&&(n[ae]===0&&e[M]===0?Ve(n):Be(n),e[M]===0&&n[ae]===0?qe(n):Ke(n),e[O]===0&&e[y]===0&&e[b]>0?We(n):Ue(n))}function Ue(e){let t=e[ne];t?.noStreamsTimeout!=null&&(clearTimeout(t.noStreamsTimeout),t.noStreamsTimeout=null)}function We(e){let t=e[v],n=e[ne],r=t[I];r&&n.noStreamsTimeout==null&&(n.noStreamsTimeout=setTimeout(Ge,r,e).unref())}function Ge(e){let t=e[v],n=e[ne];if(n.noStreamsTimeout=null,t[k]!==e||t[O]!==0||t[y]!==0||t[b]===0)return;let r=new f(`HTTP/2: server did not accept a new stream within ${t[I]}`),i=t[x].splice(t[S]);for(let e=0;e{if(!(t.aborted||t.completed)){if(n||=new c,a.errorRequest(e,t,n),x.stream!=null){Ae(t);let i=x.stream;i.close(),i.destroyed||a.destroy(i),e[D](n),bt(x,r)}a.destroy(x.body,n)}};x.abort=S;let C=null;try{t.onRequestStart(S,null)}catch(n){a.errorRequest(e,t,n)}if(t.aborted)return!1;if(m||l===`CONNECT`)return Be(s),m===`websocket`?s[L]===!1?(a.errorRequest(e,t,new u(`HTTP/2: Extended CONNECT protocol not supported by server`)),Ve(s),!1):(b[ge]=`CONNECT`,b[Se]=`websocket`,b[_e]=f,v===`ws:`||v===`wss:`?b[ve]=v===`ws:`?`http`:`https`:b[ve]=v===`http:`?`http`:`https`,C=xt(e,t,s,S,b,{endStream:!1,signal:g}),C==null?(Ve(s),!1):(yt(C,x),!0)):(C=xt(e,t,s,S,b,{endStream:!1,signal:g}),C==null?(Ve(s),!1):(yt(C,x),!0));b[_e]=f,b[ve]=v===`http:`?`http`:`https`;let w=l===`PUT`||l===`POST`||l===`PATCH`||l===`QUERY`||l===`PROPFIND`||l===`PROPPATCH`,O=x.body;O&&typeof O.read==`function`&&O.read(0);let j=a.bodyLength(O);if(a.isFormDataLike(O)){pe??=Hi().extractBody;let[e,t]=pe(O);b[`content-type`]=t,O=e.stream,j=e.length}if(j??=t.contentLength,j===0&&!w&&(j=null),ut(l)&&j>0&&t.contentLength!=null&&t.contentLength!==j){if(e[E])return a.errorRequest(e,t,new o),!1;process.emitWarning(new o)}if(j!=null&&(r(O||j===0,`no body must not have content length`),b[ye]=`${j}`),Be(s),z.sendHeaders.hasSubscribers){let e=``;for(let t in b)e+=`${t}: ${b[t]}\r\n`;z.sendHeaders.publish({request:t,headers:e,socket:s[T]})}let M=O===null||j===0;return x.body=O,x.contentLength=j,x.expectsPayload=w,h&&(b[be]=`100-continue`),C=xt(e,t,s,S,b,{endStream:M,signal:g}),C!=null&&(C[te]=!0,C[le]=x,x.stream=C,Ke(s),++s[ae],n&&C.setTimeout(n),C[k]=s,C.on(`close`,lt),ke(t,C,wt),h&&C.once(`continue`,Ft),C.on(`response`,Dt),C.on(`headers`,Et),C.on(`end`,Ot),C.on(`error`,At),C.on(`frameError`,jt),C.on(`aborted`,Mt),(n||i)&&C.on(`timeout`,Nt),C.on(`trailers`,Pt),h||Ft.call(C),!0)}function Ct(e){e.off(`error`,ot),e.off(`continue`,Ft),e.off(`response`,Dt),e.off(`headers`,Et),e.off(`end`,Ot),e.off(`error`,At),e.off(`frameError`,jt),e.off(`aborted`,Mt),e.off(`timeout`,Nt),e.off(`trailers`,Pt),e.off(`data`,Tt)}function wt(e){if(e==null)return;let t=e[le];if(t==null)return;let{request:n}=t;n[se]===e&&Oe(n),!e.destroyed&&!e.closed&&(Ct(e),e.once(`error`,ot))}function Tt(e){let t=this,n=t[le];if(n==null)return;let{request:r,maxResponseSize:i,responseContentLength:a}=n;r.aborted||r.completed||(a!=null&&n.bytesRead+e.length>a?n.abort(new s):i>-1&&n.bytesRead+e.length>i?n.abort(new m):(n.bytesRead+=e.length,r.onResponseData(e)===!1&&t.pause()))}function Et(e){let t=this[le];if(t==null)return;let{request:n}=t;if(n.aborted||n.completed)return;let r=e[xe];delete e[xe],n.onResponseStart(Number(r),e,ot,``)}function Dt(e){let t=this,n=t[le];if(n==null)return;let{request:r}=n;t.off(`response`,Dt),n.body!=null&&!n.bodySent&&!t.writableEnded&&(t.removeListener(`continue`,Ft),t.end());let i=Number(e[xe]);if(delete e[xe],r.onResponseStarted(),n.responseReceived=!0,r.method!==`HEAD`&&i!==304){let t=e[ye];n.responseContentLength=t==null?null:Number(t)}(n.headersTimeout||n.bodyTimeout)&&t.setTimeout(n.bodyTimeout),r.aborted||r.completed?wt(t):(r.onResponseStart(i,e,t.resume.bind(t),``)===!1&&t.pause(),t.on(`data`,Tt))}function Ot(){let e=this,t=e[le];if(t==null)return;let{request:n}=t;if(e.off(`end`,Ot),t.responseReceived){if(!n.aborted&&!n.completed){if(t.responseContentLength!=null&&t.bytesRead!==t.responseContentLength){t.abort(new s);return}t.pendingEnd=!0,lt.call(e)}}else t.abort(new u(`HTTP/2: stream half-closed (remote)`),!0)}function kt(e,t){let{client:n,request:r}=t;return t.responseReceived||r.aborted||r.completed||r[fe]||!Ne(r)?!1:(r[fe]=!0,Le(r),t.stream=null,t.requestFinalized=!0,Me(n,r),n[x].splice(n[S],0,r),n[j](),!0)}function At(e){let t=this,n=t[le];n!=null&&(t.off(`error`,At),n.responseContentLength!=null&&n.bytesRead!==n.responseContentLength&&(e=new s),typeof t.rstCode==`number`&&t.rstCode!==Ce&&(e.http2ErrorCode=t.rstCode),!(t.rstCode===we&&kt(t,n))&&n.abort(e))}function jt(e,t){let n=this,r=n[le];r!=null&&(n.off(`frameError`,jt),r.abort(new u(`HTTP/2: "frameError" received - type ${e}, code ${t}`)))}function Mt(){this.off(`data`,Tt)}function Nt(){let e=this,t=e[le];if(t==null)return;e.off(`timeout`,Nt);let n=t.responseReceived?new p(`HTTP/2: "stream timeout after ${t.bodyTimeout}"`):new f(`HTTP/2: "headers timeout after ${t.headersTimeout}"`);t.abort(n)}function Pt(e){let t=this,n=t[le];if(n==null)return;let{request:r}=n;t.off(`trailers`,Pt),t.off(`data`,Tt),!(r.aborted||r.completed)&&(n.trailers=e)}function Ft(){let e=this,t=e[le];t.bodySent=!0;let{abort:n,body:i,client:o,contentLength:s,expectsPayload:c,request:l}=t;!i||s===0?It(n,e,null,o,l,o[T],s,c):a.isBuffer(i)?It(n,e,i,o,l,o[T],s,c):a.isBlobLike(i)?typeof i.stream==`function`?zt(n,e,i.stream(),o,l,o[T],s,c):Rt(n,e,i,o,l,o[T],s,c):a.isStream(i)?Lt(n,o[T],c,e,i,o,l,s):a.isIterable(i)?zt(n,e,i,o,l,o[T],s,c):r(!1)}function It(e,t,n,i,o,s,c,l){try{n!=null&&a.isBuffer(n)&&(r(c===n.byteLength,`buffer body must have content length`),t.cork(),t.write(n),t.uncork(),t.end(),o.onBodySent(n)),l||(s[g]=!0),o.onRequestSent(),i[j]()}catch(t){e(t)}}function Lt(e,t,n,o,s,c,l,u){r(u!==0||c[y]===0,`stream body cannot be pipelined`);let d=i(s,o,r=>{r?(a.destroy(d,r),e(r)):(a.removeAllListeners(d),l.onRequestSent(),n||(t[g]=!0),c[j]())});a.addListener(d,`data`,f);function f(e){l.onBodySent(e)}}async function Rt(e,t,n,r,i,a,s,c){try{if(s!=null&&s!==n.size)throw new o;let e=Buffer.from(await n.arrayBuffer());t.cork(),t.write(e),t.uncork(),t.end(),i.onBodySent(e),i.onRequestSent(),c||(a[g]=!0),r[j]()}catch(t){e(t)}}async function zt(e,t,n,i,a,o,s,c){r(s!==0||i[y]===0,`iterator body cannot be pipelined`);let l=null;function u(){if(l){let e=l;l=null,e()}}let d=()=>new Promise((e,t)=>{r(l===null),o[w]?t(o[w]):l=e});t.on(`close`,u).on(`drain`,u);try{for await(let e of n){if(o[w])throw o[w];let n=t.write(e);a.onBodySent(e),n||await d()}t.end(),a.onRequestSent(),c||(o[g]=!0),i[j]()}catch(t){e(t)}finally{t.off(`close`,u).off(`drain`,u)}}n.exports=ze})),Gi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),i=t(`node:net`),a=t(`node:http`),o=xi(),{ClientStats:s}=Si(),{channels:c}=Ci(),l=wi(),u=Ei(),{InvalidArgumentError:d,InformationalError:f,ClientDestroyedError:p}=vi(),m=Di(),{kUrl:h,kServerName:g,kClient:v,kBusy:y,kConnect:b,kResuming:x,kRunning:S,kPending:C,kSize:w,kQueue:T,kConnected:E,kConnecting:D,kNeedDrain:O,kKeepAliveDefaultTimeout:k,kHostHeader:A,kPendingIdx:j,kRunningIdx:M,kError:N,kPipelining:P,kKeepAliveTimeoutValue:F,kMaxHeadersSize:I,kKeepAliveMaxTimeout:ee,kKeepAliveTimeoutThreshold:L,kHeadersTimeout:R,kBodyTimeout:te,kStrictContentLength:ne,kConnector:re,kMaxRequests:ie,kCounter:z,kClose:ae,kDestroy:oe,kDispatch:se,kLocalAddress:ce,kMaxResponseSize:le,kOnError:ue,kHTTPContext:de,kMaxConcurrentStreams:fe,kHostAuthority:pe,kResume:me,kHTTP2Options:he}=gi(),ge=Ui(),_e=Wi(),ve=Symbol(`kClosedResolve`),ye=a&&a.maxHeaderSize&&Number.isInteger(a.maxHeaderSize)&&a.maxHeaderSize>0?()=>a.maxHeaderSize:()=>{throw new d(`http module not available or http.maxHeaderSize invalid`)},be=()=>{};function xe(e){return e[P]??e[de]?.defaultPipelining??1}let Se=!1;function Ce(e){Se!==!0&&(process.emitWarning(`Use h2Options.${e} instead. ${e} for H2 will be deprecated in future major.`,{code:`UNDICI-H2-OPTIONS`}),Se=!0)}function we(e){return e[de]?.version===`h2`?e[fe]:xe(e)}var Te=class extends u{constructor(e,{maxHeaderSize:t,headersTimeout:n,socketTimeout:r,requestTimeout:a,connectTimeout:s,bodyTimeout:c,idleTimeout:l,keepAlive:u,keepAliveTimeout:f,maxKeepAliveTimeout:p,keepAliveMaxTimeout:v,keepAliveTimeoutThreshold:y,socketPath:b,pipelining:S,tls:C,strictContentLength:w,maxCachedSessions:E,connect:D,maxRequestsPerClient:N,localAddress:z,maxResponseSize:ae,autoSelectFamily:oe,autoSelectFamilyAttemptTimeout:se,maxConcurrentStreams:fe,allowH2:ge,useH2c:_e,initialWindowSize:be,connectionWindowSize:xe,pingInterval:Se,webSocket:we,h2Options:Te,eventSource:De}={}){if(u!==void 0)throw new d(`unsupported keepAlive, use pipelining=0 instead`);if(r!==void 0)throw new d(`unsupported socketTimeout, use headersTimeout & bodyTimeout instead`);if(a!==void 0)throw new d(`unsupported requestTimeout, use headersTimeout & bodyTimeout instead`);if(l!==void 0)throw new d(`unsupported idleTimeout, use keepAliveTimeout instead`);if(p!==void 0)throw new d(`unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead`);if(t!=null){if(!Number.isInteger(t)||t<1)throw new d(`invalid maxHeaderSize`)}else t=ye();if(b!=null&&typeof b!=`string`)throw new d(`invalid socketPath`);if(s!=null&&(!Number.isFinite(s)||s<0))throw new d(`invalid connectTimeout`);if(f!=null&&(!Number.isFinite(f)||f<=0))throw new d(`invalid keepAliveTimeout`);if(v!=null&&(!Number.isFinite(v)||v<=0))throw new d(`invalid keepAliveMaxTimeout`);if(y!=null&&!Number.isFinite(y))throw new d(`invalid keepAliveTimeoutThreshold`);if(n!=null&&(!Number.isInteger(n)||n<0))throw new d(`headersTimeout must be a positive integer or zero`);if(c!=null&&(!Number.isInteger(c)||c<0))throw new d(`bodyTimeout must be a positive integer or zero`);if(D!=null&&typeof D!=`function`&&typeof D!=`object`)throw new d(`connect must be a function or an object`);if(N!=null&&(!Number.isInteger(N)||N<0))throw new d(`maxRequestsPerClient must be a positive number`);if(z!=null&&(typeof z!=`string`||i.isIP(z)===0))throw new d(`localAddress must be valid string IP address`);if(ae!=null&&(!Number.isInteger(ae)||ae<-1))throw new d(`maxResponseSize must be a positive number`);if(se!=null&&(!Number.isInteger(se)||se<-1))throw new d(`autoSelectFamilyAttemptTimeout must be a positive number`);if(ge!=null&&typeof ge!=`boolean`)throw new d(`allowH2 must be a valid boolean value`);if(ge!==!1){if(Te!=null){if(Te.useH2c!=null&&typeof Te.useH2c!=`boolean`)throw new d(`h2Options.useH2c must be a valid boolean value`);if(Te.settings?.initialWindowSize!=null&&(!Number.isInteger(Te.settings.initialWindowSize)||Te.settings.initialWindowSize<1))throw new d(`h2Options.settings.initialWindowSize must be a positive integer, greater than 0`);if(Te.maxConcurrentStreams!=null&&(!Number.isInteger(Te.maxConcurrentStreams)||Te.maxConcurrentStreams<1))throw new d(`h2Options.maxConcurrentStreams must be a positive integer, greater than 0`);if(Te.connectionWindowSize!=null&&(!Number.isInteger(Te.connectionWindowSize)||Te.connectionWindowSize<1))throw new d(`h2Options.connectionWindowSize must be a positive integer, greater than 0`);if(Te.pingInterval!=null&&(typeof Te.pingInterval!=`number`||!Number.isInteger(Te.pingInterval)||Te.pingInterval<0))throw new d(`h2Options.pingInterval must be a positive integer, greater or equal to 0`)}else{if(_e!=null&&typeof _e!=`boolean`)throw Ce(`useH2c`),new d(`useH2c must be a valid boolean value`);if(fe!=null&&(typeof fe!=`number`||fe<1))throw Ce(`maxConcurrentStreams`),new d(`maxConcurrentStreams must be a positive integer, greater than 0`);if(be!=null&&(!Number.isInteger(be)||be<1))throw Ce(`initialWindowSize`),new d(`initialWindowSize must be a positive integer, greater than 0`);if(xe!=null&&(!Number.isInteger(xe)||xe<1))throw Ce(`connectionWindowSize`),new d(`connectionWindowSize must be a positive integer, greater than 0`);if(Se!=null&&(typeof Se!=`number`||!Number.isInteger(Se)||Se<0))throw Ce(`pingInterval`),new d(`pingInterval must be a positive integer, greater or equal to 0`)}}if(super({webSocket:we,eventSource:De}),typeof D!=`function`)D=m({...C,maxCachedSessions:E,allowH2:ge,socketPath:b,useH2c:Te?.useH2c??_e,timeout:s,...typeof oe==`boolean`?{autoSelectFamily:oe,autoSelectFamilyAttemptTimeout:se}:void 0,...D});else{let e=D;D=(t,n)=>e({...t,...b==null?null:{socketPath:b},...ge==null?null:{allowH2:ge}},n)}this[h]=o.parseOrigin(e),this[pe]=`${this[h].hostname}${this[h].port?`:${this[h].port}`:``}`,this[re]=D,this[P]=S??1,this[I]=t,this[k]=f??4e3,this[ee]=v??6e5,this[L]=y??2e3,this[F]=this[k],this[g]=null,this[ce]=z??null,this[x]=0,this[O]=0,this[A]=`host: ${this[pe]}\r\n`,this[te]=c??3e5,this[R]=n??3e5,this[ne]=w??!0,this[ie]=N,this[ve]=null,this[le]=ae>-1?ae:-1,this[de]=null,this[he]={pingInterval:Te?.pingInterval??Se??6e4,connectionWindowSize:Te?.connectionWindowSize??xe??524288,maxConcurrentStreams:Te?.maxConcurrentStreams??fe??100,sessionOptions:{initialWindowSize:Te?.initialWindowSize??be??262144}},this[T]=[],this[M]=0,this[j]=0,this[me]=e=>Ae(this,e),this[ue]=e=>Ee(this,e)}get pipelining(){return this[P]}set pipelining(e){this[P]=e,this[me](!0)}get stats(){return new s(this)}get[C](){return this[T].length-this[j]}get[S](){return this[j]-this[M]}get[w](){return this[T].length-this[M]}get[E](){return!!this[de]&&!this[D]&&!this[de].destroyed}get[y](){let e=this[de]?.version===`h2`;return!!(this[de]?.busy(null)||this[w]>=(we(this)||1)||this[C]>0&&!e)}[b](e){De(this),this.once(`connect`,e)}[se](e,t){let n=new l(this[h].origin,e,t);return this[T].push(n),this[x]||(o.bodyLength(n.body)==null&&o.isIterable(n.body)?(this[x]=1,queueMicrotask(()=>Ae(this))):this[me](!0)),this[x]&&this[O]!==2&&this[y]&&(this[O]=2),this[O]<2}[ae](){return new Promise(e=>{this[w]?this[ve]=e:e(null)})}[oe](e){return new Promise(t=>{let n=this[T].splice(this[j]);for(let t=0;t{this[ve]&&(this[ve](),this[ve]=null),t(null)};this[de]?(this[de].destroy(e,r),this[de]=null):queueMicrotask(r),this[me]()})}};function Ee(e,t){if(e[S]===0&&t.code!==`UND_ERR_INFO`&&t.code!==`UND_ERR_SOCKET`){r(e[j]===e[M]);let n=e[T].splice(e[M]);for(let r=0;r{if(i)Oe(e,i,{host:t,hostname:n,protocol:a,port:s}),e[me]();else if(e.destroyed)o.destroy(l.on(`error`,be),new p),e[me]();else{r(l);try{e[de]=l.alpnProtocol===`h2`?_e(e,l):ge(e,l)}catch(r){l.destroy().on(`error`,be),Oe(e,r,{host:t,hostname:n,protocol:a,port:s}),e[me]();return}e[D]=!1,l[z]=0,l[ie]=e[ie],l[v]=e,l[N]=null,c.connected.hasSubscribers&&c.connected.publish({connectParams:{host:t,hostname:n,protocol:a,port:s,version:e[de]?.version,servername:e[g],localAddress:e[ce]},connector:e[re],socket:l}),e.emit(`connect`,e[h],[e]),e[me]()}})}catch(r){Oe(e,r,{host:t,hostname:n,protocol:a,port:s}),e[me]()}}function Oe(e,t,{host:n,hostname:r,protocol:i,port:a}){if(!e.destroyed){if(e[D]=!1,c.connectError.hasSubscribers&&c.connectError.publish({connectParams:{host:n,hostname:r,protocol:i,port:a,version:e[de]?.version,servername:e[g],localAddress:e[ce]},connector:e[re],error:t}),t.code===`ERR_TLS_CERT_ALTNAME_INVALID`){let n=e[T].splice(e[M],e[S]);e[j]=e[M];for(let r=0;r0&&e[T][e[j]].servername===e[g];){let n=e[T].splice(e[j],1)[0];o.errorRequest(e,n,t)}}else Ee(e,t);e.emit(`connectionError`,e[h],[e],t)}}function ke(e){e[O]=0,e.emit(`drain`,e[h],[e])}function Ae(e,t){e[x]!==2&&(e[x]=2,je(e,t),e[x]=0,e[M]>256&&(e[T].splice(0,e[M]),e[j]-=e[M],e[M]=0))}function je(e,t){for(;;){if(e.destroyed){r(e[C]===0);return}if(e[ve]&&!e[w]){e[ve](),e[ve]=null;return}if(e[de]&&e[de].resume(),e[y])e[O]=2;else if(e[O]===2){t?(e[O]=1,queueMicrotask(()=>ke(e))):ke(e);continue}if(e[C]===0||e[S]>=(we(e)||1))return;let n=e[T][e[j]];if(n===null)return;if(n.aborted)e[T].splice(e[j],1);else{if(e[h].protocol===`https:`&&e[g]!==n.servername){if(e[S]>0)return;e[g]=n.servername,e[de]?.destroy(new f(`servername changed`),()=>{e[de]=null,Ae(e)})}if(e[D])return;if(!e[de]){e[g]=n.servername,De(e);return}if(e[de].destroyed||e[de].busy(n))return;!n.aborted&&e[de].write(n)?e[j]++:e[T].splice(e[j],1)}}}n.exports=Te})),Ki=/* @__PURE__ */ a(((e,t)=>{let n=2047;var r=class{bottom=0;top=0;list=Array(2048).fill(void 0);next=null;isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&n)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&n}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&n,e)}};t.exports=class{constructor(){this.head=this.tail=new r}isEmpty(){return this.head.isEmpty()}push(e){this.head.isFull()&&(this.head=this.head.next=new r),this.head.push(e)}shift(){let e=this.tail,t=e.shift();return e.isEmpty()&&e.next!==null&&(this.tail=e.next,e.next=null),t}}})),qi=/* @__PURE__ */ a(((e,t)=>{let{PoolStats:n}=Si(),r=Ei(),i=Ki(),{kConnected:a,kSize:o,kRunning:s,kPending:c,kQueued:l,kBusy:u,kFree:d,kUrl:f,kClose:p,kDestroy:m,kDispatch:h}=gi(),g=Symbol(`clients`),v=Symbol(`needDrain`),y=Symbol(`queue`),b=Symbol(`closed resolve`),x=Symbol(`onDrain`),S=Symbol(`onConnect`),C=Symbol(`onDisconnect`),w=Symbol(`onConnectionError`),T=Symbol(`on client busy`),E=Symbol(`on client drain`),D=Symbol(`drain queue`),O=Symbol(`get dispatcher`),k=Symbol(`has dispatcher`),A=Symbol(`add client`),j=Symbol(`remove client`);t.exports={PoolBase:class extends r{[y]=new i;[l]=0;[g]=[];[v]=!1;[x](e,t,n){if(e.closed||e.destroyed)return;let r=this[y],i=!1;for(this[E](e);!i;){let t=r.shift();if(!t)break;this[l]--,i=!e.dispatch(t.opts,t.handler)}if(e[v]=i,i&&this[T](e),!i&&this[v]&&(this[v]=!1,this.emit(`drain`,t,[this,...n])),this[b]&&r.isEmpty()){let e=[];for(let t=0;t{this.emit(`connect`,e,[this,...t])};[C]=(e,t,n)=>{this.emit(`disconnect`,e,[this,...t],n)};[w]=(e,t,n)=>{this.emit(`connectionError`,e,[this,...t],n)};get[u](){return this[v]}get[a](){let e=0;for(let{[a]:t}of this[g])e+=t;return e}get[d](){let e=0;for(let{[a]:t,[v]:n}of this[g])e+=t&&!n;return e}get[c](){let e=this[l];for(let{[c]:t}of this[g])e+=t;return e}get[s](){let e=0;for(let{[s]:t}of this[g])e+=t;return e}get[o](){let e=this[l];for(let{[o]:t}of this[g])e+=t;return e}get stats(){return new n(this)}[p](){if(this[y].isEmpty()){let e=[];for(let t=0;t{this[b]=e})}[m](e){for(;;){let t=this[y].shift();if(!t)break;t.handler.onResponseError(null,e)}let t=Array(this[g].length);for(let n=0;n{this[v]&&!e[v]&&this[x](e,e[f],[e,this])}),this}[j](e){let t=this[g].indexOf(e);t!==-1&&this[g].splice(t,1),e.close(()=>{}),this[v]=!this[g].some(e=>!e[v]&&e.closed!==!0&&e.destroyed!==!0)}},kClients:g,kNeedDrain:v,kAddClient:A,kRemoveClient:j,kDrainQueue:D,kOnClientBusy:T,kOnClientDrain:E,kGetDispatcher:O,kHasDispatcher:k}})),Ji=/* @__PURE__ */ a(((e,t)=>{let{PoolBase:n,kClients:r,kNeedDrain:i,kAddClient:a,kDrainQueue:o,kOnClientBusy:s,kOnClientDrain:c,kGetDispatcher:l,kHasDispatcher:u,kRemoveClient:d}=qi(),f=Gi(),{InvalidArgumentError:p}=vi(),m=xi(),{kConnecting:h,kHTTPContext:g,kUrl:v}=gi(),y=Di(),b=Symbol(`options`),x=Symbol(`connections`),S=Symbol(`factory`),C=Symbol(`protocol`),w=Symbol(`protocol probe`);function T(e,t){return new f(e,t)}function E(e,t){return t instanceof f&&e[C]!==`h1`&&(e[b].useH2c===!0||e[v].protocol===`https:`&&e[b].allowH2!==!1)}function D(e){let t=e[S](e[v],e[b]);return E(e,t)&&(e[w]=t),e[a](t),t}t.exports=class extends n{constructor(e,{connections:t,factory:n=T,connect:i,connectTimeout:a,tls:s,maxCachedSessions:c,socketPath:l,autoSelectFamily:u,autoSelectFamilyAttemptTimeout:d,allowH2:h,useH2c:E,clientTtl:D,...O}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new p(`invalid connections`);if(typeof n!=`function`)throw new p(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new p(`connect must be a function or an object`);typeof i!=`function`&&(i=y({...s,maxCachedSessions:c,allowH2:h,useH2c:E,socketPath:l,timeout:a,...typeof u==`boolean`?{autoSelectFamily:u,autoSelectFamilyAttemptTimeout:d}:void 0,...i})),super(O),this[x]=t||null,this[v]=m.parseOrigin(e),this[b]={...m.deepClone(O),connect:i,allowH2:h,useH2c:E,clientTtl:D,socketPath:l},this[S]=n,this[C]=null,this[w]=null,this.on(`connect`,(e,t)=>{if(D!=null&&D>0)for(let e of t)Object.assign(e,{ttl:Date.now()});let n=t[t.length-1];n instanceof f&&(this[C]=n[g]?.version),n===this[w]&&this[C]!==`h2`&&(this[w]=null,this[o](e,t.slice(1)))}),this.on(`disconnect`,(e,t)=>{t.includes(this[w])&&(this[w]=null,this[o](e,t.slice(1)))}),this.on(`connectionError`,(e,t)=>{let n=!1;for(let e of t){e===this[w]&&(this[w]=null,n=!0);let t=this[r].indexOf(e);t!==-1&&this[r].splice(t,1)}n&&this[o](e,t.slice(1))})}[s](e){this[w]===null&&e[h]&&E(this,e)&&(this[w]=e)}[c](e){e===this[w]&&(this[w]=null)}[l](){let e=this[b].clientTtl;for(let t=0;t0&&n.ttl&&Date.now()-n.ttl>e)this[d](n),t--;else if(!n[i])return n}if(this[w]===null&&(!this[x]||this[r].length0&&n.ttl&&Date.now()-n.ttl>e)this[d](n),t--;else if(!n[i])return!0}return this[w]===null&&(!this[x]||this[r].length{let{BalancedPoolMissingUpstreamError:n,InvalidArgumentError:r}=vi(),{PoolBase:i,kClients:a,kNeedDrain:o,kAddClient:s,kRemoveClient:c,kGetDispatcher:l}=qi(),u=Ji(),{kOriginless:d,kUrl:f}=gi(),p=xi(),m=Symbol(`factory`),h=Symbol(`options`),g=Symbol(`kGreatestCommonDivisor`),v=Symbol(`kCurrentWeight`),y=Symbol(`kIndex`),b=Symbol(`kWeight`),x=Symbol(`kMaxWeightPerServer`),S=Symbol(`kErrorPenalty`);function C(e,t){if(e===0)return t;for(;t!==0;){let n=t;t=e%t,e=n}return e}function w(e,t){return new u(e,t)}t.exports=class extends i{constructor(e=[],{factory:t=w,connect:n,tls:i,...a}={}){if(typeof t!=`function`)throw new r(`factory must be a function.`);super(a),this[d]=!0,n&&typeof n!=`function`&&(n={...n}),i&&typeof i!=`function`&&(i={...i}),this[h]={...p.deepClone(a),connect:n,tls:i},this[y]=-1,this[v]=0,this[x]=this[h].maxWeightPerServer||100,this[S]=this[h].errorPenalty||15,Array.isArray(e)||(e=[e]),this[m]=t;for(let t of e)this.addUpstream(t);this._updateBalancedPoolStats()}addUpstream(e){let t=p.parseOrigin(e).origin;if(this[a].find(e=>e[f].origin===t&&e.closed!==!0&&e.destroyed!==!0))return this;let n=this[m](t,this[h]);this[s](n),n.on(`connect`,()=>{n[b]=Math.min(this[x],n[b]+this[S])}),n.on(`connectionError`,()=>{n[b]=Math.max(1,n[b]-this[S]),this._updateBalancedPoolStats()}),n.on(`disconnect`,(...e)=>{let t=e[2];t&&t.code===`UND_ERR_SOCKET`&&(n[b]=Math.max(1,n[b]-this[S]),this._updateBalancedPoolStats())});for(let e of this[a])e[b]=this[x];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let e=0;for(let t=0;te[f].origin===t&&e.closed!==!0&&e.destroyed!==!0);return n&&this[c](n),this}getUpstream(e){let t=p.parseOrigin(e).origin;return this[a].find(e=>e[f].origin===t&&e.closed!==!0&&e.destroyed!==!0)}get upstreams(){return this[a].filter(e=>e.closed!==!0&&e.destroyed!==!0).map(e=>e[f].origin)}[l](){if(this[a].length===0)throw new n;let e=0,t=-1;for(;e++this[a][t][b])&&(t=this[y]),e[b]>=this[v]))return e}if(t!==-1)return this[v]=this[a][t][b],this[y]=t,this[a][t]}}})),Xi=/* @__PURE__ */ a(((e,t)=>{let{PoolBase:n,kClients:r,kNeedDrain:i,kAddClient:a,kGetDispatcher:o,kHasDispatcher:s,kRemoveClient:c}=qi(),l=Gi(),{InvalidArgumentError:u}=vi(),d=xi(),{kUrl:f}=gi(),p=Di(),m=Symbol(`options`),h=Symbol(`connections`),g=Symbol(`factory`),v=Symbol(`index`);function y(e,t){return new l(e,t)}t.exports=class extends n{constructor(e,{connections:t,factory:n=y,connect:i,connectTimeout:a,tls:o,maxCachedSessions:s,socketPath:c,autoSelectFamily:l,autoSelectFamilyAttemptTimeout:b,allowH2:x,clientTtl:S,...C}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new u(`invalid connections`);if(typeof n!=`function`)throw new u(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new u(`connect must be a function or an object`);typeof i!=`function`&&(i=p({...o,maxCachedSessions:s,allowH2:x,socketPath:c,timeout:a,...typeof l==`boolean`?{autoSelectFamily:l,autoSelectFamilyAttemptTimeout:b}:void 0,...i})),super(C),this[h]=t||null,this[f]=d.parseOrigin(e),this[m]={...d.deepClone(C),connect:i,allowH2:x,clientTtl:S,socketPath:c},this[g]=n,this[v]=-1,this.on(`connect`,(e,t)=>{if(S!=null&&S>0)for(let e of t)Object.assign(e,{ttl:Date.now()})}),this.on(`connectionError`,(e,t,n)=>{for(let e of t){let t=this[r].indexOf(e);t!==-1&&this[r].splice(t,1)}})}[o](){let e=this[m].clientTtl;if(this[r].length===0){let e=this[g](this[f],this[m]);return this[a](e),e}let t=0;for(;t0&&n.ttl&&Date.now()-n.ttl>e)this[c](n),this[v]--;else{if(!n[i])return n;t++}}if(!this[h]||this[r].length0&&n.ttl&&Date.now()-n.ttl>e)this[c](n),t<=this[v]&&this[v]--,t--;else if(!n[i])return!0}if(!this[h]||this[r].length{let{InvalidArgumentError:n,MaxOriginsReachedError:r}=vi(),{kBusy:i,kClients:a,kConnected:o,kRunning:s,kPending:c,kClose:l,kDestroy:u,kDispatch:d,kUrl:f}=gi(),p=Ei(),m=Ji(),h=Gi(),g=xi(),v=Symbol(`onConnect`),y=Symbol(`onDisconnect`),b=Symbol(`onConnectionError`),x=Symbol(`onDrain`),S=Symbol(`factory`),C=Symbol(`options`),w=Symbol(`origins`);function T(e,t){return t&&t.connections===1?new h(e,t):new m(e,t)}t.exports=class extends p{constructor({factory:e=T,maxOrigins:t=1/0,connect:r,...i}={}){if(typeof e!=`function`)throw new n(`factory must be a function.`);if(r!=null&&typeof r!=`function`&&typeof r!=`object`)throw new n(`connect must be a function or an object`);if(typeof t!=`number`||Number.isNaN(t)||t<=0)throw new n(`maxOrigins must be a number greater than 0`);super(i),r&&typeof r!=`function`&&(r={...r}),this[C]={...g.deepClone(i),maxOrigins:t,connect:r},this[S]=e,this[a]=/* @__PURE__ */ new Map,this[w]=/* @__PURE__ */ new Set,this[x]=(e,t)=>{this.emit(`drain`,e,[this,...t])},this[v]=(e,t)=>{this.emit(`connect`,e,[this,...t])},this[y]=(e,t,n)=>{this.emit(`disconnect`,e,[this,...t],n)},this[b]=(e,t,n)=>{this.emit(`connectionError`,e,[this,...t],n)}}get[s](){let e=0;for(let t of this[a].values())e+=t[s];return e}[d](e,t){let s;if(e.origin&&(typeof e.origin==`string`||e.origin instanceof URL))s=String(e.origin);else throw new n(`opts.origin must be a non-empty string or URL.`);let l=e.allowH2??this[C].allowH2,u=l===!1?`${s}#http1-only`:s;if(this[w].size>=this[C].maxOrigins&&!this[w].has(s))throw new r;let d=this[a].get(u);if(!d){d=this[S](e.origin,l===!1?{...this[C],allowH2:!1}:this[C]);let t=()=>{if(this[a].get(u)!==d||d[o]>0||d[i]||d[c]>0)return;this[a].delete(u),d.destroyed||d.close();let e=!1;for(let t of this[a].keys())if(t===s||t===`${s}#http1-only`){e=!0;break}e||this[w].delete(s)};d.on(`drain`,this[x]).on(`connect`,this[v]).on(`disconnect`,(e,n,r)=>{t(),this[y](e,n,r)}).on(`connectionError`,(e,n,r)=>{t(),this[b](e,n,r)}),this[a].set(u,d),this[w].add(s)}return d.dispatch(e,t)}[l](){let e=[];for(let t of this[a].values())e.push(t.close());return this[a].clear(),Promise.all(e)}[u](e){let t=[];for(let n of this[a].values())t.push(n.destroy(e));return this[a].clear(),Promise.all(t)}get stats(){let e={};for(let t of this[a].values())t.stats&&(e[t[f].origin]=t.stats);return e}}})),Qi=/* @__PURE__ */ a(((e,t)=>{let n=Ti(),{InvalidArgumentError:r}=vi(),{toRawHeaders:i}=xi(),{kOriginless:a,kUrl:o}=gi();var s=class{#e;constructor(e){this.#e=e}onRequestStart(e,t){this.#e.onConnect?.(t=>e.abort(t),t)}onRequestUpgrade(e,t,n,r){let a=e?.rawHeaders??i(n??{});this.#e.onUpgrade?.(t,a,r)}onResponseStart(e,t,n,r){let a=e?.rawHeaders??i(n??{});this.#e.onHeaders?.(t,a,()=>e.resume(),r)===!1&&e.pause()}onResponseData(e,t){this.#e.onData?.(t)===!1&&e.pause()}onResponseEnd(e,t){let n=e?.rawTrailers??i(t??{});this.#e.onComplete?.(n)}onResponseError(e,t){if(!this.#e.onError)throw t;this.#e.onError(t)}onBodySent(e){this.#e.onBodySent?.(e)}onRequestSent(){this.#e.onRequestSent?.()}onResponseStarted(){this.#e.onResponseStarted?.()}};t.exports=class e extends n{#e;constructor(e){if(super(),!e||typeof e.dispatch!=`function`)throw new r(`Argument dispatcher must implement dispatch`);this.#e=e,this[o]=e[o],this[a]=e[a]}static wrapHandler(e){if(!e||typeof e!=`object`)throw new r(`handler must be an object`);return typeof e.onRequestStart==`function`?e:new s(e)}dispatch(t,n){return t.allowH2!==!1&&(t={...t,allowH2:!1}),this.#e.dispatch(t,e.wrapHandler(n))}close(...e){return this.#e.close(...e)}destroy(...e){return this.#e.destroy(...e)}}})),$i=/* @__PURE__ */ a(((e,n)=>{let{Buffer:r}=t(`node:buffer`),i=t(`node:net`),{InvalidArgumentError:a}=vi();function o(e){if(i.isIPv4(e)){let t=e.split(`.`).map(Number);return{type:1,buffer:r.from(t)}}if(i.isIPv6(e))return{type:4,buffer:s(e)};let t=r.from(e,`utf8`);if(t.length>255)throw new a(`Domain name too long (max 255 bytes)`);return{type:3,buffer:r.concat([r.from([t.length]),t])}}function s(e){let t=r.alloc(16),n=e;if(e.includes(`.`)){let t=e.lastIndexOf(`:`),r=e.slice(t+1);if(i.isIPv4(r)){let i=r.split(`.`).map(Number),a=(i[0]<<8|i[1]).toString(16),o=(i[2]<<8|i[3]).toString(16);n=`${e.slice(0,t)}:${a}:${o}`}}let a=n.indexOf(`::`);if(a!==-1){let e=n.slice(0,a),r=n.slice(a+2),i=e===``?[]:e.split(`:`),o=r===``?[]:r.split(`:`),s=0;for(let e of i)t.writeUInt16BE(parseInt(e,16),s),s+=2;s=16-o.length*2;for(let e of o)t.writeUInt16BE(parseInt(e,16),s),s+=2}else{let e=n.split(`:`);for(let n=0;n{let{EventEmitter:r}=t(`node:events`),{Buffer:i}=t(`node:buffer`),{InvalidArgumentError:a,Socks5ProxyError:o}=vi(),{debuglog:s}=t(`node:util`),{parseAddress:c}=$i(),l=s(`undici:socks5`),u=i.alloc(0),d={NO_AUTH:0,GSSAPI:1,USERNAME_PASSWORD:2,NO_ACCEPTABLE:255},f={CONNECT:1,BIND:2,UDP_ASSOCIATE:3},p={IPV4:1,DOMAIN:3,IPV6:4},m={SUCCEEDED:0,GENERAL_FAILURE:1,CONNECTION_NOT_ALLOWED:2,NETWORK_UNREACHABLE:3,HOST_UNREACHABLE:4,CONNECTION_REFUSED:5,TTL_EXPIRED:6,COMMAND_NOT_SUPPORTED:7,ADDRESS_TYPE_NOT_SUPPORTED:8},h={INITIAL:`initial`,HANDSHAKING:`handshaking`,AUTHENTICATING:`authenticating`,AUTHENTICATED:`authenticated`,CONNECTING:`connecting`,CONNECTED:`connected`,ERROR:`error`,CLOSED:`closed`};n.exports={Socks5Client:class extends r{constructor(e,t={}){if(super(),!e)throw new a(`socket is required`);this.socket=e,this.options=t,this.state=h.INITIAL,this.buffer=u,this.onSocketData=this.onData.bind(this),this.onSocketError=this.onError.bind(this),this.onSocketClose=this.onClose.bind(this),this.authMethods=[],t.username&&t.password&&this.authMethods.push(d.USERNAME_PASSWORD),this.authMethods.push(d.NO_AUTH),this.socket.on(`data`,this.onSocketData),this.socket.on(`error`,this.onSocketError),this.socket.on(`close`,this.onSocketClose)}onData(e){l(`received data`,e.length,`bytes in state`,this.state),this.buffer=i.concat([this.buffer,e]);try{switch(this.state){case h.HANDSHAKING:this.handleHandshakeResponse();break;case h.AUTHENTICATING:this.handleAuthResponse();break;case h.CONNECTING:this.handleConnectResponse()}}catch(e){this.onError(e)}}onError(e){l(`socket error`,e),this.state=h.ERROR,this.emit(`error`,e),this.destroy()}onClose(){l(`socket closed`),this.state=h.CLOSED,this.emit(`close`)}destroy(){this.socket&&!this.socket.destroyed&&this.socket.destroy()}markAuthenticated(){this.state=h.AUTHENTICATED,this.emit(`authenticated`)}handshake(){if(this.state!==h.INITIAL)throw new a(`Handshake already started`);l(`starting handshake with`,this.authMethods.length,`auth methods`),this.state=h.HANDSHAKING;let e=i.alloc(2+this.authMethods.length);e[0]=5,e[1]=this.authMethods.length,this.authMethods.forEach((t,n)=>{e[2+n]=t}),this.socket.write(e)}handleHandshakeResponse(){if(this.buffer.length<2)return;let e=this.buffer[0],t=this.buffer[1];if(e!==5)throw new o(`Invalid SOCKS version: ${e}`,`UND_ERR_SOCKS5_VERSION`);if(t===d.NO_ACCEPTABLE)throw new o(`No acceptable authentication method`,`UND_ERR_SOCKS5_AUTH_REJECTED`);if(this.buffer=this.buffer.subarray(2),l(`server selected auth method`,t),t===d.NO_AUTH)this.markAuthenticated();else if(t===d.USERNAME_PASSWORD)this.state=h.AUTHENTICATING,this.sendAuthRequest();else throw new o(`Unsupported authentication method: ${t}`,`UND_ERR_SOCKS5_AUTH_METHOD`)}sendAuthRequest(){let{username:e,password:t}=this.options;if(!e||!t)throw new a(`Username and password required for authentication`);l(`sending username/password auth`);let n=i.from(e),r=i.from(t);if(n.length>255||r.length>255)throw new a(`Username or password too long`);let o=i.alloc(3+n.length+r.length);o[0]=1,o[1]=n.length,n.copy(o,2),o[2+n.length]=r.length,r.copy(o,3+n.length),this.socket.write(o)}handleAuthResponse(){if(this.buffer.length<2)return;let e=this.buffer[0],t=this.buffer[1];if(e!==1)throw new o(`Invalid auth sub-negotiation version: ${e}`,`UND_ERR_SOCKS5_AUTH_VERSION`);if(t!==0)throw new o(`Authentication failed`,`UND_ERR_SOCKS5_AUTH_FAILED`);this.buffer=this.buffer.subarray(2),l(`authentication successful`),this.markAuthenticated()}connect(e,t){if(this.state===h.CONNECTING||this.state===h.CONNECTED)throw new a(`Connection already in progress`);if(this.state!==h.AUTHENTICATED)throw new a(`Client must be authenticated before CONNECT`);l(`connecting to`,e,t),this.state=h.CONNECTING;let n=this.buildConnectRequest(f.CONNECT,e,t);this.socket.write(n)}buildConnectRequest(e,t,n){let{type:r,buffer:a}=c(t),o=i.alloc(4+a.length+2);return o[0]=5,o[1]=e,o[2]=0,o[3]=r,a.copy(o,4),o.writeUInt16BE(n,4+a.length),o}handleConnectResponse(){if(this.buffer.length<4)return;let e=this.buffer[0],t=this.buffer[1],n=this.buffer[3];if(e!==5)throw new o(`Invalid SOCKS version in reply: ${e}`,`UND_ERR_SOCKS5_REPLY_VERSION`);let r=4;if(n===p.IPV4)r+=6;else if(n===p.DOMAIN){if(this.buffer.length<5)return;r+=1+this.buffer[4]+2}else if(n===p.IPV6)r+=18;else throw new o(`Invalid address type in reply: ${n}`,`UND_ERR_SOCKS5_ADDR_TYPE`);if(this.buffer.length{let{URL:r}=t(`node:url`),i,a=Ei(),{ConnectTimeoutError:o,InvalidArgumentError:s}=vi(),{Socks5Client:c,STATES:l}=ea(),{kBusy:u,kConnected:d,kDispatch:f,kClose:p,kDestroy:m}=gi(),h=Ji(),g=Di(),{setupConnectTimeout:v}=xi(),{debuglog:y}=t(`node:util`),b=y(`undici:socks5-proxy`),x=Symbol(`proxy url`),S=Symbol(`proxy headers`),C=Symbol(`proxy auth`),w=Symbol(`proxy protocol`),T=Symbol(`pools`),E=Symbol(`connector`),D=Symbol(`connect timeout`),O=Symbol(`request tls settings`),k=Symbol(`request tls timeout`);function A(e,t,n){return new o(`Connect Timeout Error (attempted address: ${e}:${t}, timeout: ${n}ms)`)}let j=!1;n.exports=class extends a{constructor(e,t={}){if(super(t),j||=(process.emitWarning(`SOCKS5 proxy support is experimental and subject to change`,`ExperimentalWarning`),!0),!e)throw new s(`Proxy URL is mandatory`);let n=typeof e==`string`?new r(e):e;if(n.protocol!==`socks5:`&&n.protocol!==`socks:`)throw new s(`Proxy URL must use socks5:// or socks:// protocol`);this[x]=n,this[S]=t.headers||{},this[w]=t.proxyTls?`https:`:`http:`;let i=t.connectTimeout??5e3;if(!Number.isFinite(i)||i<0)throw new s(`invalid connectTimeout`);this[D]=i;let{timeout:a,...o}=t.requestTls||{},c=a??i;if(!Number.isFinite(c)||c<0)throw new s(`invalid requestTls.timeout`);this[O]=o,this[k]=c,this[C]={username:t.username||(n.username?decodeURIComponent(n.username):null),password:t.password||(n.password?decodeURIComponent(n.password):null)};let l=t.proxyTls?.timeout??i;if(!Number.isFinite(l)||l<0)throw new s(`invalid proxyTls.timeout`);this[E]=t.connect||g({...t.proxyTls,timeout:l,servername:t.proxyTls?.servername||n.hostname}),this[T]=/* @__PURE__ */ new Map}async createSocks5Connection(e,t){let n=this[x].hostname,r=parseInt(this[x].port)||1080;b(`creating SOCKS5 connection to`,n,r);let i=Promise.withResolvers();this[E]({hostname:n,host:n,port:r,protocol:this[w]},(e,t)=>{e?i.reject(e):i.resolve(t)});let a=await i.promise,o=new c(a,this[C]);o.on(`error`,e=>{b(`SOCKS5 error:`,e),a.destroy()}),await o.handshake();let s=Promise.withResolvers(),u=this[D]===0?null:setTimeout(()=>{d(),o.destroy(),s.reject(A(n,r,this[D]))},this[D]),d=()=>{clearTimeout(u),o.removeListener(`authenticated`,f),o.removeListener(`error`,p)},f=()=>{d(),s.resolve()},p=e=>{d(),s.reject(e)};o.state===l.AUTHENTICATED?(clearTimeout(u),s.resolve()):(o.once(`authenticated`,f),o.once(`error`,p)),await s.promise,await o.connect(e,t);let m=Promise.withResolvers(),h=this[D]===0?null:setTimeout(()=>{g(),o.destroy(),m.reject(A(e,t,this[D]))},this[D]),g=()=>{clearTimeout(h),o.removeListener(`connected`,v),o.removeListener(`error`,y)},v=n=>{b(`SOCKS5 tunnel established to`,e,t,`via`,n),g(),m.resolve()},y=e=>{g(),m.reject(e)};return o.once(`connected`,v),o.once(`error`,y),await m.promise,a}[f](e,n){let{origin:a}=e;b(`dispatching request to`,a,`via SOCKS5`);try{let o=String(a),s=this[T].get(o);if(!s||s.destroyed||s.closed){s=new h(a,{pipelining:e.pipelining,connections:e.connections,connect:async(e,n)=>{try{let e=new r(a),o=e.hostname,s=parseInt(e.port)||(e.protocol===`https:`?443:80);b(`establishing SOCKS5 connection to`,o,s);let c=await this.createSocks5Connection(o,s),l=c;if(e.protocol===`https:`){i||=t(`node:tls`),b(`upgrading to TLS`),l=i.connect({...this[O],socket:c,servername:this[O]?.servername||o});let e=Promise.withResolvers(),n=()=>{queueMicrotask(u),l.removeListener(`secureConnect`,r),l.removeListener(`error`,a)},r=()=>{n(),e.resolve()},a=t=>{n(),e.reject(t)},u=v(new WeakRef(l),{timeout:this[k],hostname:o,port:s});l.once(`secureConnect`,r),l.once(`error`,a),await e.promise}n(null,l)}catch(e){b(`SOCKS5 connection error:`,e),n(e)}}}),this[T].set(o,s);let n=()=>{this[T].get(o)!==s||s[d]>0||s[u]||(this[T].delete(o),s.destroyed||s.close())};s.on(`disconnect`,n),s.on(`connectionError`,n)}return s[f](e,n)}catch(e){if(b(`dispatch error:`,e),typeof n.onResponseError==`function`)return n.onResponseError(null,e),!1;if(typeof n.onError==`function`)return n.onError(e),!1;throw e}}async[p](){let e=[];for(let t of this[T].values())e.push(t.close());this[T].clear(),await Promise.all(e)}async[m](e){let t=[];for(let n of this[T].values())t.push(n.destroy(e));this[T].clear(),await Promise.all(t)}}})),na=/* @__PURE__ */ a(((e,t)=>{let{kProxy:n,kClose:r,kDestroy:i,kDispatch:a}=gi(),o=Zi(),s=Ji(),c=Ei(),{InvalidArgumentError:l,RequestAbortedError:u,SecureProxyConnectionError:d,ProxyConnectionError:f}=vi(),p=Di(),m=Gi(),{channels:h}=Ci(),g=ta(),{hasSafeIterator:v}=xi(),y=Symbol(`proxy agent`),b=Symbol(`proxy client`),x=Symbol(`proxy headers`),S=Symbol(`request tls settings`),C=Symbol(`proxy tls settings`),w=Symbol(`connect endpoint function`),T=Symbol(`connect endpoint function (http/1.1 only)`),E=Symbol(`tunnel proxy`);function D(e){return e===`https:`?443:80}function O(e,t){return new s(e,t)}let k=()=>{};function A(e,t){return t.connections===1?new m(e,t):new s(e,t)}function j(e,t){return t===!0||e!==`http:`}var M=class extends c{#e;#t;constructor(e,{headers:t={},connect:n,factory:r,proxyServername:i}){if(!e)throw new l(`Proxy URL is mandatory`);super(),this[x]=t,this.#t=i,this.#e=r?r(e,{connect:n}):new m(e,{connect:n})}[a](e,t){let n=t.onResponseStart;t.onResponseStart=function(e,r,i,a){r===407?typeof t.onResponseError==`function`&&t.onResponseError(e,new l(`Proxy Authentication Required (407)`)):n&&n.call(this,e,r,i,a)};let{origin:r,path:i=`/`,headers:o={}}=e;if(e.path=r+i,!(`host`in o)&&!(`Host`in o)){let{host:e}=new URL(r);o.host=e}return e.headers={...this[x],...o},this.#t!=null&&(e.servername=this.#t),this.#e[a](e,t)}[r](){return this.#e.close()}[i](e){return this.#e.destroy(e)}},N=class extends c{constructor(e){if(!e||typeof e==`object`&&!(e instanceof URL)&&!e.uri)throw new l(`Proxy uri is mandatory`);let{clientFactory:t=O}=e;if(typeof t!=`function`)throw new l(`Proxy opts.clientFactory must be a function.`);let{proxyTunnel:r,connectTimeout:i}=e;super(e);let a=this.#e(e),{href:s,origin:c,port:m,protocol:v,username:N,password:P,hostname:F}=a;if(this[n]={uri:s,protocol:v},this[S]=e.requestTls,this[C]=e.proxyTls,this[x]=e.headers||{},this[E]=r,e.auth&&e.token)throw new l(`opts.auth cannot be used in combination with opts.token`);e.auth?this[x][`proxy-authorization`]=`Basic ${e.auth}`:e.token?this[x][`proxy-authorization`]=e.token:N&&P?this[x][`proxy-authorization`]=`Basic ${Buffer.from(`${decodeURIComponent(N)}:${decodeURIComponent(P)}`).toString(`base64`)}`:N&&(this[x][`proxy-authorization`]=`Basic ${Buffer.from(`${decodeURIComponent(N)}:`).toString(`base64`)}`);let I=p({timeout:i,...e.proxyTls}),ee=p({timeout:i,...e.proxyTls,allowH2:!1});this[w]=p({timeout:i,...e.requestTls}),this[T]=p({timeout:i,...e.requestTls,allowH2:!1});let L=e.factory||A,R=(t,r)=>{let{protocol:a}=new URL(t);if(this[n].protocol===`socks5:`||this[n].protocol===`socks:`)return new g(this[n].uri,{headers:this[x],connect:I,factory:L,username:e.username||N,password:e.password||P,connectTimeout:i,proxyTls:e.proxyTls,requestTls:e.requestTls});if(!j(a,this[E])){let e=this[n].protocol===`https:`?(e,t)=>ee(e,(e,n)=>{e&&e.code===`ERR_TLS_CERT_ALTNAME_INVALID`?t(new d(e)):t(e,n)}):ee;return new M(this[n].uri,{headers:this[x],connect:e,factory:L,proxyServername:this[n].protocol===`https:`?this[C]?.servername||F:void 0})}return L(t,r)};v===`socks5:`||v===`socks:`?this[b]=null:this[b]=t(a,{connect:I}),this[y]=new o({...e,factory:R,connect:async(e,t)=>{if(!this[b]){t(new l(`Cannot establish tunnel connection without a proxy client`));return}let n=e.host;e.port||(n+=`:${D(e.protocol)}`);try{let r={origin:c,port:m,path:n,signal:e.signal,headers:{...this[x],host:e.host,...e.connections==null||e.connections>0?{"proxy-connection":`keep-alive`}:{}},servername:this[C]?.servername||F},{socket:i,statusCode:a}=await this[b].connect(r);if(a!==200){i.on(`error`,k).destroy(),t(new u(`Proxy response (${a}) !== 200 when HTTP Tunneling`));return}if(h.proxyConnected.hasSubscribers&&h.proxyConnected.publish({socket:i,connectParams:r}),e.protocol!==`https:`){t(null,i);return}let o;o=this[S]?this[S].servername:e.servername,(e.allowH2===!1?this[T]:this[w])({...e,servername:o,httpSocket:i},t)}catch(e){e.code===`ERR_TLS_CERT_ALTNAME_INVALID`?t(new d(e)):e.code===`UND_ERR_SOCKET`?t(new f(e)):t(e)}}})}dispatch(e,t){let n=P(e.headers);if(F(n),n&&!(`host`in n)&&!(`Host`in n)){let{host:t}=new URL(e.origin);n.host=t}return this[y].dispatch({...e,headers:n},t)}#e(e){return typeof e==`string`?new URL(e):e instanceof URL?e:new URL(e.uri)}[r](){let e=[this[y].close()];return this[b]&&e.push(this[b].close()),Promise.all(e)}[i](){let e=[this[y].destroy()];return this[b]&&e.push(this[b].destroy()),Promise.all(e)}};function P(e){if(Array.isArray(e)){let t={};for(let n=0;n1?i:i[0]}return t}return e}function F(e){for(let t in e)I(t)&&ee()}function I(e){return e.length===19&&e.toLowerCase()===`proxy-authorization`}function ee(){throw new l(`Proxy-Authorization should be sent in ProxyAgent constructor`)}t.exports=N})),ra=/* @__PURE__ */ a(((e,t)=>{let n=Ei(),{kClose:r,kDestroy:i,kClosed:a,kDestroyed:o,kDispatch:s,kNoProxyAgent:c,kHttpProxyAgent:l,kHttpsProxyAgent:u}=gi(),d=na(),f=Zi(),p={"http:":80,"https:":443};t.exports=class extends n{#e=null;#t=null;#n=null;constructor(e={}){super(e),this.#n=e;let{httpProxy:t,httpsProxy:n,noProxy:r,...i}=e;this[c]=new f(i);let a=t??process.env.http_proxy??process.env.HTTP_PROXY;a?this[l]=new d({...i,uri:a}):this[l]=this[c];let o=n??process.env.https_proxy??process.env.HTTPS_PROXY;o?this[u]=new d({...i,uri:o}):this[u]=this[l],this.#a()}[s](e,t){let n=new URL(e.origin);return this.#r(n).dispatch(e,t)}[r](){return Promise.all([this[c].close(),!this[l][a]&&this[l].close(),!this[u][a]&&this[u].close()])}[i](e){return Promise.all([this[c].destroy(e),!this[l][o]&&this[l].destroy(e),!this[u][o]&&this[u].destroy(e)])}#r(e){let{protocol:t,host:n,port:r}=e;return n=n.replace(/:\d*$/,``).replace(/^\[(.+)\]$/,`$1`).toLowerCase(),n.length>1&&n.charCodeAt(n.length-1)===46&&(n=n.slice(0,-1)),r=Number.parseInt(r,10)||p[t]||0,this.#i(n,r)?t===`https:`?this[u]:this[l]:this[c]}#i(e,t){if(this.#o&&this.#a(),this.#t.length===0)return!0;for(let n=0;n{let r=t(`node:assert`),{kRetryHandlerDefaultRetry:i}=gi(),{RequestRetryError:a,RequestAbortedError:o}=vi(),{isDisturbed:s,parseRangeHeader:c,wrapRequestBody:l}=xi();function u(e){let t=new Date(e).getTime();return isNaN(t)?null:t-Date.now()}function d(e,t,n,r){let i=e[`content-length`];if(i==null||!Number.isFinite(t.start)||!Number.isFinite(t.end))return;let o=Number(i),s=t.end-t.start+1;if(!Number.isFinite(o)||o!==s)throw new a(`Content-Length mismatch`,n,{headers:e,data:{count:r}})}var f=class{#e;#t=!1;#n=null;constructor(e){this.#e=e}set target(e){this.#n=e,this.#t&&e?.pause()}get target(){return this.#n}pause(){this.#t=!0,this.#n?.pause()}resume(){this.#t=!1,this.#n?.resume()}abort(e){this.#n?.abort(e),this.#e(e)}get paused(){return this.#t||(this.#n?.paused??!1)}get aborted(){return this.#n?.aborted??!1}get reason(){return this.#n?.reason??null}get rawHeaders(){return this.#n?.rawHeaders??null}set rawHeaders(e){this.#n&&(this.#n.rawHeaders=e)}get rawTrailers(){return this.#n?.rawTrailers??null}set rawTrailers(e){this.#n&&(this.#n.rawTrailers=e)}};n.exports=class e{constructor(t,{dispatch:n,handler:r}){let{retryOptions:a,...o}=t,{retry:s,maxRetries:c,maxTimeout:u,minTimeout:d,timeoutFactor:p,methods:m,errorCodes:h,retryAfter:g,statusCodes:v,throwOnError:y}=a??{};this.error=null,this.dispatch=n,this.handler=r,this.opts={...o,body:l(t.body)},this.retryOpts={throwOnError:y??!0,retry:s??e[i],retryAfter:g??!0,maxTimeout:u??3e4,minTimeout:d??500,timeoutFactor:p??2,maxRetries:c??5,methods:m??[`GET`,`HEAD`,`OPTIONS`,`PUT`,`DELETE`,`TRACE`,`QUERY`],statusCodes:v??[500,502,503,504,429],errorCodes:h??[`ECONNRESET`,`ECONNREFUSED`,`ENOTFOUND`,`ENETDOWN`,`ENETUNREACH`,`EHOSTDOWN`,`EHOSTUNREACH`,`EPIPE`,`UND_ERR_SOCKET`]},this.retryCount=0,this.retryCountCheckpoint=0,this.headersSent=!1,this.start=0,this.end=null,this.etag=null,this.statusCode=null,this.headers=null,this.controllerProxy=new f(e=>this.#e(e)),this.retryPending=!1,this.retryTimer=null,this.pendingResponseData=null,this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,this.aborted=!1}onResponseStartWithRetry(e,t,n,r,i){if(this.retryOpts.throwOnError){this.retryOpts.statusCodes.includes(t)===!1?this.headersSent?this.handler.onResponseError?.(this.controllerProxy,i):(this.headersSent=!0,this.checkpointResponseEnd(n),this.handler.onResponseStart?.(this.controllerProxy,t,n,r)):this.error=i;return}if(s(this.opts.body)){this.headersSent=!0,this.checkpointResponseEnd(n),this.handler.onResponseStart?.(this.controllerProxy,t,n,r);return}function a(a){if(this.aborted)return;this.retryPending=!1,this.retryTimer=null;let o=this.pendingResponseData,s=this.pendingResponseTrailers,c=this.pendingResponseEnded;if(this.pendingResponseData=null,this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,a){if(this.headersSent)this.handler.onResponseError?.(this.controllerProxy,a);else{if(this.headersSent=!0,this.checkpointResponseEnd(n),this.handler.onResponseStart?.(this.controllerProxy,t,n,r),e.resume(),c){for(let t of o)this.onResponseData(e,t);this.onResponseEnd(e,s)}return}e.resume()}else this.error=i,e.resume(),c&&this.onResponseEnd(e,s)}e.pause(),this.retryPending=!0,this.pendingResponseData=[],this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,this.retryTimer=this.retryOpts.retry(i,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},a.bind(this))??null}checkpointResponseEnd(e){if(this.end==null&&this.opts.method!==`HEAD`){let t=e[`content-length`];this.end=t==null?null:Number(t)-1,r(this.end==null||Number.isFinite(this.end),`invalid content-length`),this.resume=this.end!=null}}onRequestStart(e,t){this.controllerProxy.target=e,this.headersSent||this.handler.onRequestStart?.(this.controllerProxy,t)}onBodySent(e){this.handler.onBodySent?.(e)}onRequestSent(){this.handler.onRequestSent?.()}onRequestUpgrade(e,t,n,r){this.handler.onRequestUpgrade?.(this.controllerProxy,t,n,r)}static[i](e,{state:t,opts:n},r){let{statusCode:i,code:a,headers:o}=e,{method:s,retryOptions:c}=n,{maxRetries:l,minTimeout:d,maxTimeout:f,timeoutFactor:p,statusCodes:m,errorCodes:h,methods:g,retryAfter:v}=c,{counter:y}=t;if(a&&a!==`UND_ERR_REQ_RETRY`&&!h.includes(a)||Array.isArray(g)&&!g.includes(s)||i!=null&&Array.isArray(m)&&!m.includes(i)||y>l){r(e);return}let b=v===!1?void 0:o?.[`retry-after`];b&&=(b=Number(b),Number.isNaN(b)?u(o[`retry-after`]):b*1e3);let x=b===0?0:Math.min(b>0?b:d*p**(y-1),f);return setTimeout(()=>r(null),x)}onResponseStart(e,t,n,i){if(t<200)this.handler.onResponseStart?.(this.controllerProxy,t,n,i);else if(this.error=null,this.retryCount+=1,this.statusCode=t,this.headers=n,this.headersSent){if(t!==206&&(this.start>0||t!==200))throw new a(`server does not support the range header and the payload was partially consumed`,t,{headers:n,data:{count:this.retryCount}});let e=c(n[`content-range`]);if(!e)throw new a(`Content-Range mismatch`,t,{headers:n,data:{count:this.retryCount}});if(this.etag!=null&&this.etag!==n.etag)throw new a(`ETag mismatch`,t,{headers:n,data:{count:this.retryCount}});d(n,e,t,this.retryCount);let{start:r,size:i,end:o=i?i-1:null}=e;if(this.start!==r||this.end!=null&&this.end!==o)throw new a(`Content-Range mismatch`,t,{headers:n,data:{count:this.retryCount}})}else if(t>=300){let r=new a(`Request failed`,t,{headers:n,data:{count:this.retryCount}});this.onResponseStartWithRetry(e,t,n,i,r)}else if(this.end==null){if(t===206){let e=c(n[`content-range`]);if(e==null||e.end==null){this.headersSent=!0,this.handler.onResponseStart?.(this.controllerProxy,t,n,i);return}d(n,e,t,this.retryCount);let{start:a,size:o,end:s=o?o-1:null}=e;r(a!=null&&Number.isFinite(a),`content-range mismatch`),r(s!=null&&Number.isFinite(s),`invalid content-length`),this.start=a,this.end=s}if(this.end==null&&this.opts.method!==`HEAD`){let e=n[`content-length`];this.end=e==null?null:Number(e)-1}r(Number.isFinite(this.start)),r(this.end==null||Number.isFinite(this.end),`invalid content-length`),this.resume=!0,this.etag=n.etag==null?null:n.etag,this.etag!=null&&this.etag[0]===`W`&&this.etag[1]===`/`&&(this.etag=null),this.headersSent=!0,this.handler.onResponseStart?.(this.controllerProxy,t,n,i)}else throw new a(`Request failed`,t,{headers:n,data:{count:this.retryCount}})}onResponseData(e,t){this.pendingResponseData===null?this.error||(this.start+=t.length,this.handler.onResponseData?.(this.controllerProxy,t)):this.pendingResponseData.push(t)}onResponseEnd(e,t){if(this.pendingResponseData!==null)this.pendingResponseTrailers=t,this.pendingResponseEnded=!0;else{if(this.error&&this.retryOpts.throwOnError)throw this.error;if(!this.error){if(this.end!=null&&Number.isFinite(this.end)&&this.start!==this.end+1)throw new a(`Content-Range mismatch`,this.statusCode,{headers:this.headers,data:{count:this.retryCount}});return this.retryCount=0,this.handler.onResponseEnd?.(this.controllerProxy,t)}this.retry()}}retry(){if(this.start!==0){let e={range:`bytes=${this.start}-${this.end??``}`};this.etag!=null&&(e[`if-match`]=this.etag),this.opts={...this.opts,headers:{...this.opts.headers,...e}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(e){this.handler.onResponseError?.(this.controllerProxy,e)}}onResponseError(e,t){if(this.aborted)return;if(e?.aborted||s(this.opts.body)||this.headersSent&&!this.resume){this.handler.onResponseError?.(this.controllerProxy,t);return}function n(e){this.aborted||(this.retryPending=!1,this.retryTimer=null,e?this.handler?.onResponseError?.(this.controllerProxy,e):this.retry())}this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryPending=!0,this.retryTimer=this.retryOpts.retry(t,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},n.bind(this))??null}#e(e){this.retryPending&&(this.aborted=!0,this.retryPending=!1,clearTimeout(this.retryTimer),this.retryTimer=null,this.pendingResponseData=null,this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,this.handler.onResponseError?.(this.controllerProxy,e??new o))}}})),aa=/* @__PURE__ */ a(((e,t)=>{let n=Ti(),r=ia(),{kOriginless:i,kUrl:a}=gi();t.exports=class extends n{#e=null;#t=null;constructor(e,t={}){super(t),this.#e=e,this.#t=t,this[a]=e[a],this[i]=e[i]}dispatch(e,t){let n=new r({...e,retryOptions:this.#t},{dispatch:this.#e.dispatch.bind(this.#e),handler:t});return this.#e.dispatch(e,n)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}}})),oa=/* @__PURE__ */ a(((e,t)=>{let{InvalidArgumentError:n}=vi(),r=Gi();t.exports=class extends r{constructor(e,t){if(typeof e==`string`&&(e=new URL(e)),e.protocol!==`http:`)throw new n(`h2c-client: Only h2c protocol is supported`);let{maxConcurrentStreams:r,pipelining:i,...a}=t??{},o=r??100,s=100;if(r!=null&&(!Number.isInteger(r)||r<1))throw new n(`maxConcurrentStreams must be a positive integer, greater than 0`);if(i!=null&&Number.isInteger(i)&&i>0&&(s=i),s>o)throw new n(`h2c-client: pipelining cannot be greater than maxConcurrentStreams`);super(e,{...a,maxConcurrentStreams:o,pipelining:s,allowH2:!0,useH2c:!0})}}})),sa=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{addAbortListener:i}=t(`node:events`),{Readable:a}=t(`node:stream`),{RequestAbortedError:o,NotSupportedError:s,InvalidArgumentError:c,AbortError:l}=vi(),u=xi(),d=Symbol(`kConsume`),f=Symbol(`kReading`),p=Symbol(`kBody`),m=Symbol(`kAbort`),h=Symbol(`kContentType`),g=Symbol(`kContentLength`),v=Symbol(`kUsed`),y=Symbol(`kBytesRead`),b=()=>{};var x=class extends a{constructor({resume:e,abort:t,contentType:n=``,contentLength:r,highWaterMark:i=65536}){super({autoDestroy:!0,read:e,highWaterMark:i}),this._readableState.dataEmitted=!1,this[m]=t,this[d]=null,this[y]=0,this[p]=null,this[v]=!1,this[h]=n,this[g]=Number.isFinite(r)?r:null,this[f]=!1}_destroy(e,t){!e&&!this._readableState.endEmitted&&(e=new o),e&&this[m](),this[v]?t(e):setImmediate(t,e)}on(e,t){return(e===`data`||e===`readable`)&&(this[f]=!0,this[v]=!0),super.on(e,t)}addListener(e,t){return this.on(e,t)}off(e,t){let n=super.off(e,t);return(e===`data`||e===`readable`)&&(this[f]=this.listenerCount(`data`)>0||this.listenerCount(`readable`)>0),n}removeListener(e,t){return this.off(e,t)}push(e){return e&&(this[y]+=e.length,this[d])?(k(this[d],e),!this[f]||super.push(e)):super.push(e)}text(){return w(this,`text`)}json(){return w(this,`json`)}blob(){return w(this,`blob`)}bytes(){return w(this,`bytes`)}arrayBuffer(){return w(this,`arrayBuffer`)}async formData(){throw new s}get bodyUsed(){return u.isDisturbed(this)}get body(){return this[p]||(this[p]=ReadableStream.from(this),this[d]&&(this[p].getReader(),r(this[p].locked))),this[p]}dump(e){let t=e?.signal;if(t!=null&&(typeof t!=`object`||!(`aborted`in t)))return Promise.reject(new c(`signal must be an AbortSignal`));let n=e?.limit&&Number.isFinite(e.limit)?e.limit:131072;return t?.aborted?Promise.reject(t.reason??new l):this._readableState.closeEmitted?Promise.resolve(null):new Promise((e,r)=>{if((this[g]&&this[g]>n||this[y]>n)&&this.destroy(new l),t){let n=i(t,()=>{this.destroy(t.reason??new l)});this.on(`close`,function(){n[Symbol.dispose](),t.aborted?r(t.reason??new l):e(null)})}else this.on(`close`,e);this.on(`error`,b).on(`data`,()=>{this[y]>n&&this.destroy()}).resume()})}setEncoding(e){return Buffer.isEncoding(e)&&super.setEncoding(e),this}};function S(e){return e[p]?.locked===!0||e[d]!==null}function C(e){return u.isDisturbed(e)||S(e)}function w(e,t){return r(!e[d]),new Promise((n,r)=>{if(C(e)){let t=e._readableState;t.destroyed&&t.closeEmitted===!1?e.on(`error`,r).on(`close`,()=>{r(/* @__PURE__ */ TypeError(`unusable`))}):r(t.errored??/* @__PURE__ */ TypeError(`unusable`))}else queueMicrotask(()=>{e[d]={type:t,stream:e,resolve:n,reject:r,length:0,body:[]},e.on(`error`,function(e){A(this[d],e)}).on(`close`,function(){this[d].body!==null&&A(this[d],new o)}),T(e[d])})})}function T(e){if(e.body===null)return;let{_readableState:t}=e.stream;if(t.bufferIndex){let n=t.bufferIndex,r=t.buffer.length;for(let i=n;i0&&k(e,Buffer.from(n.lastChar.subarray(0,n.lastTotal-n.lastNeed))),t.endEmitted)O(e,t.encoding);else for(e.stream.on(`end`,function(){O(this[d],this._readableState.encoding)}),e.stream.resume();e.stream.read()!=null;);}function E(e,t,n){if(e.length===0||t===0)return``;let r=e.length===1?e[0]:Buffer.concat(e,t),i=r.length,a=i>2&&r[0]===239&&r[1]===187&&r[2]===191?3:0;return!n||n===`utf8`||n===`utf-8`?r.utf8Slice(a,i):r.subarray(a,i).toString(n)}function D(e,t){if(e.length===0||t===0)return/* @__PURE__ */ new Uint8Array;if(e.length===1)return new Uint8Array(e[0]);let n=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer),r=0;for(let t=0;t{let r=t(`node:assert`),{AsyncResource:i}=t(`node:async_hooks`),{Readable:a}=sa(),{InvalidArgumentError:o,RequestAbortedError:s}=vi(),c=xi();function l(){}var u=class extends i{constructor(e,t){if(!e||typeof e!=`object`)throw new o(`invalid opts`);let{signal:n,method:r,opaque:i,body:a,onInfo:u,responseHeaders:d,highWaterMark:f}=e;try{if(typeof t!=`function`)throw new o(`invalid callback`);if(f!=null&&(!Number.isFinite(f)||f<0))throw new o(`invalid highWaterMark`);if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new o(`signal must be an EventEmitter or EventTarget`);if(r===`CONNECT`)throw new o(`invalid method`);if(u&&typeof u!=`function`)throw new o(`invalid onInfo callback`);super(`UNDICI_REQUEST`)}catch(e){throw c.isStream(a)&&c.destroy(a.on(`error`,l),e),e}this.method=r,this.responseHeaders=d||null,this.opaque=i||null,this.callback=t,this.res=null,this.abort=null,this.body=a,this.trailers={},this.context=null,this.controller=null,this.onInfo=u||null,this.highWaterMark=f,this.reason=null,this.removeAbortListener=null,n?.aborted?this.reason=n.reason??new s:n&&(this.removeAbortListener=c.addAbortListener(n,()=>{if(this.reason=n.reason??new s,this.res){let e=this.res;this.res=null,c.destroy(e.on(`error`,l),this.reason)}else this.abort&&this.abort(this.reason)}))}onRequestStart(e,t){this.reason?e.abort(this.reason):(r(this.callback),this.controller=e,this.abort=t=>e.abort(t),this.context=t)}onResponseStart(e,t,n,r){let{callback:i,opaque:o,context:s,responseHeaders:u,highWaterMark:d}=this,f=e?.rawHeaders,p=u===`raw`?c.parseRawHeaders(f):n;if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:p});return}let m=n,h=m?.[`content-type`],g=m?.[`content-length`],v=new a({resume:()=>e.resume(),abort:t=>e.abort(t),contentType:h,contentLength:this.method!==`HEAD`&&g?Number(g):null,highWaterMark:d});if(this.removeAbortListener&&=(v.on(`close`,this.removeAbortListener),null),this.callback=null,this.res=v,i!==null)try{this.runInAsyncScope(i,null,null,{statusCode:t,statusText:r,headers:p,trailers:this.trailers,opaque:o,body:v,context:s})}catch(e){this.res=null,c.destroy(v.on(`error`,l),e),queueMicrotask(()=>{throw e})}}onResponseData(e,t){this.res&&this.res.push(t)===!1&&e.pause()}onResponseEnd(e,t){if(t&&typeof t==`object`)for(let e of Object.keys(t))e===`__proto__`?Object.defineProperty(this.trailers,e,{value:t[e],enumerable:!0,configurable:!0,writable:!0}):this.trailers[e]=t[e];this.res?.push(null)}onResponseError(e,t){let{res:n,callback:r,body:i,opaque:a}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:a})})),n&&(this.res=null,queueMicrotask(()=>{c.destroy(n.on(`error`,l),t)})),i&&(this.body=null,c.isStream(i)&&(i.on(`error`,l),c.destroy(i,t))),this.removeAbortListener&&=(this.removeAbortListener(),null)}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new u(e,t);this.dispatch(e,n)}catch(n){if(typeof t!=`function`)throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}n.exports=d,n.exports.RequestHandler=u})),la=/* @__PURE__ */ a(((e,t)=>{let{addAbortListener:n}=xi(),{RequestAbortedError:r}=vi(),i=Symbol(`kListener`),a=Symbol(`kSignal`);function o(e){e.abort?e.abort(e[a]?.reason):e.reason=e[a]?.reason??new r,c(e)}function s(e,t){e.reason=null,e[a]=null,e[i]=null,t&&(t.aborted?o(e):(e[a]=t,e[i]=()=>{o(e)},n(e[a],e[i])))}function c(e){e[a]&&(`removeEventListener`in e[a]?e[a].removeEventListener(`abort`,e[i]):e[a].removeListener(`abort`,e[i]),e[a]=null,e[i]=null)}t.exports={addSignal:s,removeSignal:c}})),ua=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{AsyncResource:i}=t(`node:async_hooks`),{InvalidArgumentError:a,InvalidReturnValueError:o}=vi(),s=xi(),{addSignal:c,removeSignal:l}=la();function u(){}function d(e){return e.errored??e.writableErrored??e._writableState?.errored}function f(){let e=/* @__PURE__ */ Error(`Premature close`);return e.code=`ERR_STREAM_PREMATURE_CLOSE`,e}function p(e,t){let n=!1,r=()=>{e.removeListener(`close`,a),e.removeListener(`error`,o),e.removeListener(`finish`,s)},i=(e,i=!1)=>{n||(n=!0,r(),t(e,i))},a=()=>{let t=d(e);i(t??(e.writableFinished?void 0:f()))},o=e=>i(e,!0),s=()=>i();e.on(`close`,a),e.on(`error`,o),e.on(`finish`,s),e.closed?process.nextTick(a):e.writableFinished&&process.nextTick(s)}var m=class extends i{constructor(e,t,n){if(!e||typeof e!=`object`)throw new a(`invalid opts`);let{signal:r,method:i,opaque:o,body:l,onInfo:d,responseHeaders:f}=e;try{if(typeof n!=`function`)throw new a(`invalid callback`);if(typeof t!=`function`)throw new a(`invalid factory`);if(r&&typeof r.on!=`function`&&typeof r.addEventListener!=`function`)throw new a(`signal must be an EventEmitter or EventTarget`);if(i===`CONNECT`)throw new a(`invalid method`);if(d&&typeof d!=`function`)throw new a(`invalid onInfo callback`);super(`UNDICI_STREAM`)}catch(e){throw s.isStream(l)&&s.destroy(l.on(`error`,u),e),e}this.responseHeaders=f||null,this.opaque=o||null,this.factory=t,this.callback=n,this.res=null,this.abort=null,this.context=null,this.controller=null,this.trailers=null,this.body=l,this.onInfo=d||null,s.isStream(l)&&l.on(`error`,e=>{this.onResponseError(this.controller,e)}),c(this,r)}onRequestStart(e,t){this.reason?e.abort(this.reason):(r(this.callback),this.controller=e,this.abort=t=>e.abort(t),this.context=t)}onResponseStart(e,t,n,r){let{factory:i,opaque:a,context:c,responseHeaders:l}=this,u=e?.rawHeaders,d=l===`raw`?s.parseRawHeaders(u):n;if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:d});return}if(this.factory=null,i===null)return;let f=this.runInAsyncScope(i,null,{statusCode:t,headers:d,opaque:a,context:c});if(!f||typeof f.write!=`function`||typeof f.end!=`function`||typeof f.on!=`function`)throw new o(`expected Writable`);p(f,(e,t)=>{let{callback:n,res:r,opaque:i,trailers:a,abort:o}=this;this.res=null,(e||!r?.readable)&&s.destroy(r,t?void 0:e),this.callback=null,this.runInAsyncScope(n,null,e||null,{opaque:i,trailers:a}),e&&o(e)}),f.on(`drain`,()=>e.resume()),this.res=f,(f.writableNeedDrain===void 0?f._writableState?.needDrain:f.writableNeedDrain)===!0&&e.pause()}onResponseData(e,t){let{res:n}=this;n&&n.write(t)===!1&&e.pause()}onResponseEnd(e,t){let{res:n}=this;l(this),n&&(t&&typeof t==`object`&&(this.trailers=t),n.end())}onResponseError(e,t){let{res:n,callback:r,opaque:i,body:a}=this;l(this),this.factory=null,n?(this.res=null,s.destroy(n,t)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:i})})),a&&(this.body=null,s.destroy(a,t))}};function h(e,t,n){if(n===void 0)return new Promise((n,r)=>{h.call(this,e,t,(e,t)=>e?r(e):n(t))});try{let r=new m(e,t,n);this.dispatch(e,r)}catch(t){if(typeof n!=`function`)throw t;let r=e?.opaque;queueMicrotask(()=>n(t,{opaque:r}))}}n.exports=h})),da=/* @__PURE__ */ a(((e,n)=>{let{Readable:r,Duplex:i,PassThrough:a}=t(`node:stream`),o=t(`node:assert`),{AsyncResource:s}=t(`node:async_hooks`),{InvalidArgumentError:c,InvalidReturnValueError:l,RequestAbortedError:u}=vi(),d=xi(),{kBodyUsed:f}=gi(),{addSignal:p,removeSignal:m}=la();function h(){}let g=Symbol(`resume`);var v=class extends r{constructor(){super({autoDestroy:!0}),this[g]=null,this[f]=!0}_read(){let{[g]:e}=this;e&&(this[g]=null,e())}_destroy(e,t){this._read(),t(e)}},y=class extends r{constructor(e){super({autoDestroy:!0}),this[g]=e}_read(){this[g]()}_destroy(e,t){!e&&!this._readableState.endEmitted&&(e=new u),t(e)}},b=class extends s{constructor(e,t){if(!e||typeof e!=`object`)throw new c(`invalid opts`);if(typeof t!=`function`)throw new c(`invalid handler`);let{signal:n,method:r,opaque:a,onInfo:o,responseHeaders:s}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new c(`signal must be an EventEmitter or EventTarget`);if(r===`CONNECT`)throw new c(`invalid method`);if(o&&typeof o!=`function`)throw new c(`invalid onInfo callback`);super(`UNDICI_PIPELINE`),this.opaque=a||null,this.responseHeaders=s||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=o||null,this.req=new v().on(`error`,h),this.ret=new i({readableObjectMode:e.objectMode,autoDestroy:!0,read:()=>{let{body:e}=this;e?.resume&&e.resume()},write:(e,t,n)=>{let{req:r}=this;r.push(e,t)||r._readableState.destroyed?n():r[g]=n},destroy:(e,t)=>{let{body:n,req:r,res:i,ret:a,abort:o}=this;!e&&!a._readableState.endEmitted&&(e=new u),o&&e&&o(),d.destroy(n,e),d.destroy(r,e),d.destroy(i,e),m(this),t(e)}}).on(`prefinish`,()=>{let{req:e}=this;e.push(null)}),this.res=null,p(this,n)}onRequestStart(e,t){let{res:n}=this;this.reason?e.abort(this.reason):(o(!n,`pipeline cannot be retried`),this.abort=t=>e.abort(t),this.context=t)}onResponseStart(e,t,n,r){let{opaque:i,handler:a,context:o}=this;if(t<200){if(this.onInfo){let r=e?.rawHeaders,i=this.responseHeaders===`raw`?d.parseRawHeaders(r):n;this.onInfo({statusCode:t,headers:i})}return}this.res=new y(()=>e.resume());let s;try{this.handler=null;let r=e?.rawHeaders,c=this.responseHeaders===`raw`?d.parseRawHeaders(r):n;s=this.runInAsyncScope(a,null,{statusCode:t,headers:c,opaque:i,body:this.res,context:o})}catch(e){throw this.res.on(`error`,h),e}if(!s||typeof s.on!=`function`)throw new l(`expected Readable`);s.on(`data`,e=>{let{ret:t,body:n}=this;!t.push(e)&&n.pause&&n.pause()}).on(`error`,e=>{let{ret:t}=this;d.destroy(t,e)}).on(`end`,()=>{let{ret:e}=this;e.push(null)}).on(`close`,()=>{let{ret:e}=this;e._readableState.ended||d.destroy(e,new u)}),this.body=s}onResponseData(e,t){let{res:n}=this;n.push(t)===!1&&e.pause()}onResponseEnd(e,t){let{res:n}=this;n.push(null)}onResponseError(e,t){let{ret:n}=this;this.handler=null,d.destroy(n,t)}};function x(e,t){try{let n=new b(e,t);return this.dispatch({...e,body:n.req},n),n.ret}catch(e){return new a().destroy(e)}}n.exports=x})),fa=/* @__PURE__ */ a(((e,n)=>{let{InvalidArgumentError:r,SocketError:i}=vi(),{AsyncResource:a}=t(`node:async_hooks`),o=t(`node:assert`),s=xi(),{kHTTP2Stream:c}=gi(),{addSignal:l,removeSignal:u}=la();var d=class extends a{constructor(e,t){if(!e||typeof e!=`object`)throw new r(`invalid opts`);if(typeof t!=`function`)throw new r(`invalid callback`);let{signal:n,opaque:i,responseHeaders:a}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new r(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_UPGRADE`),this.responseHeaders=a||null,this.opaque=i||null,this.callback=t,this.abort=null,this.context=null,l(this,n)}onRequestStart(e,t){this.reason?e.abort(this.reason):(o(this.callback),this.abort=t=>e.abort(t),this.context=t)}onResponseStart(){throw new i(`bad upgrade`,null)}onRequestUpgrade(e,t,n,r){if(t!==(r[c]===!0?200:101)){let t=r[c]===!0?null:s.getSocketInfo(r);e.abort(new i(`bad upgrade`,t));return}let{callback:a,opaque:o,context:l}=this;u(this),this.callback=null;let d=e?.rawHeaders,f=this.responseHeaders===`raw`?s.parseRawHeaders(d):n;this.runInAsyncScope(a,null,null,{headers:f,socket:r,opaque:o,context:l})}onResponseError(e,t){let{callback:n,opaque:r}=this;u(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,t,{opaque:r})}))}};function f(e,t){if(t===void 0)return new Promise((t,n)=>{f.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new d(e,t),r={...e,method:e.method||`GET`,upgrade:e.protocol||`Websocket`};this.dispatch(r,n)}catch(n){if(typeof t!=`function`)throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}n.exports=f})),pa=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{AsyncResource:i}=t(`node:async_hooks`),{InvalidArgumentError:a,SocketError:o}=vi(),s=xi(),{addSignal:c,removeSignal:l}=la();var u=class extends i{constructor(e,t){if(!e||typeof e!=`object`)throw new a(`invalid opts`);if(typeof t!=`function`)throw new a(`invalid callback`);let{signal:n,opaque:r,responseHeaders:i}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new a(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_CONNECT`),this.opaque=r||null,this.responseHeaders=i||null,this.callback=t,this.abort=null,c(this,n)}onRequestStart(e,t){this.reason?e.abort(this.reason):(r(this.callback),this.abort=t=>e.abort(t),this.context=t)}onResponseStart(){throw new o(`bad connect`,null)}onRequestUpgrade(e,t,n,r){let{callback:i,opaque:a,context:o}=this;l(this),this.callback=null;let c=n,u=e?.rawHeaders;c!=null&&(c=this.responseHeaders===`raw`?s.parseRawHeaders(u):n),this.runInAsyncScope(i,null,null,{statusCode:t,headers:c,socket:r,opaque:a,context:o})}onResponseError(e,t){let{callback:n,opaque:r}=this;l(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,t,{opaque:r})}))}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new u(e,t),r={...e,method:`CONNECT`};this.dispatch(r,n)}catch(n){if(typeof t!=`function`)throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}n.exports=d})),ma=/* @__PURE__ */ a(((e,t)=>{t.exports.request=ca(),t.exports.stream=ua(),t.exports.pipeline=da(),t.exports.upgrade=fa(),t.exports.connect=pa()})),ha=/* @__PURE__ */ a(((e,t)=>{let{UndiciError:n}=vi(),r=Symbol.for(`undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED`);t.exports={MockNotMatchedError:class extends n{constructor(e){super(e),this.name=`MockNotMatchedError`,this.message=e||`The request does not match any registered mock dispatches`,this.code=`UND_MOCK_ERR_MOCK_NOT_MATCHED`}static[Symbol.hasInstance](e){return e&&e[r]===!0}get[r](){return!0}}}})),ga=/* @__PURE__ */ a(((e,t)=>{t.exports={kAgent:Symbol(`agent`),kOptions:Symbol(`options`),kFactory:Symbol(`factory`),kDispatches:Symbol(`dispatches`),kDispatchKey:Symbol(`dispatch key`),kDefaultHeaders:Symbol(`default headers`),kDefaultTrailers:Symbol(`default trailers`),kContentLength:Symbol(`content length`),kMockAgent:Symbol(`mock agent`),kMockAgentSet:Symbol(`mock agent set`),kMockAgentGet:Symbol(`mock agent get`),kMockDispatch:Symbol(`mock dispatch`),kClose:Symbol(`close`),kOriginalClose:Symbol(`original agent close`),kOriginalDispatch:Symbol(`original dispatch`),kOrigin:Symbol(`origin`),kIsMockActive:Symbol(`is mock active`),kNetConnect:Symbol(`net connect`),kGetNetConnect:Symbol(`get net connect`),kConnected:Symbol(`connected`),kIgnoreTrailingSlash:Symbol(`ignore trailing slash`),kMockAgentMockCallHistoryInstance:Symbol(`mock agent mock call history name`),kMockAgentRegisterCallHistory:Symbol(`mock agent register mock call history`),kMockAgentAddCallHistoryLog:Symbol(`mock agent add call history log`),kMockAgentIsCallHistoryEnabled:Symbol(`mock agent is call history enabled`),kMockAgentAcceptsNonStandardSearchParameters:Symbol(`mock agent accepts non standard search parameters`),kMockCallHistoryAddLog:Symbol(`mock call history add log`),kTotalDispatchCount:Symbol(`total dispatch count`)}})),_a=/* @__PURE__ */ a(((e,n)=>{let{MockNotMatchedError:r}=ha(),{kDispatches:i,kMockAgent:a,kOriginalDispatch:o,kOrigin:s,kGetNetConnect:c,kTotalDispatchCount:l}=ga(),{serializePathWithQuery:u,parseHeaders:d}=xi(),{STATUS_CODES:f}=t(`node:http`),{types:{isPromise:p}}=t(`node:util`),{InvalidArgumentError:m}=vi(),h=Symbol(`request aborted`);function g(e,t){return typeof e==`string`?e===t:e instanceof RegExp?e.test(t):typeof e==`function`&&e(t)===!0}function v(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLocaleLowerCase(),t]))}function y(e,t){if(Array.isArray(e)){for(let n=0;n!e).filter(({path:e,ignoreTrailingSlash:t})=>t?g(k(C(e)),a):g(C(e),i));if(o.length===0)throw new r(`Mock dispatch not matched for path '${i}'`);if(o=o.filter(({method:e})=>g(e,t.method)),o.length===0)throw new r(`Mock dispatch not matched for method '${t.method}' on path '${i}'`);if(o=o.filter(({body:e})=>e===void 0||g(e,t.body)),o.length===0)throw new r(`Mock dispatch not matched for body '${t.body}' on path '${i}'`);if(o=o.filter(e=>x(e,t.headers)),o.length===0){let e=typeof t.headers==`object`?JSON.stringify(t.headers):t.headers;throw new r(`Mock dispatch not matched for headers '${e}' on path '${i}'`)}return o[0]}function D(e,t,n,r){let i={timesInvoked:0,times:1,persist:!1,consumed:!1,...r},a=typeof n==`function`?{callback:n}:{...n},o={...i,...t,pending:!0,data:{error:null,...a}};return e.push(o),e[l]=(e[l]||0)+1,o}function O(e,t){let n=e.findIndex(e=>e.consumed?w(e,t):!1);n!==-1&&e.splice(n,1)}function k(e){if(typeof e!=`string`)return e;for(;e.endsWith(`/`);)e=e.slice(0,-1);return e.length===0&&(e=`/`),e}function A(e){let{path:t,method:n,body:r,headers:i,query:a}=e;return{path:t,method:n,body:r,headers:i,query:a}}function j(e){let t=Object.keys(e),n=[];for(let r=0;r=s,r.pending=o{typeof i!=`object`||!i?t.onResponseError(null,new m(`reply options callback must return an object`)):F(a,r,n,e,t,{...o,...i})},e=>{t.onResponseError(null,e)}),!0;if(typeof s!=`object`||!s)throw new m(`reply options callback must return an object`);return F(a,r,n,e,t,{...o,...s})}return F(a,r,n,e,t)}function F(e,t,n,r,i,a){let{data:o,delay:s}=t,c=a??o;if(c.error!==null)return O(e,n),i.onResponseError(null,c.error),!0;let l=!1,u=null,f={paused:!1,rawHeaders:null,rawTrailers:null,pause(){this.paused=!0},resume(){this.paused=!1},abort:e=>{l||(l=!0,u!==null&&(clearTimeout(u),u=null),i.onResponseError?.(f,e))}},g=r,v=e;if(i.onRequestStart?.(f,null),l)return!0;let y=I(r.body,i,f,()=>l);if(p(y))return y.then(e=>{e!==h&&(e!==r.body&&(g={...r,body:e}),x())},e=>f.abort(e)),!0;if(y===h)return!0;y!==r.body&&(g={...r,body:y}),x();function x(){if(c.callback){let{callback:t,...r}=c,a;try{a=t(g)}catch(t){O(e,n),i.onResponseError(null,t);return}if(p(a)){a.then(e=>{typeof e!=`object`||!e?i.onResponseError(null,new m(`reply options callback must return an object`)):S(v,{...r,...e})},e=>{i.onResponseError(null,e)});return}if(typeof a!=`object`||!a)throw new m(`reply options callback must return an object`);S(v,{...r,...a})}else typeof s==`number`&&s>0?u=setTimeout(()=>{u=null,S(v)},s):S(v)}function S(e,t=c){if(l)return;let{statusCode:a,data:o,headers:s,trailers:u}=t,m=Array.isArray(r.headers)?b(r.headers):r.headers,h=typeof o==`function`?o({...g,headers:m}):o;if(p(h))return h.then(n=>S(e,{...t,data:n}));if(l)return;let v=T(h),y=j(s??{}),x=j(u??{});f.rawHeaders=y,f.rawTrailers=x,i.onResponseStart?.(f,a,d(y),M(a)),i.onResponseData?.(f,Buffer.from(v)),i.onResponseEnd?.(f,d(x)),O(e,n)}return!0}function I(e,t,n,r){if(typeof t.onBodySent!=`function`&&typeof t.onRequestSent!=`function`)return e;if(e==null)return R(t,n,r)?e:h;if(e&&typeof e[Symbol.asyncIterator]==`function`)return ee(e,t,n,r);if(te(e)){let i=[];for(let a of e)if(r()||(i.push(a),!L(t,n,a)||r()))return h;return R(t,n,r)?i:h}return r()||!L(t,n,e)?h:R(t,n,r)?e:h}async function ee(e,t,n,r){let i=[];for await(let a of e)if(r()||(i.push(a),!L(t,n,a)||r()))return h;return R(t,n,r)?{async*[Symbol.asyncIterator](){yield*i}}:h}function L(e,t,n){try{return e.onBodySent?.(n),!0}catch(e){return t.abort(e),!1}}function R(e,t,n){try{return e.onRequestSent?.(),!n()}catch(e){return t.abort(e),!1}}function te(e){return typeof e!=`string`&&!Buffer.isBuffer(e)&&!ArrayBuffer.isView(e)&&typeof e[Symbol.iterator]==`function`}function ne(){let e=this[a],t=this[s],n=this[o];return function(a,o){if(e.isMockActive)try{P.call(this,a,o)}catch(s){if(s.code===`UND_MOCK_ERR_MOCK_NOT_MATCHED`){let u=e[c](),d=this[i][l]||this[i].length,f=`, ${this[i].filter(({consumed:e})=>!e).length} interceptor(s) remaining out of ${d} defined`;if(u===!1)throw new r(`${s.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)${f}`);if(re(u,t))n.call(this,`__mockAgentBodyForDispatch`in a?{...a,body:a.__mockAgentBodyForDispatch}:a,o);else throw new r(`${s.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)${f}`)}else throw s}else n.call(this,a,o)}}function re(e,t){let n=new URL(t);return!!(e===!0||Array.isArray(e)&&e.some(e=>g(e,n.host)))}function ie(e){return typeof e!=`string`&&!(e instanceof URL)?e:e instanceof URL?e.origin:e.toLowerCase()}function z(e){let{agent:t,...n}=e;if(`enableCallHistory`in n&&typeof n.enableCallHistory!=`boolean`)throw new m(`options.enableCallHistory must to be a boolean`);if(`acceptNonStandardSearchParameters`in n&&typeof n.acceptNonStandardSearchParameters!=`boolean`)throw new m(`options.acceptNonStandardSearchParameters must to be a boolean`);if(`ignoreTrailingSlash`in n&&typeof n.ignoreTrailingSlash!=`boolean`)throw new m(`options.ignoreTrailingSlash must to be a boolean`);return n}n.exports={getResponseData:T,getMockDispatch:E,addMockDispatch:D,deleteMockDispatch:O,buildKey:A,generateKeyValues:j,matchValue:g,getResponse:N,getStatusText:M,mockDispatch:P,buildMockDispatch:ne,checkNetConnect:re,buildAndValidateMockOptions:z,getHeaderByName:y,buildHeadersFromArray:b,normalizeSearchParams:S,normalizeOrigin:ie}})),va=/* @__PURE__ */ a(((e,n)=>{let{getResponseData:r,buildKey:i,addMockDispatch:a}=_a(),{kDispatches:o,kDispatchKey:s,kDefaultHeaders:c,kDefaultTrailers:l,kContentLength:u,kMockDispatch:d,kIgnoreTrailingSlash:f}=ga(),{InvalidArgumentError:p}=vi(),{serializePathWithQuery:m}=xi(),{types:{isPromise:h}}=t(`node:util`);var g=class{constructor(e){this[d]=e}delay(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new p(`waitInMs must be a valid integer > 0`);return this[d].delay=e,this}persist(){return this[d].persist=!0,this}times(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new p(`repeatTimes must be a valid integer > 0`);return this[d].times=e,this}},v=class{constructor(e,t){if(typeof e!=`object`)throw new p(`opts must be an object`);if(e.path===void 0)throw new p(`opts.path must be defined`);if(e.method===void 0&&(e.method=`GET`),typeof e.path==`string`){if(e.query)e.path=m(e.path,e.query);else{let t=new URL(e.path,`data://`);e.path=t.pathname+t.search}}typeof e.method==`string`&&(e.method=e.method.toUpperCase()),this[s]=i(e),this[o]=t,this[f]=e.ignoreTrailingSlash??!1,this[c]={},this[l]={},this[u]=!1}createMockScopeDispatchData({statusCode:e,data:t,responseOptions:n}){let i=r(t),a=this[u]?{"content-length":i.length}:{};return{statusCode:e,data:t,headers:{...this[c],...a,...n.headers},trailers:{...this[l],...n.trailers}}}validateReplyParameters(e){if(e.statusCode===void 0)throw new p(`statusCode must be defined`);if(typeof e.responseOptions!=`object`||e.responseOptions===null)throw new p(`responseOptions must be an object`)}reply(e){if(typeof e==`function`){let t=e=>{if(typeof e!=`object`||!e)throw new p(`reply options callback must return an object`);let t={data:``,responseOptions:{},...e};return this.validateReplyParameters(t),{...this.createMockScopeDispatchData(t)}};return new g(a(this[o],this[s],n=>{let r=e(n);return h(r)?r.then(t):t(r)},{ignoreTrailingSlash:this[f]}))}let t={statusCode:e,data:arguments[1]===void 0?``:arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);let n=this.createMockScopeDispatchData(t);return new g(a(this[o],this[s],n,{ignoreTrailingSlash:this[f]}))}replyWithError(e){if(e===void 0)throw new p(`error must be defined`);return new g(a(this[o],this[s],{error:e},{ignoreTrailingSlash:this[f]}))}defaultReplyHeaders(e){if(e===void 0)throw new p(`headers must be defined`);return this[c]=e,this}defaultReplyTrailers(e){if(e===void 0)throw new p(`trailers must be defined`);return this[l]=e,this}replyContentLength(){return this[u]=!0,this}};n.exports.MockInterceptor=v,n.exports.MockScope=g})),ya=/* @__PURE__ */ a(((e,n)=>{let{promisify:r}=t(`node:util`),i=Gi(),{buildMockDispatch:a}=_a(),{kDispatches:o,kMockAgent:s,kClose:c,kOriginalClose:l,kOrigin:u,kOriginalDispatch:d,kConnected:f,kIgnoreTrailingSlash:p}=ga(),{MockInterceptor:m}=va(),h=gi(),{InvalidArgumentError:g}=vi();n.exports=class extends i{constructor(e,t){if(!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new g(`Argument opts.agent must implement Agent`);super(e,t),this[s]=t.agent,this[u]=e,this[p]=t.ignoreTrailingSlash??!1,this[o]=[],this[f]=1,this[d]=this.dispatch,this[l]=this.close.bind(this),this.dispatch=a.call(this),this.close=this[c]}get[h.kConnected](){return this[f]}intercept(e){return new m(e&&{ignoreTrailingSlash:this[p],...e},this[o])}cleanMocks(){this[o]=[]}async[c](){await r(this[l])(),this[f]=0,this[s][h.kClients].delete(this[u])}}})),ba=/* @__PURE__ */ a(((e,t)=>{let{kMockCallHistoryAddLog:n}=ga(),{InvalidArgumentError:r}=vi();function i(e,t,n,i,a){switch(t.operator){case`OR`:return i.push(...n(e,a)),i;case`AND`:return n(e,i);default:throw new r(`options.operator must to be a case insensitive string equal to 'OR' or 'AND'`)}}function a(e={}){let t={};if(`operator`in e){if(typeof e.operator!=`string`||e.operator.toUpperCase()!==`OR`&&e.operator.toUpperCase()!==`AND`)throw new r(`options.operator must to be a case insensitive string equal to 'OR' or 'AND'`);return{...t,operator:e.operator.toUpperCase()}}return t}function o(e){return(t,n=this.logs)=>{if(typeof t==`string`||t==null)return n.filter(n=>n[e]===t);if(t instanceof RegExp)return n.filter(n=>t.test(n[e]));throw new r(`${e} parameter should be one of string, regexp, undefined or null`)}}function s(e){try{let t=new URL(e.path,e.origin);return t.search.length===0&&(t.search=new URLSearchParams(e.query).toString()),t}catch(e){throw new r(`An error occurred when computing MockCallHistoryLog.url`,{cause:e})}}var c=class{constructor(e={}){this.body=e.body,this.headers=e.headers,this.method=e.method;let t=s(e);this.fullUrl=t.toString(),this.origin=t.origin,this.path=t.pathname,this.searchParams=Object.fromEntries(t.searchParams),this.protocol=t.protocol,this.host=t.host,this.port=t.port,this.hash=t.hash}toMap(){return/* @__PURE__ */ new Map([[`protocol`,this.protocol],[`host`,this.host],[`port`,this.port],[`origin`,this.origin],[`path`,this.path],[`hash`,this.hash],[`searchParams`,this.searchParams],[`fullUrl`,this.fullUrl],[`method`,this.method],[`body`,this.body],[`headers`,this.headers]])}toString(){let e={betweenKeyValueSeparator:`->`,betweenPairSeparator:`|`},t=``;return this.toMap().forEach((n,r)=>{(typeof n==`string`||n==null)&&(t=`${t}${r}${e.betweenKeyValueSeparator}${n}${e.betweenPairSeparator}`),(typeof n==`object`&&n||Array.isArray(n))&&(t=`${t}${r}${e.betweenKeyValueSeparator}${JSON.stringify(n)}${e.betweenPairSeparator}`)}),t.slice(0,-1)}},l=class{logs=[];calls(){return this.logs}firstCall(){return this.logs.at(0)}lastCall(){return this.logs.at(-1)}nthCall(e){if(typeof e!=`number`)throw new r(`nthCall must be called with a number`);if(!Number.isInteger(e))throw new r(`nthCall must be called with an integer`);if(Math.sign(e)!==1)throw new r(`nthCall must be called with a positive value. use firstCall or lastCall instead`);return this.logs.at(e-1)}filterCalls(e,t){if(this.logs.length===0)return this.logs;if(typeof e==`function`)return this.logs.filter(e);if(e instanceof RegExp)return this.logs.filter(t=>e.test(t.toString()));if(typeof e==`object`&&e){if(Object.keys(e).length===0)return this.logs;let n={operator:`OR`,...a(t)},r=n.operator===`AND`?this.logs:[];return`protocol`in e&&(r=i(e.protocol,n,this.filterCallsByProtocol,r,this.logs)),`host`in e&&(r=i(e.host,n,this.filterCallsByHost,r,this.logs)),`port`in e&&(r=i(e.port,n,this.filterCallsByPort,r,this.logs)),`origin`in e&&(r=i(e.origin,n,this.filterCallsByOrigin,r,this.logs)),`path`in e&&(r=i(e.path,n,this.filterCallsByPath,r,this.logs)),`hash`in e&&(r=i(e.hash,n,this.filterCallsByHash,r,this.logs)),`fullUrl`in e&&(r=i(e.fullUrl,n,this.filterCallsByFullUrl,r,this.logs)),`method`in e&&(r=i(e.method,n,this.filterCallsByMethod,r,this.logs)),[...new Set(r)]}throw new r(`criteria parameter should be one of function, regexp, or object`)}filterCallsByProtocol=o.call(this,`protocol`);filterCallsByHost=o.call(this,`host`);filterCallsByPort=o.call(this,`port`);filterCallsByOrigin=o.call(this,`origin`);filterCallsByPath=o.call(this,`path`);filterCallsByHash=o.call(this,`hash`);filterCallsByFullUrl=o.call(this,`fullUrl`);filterCallsByMethod=o.call(this,`method`);clear(){this.logs=[]}[n](e){let t=new c(e);return this.logs.push(t),t}*[Symbol.iterator](){for(let e of this.calls())yield e}};t.exports.MockCallHistory=l,t.exports.MockCallHistoryLog=c})),xa=/* @__PURE__ */ a(((e,n)=>{let{promisify:r}=t(`node:util`),i=Ji(),{buildMockDispatch:a}=_a(),{kDispatches:o,kMockAgent:s,kClose:c,kOriginalClose:l,kOrigin:u,kOriginalDispatch:d,kConnected:f,kIgnoreTrailingSlash:p}=ga(),{MockInterceptor:m}=va(),h=gi(),{InvalidArgumentError:g}=vi();n.exports=class extends i{constructor(e,t){if(!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new g(`Argument opts.agent must implement Agent`);super(e,t),this[s]=t.agent,this[u]=e,this[p]=t.ignoreTrailingSlash??!1,this[o]=[],this[f]=1,this[d]=this.dispatch,this[l]=this.close.bind(this),this.dispatch=a.call(this),this.close=this[c]}get[h.kConnected](){return this[f]}intercept(e){return new m(e&&{ignoreTrailingSlash:this[p],...e},this[o])}cleanMocks(){this[o]=[]}async[c](){await r(this[l])(),this[f]=0,this[s][h.kClients].delete(this[u])}}})),Sa=/* @__PURE__ */ a(((e,n)=>{let{Transform:r}=t(`node:stream`),{Console:i}=t(`node:console`),a=process.versions.icu?`✅`:`Y `,o=process.versions.icu?`❌`:`N `;n.exports=class{constructor({disableColors:e}={}){this.transform=new r({transform(e,t,n){n(null,e)}}),this.logger=new i({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){let t=e.map(({method:e,path:t,data:{statusCode:n},persist:r,times:i,timesInvoked:s,origin:c})=>({Method:e,Origin:c,Path:t,"Status code":n,Persistent:r?a:o,Invocations:s,Remaining:r?1/0:i-s}));return this.logger.table(t),this.transform.read().toString()}}})),Ca=/* @__PURE__ */ a(((e,t)=>{let{kClients:n}=gi(),r=Zi(),{kAgent:i,kMockAgentSet:a,kMockAgentGet:o,kDispatches:s,kIsMockActive:c,kNetConnect:l,kGetNetConnect:u,kOptions:d,kFactory:f,kMockAgentRegisterCallHistory:p,kMockAgentIsCallHistoryEnabled:m,kMockAgentAddCallHistoryLog:h,kMockAgentMockCallHistoryInstance:g,kMockAgentAcceptsNonStandardSearchParameters:v,kMockCallHistoryAddLog:y,kIgnoreTrailingSlash:b}=ga(),x=ya(),S=xa(),{matchValue:C,normalizeSearchParams:w,buildAndValidateMockOptions:T,normalizeOrigin:E}=_a(),{InvalidArgumentError:D,UndiciError:O}=vi(),k=Ti(),A=Sa(),{MockCallHistory:j}=ba();t.exports=class extends k{constructor(e={}){super(e);let t=T(e);if(this[l]=!0,this[c]=!0,this[m]=t.enableCallHistory??!1,this[v]=t.acceptNonStandardSearchParameters??!1,this[b]=t.ignoreTrailingSlash??!1,e?.agent&&typeof e.agent.dispatch!=`function`)throw new D(`Argument opts.agent must implement Agent`);let a=e?.agent?e.agent:new r(e);this[i]=a,this[n]=a[n],this[d]=t,this[m]&&this[p]()}get(e){let t=E(e),n=this[b]?t.replace(/\/$/,``):t,r=this[o](n);return r||(r=this[f](n),this[a](n,r)),r}dispatch(e,t){e.origin=E(e.origin);let r=this.get(e.origin);this[h](e);let o=this[v],c={...e};if(c.allowH2===!1){let e=`${c.origin}#http1-only`;if(!this[n].has(e)){let t=this[f](c.origin);t[s]=r[s],this[a](e,t)}}if(o&&c.path){let[e,t]=c.path.split(`?`);c.path=`${e}?${w(t,o)}`}return this[i].dispatch(c,t)}async close(){this.clearCallHistory(),await this[i].close(),this[n].clear()}deactivate(){this[c]=!1}activate(){this[c]=!0}enableNetConnect(e){if(typeof e==`string`||typeof e==`function`||e instanceof RegExp)Array.isArray(this[l])?this[l].push(e):this[l]=[e];else if(e===void 0)this[l]=!0;else throw new D(`Unsupported matcher. Must be one of String|Function|RegExp.`)}disableNetConnect(){this[l]=!1}enableCallHistory(){return this[m]=!0,this}disableCallHistory(){return this[m]=!1,this}getCallHistory(){return this[g]}clearCallHistory(){this[g]!==void 0&&this[g].clear()}get isMockActive(){return this[c]}[p](){this[g]===void 0&&(this[g]=new j)}[h](e){this[m]&&(this[p](),this[g][y](e))}[a](e,t){this[n].set(e,t)}[f](e){let t=Object.assign({agent:this},this[d]);return this[d]&&this[d].connections===1?new x(e,t):new S(e,t)}[o](e){let t=this[n].get(e);if(t)return t;if(typeof e!=`string`){let t=this[f](`http://localhost:9999`);return this[a](e,t),t}for(let[t,r]of Array.from(this[n]))if(r&&typeof t!=`string`&&C(t,e)){let t=this[f](e);return this[a](e,t),t[s]=r[s],t}}[u](){return this[l]}pendingInterceptors(){let e=this[n];return Array.from(e.entries()).flatMap(([e,t])=>t[s].map(t=>({...t,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new A}={}){let t=this.pendingInterceptors();if(t.length!==0)throw new O(t.length===1?`1 interceptor is pending:\n\n${e.format(t)}`.trim():`${t.length} interceptors are pending:\n\n${e.format(t)}`.trim())}}})),wa=/* @__PURE__ */ a(((e,n)=>{let{InvalidArgumentError:r}=vi(),{runtimeFeatures:i}=zi();function a(e={}){let{ignoreHeaders:t=[],excludeHeaders:n=[],matchHeaders:r=[],caseSensitive:i=!1}=e;return{ignore:new Set(t.map(e=>i?e:e.toLowerCase())),exclude:new Set(n.map(e=>i?e:e.toLowerCase())),match:new Set(r.map(e=>i?e:e.toLowerCase()))}}let o=i.has(`crypto`)?t(`node:crypto`):null,s=o?.hash?e=>o.hash(`sha256`,e,`base64url`):e=>Buffer.from(e).toString(`base64url`);function c(e){return Array.isArray(e)&&!(e.length&1)}function l(e=[]){return e.length===0?()=>!1:function(t){let n;for(let r of e)if(typeof r==`string`){if(n||=t.toLowerCase(),n.includes(r.toLowerCase()))return!0}else if(r instanceof RegExp&&r.test(t))return!0;return!1}}function u(e){let t={};if(!e)return t;if(c(e)){for(let n=0;n{let{writeFile:r,readFile:i,mkdir:a}=t(`node:fs/promises`),{dirname:o,resolve:s}=t(`node:path`),{setTimeout:c,clearTimeout:l}=t(`node:timers`),{InvalidArgumentError:u,UndiciError:d}=vi(),{hashId:f,isUrlExcludedFactory:p,normalizeHeaders:m,createHeaderFilters:h}=wa();function g(e,t,n){if(t===!1)return`${e.origin}${e.pathname}`;if(n){let t=String(n(e.searchParams)??``);return t?`${e.origin}${e.pathname}?${t}`:`${e.origin}${e.pathname}`}return e.toString()}function v(e,t,n){return t===!1?``:n?String(n(e)??``):e?String(e):``}function y(e,t,n={}){let r=new URL(e.path,e.origin),i=e._normalizedHeaders||m(e.headers);return e._normalizedHeaders||=i,{method:e.method||`GET`,url:g(r,n.matchQuery,n.normalizeQuery),headers:b(i,t,n),body:v(e.body,n.matchBody,n.normalizeBody)}}function b(e,t,n={}){if(!e||typeof e!=`object`)return{};let{caseSensitive:r=!1}=n,i={},{ignore:a,exclude:o,match:s}=t;for(let[t,n]of Object.entries(e)){let e=r?t:t.toLowerCase();o.has(e)||a.has(e)||(s.size===0||s.has(e))&&(i[e]=n)}return i}function x(e,t,n={}){if(!e||typeof e!=`object`)return{};let{caseSensitive:r=!1}=n,i={},{exclude:a}=t;for(let[t,n]of Object.entries(e)){let e=r?t:t.toLowerCase();a.has(e)||(i[e]=n)}return i}function S(e){let t=[e.method,e.url];if(e.headers&&typeof e.headers==`object`){let n=Object.keys(e.headers).sort();for(let r of n){let n=Array.isArray(e.headers[r])?e.headers[r]:[e.headers[r]];t.push(r);for(let e of n.sort())t.push(String(e))}}t.push(e.body);let n=t.join(`|`);return f(n)}n.exports={SnapshotRecorder:class{#e;#t;#n=/* @__PURE__ */ new Map;#r;#i=1/0;#a=!1;#o;constructor(e={}){this.#r=e.snapshotPath,this.#i=e.maxSnapshots||1/0,this.#a=e.autoFlush||!1,this.flushInterval=e.flushInterval||3e4,this._flushTimer=null,this.matchOptions={matchHeaders:e.matchHeaders||[],ignoreHeaders:e.ignoreHeaders||[],excludeHeaders:e.excludeHeaders||[],matchBody:e.matchBody!==!1,normalizeBody:e.normalizeBody||void 0,matchQuery:e.matchQuery!==!1,normalizeQuery:e.normalizeQuery||void 0,caseSensitive:e.caseSensitive||!1},this.#o=h(this.matchOptions),this.shouldRecord=e.shouldRecord||(()=>!0),this.shouldPlayback=e.shouldPlayback||(()=>!0),this.#t=p(e.excludeUrls),this.#a&&this.#r&&this.#s()}async record(e,t){if(!this.shouldRecord(e)||this.isUrlExcluded(e))return;let n=y(e,this.#o,this.matchOptions),r=S(n),i=m(t.headers),a={statusCode:t.statusCode,headers:x(i,this.#o,this.matchOptions),body:Buffer.isBuffer(t.body)?t.body.toString(`base64`):Buffer.from(String(t.body||``)).toString(`base64`),trailers:t.trailers};if(this.#n.size>=this.#i&&!this.#n.has(r)){let e=this.#n.keys().next().value;this.#n.delete(e)}let o=this.#n.get(r);o&&o.responses?(o.responses.push(a),o.timestamp=(/* @__PURE__ */ new Date()).toISOString()):this.#n.set(r,{request:n,responses:[a],callCount:0,timestamp:(/* @__PURE__ */ new Date()).toISOString()}),this.#a&&this.#r&&this.#l()}isUrlExcluded(e){let t=new URL(e.path,e.origin).toString();return this.#t(t)}findSnapshot(e){if(!this.shouldPlayback(e)||this.isUrlExcluded(e))return;let t=S(y(e,this.#o,this.matchOptions)),n=this.#n.get(t);if(!n)return;let r=n.callCount||0,i=Math.min(r,n.responses.length-1);return n.callCount=r+1,{...n,response:n.responses[i]}}async loadSnapshots(e){let t=e||this.#r;if(!t)throw new u(`Snapshot path is required`);try{let e=await i(s(t),`utf8`),n=JSON.parse(e);if(Array.isArray(n)){this.#n.clear();for(let{hash:e,snapshot:t}of n)this.#n.set(e,t)}else this.#n=new Map(Object.entries(n))}catch(e){if(e.code===`ENOENT`)this.#n.clear();else throw new d(`Failed to load snapshots from ${t}`,{cause:e})}}async saveSnapshots(e){let t=e||this.#r;if(!t)throw new u(`Snapshot path is required`);let n=s(t);await a(o(n),{recursive:!0});let i=Array.from(this.#n.entries()).map(([e,t])=>({hash:e,snapshot:t}));await r(n,JSON.stringify(i,null,2),{flush:!0})}clear(){this.#n.clear()}getSnapshots(){return Array.from(this.#n.values())}size(){return this.#n.size}resetCallCounts(){for(let e of this.#n.values())e.callCount=0}deleteSnapshot(e){let t=S(y(e,this.#o,this.matchOptions));return this.#n.delete(t)}getSnapshotInfo(e){let t=S(y(e,this.#o,this.matchOptions)),n=this.#n.get(t);return n?{hash:t,request:n.request,responseCount:n.responses?n.responses.length:+!!n.response,callCount:n.callCount||0,timestamp:n.timestamp}:null}replaceSnapshots(e){if(this.#n.clear(),Array.isArray(e))for(let{hash:t,snapshot:n}of e)this.#n.set(t,n);else e&&typeof e==`object`&&(this.#n=new Map(Object.entries(e)))}#s(){return this.#l()}#c(){this.#e&&=(l(this.#e),this.saveSnapshots().catch(()=>{}),null)}#l(){this.#e=c(()=>{this.saveSnapshots().catch(()=>{}),this.#a?this.#e?.refresh():this.#e=null},1e3)}destroy(){this.#c(),this.#e&&=(l(this.#e),null)}async close(){this.#r&&this.#n.size!==0&&await this.saveSnapshots(),this.destroy()}},formatRequestKey:y,createRequestHash:S,filterHeadersForMatching:b,filterHeadersForStorage:x,createHeaderFilters:h}})),Ea=/* @__PURE__ */ a(((e,t)=>{let n=Zi(),r=Ca(),{SnapshotRecorder:i}=Ta(),{InvalidArgumentError:a,UndiciError:o}=vi(),s=xi(),{validateSnapshotMode:c}=wa(),l=Symbol(`kSnapshotRecorder`),u=Symbol(`kSnapshotMode`),d=Symbol(`kSnapshotPath`),f=Symbol(`kSnapshotLoaded`),p=Symbol(`kRealAgent`),m=!1;t.exports=class extends r{constructor(e={}){m||=(process.emitWarning(`SnapshotAgent is experimental and subject to change`,`ExperimentalWarning`),!0);let{mode:t=`record`,snapshotPath:r=null,...o}=e;if(super(o),c(t),(t===`playback`||t===`update`)&&!r)throw new a(`snapshotPath is required when mode is '${t}'`);this[u]=t,this[d]=r,this[l]=new i({snapshotPath:this[d],mode:this[u],maxSnapshots:e.maxSnapshots,autoFlush:e.autoFlush,flushInterval:e.flushInterval,matchHeaders:e.matchHeaders,ignoreHeaders:e.ignoreHeaders,excludeHeaders:e.excludeHeaders,matchBody:e.matchBody,normalizeBody:e.normalizeBody,matchQuery:e.matchQuery,normalizeQuery:e.normalizeQuery,caseSensitive:e.caseSensitive,shouldRecord:e.shouldRecord,shouldPlayback:e.shouldPlayback,excludeUrls:e.excludeUrls}),this[f]=!1,(this[u]===`record`||this[u]===`update`||this[u]===`playback`&&e.excludeUrls&&e.excludeUrls.length>0)&&(this[p]=new n(e)),(this[u]===`playback`||this[u]===`update`)&&this[d]&&this.loadSnapshots().catch(()=>{})}dispatch(e,t){let n=this[u];if(this[l].isUrlExcluded(e))return this[p].dispatch(e,t);if(n===`playback`||n===`update`){if(!this[f])return this.#e(e,t);let r=this[l].findSnapshot(e);if(r)return this.#n(r,t);if(n===`update`)return this.#t(e,t);{let n=new o(`No snapshot found for ${e.method||`GET`} ${e.path}`);if(t.onResponseError){t.onResponseError(null,n);return}throw n}}if(n===`record`)return this.#t(e,t)}async#e(e,t){return await this.loadSnapshots(),this.dispatch(e,t)}#t(e,t){let n={statusCode:null,headers:{},trailers:{},body:[]},r=this;return this[p].dispatch(e,{onRequestStart(e,n){return t.onRequestStart(e,{...n,history:this.history})},onRequestUpgrade(e,n,r,i){return t.onRequestUpgrade(e,n,r,i)},onResponseStart(e,r,i,a){return n.statusCode=r,n.headers=i,t.onResponseStart(e,r,i,a)},onResponseData(e,r){return n.body.push(r),t.onResponseData(e,r)},onResponseEnd(i,a){n.trailers=a;let o=Buffer.concat(n.body);r[l].record(e,{statusCode:n.statusCode,headers:n.headers,body:o,trailers:n.trailers}).then(()=>t.onResponseEnd(i,a)).catch(e=>t.onResponseError(i,e))},onResponseError(e,n){return t.onResponseError(e,n)}})}#n(e,t){try{let{response:n}=e,r={rawHeaders:n.headers?s.toRawHeaders(n.headers):[],rawTrailers:n.trailers?s.toRawHeaders(n.trailers):[],pause(){},resume(){},abort(e){this.aborted=!0,this.reason=e},aborted:!1,paused:!1};t.onRequestStart(r),t.onResponseStart(r,n.statusCode,n.headers,n.statusMessage);let i=Buffer.from(n.body,`base64`);t.onResponseData(r,i),t.onResponseEnd(r,n.trailers)}catch(e){t.onResponseError?.(null,e)}}async loadSnapshots(e){await this[l].loadSnapshots(e||this[d]),this[f]=!0,this[u]===`playback`&&this.#r()}async saveSnapshots(e){return this[l].saveSnapshots(e||this[d])}#r(){for(let e of this[l].getSnapshots()){let{request:t,responses:n,response:r}=e,i=new URL(t.url),a=this.get(i.origin),o=n?n[0]:r;o&&a.intercept({path:i.pathname+i.search,method:t.method,headers:t.headers,body:t.body}).reply(o.statusCode,o.body,{headers:o.headers,trailers:o.trailers}).persist()}}getRecorder(){return this[l]}getMode(){return this[u]}clearSnapshots(){this[l].clear()}resetCallCounts(){this[l].resetCallCounts()}deleteSnapshot(e){return this[l].deleteSnapshot(e)}getSnapshotInfo(e){return this[l].getSnapshotInfo(e)}replaceSnapshots(e){this[l].replaceSnapshots(e)}async close(){this[u]===`playback`?this[l].destroy():await this[l].close(),await this[p]?.close(),await super.close()}}})),U=/* @__PURE__ */ a(((e,t)=>{let n=Symbol.for(`undici.globalDispatcher.2`),r=Symbol.for(`undici.globalDispatcher.1`),{InvalidArgumentError:i}=vi(),a=Zi(),o=Qi(),s;l()===void 0&&c(new a);function c(e){if(!e||typeof e.dispatch!=`function`)throw new i(`Argument agent must implement Agent`);try{Object.defineProperty(globalThis,n,{value:e,writable:!0,enumerable:!1,configurable:!1})}catch(t){if(t instanceof TypeError){s=e;return}throw t}try{let t=e instanceof o?e:new o(e);Object.defineProperty(globalThis,r,{value:t,writable:!0,enumerable:!1,configurable:!1})}catch(e){if(!(e instanceof TypeError))throw e}}function l(){return globalThis[n]??s}t.exports={setGlobalDispatcher:c,getGlobalDispatcher:l,installedExports:[`fetch`,`Headers`,`Response`,`Request`,`FormData`,`WebSocket`,`CloseEvent`,`ErrorEvent`,`MessageEvent`,`EventSource`]}})),Da=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`);n.exports=class{#e;#t=!1;#n=!1;#r=!1;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`handler must be an object`);this.#e=e}onRequestStart(...e){this.#e.onRequestStart?.(...e)}onRequestUpgrade(...e){return r(!this.#t),r(!this.#n),this.#e.onRequestUpgrade?.(...e)}onResponseStart(...e){return r(!this.#t),r(!this.#n),r(!this.#r),this.#r=!0,this.#e.onResponseStart?.(...e)}onResponseData(...e){return r(!this.#t),r(!this.#n),this.#e.onResponseData?.(...e)}onResponseEnd(...e){return r(!this.#t),r(!this.#n),this.#t=!0,this.#e.onResponseEnd?.(...e)}onResponseError(...e){return this.#n=!0,this.#e.onResponseError?.(...e)}onBodySent(...e){return this.#e.onBodySent?.(...e)}onRequestSent(...e){return this.#e.onRequestSent?.(...e)}}})),Oa=/* @__PURE__ */ a(((e,n)=>{let r=xi(),i=t(`node:assert`),{InvalidArgumentError:a}=vi(),{kRequestOrigin:o}=gi(),s=[300,301,302,303,307,308],c=()=>{};var l=class e{static buildDispatch(t,n){if(n!=null&&(!Number.isInteger(n)||n<0))throw new a(`maxRedirections must be a positive number`);let r=t.dispatch.bind(t);return(t,i)=>r(t,new e(r,n,t,i))}constructor(e,t,n,i){if(t!=null&&(!Number.isInteger(t)||t<0))throw new a(`maxRedirections must be a positive number`);if(n.throwOnMaxRedirect!=null&&typeof n.throwOnMaxRedirect!=`boolean`)throw new a(`throwOnMaxRedirect must be a boolean`);this.dispatch=e,this.location=null;let{maxRedirections:o,stripHeadersOnRedirect:s,stripHeadersOnCrossOriginRedirect:c,...l}=n;this.opts=l,this.opts.body=r.wrapRequestBody(this.opts.body),this.stripHeadersOnRedirect=d(s,`stripHeadersOnRedirect`),this.stripHeadersOnCrossOriginRedirect=d(c,`stripHeadersOnCrossOriginRedirect`),this.maxRedirections=t,this.handler=i,this.history=[]}onRequestStart(e,t){this.handler.onRequestStart?.(e,{...t,history:this.history})}onBodySent(e){this.handler.onBodySent?.(e)}onRequestSent(){this.handler.onRequestSent?.()}onRequestUpgrade(e,t,n,r){this.handler.onRequestUpgrade?.(e,t,n,r)}onResponseStart(e,t,n,i){if(t<200){this.handler.onResponseStart?.(e,t,n,i);return}if(this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections)throw Error(`max redirects`);let l=t===303;(t===301||t===302)&&this.opts.method===`POST`&&(this.opts.method=`GET`,r.isStream(this.opts.body)&&r.destroy(this.opts.body.on(`error`,c)),this.opts.body=null,l=!0),t===303&&this.opts.method!==`HEAD`&&(this.opts.method=`GET`,r.isStream(this.opts.body)&&r.destroy(this.opts.body.on(`error`,c)),this.opts.body=null),this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)||s.indexOf(t)===-1?null:n.location;let u=this.opts[o]===void 0?this.opts.origin:this.opts[o];if(u&&this.history.push(new URL(this.opts.path,u)),!this.location){this.handler.onResponseStart?.(e,t,n,i);return}let d=u?new URL(this.opts.path,u):void 0,{origin:p,pathname:m,search:h}=r.parseURL(new URL(this.location,d)),g=h?`${m}${h}`:m,v=`${p}${g}`;for(let e of this.history)if(e.toString()===v)throw new a(`Redirect loop detected. Cannot redirect to ${p}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`);this.opts.headers=f(this.opts.headers,l,u!==p,this.stripHeadersOnRedirect,this.stripHeadersOnCrossOriginRedirect),this.opts.path=g,this.opts.origin=p,this.opts[o]=p,this.opts.query=null}onResponseData(e,t){this.location||this.handler.onResponseData?.(e,t)}onResponseEnd(e,t){this.location?this.dispatch(this.opts,this):this.handler.onResponseEnd(e,t)}onResponseError(e,t){this.handler.onResponseError?.(e,t)}};function u(e,t,n,i,a){let o=r.headerNameToString(e);return o===`host`||i?.has(o)||n&&a?.has(o)||t&&o.startsWith(`content-`)?!0:n?o===`authorization`||o===`cookie`||o===`proxy-authorization`:!1}function d(e,t){if(e==null)return null;if(!Array.isArray(e))throw new a(`${t} must be an array`);let n=/* @__PURE__ */ new Set;for(let i of e){if(typeof i!=`string`)throw new a(`${t} must contain header names`);n.add(r.headerNameToString(i))}return n}function f(e,t,n,a,o){let s=[];if(Array.isArray(e))for(let r=0;r{let n=Oa();function r({maxRedirections:e,throwOnMaxRedirect:t,stripHeadersOnRedirect:r,stripHeadersOnCrossOriginRedirect:i}={}){return a=>function(o,s){let{maxRedirections:c=e,throwOnMaxRedirect:l=t,stripHeadersOnRedirect:u=r,stripHeadersOnCrossOriginRedirect:d=i,...f}=o;if(c==null||c===0)return a(o,s);let p={...f,throwOnMaxRedirect:l,stripHeadersOnRedirect:u,stripHeadersOnCrossOriginRedirect:d};return a(p,new n(a,c,p,s))}}t.exports=r})),Aa=/* @__PURE__ */ a(((e,t)=>{let n=Da(),{ResponseError:r}=vi();var i=class extends n{#e;#t;#n;#r;#i;constructor(e,{handler:t}){super(t)}#a(e){return(this.#t??``).indexOf(e)===0}onRequestStart(e,t){return this.#e=0,this.#t=null,this.#n=null,this.#r=null,this.#i=``,super.onRequestStart(e,t)}onResponseStart(e,t,n,r){if(this.#e=t,this.#r=n,this.#t=n[`content-type`],this.#e<400)return super.onResponseStart(e,t,n,r);(this.#a(`application/json`)||this.#a(`text/plain`))&&(this.#n=new TextDecoder(`utf-8`))}onResponseData(e,t){if(this.#e<400)return super.onResponseData(e,t);this.#i+=this.#n?.decode(t,{stream:!0})??``}onResponseEnd(e,t){if(this.#e>=400){if(this.#i+=this.#n?.decode(void 0,{stream:!1})??``,this.#a(`application/json`))try{this.#i=JSON.parse(this.#i)}catch{}let t,n=Error.stackTraceLimit;Error.stackTraceLimit=0;try{t=new r(`Response Error`,this.#e,{body:this.#i,headers:this.#r})}finally{Error.stackTraceLimit=n}super.onResponseError(e,t)}else super.onResponseEnd(e,t)}onResponseError(e,t){super.onResponseError(e,t)}};t.exports=()=>e=>function(t,n){return e(t,new i(t,{handler:n}))}})),ja=/* @__PURE__ */ a(((e,t)=>{let n=ia();t.exports=e=>t=>function(r,i){return t(r,new n({...r,retryOptions:{...e,...r.retryOptions}},{handler:i,dispatch:t}))}})),Ma=/* @__PURE__ */ a(((e,t)=>{let{InvalidArgumentError:n,RequestAbortedError:r}=vi(),i=Da();var a=class extends i{#e=1048576;#t=!1;#n=0;aborted=!1;reason=!1;constructor({maxSize:e,signal:t},r){if(e!=null&&(!Number.isFinite(e)||e<1))throw new n(`maxSize must be a number greater than 0`);super(r),this.#e=e??this.#e}#r(e){this.aborted=!0,this.reason=e}onRequestStart(e,t){return e.abort=this.#r.bind(this),super.onRequestStart(e,t)}onResponseStart(e,t,n,i){let a=n[`content-length`];if(a!=null&&a>this.#e)throw new r(`Response size (${a}) larger than maxSize (${this.#e})`);return this.aborted===!0||super.onResponseStart(e,t,n,i)}onResponseError(e,t){super.onResponseError(e,this.aborted===!0?this.reason:t)}onResponseData(e,t){if(this.#n+=t.length,this.#n>this.#e)throw new r(`Response size (${this.#n}) larger than maxSize (${this.#e})`);return this.#n===this.#e&&(this.#t=!0),!0}onResponseEnd(e,t){this.aborted===!0?super.onResponseError(e,this.reason):super.onResponseEnd(e,this.#t?{}:t)}};function o({maxSize:e}={maxSize:1048576}){return t=>function(n,r){let{dumpMaxSize:i=e}=n;return t(n,new a({maxSize:i,signal:n.signal},r))}}t.exports=o})),Na=/* @__PURE__ */ a(((e,n)=>{let{isIP:r}=t(`node:net`),{lookup:i}=t(`node:dns`),a=Da(),{InvalidArgumentError:o,InformationalError:s}=vi(),{kRequestOrigin:c}=gi(),l=2**31-1;function u(e){let t=Object.getPrototypeOf(e);return Object.hasOwn(e,Symbol.iterator)||t!=null&&t!==Object.prototype&&typeof e[Symbol.iterator]==`function`}function d(e){return typeof e==`string`&&e.toLowerCase()===`host`}function f(e){if(e==null)return null;if(Array.isArray(e)){if(e.length===0||!Array.isArray(e[0]))return e;let t=[];for(let n of e)Array.isArray(n)&&n.length===2?t.push(n[0],n[1]):t.push(n);return t}if(typeof e==`object`&&u(e)){let t=[];for(let n of e)Array.isArray(n)&&n.length===2?t.push(n[0],n[1]):t.push(n);return t}return e}function p(e){if(e==null)return!1;if(Array.isArray(e)){if(e.length===0)return!1;for(let t=0;t=this.#e}},g=class{#e=0;#t=0;dualStack=!0;affinity=null;lookup=null;pick=null;storage=null;constructor(e){this.#e=e.maxTTL,this.#t=e.maxItems,this.dualStack=e.dualStack,this.affinity=e.affinity,this.lookup=e.lookup??this.#n,this.pick=e.pick??this.#r,this.storage=e.storage??new h(e)}runLookup(e,t,n){let r=this.storage.get(e.hostname);if(r==null&&this.storage.full()){n(null,e);return}let i={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#e,maxItems:this.#t};if(r==null)this.lookup(e,i,(t,r)=>{if(t||r==null||r.length===0){n(t??new s(`No DNS entries found`));return}this.setRecords(e,r);let a=this.storage.get(e.hostname),o=this.pick(e,a,i.affinity),c;c=typeof o.port==`number`?`:${o.port}`:e.port===``?``:`:${e.port}`,n(null,new URL(`${e.protocol}//${o.family===6?`[${o.address}]`:o.address}${c}`))});else{let a=this.pick(e,r,i.affinity);if(a==null){this.storage.delete(e.hostname),this.runLookup(e,t,n);return}let o;o=typeof a.port==`number`?`:${a.port}`:e.port===``?``:`:${e.port}`,n(null,new URL(`${e.protocol}//${a.family===6?`[${a.address}]`:a.address}${o}`))}}#n(e,t,n){i(e.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:`ipv4first`},(e,t)=>{if(e)return n(e);let r=/* @__PURE__ */ new Map;for(let e of t)r.set(`${e.address}:${e.family}`,e);n(null,r.values())})}#r(e,t,n){let r=null,{records:i,offset:a}=t,o;if(this.dualStack?(n??(a==null||a===l?(t.offset=0,n=4):(t.offset++,n=(t.offset&1)==1?6:4)),o=i[n]!=null&&i[n].ips.length>0?i[n]:i[n===4?6:4]):o=i[n],o==null||o.ips.length===0)return r;o.offset==null||o.offset===l?o.offset=0:o.offset++;let s=o.offset%o.ips.length;return r=o.ips[s]??null,r==null?r:Date.now()-r.timestamp>r.ttl?(o.ips.splice(s,1),this.pick(e,t,n)):r}pickFamily(e,t){let n=this.storage.get(e.hostname)?.records;if(!n)return null;let r=n[t];if(!r)return null;r.offset==null||r.offset===l?r.offset=0:r.offset++;let i=r.offset%r.ips.length,a=r.ips[i]??null;return a==null||Date.now()-a.timestamp>a.ttl&&r.ips.splice(i,1),a}setRecords(e,t){let n=Date.now(),r={records:{4:null,6:null}},i=this.#e;for(let e of t){e.timestamp=n,typeof e.ttl==`number`?(e.ttl=Math.min(e.ttl,this.#e),i=Math.min(i,e.ttl)):e.ttl=this.#e;let t=r.records[e.family]??{ips:[]};t.ips.push(e),r.records[e.family]=t}this.storage.set(e.hostname,r,{ttl:i})}deleteRecords(e){this.storage.delete(e.hostname)}getHandler(e,t){return new v(this,e,t)}},v=class extends a{#e=null;#t=null;#n=null;#r=null;#i=null;#a=!0;constructor(e,{origin:t,handler:n,dispatch:r,newOrigin:i},a){super(n),this.#r=t,this.#i=i,this.#t={...a},this.#e=e,this.#n=r}onResponseError(e,t){switch(t.code){case`ETIMEDOUT`:case`ECONNREFUSED`:if(this.#e.dualStack){if(!this.#a){super.onResponseError(e,t);return}this.#a=!1;let n=this.#i.hostname[0]===`[`?4:6,r=this.#e.pickFamily(this.#r,n);if(r==null){super.onResponseError(e,t);return}let i;i=typeof r.port==`number`?`:${r.port}`:this.#r.port===``?``:`:${this.#r.port}`;let a={...this.#t,origin:`${this.#r.protocol}//${r.family===6?`[${r.address}]`:r.address}${i}`,[c]:this.#t[c]===void 0?this.#r:this.#t[c],headers:m(this.#r.host,this.#t.headers)};this.#n(a,this);return}super.onResponseError(e,t);break;case`ENOTFOUND`:this.#e.deleteRecords(this.#r),super.onResponseError(e,t);break;default:super.onResponseError(e,t)}}};n.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!=`number`||e?.maxTTL<0))throw new o(`Invalid maxTTL. Must be a positive number`);if(e?.maxItems!=null&&(typeof e?.maxItems!=`number`||e?.maxItems<1))throw new o(`Invalid maxItems. Must be a positive number and greater than zero`);if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new o(`Invalid affinity. Must be either 4 or 6`);if(e?.dualStack!=null&&typeof e?.dualStack!=`boolean`)throw new o(`Invalid dualStack. Must be a boolean`);if(e?.lookup!=null&&typeof e?.lookup!=`function`)throw new o(`Invalid lookup. Must be a function`);if(e?.pick!=null&&typeof e?.pick!=`function`)throw new o(`Invalid pick. Must be a function`);if(e?.storage!=null&&(typeof e?.storage?.get!=`function`||typeof e?.storage?.set!=`function`||typeof e?.storage?.full!=`function`||typeof e?.storage?.delete!=`function`))throw new o(`Invalid storage. Must be a object with methods: { get, set, full, delete }`);let t=e?.dualStack??!0,n;n=t?e?.affinity??null:e?.affinity??4;let i=new g({maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:n,maxItems:e?.maxItems??1/0,storage:e?.storage});return e=>function(t,n){if(t.origin==null)return e(t,n);let a=t.origin.constructor===URL?t.origin:new URL(t.origin);return r(a.hostname)===0?(i.runLookup(a,t,(r,o)=>{if(r)return n.onResponseError(null,r);e({...t,servername:a.hostname,origin:o.origin,[c]:t[c]===void 0?a:t[c],headers:m(a.host,t.headers)},i.getHandler({origin:a,dispatch:e,handler:n,newOrigin:o},t))}),!0):e(t,n)}}})),Pa=/* @__PURE__ */ a(((e,t)=>{let{safeHTTPMethods:n,pathHasQueryOrFragment:r,hasSafeIterator:i,isValidHTTPToken:a}=xi(),{serializePathWithQuery:o}=xi(),{kRequestOrigin:s}=gi(),c=[`no-store`,`private`,`no-cache`],l=Symbol(`invalid cache-control directives`);function u(e){return e.replace(/^[\t ]+|[\t ]+$/g,``)}function d(e,t){for(let n=0;ns}),c=e+1);return t.push({value:o.substring(c),fromMalformedQuote:c>s}),t}function g(e,t){let n=e[l];n===void 0&&(n=/* @__PURE__ */ new Set,Object.defineProperty(e,l,{value:n})),n.add(t)}function v(e,t){return e[l]?.has(t)===!0}function y(e){for(let t of c)if(e.startsWith(t)&&e.length>t.length&&!a(e[t.length]))return t;let t=``,n=!1;for(let r=0;r=2&&h[0]===`"`&&h[h.length-1]===`"`&&(h=h.substring(1,h.length-1)),!/^[0-9]+$/.test(h))){delete t[d],n.add(d),g(t,d);continue}let e=Math.min(parseInt(h,10),2147483647);d===`min-fresh`?(!(d in t)||t[d]e)&&(t[d]=e);break}case`private`:case`no-cache`:if(c||h!==void 0&&h.length===0){t[d]=!0;break}if(h){if(h[0]===`"`){h=p(h);let n=``,r=e,o=!1,s=m(h,1);if(s!==-1)n=h.substring(1,s),o=!0;else{let t=[h.substring(1)];for(let n=e+1;n{function n(e){switch(e[3]){case`,`:return i(e);case` `:return a(e);default:return o(e)}}function r(e,t,n,r,i,a,o){let s=new Date(Date.UTC(e,t,n,r,i,a));return e>=0&&e<=99&&s.setUTCFullYear(e),s.getUTCFullYear()===e&&s.getUTCMonth()===t&&s.getUTCDate()===n&&s.getUTCHours()===r&&s.getUTCMinutes()===i&&s.getUTCSeconds()===a&&s.getUTCDay()===o?s:void 0}function i(e){if(e.length!==29||e[4]!==` `||e[7]!==` `||e[11]!==` `||e[16]!==` `||e[19]!==`:`||e[22]!==`:`||e[25]!==` `||e[26]!==`G`||e[27]!==`M`||e[28]!==`T`)return;let t=-1;if(e[0]===`S`&&e[1]===`u`&&e[2]===`n`)t=0;else if(e[0]===`M`&&e[1]===`o`&&e[2]===`n`)t=1;else if(e[0]===`T`&&e[1]===`u`&&e[2]===`e`)t=2;else if(e[0]===`W`&&e[1]===`e`&&e[2]===`d`)t=3;else if(e[0]===`T`&&e[1]===`h`&&e[2]===`u`)t=4;else if(e[0]===`F`&&e[1]===`r`&&e[2]===`i`)t=5;else if(e[0]===`S`&&e[1]===`a`&&e[2]===`t`)t=6;else return;let n=0;if(e[5]===`0`){let t=e.charCodeAt(6);if(t<49||t>57)return;n=t-48}else{let t=e.charCodeAt(5);if(t<49||t>51)return;let r=e.charCodeAt(6);if(r<48||r>57)return;n=(t-48)*10+(r-48)}let i=-1;if(e[8]===`J`&&e[9]===`a`&&e[10]===`n`)i=0;else if(e[8]===`F`&&e[9]===`e`&&e[10]===`b`)i=1;else if(e[8]===`M`&&e[9]===`a`){if(e[10]===`r`)i=2;else if(e[10]===`y`)i=4;else return}else if(e[8]===`J`){if(e[9]===`a`&&e[10]===`n`)i=0;else if(e[9]===`u`){if(e[10]===`n`)i=5;else if(e[10]===`l`)i=6;else return}else return}else if(e[8]===`A`){if(e[9]===`p`&&e[10]===`r`)i=3;else if(e[9]===`u`&&e[10]===`g`)i=7;else return}else if(e[8]===`S`&&e[9]===`e`&&e[10]===`p`)i=8;else if(e[8]===`O`&&e[9]===`c`&&e[10]===`t`)i=9;else if(e[8]===`N`&&e[9]===`o`&&e[10]===`v`)i=10;else if(e[8]===`D`&&e[9]===`e`&&e[10]===`c`)i=11;else return;let a=e.charCodeAt(12);if(a<48||a>57)return;let o=e.charCodeAt(13);if(o<48||o>57)return;let s=e.charCodeAt(14);if(s<48||s>57)return;let c=e.charCodeAt(15);if(c<48||c>57)return;let l=(a-48)*1e3+(o-48)*100+(s-48)*10+(c-48),u=0;if(e[17]===`0`){let t=e.charCodeAt(18);if(t<48||t>57)return;u=t-48}else{let t=e.charCodeAt(17);if(t<48||t>50)return;let n=e.charCodeAt(18);if(n<48||n>57||t===50&&n>51)return;u=(t-48)*10+(n-48)}let d=0;if(e[20]===`0`){let t=e.charCodeAt(21);if(t<48||t>57)return;d=t-48}else{let t=e.charCodeAt(20);if(t<48||t>53)return;let n=e.charCodeAt(21);if(n<48||n>57)return;d=(t-48)*10+(n-48)}let f=0;if(e[23]===`0`){let t=e.charCodeAt(24);if(t<48||t>57)return;f=t-48}else{let t=e.charCodeAt(23);if(t<48||t>53)return;let n=e.charCodeAt(24);if(n<48||n>57)return;f=(t-48)*10+(n-48)}return r(l,i,n,u,d,f,t)}function a(e){if(e.length!==24||e[7]!==` `||e[10]!==` `||e[19]!==` `)return;let t=-1;if(e[0]===`S`&&e[1]===`u`&&e[2]===`n`)t=0;else if(e[0]===`M`&&e[1]===`o`&&e[2]===`n`)t=1;else if(e[0]===`T`&&e[1]===`u`&&e[2]===`e`)t=2;else if(e[0]===`W`&&e[1]===`e`&&e[2]===`d`)t=3;else if(e[0]===`T`&&e[1]===`h`&&e[2]===`u`)t=4;else if(e[0]===`F`&&e[1]===`r`&&e[2]===`i`)t=5;else if(e[0]===`S`&&e[1]===`a`&&e[2]===`t`)t=6;else return;let n=-1;if(e[4]===`J`&&e[5]===`a`&&e[6]===`n`)n=0;else if(e[4]===`F`&&e[5]===`e`&&e[6]===`b`)n=1;else if(e[4]===`M`&&e[5]===`a`){if(e[6]===`r`)n=2;else if(e[6]===`y`)n=4;else return}else if(e[4]===`J`){if(e[5]===`a`&&e[6]===`n`)n=0;else if(e[5]===`u`){if(e[6]===`n`)n=5;else if(e[6]===`l`)n=6;else return}else return}else if(e[4]===`A`){if(e[5]===`p`&&e[6]===`r`)n=3;else if(e[5]===`u`&&e[6]===`g`)n=7;else return}else if(e[4]===`S`&&e[5]===`e`&&e[6]===`p`)n=8;else if(e[4]===`O`&&e[5]===`c`&&e[6]===`t`)n=9;else if(e[4]===`N`&&e[5]===`o`&&e[6]===`v`)n=10;else if(e[4]===`D`&&e[5]===`e`&&e[6]===`c`)n=11;else return;let i=0;if(e[8]===` `){let t=e.charCodeAt(9);if(t<49||t>57)return;i=t-48}else{let t=e.charCodeAt(8);if(t<49||t>51)return;let n=e.charCodeAt(9);if(n<48||n>57)return;i=(t-48)*10+(n-48)}let a=0;if(e[11]===`0`){let t=e.charCodeAt(12);if(t<48||t>57)return;a=t-48}else{let t=e.charCodeAt(11);if(t<48||t>50)return;let n=e.charCodeAt(12);if(n<48||n>57||t===50&&n>51)return;a=(t-48)*10+(n-48)}let o=0;if(e[14]===`0`){let t=e.charCodeAt(15);if(t<48||t>57)return;o=t-48}else{let t=e.charCodeAt(14);if(t<48||t>53)return;let n=e.charCodeAt(15);if(n<48||n>57)return;o=(t-48)*10+(n-48)}let s=0;if(e[17]===`0`){let t=e.charCodeAt(18);if(t<48||t>57)return;s=t-48}else{let t=e.charCodeAt(17);if(t<48||t>53)return;let n=e.charCodeAt(18);if(n<48||n>57)return;s=(t-48)*10+(n-48)}let c=e.charCodeAt(20);if(c<48||c>57)return;let l=e.charCodeAt(21);if(l<48||l>57)return;let u=e.charCodeAt(22);if(u<48||u>57)return;let d=e.charCodeAt(23);if(!(d<48||d>57))return r((c-48)*1e3+(l-48)*100+(u-48)*10+(d-48),n,i,a,o,s,t)}function o(e){let t=-1,n=-1;if(e[0]===`S`)e[1]===`u`&&e[2]===`n`&&e[3]===`d`&&e[4]===`a`&&e[5]===`y`?(n=0,t=6):e[1]===`a`&&e[2]===`t`&&e[3]===`u`&&e[4]===`r`&&e[5]===`d`&&e[6]===`a`&&e[7]===`y`&&(n=6,t=8);else if(e[0]===`M`&&e[1]===`o`&&e[2]===`n`&&e[3]===`d`&&e[4]===`a`&&e[5]===`y`)n=1,t=6;else if(e[0]===`T`)e[1]===`u`&&e[2]===`e`&&e[3]===`s`&&e[4]===`d`&&e[5]===`a`&&e[6]===`y`?(n=2,t=7):e[1]===`h`&&e[2]===`u`&&e[3]===`r`&&e[4]===`s`&&e[5]===`d`&&e[6]===`a`&&e[7]===`y`&&(n=4,t=8);else if(e[0]===`W`&&e[1]===`e`&&e[2]===`d`&&e[3]===`n`&&e[4]===`e`&&e[5]===`s`&&e[6]===`d`&&e[7]===`a`&&e[8]===`y`)n=3,t=9;else if(e[0]===`F`&&e[1]===`r`&&e[2]===`i`&&e[3]===`d`&&e[4]===`a`&&e[5]===`y`)n=5,t=6;else return;if(e[t]!==`,`||e.length-t-1!=23||e[t+1]!==` `||e[t+4]!==`-`||e[t+8]!==`-`||e[t+11]!==` `||e[t+14]!==`:`||e[t+17]!==`:`||e[t+20]!==` `||e[t+21]!==`G`||e[t+22]!==`M`||e[t+23]!==`T`)return;let i=0;if(e[t+2]===`0`){let n=e.charCodeAt(t+3);if(n<49||n>57)return;i=n-48}else{let n=e.charCodeAt(t+2);if(n<49||n>51)return;let r=e.charCodeAt(t+3);if(r<48||r>57)return;i=(n-48)*10+(r-48)}let a=-1;if(e[t+5]===`J`&&e[t+6]===`a`&&e[t+7]===`n`)a=0;else if(e[t+5]===`F`&&e[t+6]===`e`&&e[t+7]===`b`)a=1;else if(e[t+5]===`M`&&e[t+6]===`a`&&e[t+7]===`r`)a=2;else if(e[t+5]===`A`&&e[t+6]===`p`&&e[t+7]===`r`)a=3;else if(e[t+5]===`M`&&e[t+6]===`a`&&e[t+7]===`y`)a=4;else if(e[t+5]===`J`&&e[t+6]===`u`&&e[t+7]===`n`)a=5;else if(e[t+5]===`J`&&e[t+6]===`u`&&e[t+7]===`l`)a=6;else if(e[t+5]===`A`&&e[t+6]===`u`&&e[t+7]===`g`)a=7;else if(e[t+5]===`S`&&e[t+6]===`e`&&e[t+7]===`p`)a=8;else if(e[t+5]===`O`&&e[t+6]===`c`&&e[t+7]===`t`)a=9;else if(e[t+5]===`N`&&e[t+6]===`o`&&e[t+7]===`v`)a=10;else if(e[t+5]===`D`&&e[t+6]===`e`&&e[t+7]===`c`)a=11;else return;let o=e.charCodeAt(t+9);if(o<48||o>57)return;let s=e.charCodeAt(t+10);if(s<48||s>57)return;let c=(o-48)*10+(s-48);c+=c<70?2e3:1900;let l=0;if(e[t+12]===`0`){let n=e.charCodeAt(t+13);if(n<48||n>57)return;l=n-48}else{let n=e.charCodeAt(t+12);if(n<48||n>50)return;let r=e.charCodeAt(t+13);if(r<48||r>57||n===50&&r>51)return;l=(n-48)*10+(r-48)}let u=0;if(e[t+15]===`0`){let n=e.charCodeAt(t+16);if(n<48||n>57)return;u=n-48}else{let n=e.charCodeAt(t+15);if(n<48||n>53)return;let r=e.charCodeAt(t+16);if(r<48||r>57)return;u=(n-48)*10+(r-48)}let d=0;if(e[t+18]===`0`){let n=e.charCodeAt(t+19);if(n<48||n>57)return;d=n-48}else{let n=e.charCodeAt(t+18);if(n<48||n>53)return;let r=e.charCodeAt(t+19);if(r<48||r>57)return;d=(n-48)*10+(r-48)}return r(c,a,i,l,u,d,n)}t.exports={parseHttpDate:n}})),Ia=/* @__PURE__ */ a(((e,t)=>{let n=xi(),{parseCacheControlHeader:r,hasInvalidCacheControlDirective:i,parseVaryHeader:a,hasVaryStar:o,isInvalidOrWildcardVaryHeader:s,isEtagUsable:c}=Pa(),{parseHttpDate:l}=Fa();function u(){}let d=[200,203,204,206,300,301,308,404,405,410,414,501],f=[206],p=2147483647e3;function m(e){return e.replace(/^[\t ]+|[\t ]+$/g,``)}function h(e,t){for(let n=0;nthis.#i.onResponseStart?.(e,t,i,o),u=this;if(!h(n.safeHTTPMethods,this.#e.method)&&t>=200&&t<=399)return x(this.#r,this.#e,i),l();let f=i[`cache-control`],m=f?r(f):{};if(T(this.#t,i,m))return C(this.#r,this.#e),l();let g=i[`last-modified`]&&h(d,t);if(!f&&!i.expires&&!g&&!this.#n)return t===304&&i.vary&&s(i.vary)&&C(this.#r,this.#e),l();if(!E(this.#t,this.#e.method,t,i,m,this.#e.headers))return t===304&&(f||T(this.#t,i,m))&&C(this.#r,this.#e),l();let v=Date.now(),y=Object.hasOwn(i,`age`)?O(i.age):void 0;if(y!==void 0&&y>=p)return w(t,this.#r,this.#e),l();let b=Object.hasOwn(i,`date`)?D(i.date):void 0;if(b===null)return w(t,this.#r,this.#e),l();let S=b?Math.max(0,v-b.getTime()):0,M=Math.max(S,y??0),N=typeof i.etag==`string`&&c(i.etag)||typeof i[`last-modified`]==`string`,P=k(this.#t,v,y,i,b,m,N)??this.#n,F=P===0&&N;if(P===void 0||M>=P&&!F)return(f||P!==void 0)&&w(t,this.#r,this.#e),l();let I=v-M,ee=P+I;if(v>=ee&&!F)return w(t,this.#r,this.#e),l();let L;if(this.#e.headers&&i.vary&&(L=a(i.vary,this.#e.headers),!L))return l();let R=I,te=A(I,v,m,ee),ne=j(i,m),re={statusCode:t,statusMessage:o,headers:ne,vary:L,cacheControlDirectives:m,cachedAt:R,staleAt:ee,deleteAt:te};if(t===304){let t=t=>{if(!t)return l();if(re.statusCode=t.statusCode,re.statusMessage=t.statusMessage,re.etag=t.etag,re.vary=L??t.vary,re.headers={...t.headers,...ne},l(),this.#a=this.#r.createWriteStream(this.#e,re),this.#a&&t?.body){if(typeof t.body.values==`function`){let n=t.body.values(),r=()=>{for(let t of n){let n=this.#a.write(t)===!1;if(this.#i.onResponseData?.(e,t),n)break}};this.#a.on(`error`,function(){u.#a=void 0,u.#r.delete(u.#e)}).on(`drain`,()=>{r()}).on(`close`,function(){u.#a===this&&(u.#a=void 0)}),r()}else typeof t.body.on==`function`&&(t.body.on(`data`,t=>{this.#a.write(t),this.#i.onResponseData?.(e,t)}).on(`end`,()=>{this.#a.end()}).on(`error`,()=>{this.#a=void 0,this.#r.delete(this.#e)}),this.#a.on(`error`,function(){u.#a=void 0,u.#r.delete(u.#e)}).on(`close`,function(){u.#a===this&&(u.#a=void 0)}))}},n=this.#r.get(this.#e);n&&typeof n.then==`function`?n.then(t):t(n)}else{if(typeof i.etag==`string`&&c(i.etag)&&(re.etag=i.etag),this.#a=this.#r.createWriteStream(this.#e,re),!this.#a)return l();this.#a.on(`drain`,()=>e.resume()).on(`error`,function(){u.#a=void 0,u.#r.delete(u.#e)}).on(`close`,function(){u.#a===this&&(u.#a=void 0),e.resume()}),l()}}onResponseData(e,t){this.#a?.write(t)===!1&&e.pause(),this.#i.onResponseData?.(e,t)}onResponseEnd(e,t){this.#a?.end(),this.#i.onResponseEnd?.(e,t)}onResponseError(e,t){this.#a?.destroy(t),this.#a=void 0,this.#i.onResponseError?.(e,t)}};function C(e,t){try{e.delete(t)?.catch?.(u)}catch{}}function w(e,t,n){e===304&&C(t,n)}function T(e,t,n){return n[`no-store`]===!0||e===`shared`&&(n.private===!0||Object.hasOwn(t,`set-cookie`))||(t.vary?s(t.vary):!1)}function E(e,t,r,i,a,s){return!(!h(n.safeHTTPMethods,t)||r<200||h(f,r)||!h(d,r)&&!i.expires&&!a.public&&a[`max-age`]===void 0&&!(a.private&&e===`private`)&&(a[`s-maxage`]===void 0||e!==`shared`)||a[`no-store`]||e===`shared`&&(a.private===!0||Object.hasOwn(i,`set-cookie`))||i.vary&&o(i.vary)||s!=null&&Object.hasOwn(s,`authorization`)&&(!a.public&&!a[`s-maxage`]&&!a[`must-revalidate`]||typeof s.authorization!=`string`||Array.isArray(a[`no-cache`])&&h(a[`no-cache`],`authorization`)||Array.isArray(a.private)&&h(a.private,`authorization`)))}function D(e){let t=e;if(Array.isArray(t)){if(t.length!==1)return null;t=t[0]}return typeof t==`string`?l(t):null}function O(e){let t=e;if(Array.isArray(t)){if(t.length!==1)return p;t=t[0]}if(typeof t!=`string`||!/^[\t ]*[0-9]+[\t ]*$/.test(t))return p;let n=BigInt(t.replace(/^[\t ]+|[\t ]+$/g,``));return n>=BigInt(p/1e3)?p:Number(n)*1e3}function k(e,t,n,r,a,o,s){if(e===`shared`){if(i(o,`s-maxage`))return 0;let e=o[`s-maxage`];if(e!==void 0)return e>0?e*1e3:0}if(i(o,`max-age`))return 0;let c=o[`max-age`];if(c!==void 0)return c>0?c*1e3:0;if(Object.hasOwn(r,`expires`)){if(typeof r.expires!=`string`)return 0;let e=l(r.expires);if(!e||t>=e.getTime())return 0;if(a){if(a>=e)return 0;let t=e.getTime()-a.getTime();return n!==void 0&&n>=t?0:t}return e.getTime()-t}if(typeof r[`last-modified`]==`string`){let e=l(r[`last-modified`]);if(e)return e.getTime()>=t?void 0:(t-e.getTime())*.1}if(o.immutable)return 31536e6;if(o[`no-cache`]===!0&&s)return 0}function A(e,t,n,r){let i=-1/0,a=-1/0,o=-1/0;if(n[`stale-while-revalidate`]&&(i=r+n[`stale-while-revalidate`]*1e3),n[`stale-if-error`]&&(a=r+n[`stale-if-error`]*1e3),n.immutable&&i===-1/0&&a===-1/0&&(o=t+31536e6),i===-1/0&&a===-1/0&&o===-1/0){let n=r-e;if(n<=0)return t+864e5;let i=Math.min(Math.max(t-e,0),1e3);return r+n+i}return Math.max(r,i,a,o)}function j(e,t){let n=[`connection`,`proxy-authenticate`,`proxy-authentication-info`,`proxy-authorization`,`proxy-connection`,`te`,`transfer-encoding`,`upgrade`,`age`];e.connection&&g(n,e.connection),Array.isArray(t[`no-cache`])&&n.push(...t[`no-cache`]),Array.isArray(t.private)&&n.push(...t.private);let r;for(let t of n)Object.hasOwn(e,t)&&(r??={...e},delete r[t]);return r??e}t.exports=S})),La=/* @__PURE__ */ a(((e,n)=>{let{Writable:r}=t(`node:stream`),{EventEmitter:i}=t(`node:events`),{assertCacheKey:a,assertCacheValue:o}=Pa();var s=class extends i{#e=1024;#t=104857600;#n=5242880;#r=0;#i=0;#a=/* @__PURE__ */ new Map;#o=!1;constructor(e){if(super(),e){if(typeof e!=`object`)throw TypeError(`MemoryCacheStore options must be an object`);if(e.maxCount!==void 0){if(typeof e.maxCount!=`number`||!Number.isInteger(e.maxCount)||e.maxCount<0)throw TypeError(`MemoryCacheStore options.maxCount must be a non-negative integer`);this.#e=e.maxCount}if(e.maxSize!==void 0){if(typeof e.maxSize!=`number`||!Number.isInteger(e.maxSize)||e.maxSize<0)throw TypeError(`MemoryCacheStore options.maxSize must be a non-negative integer`);this.#t=e.maxSize}if(e.maxEntrySize!==void 0){if(typeof e.maxEntrySize!=`number`||!Number.isInteger(e.maxEntrySize)||e.maxEntrySize<0)throw TypeError(`MemoryCacheStore options.maxEntrySize must be a non-negative integer`);this.#n=e.maxEntrySize}}}get size(){return this.#r}isFull(){return this.#r>=this.#t||this.#i>=this.#e}get(e){a(e);let t=`${e.origin}:${e.path}`,n=Date.now(),r=this.#a.get(t),i=r?c(e,r,n):null;return i==null?void 0:{statusMessage:i.statusMessage,statusCode:i.statusCode,headers:i.headers,body:i.body,vary:i.vary?i.vary:void 0,etag:i.etag,cacheControlDirectives:i.cacheControlDirectives,cachedAt:i.cachedAt,staleAt:i.staleAt,deleteAt:i.deleteAt}}createWriteStream(e,t){a(e),o(t);let n=`${e.origin}:${e.path}`,i=this,s={...e,...t,body:[],size:0};return new r({write(e,t,n){typeof e==`string`&&(e=Buffer.from(e,t)),s.size+=e.byteLength,s.size>i.#n?this.destroy():s.body.push(e),n(null)},final(t){let r=i.#a.get(n);r||(r=[],i.#a.set(n,r));let a=c(e,r,Date.now());if(a){let e=r.indexOf(a);r.splice(e,1,s),i.#r-=a.size}else r.push(s),i.#i+=1;if(i.#r+=s.size,i.#r>i.#t||i.#i>i.#e){i.#o||=(i.emit(`maxSizeExceeded`,{size:i.#r,maxSize:i.#t,count:i.#i,maxCount:i.#e}),!0);for(let[e,t]of i.#a){for(let e of t.splice(0,Math.ceil(t.length/2)))i.#r-=e.size,--i.#i;t.length===0&&i.#a.delete(e)}i.#rn&&i.method===e.method&&l(e,i))return i}}function l(e,t){if(t.vary==null)return!0;for(let n in t.vary)if(Object.hasOwn(t.vary,n)&&!u(e.headers?.[n],t.vary[n]))return!1;return!0}function u(e,t){if(e==null&&t==null)return!0;if(e==null&&t!=null||e!=null&&t==null)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n{let r=t(`node:assert`);n.exports=class{#e=!1;#t;#n;#r;#i;constructor(e,t,n){if(typeof e!=`function`)throw TypeError(`callback must be a function`);this.#t=e,this.#n=t,this.#i=n}onRequestStart(e,t){this.#e=!1,this.#r=t}onRequestUpgrade(e,t,n,r){this.#n.onRequestUpgrade?.(e,t,n,r)}onResponseStart(e,t,n,i){if(r(this.#t!=null),this.#e=t===304||this.#i&&t>=500&&t<=504,this.#t(this.#e,this.#r,t,n),this.#t=null,this.#e)return!0;this.#n.onRequestStart?.(e,this.#r),this.#n.onResponseStart?.(e,t,n,i)}onResponseData(e,t){if(!this.#e)return this.#n.onResponseData?.(e,t)}onResponseEnd(e,t){this.#e||this.#n.onResponseEnd?.(e,t)}onResponseError(e,t){if(!this.#e){if(this.#t){if(this.#i){this.#e=!0,this.#t(!0,this.#r),this.#t=null;return}this.#t(!1),this.#t=null}if(typeof this.#n.onResponseError==`function`)this.#n.onResponseError(e,t);else throw t}}}})),za=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{Readable:i}=t(`node:stream`),a=xi(),o=Ia(),s=La(),c=Ra(),{assertCacheStore:l,assertCacheMethods:u,getInterceptorOrigin:d,makeCacheKey:f,normalizeHeaders:p,parseCacheControlHeader:m,isInvalidOrWildcardVaryHeader:h,parseVaryHeader:g}=Pa(),{AbortError:v}=vi(),{parseHttpDate:y}=Fa();function b(e,t){if(e!==void 0){if(!Array.isArray(e))throw TypeError(`expected ${t} to be an array or undefined, got ${typeof e}`);for(let n=0;n{};function S(e){return e.replace(/^[\t ]+|[\t ]+$/g,``)}function C(e,t){for(let n=0;ne.staleAt?!E(e,n)&&t?.[`max-stale`]?r>e.staleAt+t[`max-stale`]*1e3:!0:t?.[`min-fresh`]?e.staleAt-r<=t[`min-fresh`]*1e3:!1}function P(e,t){let n=e.cacheControlDirectives?.[`stale-while-revalidate`];return!n||E(e,t)?!1:Date.now()<=e.staleAt+n*1e3}function F(e,t,n,r,i,a){if(a?.[`only-if-cached`]){let e=!1,t={paused:!1,rawHeaders:[],rawTrailers:[],pause(){this.paused=!0},resume(){this.paused=!1},abort:n=>{e=!0,r.onResponseError?.(t,n??new v)}};try{if(r.onRequestStart?.(t,null),e||(r.onResponseStart?.(t,504,{},`Gateway Timeout`),e))return;r.onResponseEnd?.(t,{})}catch(e){typeof r.onResponseError==`function`&&r.onResponseError(t,e)}return!0}return e(i,new o(t,n,r))}function I(e,t,n,o,s,c){let l=a.isStream(n.body)?n.body:i.from(n.body??[]);r(!l.destroyed,`stream should not be destroyed`),r(!l.readableDidRead,`stream should not be readableDidRead`);let u=!1,d={rawHeaders:[],rawTrailers:[],resume(){l.resume()},pause(){l.pause()},get paused(){return l.isPaused()},get aborted(){return u},get reason(){return l.errored},abort(e){u=!0,l.destroy(e??new v)}};if(l.on(`error`,function(t){if(!this.readableEnded){if(typeof e.onResponseError==`function`)e.onResponseError(d,t);else throw t}}).on(`close`,function(){this.errored||e.onResponseEnd?.(d,{})}),e.onRequestStart?.(d,s),l.destroyed)return;let f={...n.headers,age:String(o)};c&&(f.warning=`110 - "response is stale"`),d.rawHeaders=a.toRawHeaders(f),e.onResponseStart?.(d,n.statusCode,f,n.statusMessage),t.method===`HEAD`?l.destroy():l.on(`data`,function(t){e.onResponseData?.(d,t)})}function ee(e,t,n,r,i,s,l){if(!l)return F(e,t,n,r,i,s);if(t.type===`shared`&&Object.hasOwn(l.headers,`set-cookie`))return a.isStream(l.body)&&l.body.on(`error`,x).destroy(),A(t.store,n),F(e,t,n,r,i,s);let u=Date.now();if(u>l.deleteAt)return e(i,new o(t,n,r));let d=Math.round((u-l.cachedAt)/1e3),f=s?.[`max-age`]!==void 0&&d>=s[`max-age`],p=f||N(l,s,t.type),m=f||T(l,s,i);if(p||m){if(a.isStream(i.body)&&a.bodyLength(i.body)!==0)return e(i,new o(t,n,r));if(!m&&P(l,t.type))return I(r,i,l,d,null,!0),queueMicrotask(()=>{let r=M(i,l);e({...i,headers:r},new o(t,n,{onRequestStart(){},onRequestUpgrade(){},onResponseStart(){},onResponseData(){},onResponseEnd(){},onResponseError(){}}))}),!0;let f=!1;if(!E(l,t.type)){let e=l.cacheControlDirectives[`stale-if-error`]??s?.[`stale-if-error`];e&&(f=u{if(s){if(u===304){if(D(t.type,f))return a.isStream(l.body)&&l.body.on(`error`,x).destroy(),A(t.store,n),e(i,new o(t,n,r));if(O(f))A(t.store,n);else if(k(l,f.vary?g(f.vary,i.headers):void 0))return a.isStream(l.body)&&l.body.on(`error`,x).destroy(),A(t.store,n),e(i,new o(t,n,r))}I(r,i,l,d,c,p)}else a.isStream(l.body)&&l.body.on(`error`,x).destroy()},new o(t,n,r),f))}a.isStream(i.body)&&i.body.on(`error`,x).destroy(),I(r,i,l,d,null,!1)}n.exports=(e={})=>{let{store:t=new s,methods:n=[`GET`],cacheByDefault:r=void 0,type:i=`shared`,origins:c=void 0}=e;if(typeof e!=`object`||!e)throw TypeError(`expected type of opts to be an Object, got ${e===null?`null`:typeof e}`);if(l(t,`opts.store`),u(n,`opts.methods`),b(c,`opts.origins`),r!==void 0&&typeof r!=`number`)throw TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof r}`);if(i!==void 0&&i!==`shared`&&i!==`private`)throw TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof i}`);let h={store:t,methods:n,cacheByDefault:r,type:i},g=[];for(let e=0;e(r,i)=>{let s=d(r,n);if(!s||C(g,r.method))return e(r,i);if(c!==void 0){let t=s.toString().toLowerCase(),n=!1;for(let e=0;eee(e,h,u,i,r,l,t)):ee(e,h,u,i,r,l,v)}}})),Ba=/* @__PURE__ */ a(((e,n)=>{let{createInflate:r,createGunzip:i,createBrotliDecompress:a,createZstdDecompress:o}=t(`node:zlib`),{pipeline:s,Transform:c}=t(`node:stream`),{InvalidArgumentError:l,ResponseExceededMaxSizeError:u}=vi(),d=Da();var f=class{#e;#t;#n;#r=!1;constructor(e,t,n){this.#e=e,this.#t=t,this.#n=n,this.target=null}pause(){this.#r||(this.#r=!0,this.#e())}resume(){this.#r&&(this.#r=!1,this.#t())}abort(e){this.target?.abort(e),this.#n(e)}get paused(){return this.#r}get aborted(){return this.target?.aborted??!1}get reason(){return this.target?.reason??null}get rawHeaders(){return this.target?.rawHeaders??null}set rawHeaders(e){this.target&&(this.target.rawHeaders=e)}get rawTrailers(){return this.target?.rawTrailers??null}set rawTrailers(e){this.target&&(this.target.rawTrailers=e)}};let p={__proto__:null,gzip:i,"x-gzip":i,br:a,deflate:r,compress:r,"x-compress":r,zstd:o},m=[204,304];function h(e){let t=0;return new c({transform(n,r,i){let a=t+n.length;a>e?i(new u(`Decompressed response size (${a}) exceeded maxSize (${e})`)):(t=a,i(null,n))}})}let g=!1;var v=class extends d{#e=[];#t;#n;#r;#i;#a=0;#o=!1;#s=!1;#c=!1;#l=!1;#u=!1;#d=!1;#f=!1;#p;#m;constructor(e,{skipStatusCodes:t=m,skipErrorResponses:n=!0,maxSize:r=0}={}){if(!Number.isSafeInteger(r)||r<0)throw new l(`maxSize must be a non-negative integer`);super(e),this.#n=t,this.#r=n,this.#i=r,this.#m=new f(()=>this.#h(),()=>this.#g(),e=>{this.#s&&!this.#o&&this.onResponseError(this.#m,e)})}#h(){this.#_()}#g(){let e=this.#u;this.#y(),e||(this.#v(),this.#b())}#_(){!this.#l&&!this.#o&&(this.#l=!0,this.#m.target?.pause())}#v(){this.#l&&!this.#m.paused&&!this.#c&&(this.#l=!1,this.#s||this.#m.target?.resume())}#y(){if(!(this.#o||this.#m.paused||!this.#p)){if(this.#u)this.#d=!0;else{this.#u=!0;try{do{this.#d=!1;let e;for(;!this.#o&&!this.#m.paused&&(e=this.#p.read())!==null;){if(this.#i>0){let t=this.#a+e.length;if(t>this.#i){this.#w(new u(`Decompressed response size (${t}) exceeded maxSize (${this.#i})`));return}this.#a=t}super.onResponseData(this.#m,e)===!1&&!this.#m.paused&&this.#m.pause()}}while(this.#d&&!this.#o&&!this.#m.paused)}finally{this.#u=!1}this.#v(),this.#b()}}}#b(){this.#o||!this.#f||this.#m.paused||this.#u||(this.#o=!0,this.#k(),super.onResponseEnd(this.#m,this.#t))}#x(){this.#o||(this.#f=!0,this.#y(),this.#b())}#S(e,t){return!!(!e||t<200||this.#n.includes(t)||this.#r&&t>=400)}#C(e){let t=e.split(`,`);if(t.length>5)throw Error(`too many content-encodings in response: ${t.length}, maximum allowed is 5`);let n=[];for(let e=t.length-1;e>=0;e--){let r=t[e].trim();if(r){if(!p[r])return n.length=0,n;n.push(p[r]())}}if(n.length<2)return n;let r=[];for(let e=0;e0&&r.push(h(this.#i));return r}#w(e){this.#o||(this.#s?this.onResponseError(this.#m,e):this.#m.abort(e))}#T(e){this.#p=e,e.on(`readable`,()=>this.#y()),e.on(`error`,e=>this.#w(e))}#E(){let e=this.#e[0];this.#T(e),e.on(`end`,()=>this.#x())}#D(){let e=this.#e[this.#e.length-1];this.#T(e),s(this.#e,e=>{this.#o||(e?this.#w(e):this.#x())})}#O(){this.#e[0].on(`drain`,()=>{this.#o||(this.#c=!1,this.#m.paused||(this.#y(),this.#v()))})}#k(){this.#e.length=0,this.#p=void 0}onRequestStart(e,t){return this.#m.target=e,super.onRequestStart(this.#m,t)}onRequestUpgrade(e,t,n,r){return super.onRequestUpgrade(this.#m,t,n,r)}onResponseStart(e,t,n,r){let i=n[`content-encoding`],a=Array.isArray(i)?i.join(`,`):i;if(this.#S(a,t))return super.onResponseStart(this.#m,t,n,r);let o=this.#C(a.toLowerCase());if(o.length===0)return this.#k(),super.onResponseStart(this.#m,t,n,r);this.#e=o;let{"content-encoding":s,"content-length":c,...l}=n;if(this.#m.rawHeaders){let e=this.#m.rawHeaders;if(Array.isArray(e)){let t=[];for(let n=0;n0)this.#e[0].write(t)||(this.#c=!0,this.#_());else return super.onResponseData(this.#m,t)}onResponseEnd(e,t){if(this.#e.length>0)this.#s=!0,this.#t=t,this.#e[0].end();else return super.onResponseEnd(this.#m,t)}onResponseError(e,t){if(!this.#o){this.#o=!0;for(let e of this.#e)e.destroy();this.#k(),super.onResponseError(this.#m,t)}}};function y(e={}){return g||=(process.emitWarning(`DecompressInterceptor is experimental and subject to change`,`ExperimentalWarning`),!0),t=>(n,r)=>n.method===`HEAD`?t(n,r):t(n,new v(r,e))}n.exports=y})),Va=/* @__PURE__ */ a(((e,t)=>{let{RequestAbortedError:n}=vi(),r=5242880;t.exports=class{#e;#t=[];#n=r;#r=0;#i={};#a=``;#o=!1;#s=!1;#c=!1;#l=!1;#u=null;#d=null;constructor(e,t,n=r){this.#e=e,this.#d=t,this.#n=n}addWaitingHandler(e){if(this.#l||this.#c)return!1;let t=this.#p(e),n=t.controller;try{if(e.onRequestStart?.(n,null),n.aborted)return t.done=!0,!0;this.#s&&e.onResponseStart?.(n,this.#r,this.#i,this.#a)}catch{return t.done=!0,!0}return n.aborted||this.#t.push(t),!0}onRequestStart(e,t){this.#u=e,this.#e.onRequestStart?.(e,t)}onRequestUpgrade(e,t,n,r){this.#e.onRequestUpgrade?.(e,t,n,r)}onResponseStart(e,t,n,r){this.#s=!0,this.#r=t,this.#i=n,this.#a=r,this.#e.onResponseStart?.(e,t,n,r);for(let e of this.#t){let{handler:i,controller:a}=e;if(e.done||a.aborted)e.done=!0;else{try{i.onResponseStart?.(a,t,n,r)}catch{}a.aborted&&(e.done=!0)}}this.#_()}onResponseData(e,t){if(!(this.#o||this.#l)){this.#c=!0,this.#e.onResponseData?.(e,t);for(let e of this.#t){let{handler:n,controller:r}=e;if(e.done||r.aborted)e.done=!0;else if(r.paused)this.#m(e,t);else{try{n.onResponseData?.(r,t)}catch{}r.aborted&&(e.done=!0,e.bufferedChunks=[],e.bufferedBytes=0)}}this.#_()}}onResponseEnd(e,t){if(!(this.#o||this.#l)){this.#f(),this.#e.onResponseEnd?.(e,t),this.#l=!0;for(let e of this.#t)if(e.done||e.controller.aborted)e.done=!0;else if(this.#h(e),e.done||e.controller.aborted)e.done=!0;else if(e.controller.paused)e.pendingTrailers=t;else{try{e.handler.onResponseEnd?.(e.controller,t)}catch(t){this.#g(e,t)}e.done=!0}this.#_()}}onResponseError(e,t){if(!this.#l){this.#o=!0,this.#l=!0,this.#f(),this.#e.onResponseError?.(e,t);for(let e of this.#t)this.#g(e,t);this.#t=[]}}#f(){let e=this.#d;this.#d=null,e?.()}#p(e){let t={handler:e,controller:null,bufferedChunks:[],bufferedBytes:0,pendingTrailers:null,done:!1},r={aborted:!1,paused:!1,reason:null};return t.controller={resume:()=>{if(!r.aborted){if(r.paused=!1,this.#h(t),this.#l&&t.pendingTrailers&&t.bufferedChunks.length===0&&!r.paused&&!r.aborted){try{t.handler.onResponseEnd?.(t.controller,t.pendingTrailers)}catch(e){this.#g(t,e)}t.pendingTrailers=null,t.done=!0}this.#_()}},pause:()=>{r.aborted||(r.paused=!0)},get paused(){return r.paused},get aborted(){return r.aborted},get reason(){return r.reason},abort:i=>{if(!r.aborted){r.aborted=!0,r.reason=i??null,t.done=!0,t.pendingTrailers=null,t.bufferedChunks=[],t.bufferedBytes=0;try{e.onResponseError?.(t.controller,r.reason??new n)}catch{}}}},t}#m(e,t){if(e.done||e.controller.aborted){e.done=!0,e.bufferedChunks=[],e.bufferedBytes=0;return}let r=Buffer.from(t);if(e.bufferedChunks.push(r),e.bufferedBytes+=r.length,e.bufferedBytes>this.#n){let t=new n(`Deduplicated waiting handler exceeded maxBufferSize (${this.#n} bytes) while paused`);e.controller.abort(t)}}#h(e){let{handler:t,controller:n}=e;for(;!e.done&&!n.aborted&&!n.paused&&e.bufferedChunks.length>0;){let r=e.bufferedChunks.shift();e.bufferedBytes-=r.length;try{t.onResponseData?.(n,r)}catch{}if(n.aborted){e.done=!0,e.pendingTrailers=null,e.bufferedChunks=[],e.bufferedBytes=0;break}}}#g(e,t){if(!e.done){e.done=!0,e.pendingTrailers=null,e.bufferedChunks=[],e.bufferedBytes=0;try{e.handler.onResponseError?.(e.controller,t)}catch{}}}#_(){this.#t=this.#t.filter(e=>e.done===!1)}}})),Ha=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:diagnostics_channel`),i=xi(),a=Va(),{getInterceptorOrigin:o,normalizeHeaders:s,makeCacheKey:c,makeDeduplicationKey:l}=Pa(),u=r.channel(`undici:request:pending-requests`);n.exports=(e={})=>{let{methods:t=[`GET`],skipHeaderNames:n=[],excludeHeaderNames:r=[],maxBufferSize:d=5242880}=e;if(typeof e!=`object`||!e)throw TypeError(`expected type of opts to be an Object, got ${e===null?`null`:typeof e}`);if(!Array.isArray(t))throw TypeError(`expected opts.methods to be an array, got ${typeof t}`);for(let e of t)if(!i.safeHTTPMethods.includes(e))throw TypeError(`expected opts.methods to only contain safe HTTP methods, got ${e}`);if(!Array.isArray(n))throw TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof n}`);if(!Array.isArray(r))throw TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof r}`);if(!Number.isFinite(d)||d<=0)throw TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${d}`);let f=new Set(n.map(e=>e.toLowerCase())),p=new Set(r.map(e=>e.toLowerCase())),m=/* @__PURE__ */ new Map;return(e,n)=>(r,i)=>{let h=o(r,n);if(!h||r.upgrade||t.includes(r.method)===!1)return e(r,i);if(r={...r,headers:s(r)},f.size>0){for(let t of Object.keys(r.headers))if(f.has(t.toLowerCase()))return e(r,i)}let g=c(r,h),v=l(g,p),y=m.get(v);if(y)return y.addWaitingHandler(i)?!0:e(r,i);let b=new a(i,()=>{m.delete(v),u.hasSubscribers&&u.publish({size:m.size,key:v,type:`removed`})},d);return m.set(v,b),u.hasSubscribers&&u.publish({size:m.size,key:v,type:`added`}),e(r,b)}}})),Ua=/* @__PURE__ */ a(((e,n)=>{let{Writable:r}=t(`node:stream`),{assertCacheKey:i,assertCacheValue:a}=Pa(),o,s=2e9;n.exports=class{#e=s;#t=1/0;#n;#r;#i;#a;#o;#s;#c;#l;constructor(e){if(e){if(typeof e!=`object`)throw TypeError(`SqliteCacheStore options must be an object`);if(e.maxEntrySize!==void 0){if(typeof e.maxEntrySize!=`number`||!Number.isInteger(e.maxEntrySize)||e.maxEntrySize<0)throw TypeError(`SqliteCacheStore options.maxEntrySize must be a non-negative integer`);if(e.maxEntrySize>s)throw TypeError(`SqliteCacheStore options.maxEntrySize must be less than 2gb`);this.#e=e.maxEntrySize}if(e.maxCount!==void 0){if(typeof e.maxCount!=`number`||!Number.isInteger(e.maxCount)||e.maxCount<0)throw TypeError(`SqliteCacheStore options.maxCount must be a non-negative integer`);this.#t=e.maxCount}}o||=t(`node:sqlite`).DatabaseSync,this.#n=new o(e?.location??`:memory:`),this.#n.exec(` +`,`latin1`),t!==null&&r!==t){if(n[ie])throw new s;process.emitWarning(new s)}e[S].timeout&&e[S].timeoutType===3&&e[S].timeout.refresh&&e[S].timeout.refresh(),n[ce]()}}destroy(e){let{socket:t,client:n,abort:i}=this;t[D]=!1,e&&(r(n[w]<=1,`pipeline should only contain this request`),i(e))}};n.exports=ke})),Gi=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{pipeline:i}=t(`node:stream`),a=Si(),{RequestContentLengthMismatchError:o,ResponseContentLengthMismatchError:s,RequestAbortedError:c,SocketError:l,InformationalError:u,InvalidArgumentError:d,HeadersTimeoutError:f,BodyTimeoutError:p,ResponseExceededMaxSizeError:m}=yi(),{kUrl:h,kReset:g,kClient:v,kRunning:y,kPending:b,kQueue:x,kPendingIdx:S,kRunningIdx:C,kError:w,kSocket:T,kStrictContentLength:E,kOnError:D,kMaxConcurrentStreams:O,kHTTP2Session:k,kHostAuthority:A,kResume:j,kSize:M,kHTTPContext:N,kClosed:P,kKeepAliveDefaultTimeout:F,kHeadersTimeout:I,kBodyTimeout:ee,kEnableConnectProtocol:L,kRemoteSettings:R,kHTTP2Stream:te,kHTTP2SessionState:ne,kHTTP2Options:re,kMaxResponseSize:ie}=_i(),{channels:z}=wi(),ae=Symbol(`open streams`),oe=Symbol(`request stream id`),se=Symbol(`request stream`),ce=Symbol(`request stream cleanup`),le=Symbol(`request stream state`),ue=Symbol(`received goaway`),de=Symbol(`goaway replay attempts`),fe=Symbol(`refused stream retry`),pe,me;try{me=t(`node:http2`)}catch{me={constants:{}}}let{constants:{HTTP2_HEADER_AUTHORITY:he,HTTP2_HEADER_METHOD:ge,HTTP2_HEADER_PATH:_e,HTTP2_HEADER_SCHEME:ve,HTTP2_HEADER_CONTENT_LENGTH:ye,HTTP2_HEADER_EXPECT:be,HTTP2_HEADER_STATUS:xe,HTTP2_HEADER_PROTOCOL:Se,NGHTTP2_NO_ERROR:Ce,NGHTTP2_REFUSED_STREAM:we}}=me;function Te(e,t){return e[w]||(t===Ce?new u(`HTTP/2: "GOAWAY" frame received with code ${t}`):new l(`HTTP/2: "GOAWAY" frame received with code ${t}`,a.getSocketInfo(e[T])))}function Ee(e,t){let n=e[v],r=e[T];if(n[k]===e&&(n[T]=null,n[N]=null,n[k]=null),r!=null&&r[w]==null&&(r[w]=t),!e.closed&&!e.destroyed)try{e.destroy(t)}catch{}a.destroy(r,t)}function De(e,t){let n=Number.isInteger(t)?t:2**53-1;for(let t=e[C];tn))return t}return e[S]}function Oe(e){e[oe]=null,e[se]=null,e[ce]=null}function ke(e,t,n){let r=e[ce],i=e[se];Oe(e),r?.(i),e[oe]=t.id,e[se]=t,e[ce]=n}function Ae(e){let t=e[ce],n=e[se];Oe(e),t?.(n)}function je(e,t){e[x].splice(e[S]+1,0,t)}function Me(e,t,n=!1){let r=e[x],i=e[C];if(i=e[S]||(r.splice(a,1),e[S]--,n&&e[S]t,peerMaxConcurrentStreams:e[re].maxConcurrentStreams,settings:{enablePush:!1,...n==null?null:{initialWindowSize:n}}});return e[T]=t,i[ae]=0,i[v]=e,i[T]=t,i[ne]={idleTimeout:null,noStreamsTimeout:null,refed:!0,ping:{interval:e[re].pingInterval===0?null:setInterval(Ze,e[re].pingInterval,i).unref()}},i[ue]=!1,i[L]=!1,i[R]=!1,r&&a.addListener(i,`connect`,Ye.bind(i,r)),a.addListener(i,`error`,Qe),a.addListener(i,`frameError`,$e),a.addListener(i,`goaway`,et),a.addListener(i,`close`,tt),a.addListener(i,`remoteSettings`,Xe),Ve(i),e[k]=i,t[k]=i,a.addListener(t,`error`,rt),a.addListener(t,`end`,it),a.addListener(t,`close`,nt),t[P]=!1,t.on(`close`,at),{version:`h2`,defaultPipelining:1/0,write(t){return St(e,t)},resume(){He(e)},destroy(e,n){t[P]?queueMicrotask(n):t.destroy(e).on(`close`,n)},get destroyed(){return t.destroyed},busy(t){if(i[R]===!1&&e[y]>0||e[y]>=e[O])return!0;if(t!=null){if(e[y]>0){if((t.upgrade===`websocket`||t.method===`CONNECT`)&&i[R]===!1)return!0}else return(t.upgrade===`websocket`||t.method===`CONNECT`)&&i[R]===!1}return!1}}}function Be(e){let t=e[ne];t.refed===!1&&(t.refed=!0,e.ref())}function Ve(e){let t=e[ne];t.refed===!0&&(t.refed=!1,e.unref())}function He(e){let t=e[T],n=e[k];t?.destroyed===!1&&(n[ae]===0&&e[M]===0?Ve(n):Be(n),e[M]===0&&n[ae]===0?qe(n):Ke(n),e[O]===0&&e[y]===0&&e[b]>0?We(n):Ue(n))}function Ue(e){let t=e[ne];t?.noStreamsTimeout!=null&&(clearTimeout(t.noStreamsTimeout),t.noStreamsTimeout=null)}function We(e){let t=e[v],n=e[ne],r=t[I];r&&n.noStreamsTimeout==null&&(n.noStreamsTimeout=setTimeout(Ge,r,e).unref())}function Ge(e){let t=e[v],n=e[ne];if(n.noStreamsTimeout=null,t[k]!==e||t[O]!==0||t[y]!==0||t[b]===0)return;let r=new f(`HTTP/2: server did not accept a new stream within ${t[I]}`),i=t[x].splice(t[S]);for(let e=0;e{if(!(t.aborted||t.completed)){if(n||=new c,a.errorRequest(e,t,n),x.stream!=null){Ae(t);let i=x.stream;i.close(),i.destroyed||a.destroy(i),e[D](n),bt(x,r)}a.destroy(x.body,n)}};x.abort=S;let C=null;try{t.onRequestStart(S,null)}catch(n){a.errorRequest(e,t,n)}if(t.aborted)return!1;if(m||l===`CONNECT`)return Be(s),m===`websocket`?s[L]===!1?(a.errorRequest(e,t,new u(`HTTP/2: Extended CONNECT protocol not supported by server`)),Ve(s),!1):(b[ge]=`CONNECT`,b[Se]=`websocket`,b[_e]=f,v===`ws:`||v===`wss:`?b[ve]=v===`ws:`?`http`:`https`:b[ve]=v===`http:`?`http`:`https`,C=xt(e,t,s,S,b,{endStream:!1,signal:g}),C==null?(Ve(s),!1):(yt(C,x),!0)):(C=xt(e,t,s,S,b,{endStream:!1,signal:g}),C==null?(Ve(s),!1):(yt(C,x),!0));b[_e]=f,b[ve]=v===`http:`?`http`:`https`;let w=l===`PUT`||l===`POST`||l===`PATCH`||l===`QUERY`||l===`PROPFIND`||l===`PROPPATCH`,O=x.body;O&&typeof O.read==`function`&&O.read(0);let j=a.bodyLength(O);if(a.isFormDataLike(O)){pe??=Ui().extractBody;let[e,t]=pe(O);b[`content-type`]=t,O=e.stream,j=e.length}if(j??=t.contentLength,j===0&&!w&&(j=null),ut(l)&&j>0&&t.contentLength!=null&&t.contentLength!==j){if(e[E])return a.errorRequest(e,t,new o),!1;process.emitWarning(new o)}if(j!=null&&(r(O||j===0,`no body must not have content length`),b[ye]=`${j}`),Be(s),z.sendHeaders.hasSubscribers){let e=``;for(let t in b)e+=`${t}: ${b[t]}\r\n`;z.sendHeaders.publish({request:t,headers:e,socket:s[T]})}let M=O===null||j===0;return x.body=O,x.contentLength=j,x.expectsPayload=w,h&&(b[be]=`100-continue`),C=xt(e,t,s,S,b,{endStream:M,signal:g}),C!=null&&(C[te]=!0,C[le]=x,x.stream=C,Ke(s),++s[ae],n&&C.setTimeout(n),C[k]=s,C.on(`close`,lt),ke(t,C,wt),h&&C.once(`continue`,Ft),C.on(`response`,Dt),C.on(`headers`,Et),C.on(`end`,Ot),C.on(`error`,At),C.on(`frameError`,jt),C.on(`aborted`,Mt),(n||i)&&C.on(`timeout`,Nt),C.on(`trailers`,Pt),h||Ft.call(C),!0)}function Ct(e){e.off(`error`,ot),e.off(`continue`,Ft),e.off(`response`,Dt),e.off(`headers`,Et),e.off(`end`,Ot),e.off(`error`,At),e.off(`frameError`,jt),e.off(`aborted`,Mt),e.off(`timeout`,Nt),e.off(`trailers`,Pt),e.off(`data`,Tt)}function wt(e){if(e==null)return;let t=e[le];if(t==null)return;let{request:n}=t;n[se]===e&&Oe(n),!e.destroyed&&!e.closed&&(Ct(e),e.once(`error`,ot))}function Tt(e){let t=this,n=t[le];if(n==null)return;let{request:r,maxResponseSize:i,responseContentLength:a}=n;r.aborted||r.completed||(a!=null&&n.bytesRead+e.length>a?n.abort(new s):i>-1&&n.bytesRead+e.length>i?n.abort(new m):(n.bytesRead+=e.length,r.onResponseData(e)===!1&&t.pause()))}function Et(e){let t=this[le];if(t==null)return;let{request:n}=t;if(n.aborted||n.completed)return;let r=e[xe];delete e[xe],n.onResponseStart(Number(r),e,ot,``)}function Dt(e){let t=this,n=t[le];if(n==null)return;let{request:r}=n;t.off(`response`,Dt),n.body!=null&&!n.bodySent&&!t.writableEnded&&(t.removeListener(`continue`,Ft),t.end());let i=Number(e[xe]);if(delete e[xe],r.onResponseStarted(),n.responseReceived=!0,r.method!==`HEAD`&&i!==304){let t=e[ye];n.responseContentLength=t==null?null:Number(t)}(n.headersTimeout||n.bodyTimeout)&&t.setTimeout(n.bodyTimeout),r.aborted||r.completed?wt(t):(r.onResponseStart(i,e,t.resume.bind(t),``)===!1&&t.pause(),t.on(`data`,Tt))}function Ot(){let e=this,t=e[le];if(t==null)return;let{request:n}=t;if(e.off(`end`,Ot),t.responseReceived){if(!n.aborted&&!n.completed){if(t.responseContentLength!=null&&t.bytesRead!==t.responseContentLength){t.abort(new s);return}t.pendingEnd=!0,lt.call(e)}}else t.abort(new u(`HTTP/2: stream half-closed (remote)`),!0)}function kt(e,t){let{client:n,request:r}=t;return t.responseReceived||r.aborted||r.completed||r[fe]||!Ne(r)?!1:(r[fe]=!0,Le(r),t.stream=null,t.requestFinalized=!0,Me(n,r),n[x].splice(n[S],0,r),n[j](),!0)}function At(e){let t=this,n=t[le];n!=null&&(t.off(`error`,At),n.responseContentLength!=null&&n.bytesRead!==n.responseContentLength&&(e=new s),typeof t.rstCode==`number`&&t.rstCode!==Ce&&(e.http2ErrorCode=t.rstCode),!(t.rstCode===we&&kt(t,n))&&n.abort(e))}function jt(e,t){let n=this,r=n[le];r!=null&&(n.off(`frameError`,jt),r.abort(new u(`HTTP/2: "frameError" received - type ${e}, code ${t}`)))}function Mt(){this.off(`data`,Tt)}function Nt(){let e=this,t=e[le];if(t==null)return;e.off(`timeout`,Nt);let n=t.responseReceived?new p(`HTTP/2: "stream timeout after ${t.bodyTimeout}"`):new f(`HTTP/2: "headers timeout after ${t.headersTimeout}"`);t.abort(n)}function Pt(e){let t=this,n=t[le];if(n==null)return;let{request:r}=n;t.off(`trailers`,Pt),t.off(`data`,Tt),!(r.aborted||r.completed)&&(n.trailers=e)}function Ft(){let e=this,t=e[le];t.bodySent=!0;let{abort:n,body:i,client:o,contentLength:s,expectsPayload:c,request:l}=t;!i||s===0?It(n,e,null,o,l,o[T],s,c):a.isBuffer(i)?It(n,e,i,o,l,o[T],s,c):a.isBlobLike(i)?typeof i.stream==`function`?zt(n,e,i.stream(),o,l,o[T],s,c):Rt(n,e,i,o,l,o[T],s,c):a.isStream(i)?Lt(n,o[T],c,e,i,o,l,s):a.isIterable(i)?zt(n,e,i,o,l,o[T],s,c):r(!1)}function It(e,t,n,i,o,s,c,l){try{n!=null&&a.isBuffer(n)&&(r(c===n.byteLength,`buffer body must have content length`),t.cork(),t.write(n),t.uncork(),t.end(),o.onBodySent(n)),l||(s[g]=!0),o.onRequestSent(),i[j]()}catch(t){e(t)}}function Lt(e,t,n,o,s,c,l,u){r(u!==0||c[y]===0,`stream body cannot be pipelined`);let d=i(s,o,r=>{r?(a.destroy(d,r),e(r)):(a.removeAllListeners(d),l.onRequestSent(),n||(t[g]=!0),c[j]())});a.addListener(d,`data`,f);function f(e){l.onBodySent(e)}}async function Rt(e,t,n,r,i,a,s,c){try{if(s!=null&&s!==n.size)throw new o;let e=Buffer.from(await n.arrayBuffer());t.cork(),t.write(e),t.uncork(),t.end(),i.onBodySent(e),i.onRequestSent(),c||(a[g]=!0),r[j]()}catch(t){e(t)}}async function zt(e,t,n,i,a,o,s,c){r(s!==0||i[y]===0,`iterator body cannot be pipelined`);let l=null;function u(){if(l){let e=l;l=null,e()}}let d=()=>new Promise((e,t)=>{r(l===null),o[w]?t(o[w]):l=e});t.on(`close`,u).on(`drain`,u);try{for await(let e of n){if(o[w])throw o[w];let n=t.write(e);a.onBodySent(e),n||await d()}t.end(),a.onRequestSent(),c||(o[g]=!0),i[j]()}catch(t){e(t)}finally{t.off(`close`,u).off(`drain`,u)}}n.exports=ze})),Ki=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),i=t(`node:net`),a=t(`node:http`),o=Si(),{ClientStats:s}=Ci(),{channels:c}=wi(),l=Ti(),u=Di(),{InvalidArgumentError:d,InformationalError:f,ClientDestroyedError:p}=yi(),m=Oi(),{kUrl:h,kServerName:g,kClient:v,kBusy:y,kConnect:b,kResuming:x,kRunning:S,kPending:C,kSize:w,kQueue:T,kConnected:E,kConnecting:D,kNeedDrain:O,kKeepAliveDefaultTimeout:k,kHostHeader:A,kPendingIdx:j,kRunningIdx:M,kError:N,kPipelining:P,kKeepAliveTimeoutValue:F,kMaxHeadersSize:I,kKeepAliveMaxTimeout:ee,kKeepAliveTimeoutThreshold:L,kHeadersTimeout:R,kBodyTimeout:te,kStrictContentLength:ne,kConnector:re,kMaxRequests:ie,kCounter:z,kClose:ae,kDestroy:oe,kDispatch:se,kLocalAddress:ce,kMaxResponseSize:le,kOnError:ue,kHTTPContext:de,kMaxConcurrentStreams:fe,kHostAuthority:pe,kResume:me,kHTTP2Options:he}=_i(),ge=Wi(),_e=Gi(),ve=Symbol(`kClosedResolve`),ye=a&&a.maxHeaderSize&&Number.isInteger(a.maxHeaderSize)&&a.maxHeaderSize>0?()=>a.maxHeaderSize:()=>{throw new d(`http module not available or http.maxHeaderSize invalid`)},be=()=>{};function xe(e){return e[P]??e[de]?.defaultPipelining??1}let Se=!1;function Ce(e){Se!==!0&&(process.emitWarning(`Use h2Options.${e} instead. ${e} for H2 will be deprecated in future major.`,{code:`UNDICI-H2-OPTIONS`}),Se=!0)}function we(e){return e[de]?.version===`h2`?e[fe]:xe(e)}var Te=class extends u{constructor(e,{maxHeaderSize:t,headersTimeout:n,socketTimeout:r,requestTimeout:a,connectTimeout:s,bodyTimeout:c,idleTimeout:l,keepAlive:u,keepAliveTimeout:f,maxKeepAliveTimeout:p,keepAliveMaxTimeout:v,keepAliveTimeoutThreshold:y,socketPath:b,pipelining:S,tls:C,strictContentLength:w,maxCachedSessions:E,connect:D,maxRequestsPerClient:N,localAddress:z,maxResponseSize:ae,autoSelectFamily:oe,autoSelectFamilyAttemptTimeout:se,maxConcurrentStreams:fe,allowH2:ge,useH2c:_e,initialWindowSize:be,connectionWindowSize:xe,pingInterval:Se,webSocket:we,h2Options:Te,eventSource:De}={}){if(u!==void 0)throw new d(`unsupported keepAlive, use pipelining=0 instead`);if(r!==void 0)throw new d(`unsupported socketTimeout, use headersTimeout & bodyTimeout instead`);if(a!==void 0)throw new d(`unsupported requestTimeout, use headersTimeout & bodyTimeout instead`);if(l!==void 0)throw new d(`unsupported idleTimeout, use keepAliveTimeout instead`);if(p!==void 0)throw new d(`unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead`);if(t!=null){if(!Number.isInteger(t)||t<1)throw new d(`invalid maxHeaderSize`)}else t=ye();if(b!=null&&typeof b!=`string`)throw new d(`invalid socketPath`);if(s!=null&&(!Number.isFinite(s)||s<0))throw new d(`invalid connectTimeout`);if(f!=null&&(!Number.isFinite(f)||f<=0))throw new d(`invalid keepAliveTimeout`);if(v!=null&&(!Number.isFinite(v)||v<=0))throw new d(`invalid keepAliveMaxTimeout`);if(y!=null&&!Number.isFinite(y))throw new d(`invalid keepAliveTimeoutThreshold`);if(n!=null&&(!Number.isInteger(n)||n<0))throw new d(`headersTimeout must be a positive integer or zero`);if(c!=null&&(!Number.isInteger(c)||c<0))throw new d(`bodyTimeout must be a positive integer or zero`);if(D!=null&&typeof D!=`function`&&typeof D!=`object`)throw new d(`connect must be a function or an object`);if(N!=null&&(!Number.isInteger(N)||N<0))throw new d(`maxRequestsPerClient must be a positive number`);if(z!=null&&(typeof z!=`string`||i.isIP(z)===0))throw new d(`localAddress must be valid string IP address`);if(ae!=null&&(!Number.isInteger(ae)||ae<-1))throw new d(`maxResponseSize must be a positive number`);if(se!=null&&(!Number.isInteger(se)||se<-1))throw new d(`autoSelectFamilyAttemptTimeout must be a positive number`);if(ge!=null&&typeof ge!=`boolean`)throw new d(`allowH2 must be a valid boolean value`);if(ge!==!1){if(Te!=null){if(Te.useH2c!=null&&typeof Te.useH2c!=`boolean`)throw new d(`h2Options.useH2c must be a valid boolean value`);if(Te.settings?.initialWindowSize!=null&&(!Number.isInteger(Te.settings.initialWindowSize)||Te.settings.initialWindowSize<1))throw new d(`h2Options.settings.initialWindowSize must be a positive integer, greater than 0`);if(Te.maxConcurrentStreams!=null&&(!Number.isInteger(Te.maxConcurrentStreams)||Te.maxConcurrentStreams<1))throw new d(`h2Options.maxConcurrentStreams must be a positive integer, greater than 0`);if(Te.connectionWindowSize!=null&&(!Number.isInteger(Te.connectionWindowSize)||Te.connectionWindowSize<1))throw new d(`h2Options.connectionWindowSize must be a positive integer, greater than 0`);if(Te.pingInterval!=null&&(typeof Te.pingInterval!=`number`||!Number.isInteger(Te.pingInterval)||Te.pingInterval<0))throw new d(`h2Options.pingInterval must be a positive integer, greater or equal to 0`)}else{if(_e!=null&&typeof _e!=`boolean`)throw Ce(`useH2c`),new d(`useH2c must be a valid boolean value`);if(fe!=null&&(typeof fe!=`number`||fe<1))throw Ce(`maxConcurrentStreams`),new d(`maxConcurrentStreams must be a positive integer, greater than 0`);if(be!=null&&(!Number.isInteger(be)||be<1))throw Ce(`initialWindowSize`),new d(`initialWindowSize must be a positive integer, greater than 0`);if(xe!=null&&(!Number.isInteger(xe)||xe<1))throw Ce(`connectionWindowSize`),new d(`connectionWindowSize must be a positive integer, greater than 0`);if(Se!=null&&(typeof Se!=`number`||!Number.isInteger(Se)||Se<0))throw Ce(`pingInterval`),new d(`pingInterval must be a positive integer, greater or equal to 0`)}}if(super({webSocket:we,eventSource:De}),typeof D!=`function`)D=m({...C,maxCachedSessions:E,allowH2:ge,socketPath:b,useH2c:Te?.useH2c??_e,timeout:s,...typeof oe==`boolean`?{autoSelectFamily:oe,autoSelectFamilyAttemptTimeout:se}:void 0,...D});else{let e=D;D=(t,n)=>e({...t,...b==null?null:{socketPath:b},...ge==null?null:{allowH2:ge}},n)}this[h]=o.parseOrigin(e),this[pe]=`${this[h].hostname}${this[h].port?`:${this[h].port}`:``}`,this[re]=D,this[P]=S??1,this[I]=t,this[k]=f??4e3,this[ee]=v??6e5,this[L]=y??2e3,this[F]=this[k],this[g]=null,this[ce]=z??null,this[x]=0,this[O]=0,this[A]=`host: ${this[pe]}\r\n`,this[te]=c??3e5,this[R]=n??3e5,this[ne]=w??!0,this[ie]=N,this[ve]=null,this[le]=ae>-1?ae:-1,this[de]=null,this[he]={pingInterval:Te?.pingInterval??Se??6e4,connectionWindowSize:Te?.connectionWindowSize??xe??524288,maxConcurrentStreams:Te?.maxConcurrentStreams??fe??100,sessionOptions:{initialWindowSize:Te?.initialWindowSize??be??262144}},this[T]=[],this[M]=0,this[j]=0,this[me]=e=>Ae(this,e),this[ue]=e=>Ee(this,e)}get pipelining(){return this[P]}set pipelining(e){this[P]=e,this[me](!0)}get stats(){return new s(this)}get[C](){return this[T].length-this[j]}get[S](){return this[j]-this[M]}get[w](){return this[T].length-this[M]}get[E](){return!!this[de]&&!this[D]&&!this[de].destroyed}get[y](){let e=this[de]?.version===`h2`;return!!(this[de]?.busy(null)||this[w]>=(we(this)||1)||this[C]>0&&!e)}[b](e){De(this),this.once(`connect`,e)}[se](e,t){let n=new l(this[h].origin,e,t);return this[T].push(n),this[x]||(o.bodyLength(n.body)==null&&o.isIterable(n.body)?(this[x]=1,queueMicrotask(()=>Ae(this))):this[me](!0)),this[x]&&this[O]!==2&&this[y]&&(this[O]=2),this[O]<2}[ae](){return new Promise(e=>{this[w]?this[ve]=e:e(null)})}[oe](e){return new Promise(t=>{let n=this[T].splice(this[j]);for(let t=0;t{this[ve]&&(this[ve](),this[ve]=null),t(null)};this[de]?(this[de].destroy(e,r),this[de]=null):queueMicrotask(r),this[me]()})}};function Ee(e,t){if(e[S]===0&&t.code!==`UND_ERR_INFO`&&t.code!==`UND_ERR_SOCKET`){r(e[j]===e[M]);let n=e[T].splice(e[M]);for(let r=0;r{if(i)Oe(e,i,{host:t,hostname:n,protocol:a,port:s}),e[me]();else if(e.destroyed)o.destroy(l.on(`error`,be),new p),e[me]();else{r(l);try{e[de]=l.alpnProtocol===`h2`?_e(e,l):ge(e,l)}catch(r){l.destroy().on(`error`,be),Oe(e,r,{host:t,hostname:n,protocol:a,port:s}),e[me]();return}e[D]=!1,l[z]=0,l[ie]=e[ie],l[v]=e,l[N]=null,c.connected.hasSubscribers&&c.connected.publish({connectParams:{host:t,hostname:n,protocol:a,port:s,version:e[de]?.version,servername:e[g],localAddress:e[ce]},connector:e[re],socket:l}),e.emit(`connect`,e[h],[e]),e[me]()}})}catch(r){Oe(e,r,{host:t,hostname:n,protocol:a,port:s}),e[me]()}}function Oe(e,t,{host:n,hostname:r,protocol:i,port:a}){if(!e.destroyed){if(e[D]=!1,c.connectError.hasSubscribers&&c.connectError.publish({connectParams:{host:n,hostname:r,protocol:i,port:a,version:e[de]?.version,servername:e[g],localAddress:e[ce]},connector:e[re],error:t}),t.code===`ERR_TLS_CERT_ALTNAME_INVALID`){let n=e[T].splice(e[M],e[S]);e[j]=e[M];for(let r=0;r0&&e[T][e[j]].servername===e[g];){let n=e[T].splice(e[j],1)[0];o.errorRequest(e,n,t)}}else Ee(e,t);e.emit(`connectionError`,e[h],[e],t)}}function ke(e){e[O]=0,e.emit(`drain`,e[h],[e])}function Ae(e,t){e[x]!==2&&(e[x]=2,je(e,t),e[x]=0,e[M]>256&&(e[T].splice(0,e[M]),e[j]-=e[M],e[M]=0))}function je(e,t){for(;;){if(e.destroyed){r(e[C]===0);return}if(e[ve]&&!e[w]){e[ve](),e[ve]=null;return}if(e[de]&&e[de].resume(),e[y])e[O]=2;else if(e[O]===2){t?(e[O]=1,queueMicrotask(()=>ke(e))):ke(e);continue}if(e[C]===0||e[S]>=(we(e)||1))return;let n=e[T][e[j]];if(n===null)return;if(n.aborted)e[T].splice(e[j],1);else{if(e[h].protocol===`https:`&&e[g]!==n.servername){if(e[S]>0)return;e[g]=n.servername,e[de]?.destroy(new f(`servername changed`),()=>{e[de]=null,Ae(e)})}if(e[D])return;if(!e[de]){e[g]=n.servername,De(e);return}if(e[de].destroyed||e[de].busy(n))return;!n.aborted&&e[de].write(n)?e[j]++:e[T].splice(e[j],1)}}}n.exports=Te})),qi=/* @__PURE__ */ a(((e,t)=>{let n=2047;var r=class{bottom=0;top=0;list=Array(2048).fill(void 0);next=null;isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&n)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&n}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&n,e)}};t.exports=class{constructor(){this.head=this.tail=new r}isEmpty(){return this.head.isEmpty()}push(e){this.head.isFull()&&(this.head=this.head.next=new r),this.head.push(e)}shift(){let e=this.tail,t=e.shift();return e.isEmpty()&&e.next!==null&&(this.tail=e.next,e.next=null),t}}})),Ji=/* @__PURE__ */ a(((e,t)=>{let{PoolStats:n}=Ci(),r=Di(),i=qi(),{kConnected:a,kSize:o,kRunning:s,kPending:c,kQueued:l,kBusy:u,kFree:d,kUrl:f,kClose:p,kDestroy:m,kDispatch:h}=_i(),g=Symbol(`clients`),v=Symbol(`needDrain`),y=Symbol(`queue`),b=Symbol(`closed resolve`),x=Symbol(`onDrain`),S=Symbol(`onConnect`),C=Symbol(`onDisconnect`),w=Symbol(`onConnectionError`),T=Symbol(`on client busy`),E=Symbol(`on client drain`),D=Symbol(`drain queue`),O=Symbol(`get dispatcher`),k=Symbol(`has dispatcher`),A=Symbol(`add client`),j=Symbol(`remove client`);t.exports={PoolBase:class extends r{[y]=new i;[l]=0;[g]=[];[v]=!1;[x](e,t,n){if(e.closed||e.destroyed)return;let r=this[y],i=!1;for(this[E](e);!i;){let t=r.shift();if(!t)break;this[l]--,i=!e.dispatch(t.opts,t.handler)}if(e[v]=i,i&&this[T](e),!i&&this[v]&&(this[v]=!1,this.emit(`drain`,t,[this,...n])),this[b]&&r.isEmpty()){let e=[];for(let t=0;t{this.emit(`connect`,e,[this,...t])};[C]=(e,t,n)=>{this.emit(`disconnect`,e,[this,...t],n)};[w]=(e,t,n)=>{this.emit(`connectionError`,e,[this,...t],n)};get[u](){return this[v]}get[a](){let e=0;for(let{[a]:t}of this[g])e+=t;return e}get[d](){let e=0;for(let{[a]:t,[v]:n}of this[g])e+=t&&!n;return e}get[c](){let e=this[l];for(let{[c]:t}of this[g])e+=t;return e}get[s](){let e=0;for(let{[s]:t}of this[g])e+=t;return e}get[o](){let e=this[l];for(let{[o]:t}of this[g])e+=t;return e}get stats(){return new n(this)}[p](){if(this[y].isEmpty()){let e=[];for(let t=0;t{this[b]=e})}[m](e){for(;;){let t=this[y].shift();if(!t)break;t.handler.onResponseError(null,e)}let t=Array(this[g].length);for(let n=0;n{this[v]&&!e[v]&&this[x](e,e[f],[e,this])}),this}[j](e){let t=this[g].indexOf(e);t!==-1&&this[g].splice(t,1),e.close(()=>{}),this[v]=!this[g].some(e=>!e[v]&&e.closed!==!0&&e.destroyed!==!0)}},kClients:g,kNeedDrain:v,kAddClient:A,kRemoveClient:j,kDrainQueue:D,kOnClientBusy:T,kOnClientDrain:E,kGetDispatcher:O,kHasDispatcher:k}})),Yi=/* @__PURE__ */ a(((e,t)=>{let{PoolBase:n,kClients:r,kNeedDrain:i,kAddClient:a,kDrainQueue:o,kOnClientBusy:s,kOnClientDrain:c,kGetDispatcher:l,kHasDispatcher:u,kRemoveClient:d}=Ji(),f=Ki(),{InvalidArgumentError:p}=yi(),m=Si(),{kConnecting:h,kHTTPContext:g,kUrl:v}=_i(),y=Oi(),b=Symbol(`options`),x=Symbol(`connections`),S=Symbol(`factory`),C=Symbol(`protocol`),w=Symbol(`protocol probe`);function T(e,t){return new f(e,t)}function E(e,t){return t instanceof f&&e[C]!==`h1`&&(e[b].useH2c===!0||e[v].protocol===`https:`&&e[b].allowH2!==!1)}function D(e){let t=e[S](e[v],e[b]);return E(e,t)&&(e[w]=t),e[a](t),t}t.exports=class extends n{constructor(e,{connections:t,factory:n=T,connect:i,connectTimeout:a,tls:s,maxCachedSessions:c,socketPath:l,autoSelectFamily:u,autoSelectFamilyAttemptTimeout:d,allowH2:h,useH2c:E,clientTtl:D,...O}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new p(`invalid connections`);if(typeof n!=`function`)throw new p(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new p(`connect must be a function or an object`);typeof i!=`function`&&(i=y({...s,maxCachedSessions:c,allowH2:h,useH2c:E,socketPath:l,timeout:a,...typeof u==`boolean`?{autoSelectFamily:u,autoSelectFamilyAttemptTimeout:d}:void 0,...i})),super(O),this[x]=t||null,this[v]=m.parseOrigin(e),this[b]={...m.deepClone(O),connect:i,allowH2:h,useH2c:E,clientTtl:D,socketPath:l},this[S]=n,this[C]=null,this[w]=null,this.on(`connect`,(e,t)=>{if(D!=null&&D>0)for(let e of t)Object.assign(e,{ttl:Date.now()});let n=t[t.length-1];n instanceof f&&(this[C]=n[g]?.version),n===this[w]&&this[C]!==`h2`&&(this[w]=null,this[o](e,t.slice(1)))}),this.on(`disconnect`,(e,t)=>{t.includes(this[w])&&(this[w]=null,this[o](e,t.slice(1)))}),this.on(`connectionError`,(e,t)=>{let n=!1;for(let e of t){e===this[w]&&(this[w]=null,n=!0);let t=this[r].indexOf(e);t!==-1&&this[r].splice(t,1)}n&&this[o](e,t.slice(1))})}[s](e){this[w]===null&&e[h]&&E(this,e)&&(this[w]=e)}[c](e){e===this[w]&&(this[w]=null)}[l](){let e=this[b].clientTtl;for(let t=0;t0&&n.ttl&&Date.now()-n.ttl>e)this[d](n),t--;else if(!n[i])return n}if(this[w]===null&&(!this[x]||this[r].length0&&n.ttl&&Date.now()-n.ttl>e)this[d](n),t--;else if(!n[i])return!0}return this[w]===null&&(!this[x]||this[r].length{let{BalancedPoolMissingUpstreamError:n,InvalidArgumentError:r}=yi(),{PoolBase:i,kClients:a,kNeedDrain:o,kAddClient:s,kRemoveClient:c,kGetDispatcher:l}=Ji(),u=Yi(),{kOriginless:d,kUrl:f}=_i(),p=Si(),m=Symbol(`factory`),h=Symbol(`options`),g=Symbol(`kGreatestCommonDivisor`),v=Symbol(`kCurrentWeight`),y=Symbol(`kIndex`),b=Symbol(`kWeight`),x=Symbol(`kMaxWeightPerServer`),S=Symbol(`kErrorPenalty`);function C(e,t){if(e===0)return t;for(;t!==0;){let n=t;t=e%t,e=n}return e}function w(e,t){return new u(e,t)}t.exports=class extends i{constructor(e=[],{factory:t=w,connect:n,tls:i,...a}={}){if(typeof t!=`function`)throw new r(`factory must be a function.`);super(a),this[d]=!0,n&&typeof n!=`function`&&(n={...n}),i&&typeof i!=`function`&&(i={...i}),this[h]={...p.deepClone(a),connect:n,tls:i},this[y]=-1,this[v]=0,this[x]=this[h].maxWeightPerServer||100,this[S]=this[h].errorPenalty||15,Array.isArray(e)||(e=[e]),this[m]=t;for(let t of e)this.addUpstream(t);this._updateBalancedPoolStats()}addUpstream(e){let t=p.parseOrigin(e).origin;if(this[a].find(e=>e[f].origin===t&&e.closed!==!0&&e.destroyed!==!0))return this;let n=this[m](t,this[h]);this[s](n),n.on(`connect`,()=>{n[b]=Math.min(this[x],n[b]+this[S])}),n.on(`connectionError`,()=>{n[b]=Math.max(1,n[b]-this[S]),this._updateBalancedPoolStats()}),n.on(`disconnect`,(...e)=>{let t=e[2];t&&t.code===`UND_ERR_SOCKET`&&(n[b]=Math.max(1,n[b]-this[S]),this._updateBalancedPoolStats())});for(let e of this[a])e[b]=this[x];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let e=0;for(let t=0;te[f].origin===t&&e.closed!==!0&&e.destroyed!==!0);return n&&this[c](n),this}getUpstream(e){let t=p.parseOrigin(e).origin;return this[a].find(e=>e[f].origin===t&&e.closed!==!0&&e.destroyed!==!0)}get upstreams(){return this[a].filter(e=>e.closed!==!0&&e.destroyed!==!0).map(e=>e[f].origin)}[l](){if(this[a].length===0)throw new n;let e=0,t=-1;for(;e++this[a][t][b])&&(t=this[y]),e[b]>=this[v]))return e}if(t!==-1)return this[v]=this[a][t][b],this[y]=t,this[a][t]}}})),Zi=/* @__PURE__ */ a(((e,t)=>{let{PoolBase:n,kClients:r,kNeedDrain:i,kAddClient:a,kGetDispatcher:o,kHasDispatcher:s,kRemoveClient:c}=Ji(),l=Ki(),{InvalidArgumentError:u}=yi(),d=Si(),{kUrl:f}=_i(),p=Oi(),m=Symbol(`options`),h=Symbol(`connections`),g=Symbol(`factory`),v=Symbol(`index`);function y(e,t){return new l(e,t)}t.exports=class extends n{constructor(e,{connections:t,factory:n=y,connect:i,connectTimeout:a,tls:o,maxCachedSessions:s,socketPath:c,autoSelectFamily:l,autoSelectFamilyAttemptTimeout:b,allowH2:x,clientTtl:S,...C}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new u(`invalid connections`);if(typeof n!=`function`)throw new u(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new u(`connect must be a function or an object`);typeof i!=`function`&&(i=p({...o,maxCachedSessions:s,allowH2:x,socketPath:c,timeout:a,...typeof l==`boolean`?{autoSelectFamily:l,autoSelectFamilyAttemptTimeout:b}:void 0,...i})),super(C),this[h]=t||null,this[f]=d.parseOrigin(e),this[m]={...d.deepClone(C),connect:i,allowH2:x,clientTtl:S,socketPath:c},this[g]=n,this[v]=-1,this.on(`connect`,(e,t)=>{if(S!=null&&S>0)for(let e of t)Object.assign(e,{ttl:Date.now()})}),this.on(`connectionError`,(e,t,n)=>{for(let e of t){let t=this[r].indexOf(e);t!==-1&&this[r].splice(t,1)}})}[o](){let e=this[m].clientTtl;if(this[r].length===0){let e=this[g](this[f],this[m]);return this[a](e),e}let t=0;for(;t0&&n.ttl&&Date.now()-n.ttl>e)this[c](n),this[v]--;else{if(!n[i])return n;t++}}if(!this[h]||this[r].length0&&n.ttl&&Date.now()-n.ttl>e)this[c](n),t<=this[v]&&this[v]--,t--;else if(!n[i])return!0}if(!this[h]||this[r].length{let{InvalidArgumentError:n,MaxOriginsReachedError:r}=yi(),{kBusy:i,kClients:a,kConnected:o,kRunning:s,kPending:c,kClose:l,kDestroy:u,kDispatch:d,kUrl:f}=_i(),p=Di(),m=Yi(),h=Ki(),g=Si(),v=Symbol(`onConnect`),y=Symbol(`onDisconnect`),b=Symbol(`onConnectionError`),x=Symbol(`onDrain`),S=Symbol(`factory`),C=Symbol(`options`),w=Symbol(`origins`);function T(e,t){return t&&t.connections===1?new h(e,t):new m(e,t)}t.exports=class extends p{constructor({factory:e=T,maxOrigins:t=1/0,connect:r,...i}={}){if(typeof e!=`function`)throw new n(`factory must be a function.`);if(r!=null&&typeof r!=`function`&&typeof r!=`object`)throw new n(`connect must be a function or an object`);if(typeof t!=`number`||Number.isNaN(t)||t<=0)throw new n(`maxOrigins must be a number greater than 0`);super(i),r&&typeof r!=`function`&&(r={...r}),this[C]={...g.deepClone(i),maxOrigins:t,connect:r},this[S]=e,this[a]=/* @__PURE__ */ new Map,this[w]=/* @__PURE__ */ new Set,this[x]=(e,t)=>{this.emit(`drain`,e,[this,...t])},this[v]=(e,t)=>{this.emit(`connect`,e,[this,...t])},this[y]=(e,t,n)=>{this.emit(`disconnect`,e,[this,...t],n)},this[b]=(e,t,n)=>{this.emit(`connectionError`,e,[this,...t],n)}}get[s](){let e=0;for(let t of this[a].values())e+=t[s];return e}[d](e,t){let s;if(e.origin&&(typeof e.origin==`string`||e.origin instanceof URL))s=String(e.origin);else throw new n(`opts.origin must be a non-empty string or URL.`);let l=e.allowH2??this[C].allowH2,u=l===!1?`${s}#http1-only`:s;if(this[w].size>=this[C].maxOrigins&&!this[w].has(s))throw new r;let d=this[a].get(u);if(!d){d=this[S](e.origin,l===!1?{...this[C],allowH2:!1}:this[C]);let t=()=>{if(this[a].get(u)!==d||d[o]>0||d[i]||d[c]>0)return;this[a].delete(u),d.destroyed||d.close();let e=!1;for(let t of this[a].keys())if(t===s||t===`${s}#http1-only`){e=!0;break}e||this[w].delete(s)};d.on(`drain`,this[x]).on(`connect`,this[v]).on(`disconnect`,(e,n,r)=>{t(),this[y](e,n,r)}).on(`connectionError`,(e,n,r)=>{t(),this[b](e,n,r)}),this[a].set(u,d),this[w].add(s)}return d.dispatch(e,t)}[l](){let e=[];for(let t of this[a].values())e.push(t.close());return this[a].clear(),Promise.all(e)}[u](e){let t=[];for(let n of this[a].values())t.push(n.destroy(e));return this[a].clear(),Promise.all(t)}get stats(){let e={};for(let t of this[a].values())t.stats&&(e[t[f].origin]=t.stats);return e}}})),$i=/* @__PURE__ */ a(((e,t)=>{let n=Ei(),{InvalidArgumentError:r}=yi(),{toRawHeaders:i}=Si(),{kOriginless:a,kUrl:o}=_i();var s=class{#e;constructor(e){this.#e=e}onRequestStart(e,t){this.#e.onConnect?.(t=>e.abort(t),t)}onRequestUpgrade(e,t,n,r){let a=e?.rawHeaders??i(n??{});this.#e.onUpgrade?.(t,a,r)}onResponseStart(e,t,n,r){let a=e?.rawHeaders??i(n??{});this.#e.onHeaders?.(t,a,()=>e.resume(),r)===!1&&e.pause()}onResponseData(e,t){this.#e.onData?.(t)===!1&&e.pause()}onResponseEnd(e,t){let n=e?.rawTrailers??i(t??{});this.#e.onComplete?.(n)}onResponseError(e,t){if(!this.#e.onError)throw t;this.#e.onError(t)}onBodySent(e){this.#e.onBodySent?.(e)}onRequestSent(){this.#e.onRequestSent?.()}onResponseStarted(){this.#e.onResponseStarted?.()}};t.exports=class e extends n{#e;constructor(e){if(super(),!e||typeof e.dispatch!=`function`)throw new r(`Argument dispatcher must implement dispatch`);this.#e=e,this[o]=e[o],this[a]=e[a]}static wrapHandler(e){if(!e||typeof e!=`object`)throw new r(`handler must be an object`);return typeof e.onRequestStart==`function`?e:new s(e)}dispatch(t,n){return t.allowH2!==!1&&(t={...t,allowH2:!1}),this.#e.dispatch(t,e.wrapHandler(n))}close(...e){return this.#e.close(...e)}destroy(...e){return this.#e.destroy(...e)}}})),ea=/* @__PURE__ */ a(((e,n)=>{let{Buffer:r}=t(`node:buffer`),i=t(`node:net`),{InvalidArgumentError:a}=yi();function o(e){if(i.isIPv4(e)){let t=e.split(`.`).map(Number);return{type:1,buffer:r.from(t)}}if(i.isIPv6(e))return{type:4,buffer:s(e)};let t=r.from(e,`utf8`);if(t.length>255)throw new a(`Domain name too long (max 255 bytes)`);return{type:3,buffer:r.concat([r.from([t.length]),t])}}function s(e){let t=r.alloc(16),n=e;if(e.includes(`.`)){let t=e.lastIndexOf(`:`),r=e.slice(t+1);if(i.isIPv4(r)){let i=r.split(`.`).map(Number),a=(i[0]<<8|i[1]).toString(16),o=(i[2]<<8|i[3]).toString(16);n=`${e.slice(0,t)}:${a}:${o}`}}let a=n.indexOf(`::`);if(a!==-1){let e=n.slice(0,a),r=n.slice(a+2),i=e===``?[]:e.split(`:`),o=r===``?[]:r.split(`:`),s=0;for(let e of i)t.writeUInt16BE(parseInt(e,16),s),s+=2;s=16-o.length*2;for(let e of o)t.writeUInt16BE(parseInt(e,16),s),s+=2}else{let e=n.split(`:`);for(let n=0;n{let{EventEmitter:r}=t(`node:events`),{Buffer:i}=t(`node:buffer`),{InvalidArgumentError:a,Socks5ProxyError:o}=yi(),{debuglog:s}=t(`node:util`),{parseAddress:c}=ea(),l=s(`undici:socks5`),u=i.alloc(0),d={NO_AUTH:0,GSSAPI:1,USERNAME_PASSWORD:2,NO_ACCEPTABLE:255},f={CONNECT:1,BIND:2,UDP_ASSOCIATE:3},p={IPV4:1,DOMAIN:3,IPV6:4},m={SUCCEEDED:0,GENERAL_FAILURE:1,CONNECTION_NOT_ALLOWED:2,NETWORK_UNREACHABLE:3,HOST_UNREACHABLE:4,CONNECTION_REFUSED:5,TTL_EXPIRED:6,COMMAND_NOT_SUPPORTED:7,ADDRESS_TYPE_NOT_SUPPORTED:8},h={INITIAL:`initial`,HANDSHAKING:`handshaking`,AUTHENTICATING:`authenticating`,AUTHENTICATED:`authenticated`,CONNECTING:`connecting`,CONNECTED:`connected`,ERROR:`error`,CLOSED:`closed`};n.exports={Socks5Client:class extends r{constructor(e,t={}){if(super(),!e)throw new a(`socket is required`);this.socket=e,this.options=t,this.state=h.INITIAL,this.buffer=u,this.onSocketData=this.onData.bind(this),this.onSocketError=this.onError.bind(this),this.onSocketClose=this.onClose.bind(this),this.authMethods=[],t.username&&t.password&&this.authMethods.push(d.USERNAME_PASSWORD),this.authMethods.push(d.NO_AUTH),this.socket.on(`data`,this.onSocketData),this.socket.on(`error`,this.onSocketError),this.socket.on(`close`,this.onSocketClose)}onData(e){l(`received data`,e.length,`bytes in state`,this.state),this.buffer=i.concat([this.buffer,e]);try{switch(this.state){case h.HANDSHAKING:this.handleHandshakeResponse();break;case h.AUTHENTICATING:this.handleAuthResponse();break;case h.CONNECTING:this.handleConnectResponse()}}catch(e){this.onError(e)}}onError(e){l(`socket error`,e),this.state=h.ERROR,this.emit(`error`,e),this.destroy()}onClose(){l(`socket closed`),this.state=h.CLOSED,this.emit(`close`)}destroy(){this.socket&&!this.socket.destroyed&&this.socket.destroy()}markAuthenticated(){this.state=h.AUTHENTICATED,this.emit(`authenticated`)}handshake(){if(this.state!==h.INITIAL)throw new a(`Handshake already started`);l(`starting handshake with`,this.authMethods.length,`auth methods`),this.state=h.HANDSHAKING;let e=i.alloc(2+this.authMethods.length);e[0]=5,e[1]=this.authMethods.length,this.authMethods.forEach((t,n)=>{e[2+n]=t}),this.socket.write(e)}handleHandshakeResponse(){if(this.buffer.length<2)return;let e=this.buffer[0],t=this.buffer[1];if(e!==5)throw new o(`Invalid SOCKS version: ${e}`,`UND_ERR_SOCKS5_VERSION`);if(t===d.NO_ACCEPTABLE)throw new o(`No acceptable authentication method`,`UND_ERR_SOCKS5_AUTH_REJECTED`);if(this.buffer=this.buffer.subarray(2),l(`server selected auth method`,t),t===d.NO_AUTH)this.markAuthenticated();else if(t===d.USERNAME_PASSWORD)this.state=h.AUTHENTICATING,this.sendAuthRequest();else throw new o(`Unsupported authentication method: ${t}`,`UND_ERR_SOCKS5_AUTH_METHOD`)}sendAuthRequest(){let{username:e,password:t}=this.options;if(!e||!t)throw new a(`Username and password required for authentication`);l(`sending username/password auth`);let n=i.from(e),r=i.from(t);if(n.length>255||r.length>255)throw new a(`Username or password too long`);let o=i.alloc(3+n.length+r.length);o[0]=1,o[1]=n.length,n.copy(o,2),o[2+n.length]=r.length,r.copy(o,3+n.length),this.socket.write(o)}handleAuthResponse(){if(this.buffer.length<2)return;let e=this.buffer[0],t=this.buffer[1];if(e!==1)throw new o(`Invalid auth sub-negotiation version: ${e}`,`UND_ERR_SOCKS5_AUTH_VERSION`);if(t!==0)throw new o(`Authentication failed`,`UND_ERR_SOCKS5_AUTH_FAILED`);this.buffer=this.buffer.subarray(2),l(`authentication successful`),this.markAuthenticated()}connect(e,t){if(this.state===h.CONNECTING||this.state===h.CONNECTED)throw new a(`Connection already in progress`);if(this.state!==h.AUTHENTICATED)throw new a(`Client must be authenticated before CONNECT`);l(`connecting to`,e,t),this.state=h.CONNECTING;let n=this.buildConnectRequest(f.CONNECT,e,t);this.socket.write(n)}buildConnectRequest(e,t,n){let{type:r,buffer:a}=c(t),o=i.alloc(4+a.length+2);return o[0]=5,o[1]=e,o[2]=0,o[3]=r,a.copy(o,4),o.writeUInt16BE(n,4+a.length),o}handleConnectResponse(){if(this.buffer.length<4)return;let e=this.buffer[0],t=this.buffer[1],n=this.buffer[3];if(e!==5)throw new o(`Invalid SOCKS version in reply: ${e}`,`UND_ERR_SOCKS5_REPLY_VERSION`);let r=4;if(n===p.IPV4)r+=6;else if(n===p.DOMAIN){if(this.buffer.length<5)return;r+=1+this.buffer[4]+2}else if(n===p.IPV6)r+=18;else throw new o(`Invalid address type in reply: ${n}`,`UND_ERR_SOCKS5_ADDR_TYPE`);if(this.buffer.length{let{URL:r}=t(`node:url`),i,a=Di(),{ConnectTimeoutError:o,InvalidArgumentError:s}=yi(),{Socks5Client:c,STATES:l}=ta(),{kBusy:u,kConnected:d,kDispatch:f,kClose:p,kDestroy:m}=_i(),h=Yi(),g=Oi(),{setupConnectTimeout:v}=Si(),{debuglog:y}=t(`node:util`),b=y(`undici:socks5-proxy`),x=Symbol(`proxy url`),S=Symbol(`proxy headers`),C=Symbol(`proxy auth`),w=Symbol(`proxy protocol`),T=Symbol(`pools`),E=Symbol(`connector`),D=Symbol(`connect timeout`),O=Symbol(`request tls settings`),k=Symbol(`request tls timeout`);function A(e,t,n){return new o(`Connect Timeout Error (attempted address: ${e}:${t}, timeout: ${n}ms)`)}let j=!1;n.exports=class extends a{constructor(e,t={}){if(super(t),j||=(process.emitWarning(`SOCKS5 proxy support is experimental and subject to change`,`ExperimentalWarning`),!0),!e)throw new s(`Proxy URL is mandatory`);let n=typeof e==`string`?new r(e):e;if(n.protocol!==`socks5:`&&n.protocol!==`socks:`)throw new s(`Proxy URL must use socks5:// or socks:// protocol`);this[x]=n,this[S]=t.headers||{},this[w]=t.proxyTls?`https:`:`http:`;let i=t.connectTimeout??5e3;if(!Number.isFinite(i)||i<0)throw new s(`invalid connectTimeout`);this[D]=i;let{timeout:a,...o}=t.requestTls||{},c=a??i;if(!Number.isFinite(c)||c<0)throw new s(`invalid requestTls.timeout`);this[O]=o,this[k]=c,this[C]={username:t.username||(n.username?decodeURIComponent(n.username):null),password:t.password||(n.password?decodeURIComponent(n.password):null)};let l=t.proxyTls?.timeout??i;if(!Number.isFinite(l)||l<0)throw new s(`invalid proxyTls.timeout`);this[E]=t.connect||g({...t.proxyTls,timeout:l,servername:t.proxyTls?.servername||n.hostname}),this[T]=/* @__PURE__ */ new Map}async createSocks5Connection(e,t){let n=this[x].hostname,r=parseInt(this[x].port)||1080;b(`creating SOCKS5 connection to`,n,r);let i=Promise.withResolvers();this[E]({hostname:n,host:n,port:r,protocol:this[w]},(e,t)=>{e?i.reject(e):i.resolve(t)});let a=await i.promise,o=new c(a,this[C]);o.on(`error`,e=>{b(`SOCKS5 error:`,e),a.destroy()}),await o.handshake();let s=Promise.withResolvers(),u=this[D]===0?null:setTimeout(()=>{d(),o.destroy(),s.reject(A(n,r,this[D]))},this[D]),d=()=>{clearTimeout(u),o.removeListener(`authenticated`,f),o.removeListener(`error`,p)},f=()=>{d(),s.resolve()},p=e=>{d(),s.reject(e)};o.state===l.AUTHENTICATED?(clearTimeout(u),s.resolve()):(o.once(`authenticated`,f),o.once(`error`,p)),await s.promise,await o.connect(e,t);let m=Promise.withResolvers(),h=this[D]===0?null:setTimeout(()=>{g(),o.destroy(),m.reject(A(e,t,this[D]))},this[D]),g=()=>{clearTimeout(h),o.removeListener(`connected`,v),o.removeListener(`error`,y)},v=n=>{b(`SOCKS5 tunnel established to`,e,t,`via`,n),g(),m.resolve()},y=e=>{g(),m.reject(e)};return o.once(`connected`,v),o.once(`error`,y),await m.promise,a}[f](e,n){let{origin:a}=e;b(`dispatching request to`,a,`via SOCKS5`);try{let o=String(a),s=this[T].get(o);if(!s||s.destroyed||s.closed){s=new h(a,{pipelining:e.pipelining,connections:e.connections,connect:async(e,n)=>{try{let e=new r(a),o=e.hostname,s=parseInt(e.port)||(e.protocol===`https:`?443:80);b(`establishing SOCKS5 connection to`,o,s);let c=await this.createSocks5Connection(o,s),l=c;if(e.protocol===`https:`){i||=t(`node:tls`),b(`upgrading to TLS`),l=i.connect({...this[O],socket:c,servername:this[O]?.servername||o});let e=Promise.withResolvers(),n=()=>{queueMicrotask(u),l.removeListener(`secureConnect`,r),l.removeListener(`error`,a)},r=()=>{n(),e.resolve()},a=t=>{n(),e.reject(t)},u=v(new WeakRef(l),{timeout:this[k],hostname:o,port:s});l.once(`secureConnect`,r),l.once(`error`,a),await e.promise}n(null,l)}catch(e){b(`SOCKS5 connection error:`,e),n(e)}}}),this[T].set(o,s);let n=()=>{this[T].get(o)!==s||s[d]>0||s[u]||(this[T].delete(o),s.destroyed||s.close())};s.on(`disconnect`,n),s.on(`connectionError`,n)}return s[f](e,n)}catch(e){if(b(`dispatch error:`,e),typeof n.onResponseError==`function`)return n.onResponseError(null,e),!1;if(typeof n.onError==`function`)return n.onError(e),!1;throw e}}async[p](){let e=[];for(let t of this[T].values())e.push(t.close());this[T].clear(),await Promise.all(e)}async[m](e){let t=[];for(let n of this[T].values())t.push(n.destroy(e));this[T].clear(),await Promise.all(t)}}})),ra=/* @__PURE__ */ a(((e,t)=>{let{kProxy:n,kClose:r,kDestroy:i,kDispatch:a}=_i(),o=Qi(),s=Yi(),c=Di(),{InvalidArgumentError:l,RequestAbortedError:u,SecureProxyConnectionError:d,ProxyConnectionError:f}=yi(),p=Oi(),m=Ki(),{channels:h}=wi(),g=na(),{hasSafeIterator:v}=Si(),y=Symbol(`proxy agent`),b=Symbol(`proxy client`),x=Symbol(`proxy headers`),S=Symbol(`request tls settings`),C=Symbol(`proxy tls settings`),w=Symbol(`connect endpoint function`),T=Symbol(`connect endpoint function (http/1.1 only)`),E=Symbol(`tunnel proxy`);function D(e){return e===`https:`?443:80}function O(e,t){return new s(e,t)}let k=()=>{};function A(e,t){return t.connections===1?new m(e,t):new s(e,t)}function j(e,t){return t===!0||e!==`http:`}var M=class extends c{#e;#t;constructor(e,{headers:t={},connect:n,factory:r,proxyServername:i}){if(!e)throw new l(`Proxy URL is mandatory`);super(),this[x]=t,this.#t=i,this.#e=r?r(e,{connect:n}):new m(e,{connect:n})}[a](e,t){let n=t.onResponseStart;t.onResponseStart=function(e,r,i,a){r===407?typeof t.onResponseError==`function`&&t.onResponseError(e,new l(`Proxy Authentication Required (407)`)):n&&n.call(this,e,r,i,a)};let{origin:r,path:i=`/`,headers:o={}}=e;if(e.path=r+i,!(`host`in o)&&!(`Host`in o)){let{host:e}=new URL(r);o.host=e}return e.headers={...this[x],...o},this.#t!=null&&(e.servername=this.#t),this.#e[a](e,t)}[r](){return this.#e.close()}[i](e){return this.#e.destroy(e)}},N=class extends c{constructor(e){if(!e||typeof e==`object`&&!(e instanceof URL)&&!e.uri)throw new l(`Proxy uri is mandatory`);let{clientFactory:t=O}=e;if(typeof t!=`function`)throw new l(`Proxy opts.clientFactory must be a function.`);let{proxyTunnel:r,connectTimeout:i}=e;super(e);let a=this.#e(e),{href:s,origin:c,port:m,protocol:v,username:N,password:P,hostname:F}=a;if(this[n]={uri:s,protocol:v},this[S]=e.requestTls,this[C]=e.proxyTls,this[x]=e.headers||{},this[E]=r,e.auth&&e.token)throw new l(`opts.auth cannot be used in combination with opts.token`);e.auth?this[x][`proxy-authorization`]=`Basic ${e.auth}`:e.token?this[x][`proxy-authorization`]=e.token:N&&P?this[x][`proxy-authorization`]=`Basic ${Buffer.from(`${decodeURIComponent(N)}:${decodeURIComponent(P)}`).toString(`base64`)}`:N&&(this[x][`proxy-authorization`]=`Basic ${Buffer.from(`${decodeURIComponent(N)}:`).toString(`base64`)}`);let I=p({timeout:i,...e.proxyTls}),ee=p({timeout:i,...e.proxyTls,allowH2:!1});this[w]=p({timeout:i,...e.requestTls}),this[T]=p({timeout:i,...e.requestTls,allowH2:!1});let L=e.factory||A,R=(t,r)=>{let{protocol:a}=new URL(t);if(this[n].protocol===`socks5:`||this[n].protocol===`socks:`)return new g(this[n].uri,{headers:this[x],connect:I,factory:L,username:e.username||N,password:e.password||P,connectTimeout:i,proxyTls:e.proxyTls,requestTls:e.requestTls});if(!j(a,this[E])){let e=this[n].protocol===`https:`?(e,t)=>ee(e,(e,n)=>{e&&e.code===`ERR_TLS_CERT_ALTNAME_INVALID`?t(new d(e)):t(e,n)}):ee;return new M(this[n].uri,{headers:this[x],connect:e,factory:L,proxyServername:this[n].protocol===`https:`?this[C]?.servername||F:void 0})}return L(t,r)};v===`socks5:`||v===`socks:`?this[b]=null:this[b]=t(a,{connect:I}),this[y]=new o({...e,factory:R,connect:async(e,t)=>{if(!this[b]){t(new l(`Cannot establish tunnel connection without a proxy client`));return}let n=e.host;e.port||(n+=`:${D(e.protocol)}`);try{let r={origin:c,port:m,path:n,signal:e.signal,headers:{...this[x],host:e.host,...e.connections==null||e.connections>0?{"proxy-connection":`keep-alive`}:{}},servername:this[C]?.servername||F},{socket:i,statusCode:a}=await this[b].connect(r);if(a!==200){i.on(`error`,k).destroy(),t(new u(`Proxy response (${a}) !== 200 when HTTP Tunneling`));return}if(h.proxyConnected.hasSubscribers&&h.proxyConnected.publish({socket:i,connectParams:r}),e.protocol!==`https:`){t(null,i);return}let o;o=this[S]?this[S].servername:e.servername,(e.allowH2===!1?this[T]:this[w])({...e,servername:o,httpSocket:i},t)}catch(e){e.code===`ERR_TLS_CERT_ALTNAME_INVALID`?t(new d(e)):e.code===`UND_ERR_SOCKET`?t(new f(e)):t(e)}}})}dispatch(e,t){let n=P(e.headers);if(F(n),n&&!(`host`in n)&&!(`Host`in n)){let{host:t}=new URL(e.origin);n.host=t}return this[y].dispatch({...e,headers:n},t)}#e(e){return typeof e==`string`?new URL(e):e instanceof URL?e:new URL(e.uri)}[r](){let e=[this[y].close()];return this[b]&&e.push(this[b].close()),Promise.all(e)}[i](){let e=[this[y].destroy()];return this[b]&&e.push(this[b].destroy()),Promise.all(e)}};function P(e){if(Array.isArray(e)){let t={};for(let n=0;n1?i:i[0]}return t}return e}function F(e){for(let t in e)I(t)&&ee()}function I(e){return e.length===19&&e.toLowerCase()===`proxy-authorization`}function ee(){throw new l(`Proxy-Authorization should be sent in ProxyAgent constructor`)}t.exports=N})),ia=/* @__PURE__ */ a(((e,t)=>{let n=Di(),{kClose:r,kDestroy:i,kClosed:a,kDestroyed:o,kDispatch:s,kNoProxyAgent:c,kHttpProxyAgent:l,kHttpsProxyAgent:u}=_i(),d=ra(),f=Qi(),p={"http:":80,"https:":443};t.exports=class extends n{#e=null;#t=null;#n=null;constructor(e={}){super(e),this.#n=e;let{httpProxy:t,httpsProxy:n,noProxy:r,...i}=e;this[c]=new f(i);let a=t??process.env.http_proxy??process.env.HTTP_PROXY;a?this[l]=new d({...i,uri:a}):this[l]=this[c];let o=n??process.env.https_proxy??process.env.HTTPS_PROXY;o?this[u]=new d({...i,uri:o}):this[u]=this[l],this.#a()}[s](e,t){let n=new URL(e.origin);return this.#r(n).dispatch(e,t)}[r](){return Promise.all([this[c].close(),!this[l][a]&&this[l].close(),!this[u][a]&&this[u].close()])}[i](e){return Promise.all([this[c].destroy(e),!this[l][o]&&this[l].destroy(e),!this[u][o]&&this[u].destroy(e)])}#r(e){let{protocol:t,host:n,port:r}=e;return n=n.replace(/:\d*$/,``).replace(/^\[(.+)\]$/,`$1`).toLowerCase(),n.length>1&&n.charCodeAt(n.length-1)===46&&(n=n.slice(0,-1)),r=Number.parseInt(r,10)||p[t]||0,this.#i(n,r)?t===`https:`?this[u]:this[l]:this[c]}#i(e,t){if(this.#o&&this.#a(),this.#t.length===0)return!0;for(let n=0;n{let r=t(`node:assert`),{kRetryHandlerDefaultRetry:i}=_i(),{RequestRetryError:a,RequestAbortedError:o}=yi(),{isDisturbed:s,parseRangeHeader:c,wrapRequestBody:l}=Si();function u(e){let t=new Date(e).getTime();return isNaN(t)?null:t-Date.now()}function d(e,t,n,r){let i=e[`content-length`];if(i==null||!Number.isFinite(t.start)||!Number.isFinite(t.end))return;let o=Number(i),s=t.end-t.start+1;if(!Number.isFinite(o)||o!==s)throw new a(`Content-Length mismatch`,n,{headers:e,data:{count:r}})}var f=class{#e;#t=!1;#n=null;constructor(e){this.#e=e}set target(e){this.#n=e,this.#t&&e?.pause()}get target(){return this.#n}pause(){this.#t=!0,this.#n?.pause()}resume(){this.#t=!1,this.#n?.resume()}abort(e){this.#n?.abort(e),this.#e(e)}get paused(){return this.#t||(this.#n?.paused??!1)}get aborted(){return this.#n?.aborted??!1}get reason(){return this.#n?.reason??null}get rawHeaders(){return this.#n?.rawHeaders??null}set rawHeaders(e){this.#n&&(this.#n.rawHeaders=e)}get rawTrailers(){return this.#n?.rawTrailers??null}set rawTrailers(e){this.#n&&(this.#n.rawTrailers=e)}};n.exports=class e{constructor(t,{dispatch:n,handler:r}){let{retryOptions:a,...o}=t,{retry:s,maxRetries:c,maxTimeout:u,minTimeout:d,timeoutFactor:p,methods:m,errorCodes:h,retryAfter:g,statusCodes:v,throwOnError:y}=a??{};this.error=null,this.dispatch=n,this.handler=r,this.opts={...o,body:l(t.body)},this.retryOpts={throwOnError:y??!0,retry:s??e[i],retryAfter:g??!0,maxTimeout:u??3e4,minTimeout:d??500,timeoutFactor:p??2,maxRetries:c??5,methods:m??[`GET`,`HEAD`,`OPTIONS`,`PUT`,`DELETE`,`TRACE`,`QUERY`],statusCodes:v??[500,502,503,504,429],errorCodes:h??[`ECONNRESET`,`ECONNREFUSED`,`ENOTFOUND`,`ENETDOWN`,`ENETUNREACH`,`EHOSTDOWN`,`EHOSTUNREACH`,`EPIPE`,`UND_ERR_SOCKET`]},this.retryCount=0,this.retryCountCheckpoint=0,this.headersSent=!1,this.start=0,this.end=null,this.etag=null,this.statusCode=null,this.headers=null,this.controllerProxy=new f(e=>this.#e(e)),this.retryPending=!1,this.retryTimer=null,this.pendingResponseData=null,this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,this.aborted=!1}onResponseStartWithRetry(e,t,n,r,i){if(this.retryOpts.throwOnError){this.retryOpts.statusCodes.includes(t)===!1?this.headersSent?this.handler.onResponseError?.(this.controllerProxy,i):(this.headersSent=!0,this.checkpointResponseEnd(n),this.handler.onResponseStart?.(this.controllerProxy,t,n,r)):this.error=i;return}if(s(this.opts.body)){this.headersSent=!0,this.checkpointResponseEnd(n),this.handler.onResponseStart?.(this.controllerProxy,t,n,r);return}function a(a){if(this.aborted)return;this.retryPending=!1,this.retryTimer=null;let o=this.pendingResponseData,s=this.pendingResponseTrailers,c=this.pendingResponseEnded;if(this.pendingResponseData=null,this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,a){if(this.headersSent)this.handler.onResponseError?.(this.controllerProxy,a);else{if(this.headersSent=!0,this.checkpointResponseEnd(n),this.handler.onResponseStart?.(this.controllerProxy,t,n,r),e.resume(),c){for(let t of o)this.onResponseData(e,t);this.onResponseEnd(e,s)}return}e.resume()}else this.error=i,e.resume(),c&&this.onResponseEnd(e,s)}e.pause(),this.retryPending=!0,this.pendingResponseData=[],this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,this.retryTimer=this.retryOpts.retry(i,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},a.bind(this))??null}checkpointResponseEnd(e){if(this.end==null&&this.opts.method!==`HEAD`){let t=e[`content-length`];this.end=t==null?null:Number(t)-1,r(this.end==null||Number.isFinite(this.end),`invalid content-length`),this.resume=this.end!=null}}onRequestStart(e,t){this.controllerProxy.target=e,this.headersSent||this.handler.onRequestStart?.(this.controllerProxy,t)}onBodySent(e){this.handler.onBodySent?.(e)}onRequestSent(){this.handler.onRequestSent?.()}onRequestUpgrade(e,t,n,r){this.handler.onRequestUpgrade?.(this.controllerProxy,t,n,r)}static[i](e,{state:t,opts:n},r){let{statusCode:i,code:a,headers:o}=e,{method:s,retryOptions:c}=n,{maxRetries:l,minTimeout:d,maxTimeout:f,timeoutFactor:p,statusCodes:m,errorCodes:h,methods:g,retryAfter:v}=c,{counter:y}=t;if(a&&a!==`UND_ERR_REQ_RETRY`&&!h.includes(a)||Array.isArray(g)&&!g.includes(s)||i!=null&&Array.isArray(m)&&!m.includes(i)||y>l){r(e);return}let b=v===!1?void 0:o?.[`retry-after`];b&&=(b=Number(b),Number.isNaN(b)?u(o[`retry-after`]):b*1e3);let x=b===0?0:Math.min(b>0?b:d*p**(y-1),f);return setTimeout(()=>r(null),x)}onResponseStart(e,t,n,i){if(t<200)this.handler.onResponseStart?.(this.controllerProxy,t,n,i);else if(this.error=null,this.retryCount+=1,this.statusCode=t,this.headers=n,this.headersSent){if(t!==206&&(this.start>0||t!==200))throw new a(`server does not support the range header and the payload was partially consumed`,t,{headers:n,data:{count:this.retryCount}});let e=c(n[`content-range`]);if(!e)throw new a(`Content-Range mismatch`,t,{headers:n,data:{count:this.retryCount}});if(this.etag!=null&&this.etag!==n.etag)throw new a(`ETag mismatch`,t,{headers:n,data:{count:this.retryCount}});d(n,e,t,this.retryCount);let{start:r,size:i,end:o=i?i-1:null}=e;if(this.start!==r||this.end!=null&&this.end!==o)throw new a(`Content-Range mismatch`,t,{headers:n,data:{count:this.retryCount}})}else if(t>=300){let r=new a(`Request failed`,t,{headers:n,data:{count:this.retryCount}});this.onResponseStartWithRetry(e,t,n,i,r)}else if(this.end==null){if(t===206){let e=c(n[`content-range`]);if(e==null||e.end==null){this.headersSent=!0,this.handler.onResponseStart?.(this.controllerProxy,t,n,i);return}d(n,e,t,this.retryCount);let{start:a,size:o,end:s=o?o-1:null}=e;r(a!=null&&Number.isFinite(a),`content-range mismatch`),r(s!=null&&Number.isFinite(s),`invalid content-length`),this.start=a,this.end=s}if(this.end==null&&this.opts.method!==`HEAD`){let e=n[`content-length`];this.end=e==null?null:Number(e)-1}r(Number.isFinite(this.start)),r(this.end==null||Number.isFinite(this.end),`invalid content-length`),this.resume=!0,this.etag=n.etag==null?null:n.etag,this.etag!=null&&this.etag[0]===`W`&&this.etag[1]===`/`&&(this.etag=null),this.headersSent=!0,this.handler.onResponseStart?.(this.controllerProxy,t,n,i)}else throw new a(`Request failed`,t,{headers:n,data:{count:this.retryCount}})}onResponseData(e,t){this.pendingResponseData===null?this.error||(this.start+=t.length,this.handler.onResponseData?.(this.controllerProxy,t)):this.pendingResponseData.push(t)}onResponseEnd(e,t){if(this.pendingResponseData!==null)this.pendingResponseTrailers=t,this.pendingResponseEnded=!0;else{if(this.error&&this.retryOpts.throwOnError)throw this.error;if(!this.error){if(this.end!=null&&Number.isFinite(this.end)&&this.start!==this.end+1)throw new a(`Content-Range mismatch`,this.statusCode,{headers:this.headers,data:{count:this.retryCount}});return this.retryCount=0,this.handler.onResponseEnd?.(this.controllerProxy,t)}this.retry()}}retry(){if(this.start!==0){let e={range:`bytes=${this.start}-${this.end??``}`};this.etag!=null&&(e[`if-match`]=this.etag),this.opts={...this.opts,headers:{...this.opts.headers,...e}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(e){this.handler.onResponseError?.(this.controllerProxy,e)}}onResponseError(e,t){if(this.aborted)return;if(e?.aborted||s(this.opts.body)||this.headersSent&&!this.resume){this.handler.onResponseError?.(this.controllerProxy,t);return}function n(e){this.aborted||(this.retryPending=!1,this.retryTimer=null,e?this.handler?.onResponseError?.(this.controllerProxy,e):this.retry())}this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryPending=!0,this.retryTimer=this.retryOpts.retry(t,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},n.bind(this))??null}#e(e){this.retryPending&&(this.aborted=!0,this.retryPending=!1,clearTimeout(this.retryTimer),this.retryTimer=null,this.pendingResponseData=null,this.pendingResponseTrailers=null,this.pendingResponseEnded=!1,this.handler.onResponseError?.(this.controllerProxy,e??new o))}}})),oa=/* @__PURE__ */ a(((e,t)=>{let n=Ei(),r=aa(),{kOriginless:i,kUrl:a}=_i();t.exports=class extends n{#e=null;#t=null;constructor(e,t={}){super(t),this.#e=e,this.#t=t,this[a]=e[a],this[i]=e[i]}dispatch(e,t){let n=new r({...e,retryOptions:this.#t},{dispatch:this.#e.dispatch.bind(this.#e),handler:t});return this.#e.dispatch(e,n)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}}})),sa=/* @__PURE__ */ a(((e,t)=>{let{InvalidArgumentError:n}=yi(),r=Ki();t.exports=class extends r{constructor(e,t){if(typeof e==`string`&&(e=new URL(e)),e.protocol!==`http:`)throw new n(`h2c-client: Only h2c protocol is supported`);let{maxConcurrentStreams:r,pipelining:i,...a}=t??{},o=r??100,s=100;if(r!=null&&(!Number.isInteger(r)||r<1))throw new n(`maxConcurrentStreams must be a positive integer, greater than 0`);if(i!=null&&Number.isInteger(i)&&i>0&&(s=i),s>o)throw new n(`h2c-client: pipelining cannot be greater than maxConcurrentStreams`);super(e,{...a,maxConcurrentStreams:o,pipelining:s,allowH2:!0,useH2c:!0})}}})),ca=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{addAbortListener:i}=t(`node:events`),{Readable:a}=t(`node:stream`),{RequestAbortedError:o,NotSupportedError:s,InvalidArgumentError:c,AbortError:l}=yi(),u=Si(),d=Symbol(`kConsume`),f=Symbol(`kReading`),p=Symbol(`kBody`),m=Symbol(`kAbort`),h=Symbol(`kContentType`),g=Symbol(`kContentLength`),v=Symbol(`kUsed`),y=Symbol(`kBytesRead`),b=()=>{};var x=class extends a{constructor({resume:e,abort:t,contentType:n=``,contentLength:r,highWaterMark:i=65536}){super({autoDestroy:!0,read:e,highWaterMark:i}),this._readableState.dataEmitted=!1,this[m]=t,this[d]=null,this[y]=0,this[p]=null,this[v]=!1,this[h]=n,this[g]=Number.isFinite(r)?r:null,this[f]=!1}_destroy(e,t){!e&&!this._readableState.endEmitted&&(e=new o),e&&this[m](),this[v]?t(e):setImmediate(t,e)}on(e,t){return(e===`data`||e===`readable`)&&(this[f]=!0,this[v]=!0),super.on(e,t)}addListener(e,t){return this.on(e,t)}off(e,t){let n=super.off(e,t);return(e===`data`||e===`readable`)&&(this[f]=this.listenerCount(`data`)>0||this.listenerCount(`readable`)>0),n}removeListener(e,t){return this.off(e,t)}push(e){return e&&(this[y]+=e.length,this[d])?(k(this[d],e),!this[f]||super.push(e)):super.push(e)}text(){return w(this,`text`)}json(){return w(this,`json`)}blob(){return w(this,`blob`)}bytes(){return w(this,`bytes`)}arrayBuffer(){return w(this,`arrayBuffer`)}async formData(){throw new s}get bodyUsed(){return u.isDisturbed(this)}get body(){return this[p]||(this[p]=ReadableStream.from(this),this[d]&&(this[p].getReader(),r(this[p].locked))),this[p]}dump(e){let t=e?.signal;if(t!=null&&(typeof t!=`object`||!(`aborted`in t)))return Promise.reject(new c(`signal must be an AbortSignal`));let n=e?.limit&&Number.isFinite(e.limit)?e.limit:131072;return t?.aborted?Promise.reject(t.reason??new l):this._readableState.closeEmitted?Promise.resolve(null):new Promise((e,r)=>{if((this[g]&&this[g]>n||this[y]>n)&&this.destroy(new l),t){let n=i(t,()=>{this.destroy(t.reason??new l)});this.on(`close`,function(){n[Symbol.dispose](),t.aborted?r(t.reason??new l):e(null)})}else this.on(`close`,e);this.on(`error`,b).on(`data`,()=>{this[y]>n&&this.destroy()}).resume()})}setEncoding(e){return Buffer.isEncoding(e)&&super.setEncoding(e),this}};function S(e){return e[p]?.locked===!0||e[d]!==null}function C(e){return u.isDisturbed(e)||S(e)}function w(e,t){return r(!e[d]),new Promise((n,r)=>{if(C(e)){let t=e._readableState;t.destroyed&&t.closeEmitted===!1?e.on(`error`,r).on(`close`,()=>{r(/* @__PURE__ */ TypeError(`unusable`))}):r(t.errored??/* @__PURE__ */ TypeError(`unusable`))}else queueMicrotask(()=>{e[d]={type:t,stream:e,resolve:n,reject:r,length:0,body:[]},e.on(`error`,function(e){A(this[d],e)}).on(`close`,function(){this[d].body!==null&&A(this[d],new o)}),T(e[d])})})}function T(e){if(e.body===null)return;let{_readableState:t}=e.stream;if(t.bufferIndex){let n=t.bufferIndex,r=t.buffer.length;for(let i=n;i0&&k(e,Buffer.from(n.lastChar.subarray(0,n.lastTotal-n.lastNeed))),t.endEmitted)O(e,t.encoding);else for(e.stream.on(`end`,function(){O(this[d],this._readableState.encoding)}),e.stream.resume();e.stream.read()!=null;);}function E(e,t,n){if(e.length===0||t===0)return``;let r=e.length===1?e[0]:Buffer.concat(e,t),i=r.length,a=i>2&&r[0]===239&&r[1]===187&&r[2]===191?3:0;return!n||n===`utf8`||n===`utf-8`?r.utf8Slice(a,i):r.subarray(a,i).toString(n)}function D(e,t){if(e.length===0||t===0)return/* @__PURE__ */ new Uint8Array;if(e.length===1)return new Uint8Array(e[0]);let n=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer),r=0;for(let t=0;t{let r=t(`node:assert`),{AsyncResource:i}=t(`node:async_hooks`),{Readable:a}=ca(),{InvalidArgumentError:o,RequestAbortedError:s}=yi(),c=Si();function l(){}var u=class extends i{constructor(e,t){if(!e||typeof e!=`object`)throw new o(`invalid opts`);let{signal:n,method:r,opaque:i,body:a,onInfo:u,responseHeaders:d,highWaterMark:f}=e;try{if(typeof t!=`function`)throw new o(`invalid callback`);if(f!=null&&(!Number.isFinite(f)||f<0))throw new o(`invalid highWaterMark`);if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new o(`signal must be an EventEmitter or EventTarget`);if(r===`CONNECT`)throw new o(`invalid method`);if(u&&typeof u!=`function`)throw new o(`invalid onInfo callback`);super(`UNDICI_REQUEST`)}catch(e){throw c.isStream(a)&&c.destroy(a.on(`error`,l),e),e}this.method=r,this.responseHeaders=d||null,this.opaque=i||null,this.callback=t,this.res=null,this.abort=null,this.body=a,this.trailers={},this.context=null,this.controller=null,this.onInfo=u||null,this.highWaterMark=f,this.reason=null,this.removeAbortListener=null,n?.aborted?this.reason=n.reason??new s:n&&(this.removeAbortListener=c.addAbortListener(n,()=>{if(this.reason=n.reason??new s,this.res){let e=this.res;this.res=null,c.destroy(e.on(`error`,l),this.reason)}else this.abort&&this.abort(this.reason)}))}onRequestStart(e,t){this.reason?e.abort(this.reason):(r(this.callback),this.controller=e,this.abort=t=>e.abort(t),this.context=t)}onResponseStart(e,t,n,r){let{callback:i,opaque:o,context:s,responseHeaders:u,highWaterMark:d}=this,f=e?.rawHeaders,p=u===`raw`?c.parseRawHeaders(f):n;if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:p});return}let m=n,h=m?.[`content-type`],g=m?.[`content-length`],v=new a({resume:()=>e.resume(),abort:t=>e.abort(t),contentType:h,contentLength:this.method!==`HEAD`&&g?Number(g):null,highWaterMark:d});if(this.removeAbortListener&&=(v.on(`close`,this.removeAbortListener),null),this.callback=null,this.res=v,i!==null)try{this.runInAsyncScope(i,null,null,{statusCode:t,statusText:r,headers:p,trailers:this.trailers,opaque:o,body:v,context:s})}catch(e){this.res=null,c.destroy(v.on(`error`,l),e),queueMicrotask(()=>{throw e})}}onResponseData(e,t){this.res&&this.res.push(t)===!1&&e.pause()}onResponseEnd(e,t){if(t&&typeof t==`object`)for(let e of Object.keys(t))e===`__proto__`?Object.defineProperty(this.trailers,e,{value:t[e],enumerable:!0,configurable:!0,writable:!0}):this.trailers[e]=t[e];this.res?.push(null)}onResponseError(e,t){let{res:n,callback:r,body:i,opaque:a}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:a})})),n&&(this.res=null,queueMicrotask(()=>{c.destroy(n.on(`error`,l),t)})),i&&(this.body=null,c.isStream(i)&&(i.on(`error`,l),c.destroy(i,t))),this.removeAbortListener&&=(this.removeAbortListener(),null)}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new u(e,t);this.dispatch(e,n)}catch(n){if(typeof t!=`function`)throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}n.exports=d,n.exports.RequestHandler=u})),ua=/* @__PURE__ */ a(((e,t)=>{let{addAbortListener:n}=Si(),{RequestAbortedError:r}=yi(),i=Symbol(`kListener`),a=Symbol(`kSignal`);function o(e){e.abort?e.abort(e[a]?.reason):e.reason=e[a]?.reason??new r,c(e)}function s(e,t){e.reason=null,e[a]=null,e[i]=null,t&&(t.aborted?o(e):(e[a]=t,e[i]=()=>{o(e)},n(e[a],e[i])))}function c(e){e[a]&&(`removeEventListener`in e[a]?e[a].removeEventListener(`abort`,e[i]):e[a].removeListener(`abort`,e[i]),e[a]=null,e[i]=null)}t.exports={addSignal:s,removeSignal:c}})),da=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{AsyncResource:i}=t(`node:async_hooks`),{InvalidArgumentError:a,InvalidReturnValueError:o}=yi(),s=Si(),{addSignal:c,removeSignal:l}=ua();function u(){}function d(e){return e.errored??e.writableErrored??e._writableState?.errored}function f(){let e=/* @__PURE__ */ Error(`Premature close`);return e.code=`ERR_STREAM_PREMATURE_CLOSE`,e}function p(e,t){let n=!1,r=()=>{e.removeListener(`close`,a),e.removeListener(`error`,o),e.removeListener(`finish`,s)},i=(e,i=!1)=>{n||(n=!0,r(),t(e,i))},a=()=>{let t=d(e);i(t??(e.writableFinished?void 0:f()))},o=e=>i(e,!0),s=()=>i();e.on(`close`,a),e.on(`error`,o),e.on(`finish`,s),e.closed?process.nextTick(a):e.writableFinished&&process.nextTick(s)}var m=class extends i{constructor(e,t,n){if(!e||typeof e!=`object`)throw new a(`invalid opts`);let{signal:r,method:i,opaque:o,body:l,onInfo:d,responseHeaders:f}=e;try{if(typeof n!=`function`)throw new a(`invalid callback`);if(typeof t!=`function`)throw new a(`invalid factory`);if(r&&typeof r.on!=`function`&&typeof r.addEventListener!=`function`)throw new a(`signal must be an EventEmitter or EventTarget`);if(i===`CONNECT`)throw new a(`invalid method`);if(d&&typeof d!=`function`)throw new a(`invalid onInfo callback`);super(`UNDICI_STREAM`)}catch(e){throw s.isStream(l)&&s.destroy(l.on(`error`,u),e),e}this.responseHeaders=f||null,this.opaque=o||null,this.factory=t,this.callback=n,this.res=null,this.abort=null,this.context=null,this.controller=null,this.trailers=null,this.body=l,this.onInfo=d||null,s.isStream(l)&&l.on(`error`,e=>{this.onResponseError(this.controller,e)}),c(this,r)}onRequestStart(e,t){this.reason?e.abort(this.reason):(r(this.callback),this.controller=e,this.abort=t=>e.abort(t),this.context=t)}onResponseStart(e,t,n,r){let{factory:i,opaque:a,context:c,responseHeaders:l}=this,u=e?.rawHeaders,d=l===`raw`?s.parseRawHeaders(u):n;if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:d});return}if(this.factory=null,i===null)return;let f=this.runInAsyncScope(i,null,{statusCode:t,headers:d,opaque:a,context:c});if(!f||typeof f.write!=`function`||typeof f.end!=`function`||typeof f.on!=`function`)throw new o(`expected Writable`);p(f,(e,t)=>{let{callback:n,res:r,opaque:i,trailers:a,abort:o}=this;this.res=null,(e||!r?.readable)&&s.destroy(r,t?void 0:e),this.callback=null,this.runInAsyncScope(n,null,e||null,{opaque:i,trailers:a}),e&&o(e)}),f.on(`drain`,()=>e.resume()),this.res=f,(f.writableNeedDrain===void 0?f._writableState?.needDrain:f.writableNeedDrain)===!0&&e.pause()}onResponseData(e,t){let{res:n}=this;n&&n.write(t)===!1&&e.pause()}onResponseEnd(e,t){let{res:n}=this;l(this),n&&(t&&typeof t==`object`&&(this.trailers=t),n.end())}onResponseError(e,t){let{res:n,callback:r,opaque:i,body:a}=this;l(this),this.factory=null,n?(this.res=null,s.destroy(n,t)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:i})})),a&&(this.body=null,s.destroy(a,t))}};function h(e,t,n){if(n===void 0)return new Promise((n,r)=>{h.call(this,e,t,(e,t)=>e?r(e):n(t))});try{let r=new m(e,t,n);this.dispatch(e,r)}catch(t){if(typeof n!=`function`)throw t;let r=e?.opaque;queueMicrotask(()=>n(t,{opaque:r}))}}n.exports=h})),fa=/* @__PURE__ */ a(((e,n)=>{let{Readable:r,Duplex:i,PassThrough:a}=t(`node:stream`),o=t(`node:assert`),{AsyncResource:s}=t(`node:async_hooks`),{InvalidArgumentError:c,InvalidReturnValueError:l,RequestAbortedError:u}=yi(),d=Si(),{kBodyUsed:f}=_i(),{addSignal:p,removeSignal:m}=ua();function h(){}let g=Symbol(`resume`);var v=class extends r{constructor(){super({autoDestroy:!0}),this[g]=null,this[f]=!0}_read(){let{[g]:e}=this;e&&(this[g]=null,e())}_destroy(e,t){this._read(),t(e)}},y=class extends r{constructor(e){super({autoDestroy:!0}),this[g]=e}_read(){this[g]()}_destroy(e,t){!e&&!this._readableState.endEmitted&&(e=new u),t(e)}},b=class extends s{constructor(e,t){if(!e||typeof e!=`object`)throw new c(`invalid opts`);if(typeof t!=`function`)throw new c(`invalid handler`);let{signal:n,method:r,opaque:a,onInfo:o,responseHeaders:s}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new c(`signal must be an EventEmitter or EventTarget`);if(r===`CONNECT`)throw new c(`invalid method`);if(o&&typeof o!=`function`)throw new c(`invalid onInfo callback`);super(`UNDICI_PIPELINE`),this.opaque=a||null,this.responseHeaders=s||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=o||null,this.req=new v().on(`error`,h),this.ret=new i({readableObjectMode:e.objectMode,autoDestroy:!0,read:()=>{let{body:e}=this;e?.resume&&e.resume()},write:(e,t,n)=>{let{req:r}=this;r.push(e,t)||r._readableState.destroyed?n():r[g]=n},destroy:(e,t)=>{let{body:n,req:r,res:i,ret:a,abort:o}=this;!e&&!a._readableState.endEmitted&&(e=new u),o&&e&&o(),d.destroy(n,e),d.destroy(r,e),d.destroy(i,e),m(this),t(e)}}).on(`prefinish`,()=>{let{req:e}=this;e.push(null)}),this.res=null,p(this,n)}onRequestStart(e,t){let{res:n}=this;this.reason?e.abort(this.reason):(o(!n,`pipeline cannot be retried`),this.abort=t=>e.abort(t),this.context=t)}onResponseStart(e,t,n,r){let{opaque:i,handler:a,context:o}=this;if(t<200){if(this.onInfo){let r=e?.rawHeaders,i=this.responseHeaders===`raw`?d.parseRawHeaders(r):n;this.onInfo({statusCode:t,headers:i})}return}this.res=new y(()=>e.resume());let s;try{this.handler=null;let r=e?.rawHeaders,c=this.responseHeaders===`raw`?d.parseRawHeaders(r):n;s=this.runInAsyncScope(a,null,{statusCode:t,headers:c,opaque:i,body:this.res,context:o})}catch(e){throw this.res.on(`error`,h),e}if(!s||typeof s.on!=`function`)throw new l(`expected Readable`);s.on(`data`,e=>{let{ret:t,body:n}=this;!t.push(e)&&n.pause&&n.pause()}).on(`error`,e=>{let{ret:t}=this;d.destroy(t,e)}).on(`end`,()=>{let{ret:e}=this;e.push(null)}).on(`close`,()=>{let{ret:e}=this;e._readableState.ended||d.destroy(e,new u)}),this.body=s}onResponseData(e,t){let{res:n}=this;n.push(t)===!1&&e.pause()}onResponseEnd(e,t){let{res:n}=this;n.push(null)}onResponseError(e,t){let{ret:n}=this;this.handler=null,d.destroy(n,t)}};function x(e,t){try{let n=new b(e,t);return this.dispatch({...e,body:n.req},n),n.ret}catch(e){return new a().destroy(e)}}n.exports=x})),pa=/* @__PURE__ */ a(((e,n)=>{let{InvalidArgumentError:r,SocketError:i}=yi(),{AsyncResource:a}=t(`node:async_hooks`),o=t(`node:assert`),s=Si(),{kHTTP2Stream:c}=_i(),{addSignal:l,removeSignal:u}=ua();var d=class extends a{constructor(e,t){if(!e||typeof e!=`object`)throw new r(`invalid opts`);if(typeof t!=`function`)throw new r(`invalid callback`);let{signal:n,opaque:i,responseHeaders:a}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new r(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_UPGRADE`),this.responseHeaders=a||null,this.opaque=i||null,this.callback=t,this.abort=null,this.context=null,l(this,n)}onRequestStart(e,t){this.reason?e.abort(this.reason):(o(this.callback),this.abort=t=>e.abort(t),this.context=t)}onResponseStart(){throw new i(`bad upgrade`,null)}onRequestUpgrade(e,t,n,r){if(t!==(r[c]===!0?200:101)){let t=r[c]===!0?null:s.getSocketInfo(r);e.abort(new i(`bad upgrade`,t));return}let{callback:a,opaque:o,context:l}=this;u(this),this.callback=null;let d=e?.rawHeaders,f=this.responseHeaders===`raw`?s.parseRawHeaders(d):n;this.runInAsyncScope(a,null,null,{headers:f,socket:r,opaque:o,context:l})}onResponseError(e,t){let{callback:n,opaque:r}=this;u(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,t,{opaque:r})}))}};function f(e,t){if(t===void 0)return new Promise((t,n)=>{f.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new d(e,t),r={...e,method:e.method||`GET`,upgrade:e.protocol||`Websocket`};this.dispatch(r,n)}catch(n){if(typeof t!=`function`)throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}n.exports=f})),ma=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{AsyncResource:i}=t(`node:async_hooks`),{InvalidArgumentError:a,SocketError:o}=yi(),s=Si(),{addSignal:c,removeSignal:l}=ua();var u=class extends i{constructor(e,t){if(!e||typeof e!=`object`)throw new a(`invalid opts`);if(typeof t!=`function`)throw new a(`invalid callback`);let{signal:n,opaque:r,responseHeaders:i}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new a(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_CONNECT`),this.opaque=r||null,this.responseHeaders=i||null,this.callback=t,this.abort=null,c(this,n)}onRequestStart(e,t){this.reason?e.abort(this.reason):(r(this.callback),this.abort=t=>e.abort(t),this.context=t)}onResponseStart(){throw new o(`bad connect`,null)}onRequestUpgrade(e,t,n,r){let{callback:i,opaque:a,context:o}=this;l(this),this.callback=null;let c=n,u=e?.rawHeaders;c!=null&&(c=this.responseHeaders===`raw`?s.parseRawHeaders(u):n),this.runInAsyncScope(i,null,null,{statusCode:t,headers:c,socket:r,opaque:a,context:o})}onResponseError(e,t){let{callback:n,opaque:r}=this;l(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,t,{opaque:r})}))}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new u(e,t),r={...e,method:`CONNECT`};this.dispatch(r,n)}catch(n){if(typeof t!=`function`)throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}n.exports=d})),ha=/* @__PURE__ */ a(((e,t)=>{t.exports.request=la(),t.exports.stream=da(),t.exports.pipeline=fa(),t.exports.upgrade=pa(),t.exports.connect=ma()})),ga=/* @__PURE__ */ a(((e,t)=>{let{UndiciError:n}=yi(),r=Symbol.for(`undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED`);t.exports={MockNotMatchedError:class extends n{constructor(e){super(e),this.name=`MockNotMatchedError`,this.message=e||`The request does not match any registered mock dispatches`,this.code=`UND_MOCK_ERR_MOCK_NOT_MATCHED`}static[Symbol.hasInstance](e){return e&&e[r]===!0}get[r](){return!0}}}})),_a=/* @__PURE__ */ a(((e,t)=>{t.exports={kAgent:Symbol(`agent`),kOptions:Symbol(`options`),kFactory:Symbol(`factory`),kDispatches:Symbol(`dispatches`),kDispatchKey:Symbol(`dispatch key`),kDefaultHeaders:Symbol(`default headers`),kDefaultTrailers:Symbol(`default trailers`),kContentLength:Symbol(`content length`),kMockAgent:Symbol(`mock agent`),kMockAgentSet:Symbol(`mock agent set`),kMockAgentGet:Symbol(`mock agent get`),kMockDispatch:Symbol(`mock dispatch`),kClose:Symbol(`close`),kOriginalClose:Symbol(`original agent close`),kOriginalDispatch:Symbol(`original dispatch`),kOrigin:Symbol(`origin`),kIsMockActive:Symbol(`is mock active`),kNetConnect:Symbol(`net connect`),kGetNetConnect:Symbol(`get net connect`),kConnected:Symbol(`connected`),kIgnoreTrailingSlash:Symbol(`ignore trailing slash`),kMockAgentMockCallHistoryInstance:Symbol(`mock agent mock call history name`),kMockAgentRegisterCallHistory:Symbol(`mock agent register mock call history`),kMockAgentAddCallHistoryLog:Symbol(`mock agent add call history log`),kMockAgentIsCallHistoryEnabled:Symbol(`mock agent is call history enabled`),kMockAgentAcceptsNonStandardSearchParameters:Symbol(`mock agent accepts non standard search parameters`),kMockCallHistoryAddLog:Symbol(`mock call history add log`),kTotalDispatchCount:Symbol(`total dispatch count`)}})),va=/* @__PURE__ */ a(((e,n)=>{let{MockNotMatchedError:r}=ga(),{kDispatches:i,kMockAgent:a,kOriginalDispatch:o,kOrigin:s,kGetNetConnect:c,kTotalDispatchCount:l}=_a(),{serializePathWithQuery:u,parseHeaders:d}=Si(),{STATUS_CODES:f}=t(`node:http`),{types:{isPromise:p}}=t(`node:util`),{InvalidArgumentError:m}=yi(),h=Symbol(`request aborted`);function g(e,t){return typeof e==`string`?e===t:e instanceof RegExp?e.test(t):typeof e==`function`&&e(t)===!0}function v(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLocaleLowerCase(),t]))}function y(e,t){if(Array.isArray(e)){for(let n=0;n!e).filter(({path:e,ignoreTrailingSlash:t})=>t?g(k(C(e)),a):g(C(e),i));if(o.length===0)throw new r(`Mock dispatch not matched for path '${i}'`);if(o=o.filter(({method:e})=>g(e,t.method)),o.length===0)throw new r(`Mock dispatch not matched for method '${t.method}' on path '${i}'`);if(o=o.filter(({body:e})=>e===void 0||g(e,t.body)),o.length===0)throw new r(`Mock dispatch not matched for body '${t.body}' on path '${i}'`);if(o=o.filter(e=>x(e,t.headers)),o.length===0){let e=typeof t.headers==`object`?JSON.stringify(t.headers):t.headers;throw new r(`Mock dispatch not matched for headers '${e}' on path '${i}'`)}return o[0]}function D(e,t,n,r){let i={timesInvoked:0,times:1,persist:!1,consumed:!1,...r},a=typeof n==`function`?{callback:n}:{...n},o={...i,...t,pending:!0,data:{error:null,...a}};return e.push(o),e[l]=(e[l]||0)+1,o}function O(e,t){let n=e.findIndex(e=>e.consumed?w(e,t):!1);n!==-1&&e.splice(n,1)}function k(e){if(typeof e!=`string`)return e;for(;e.endsWith(`/`);)e=e.slice(0,-1);return e.length===0&&(e=`/`),e}function A(e){let{path:t,method:n,body:r,headers:i,query:a}=e;return{path:t,method:n,body:r,headers:i,query:a}}function j(e){let t=Object.keys(e),n=[];for(let r=0;r=s,r.pending=o{typeof i!=`object`||!i?t.onResponseError(null,new m(`reply options callback must return an object`)):F(a,r,n,e,t,{...o,...i})},e=>{t.onResponseError(null,e)}),!0;if(typeof s!=`object`||!s)throw new m(`reply options callback must return an object`);return F(a,r,n,e,t,{...o,...s})}return F(a,r,n,e,t)}function F(e,t,n,r,i,a){let{data:o,delay:s}=t,c=a??o;if(c.error!==null)return O(e,n),i.onResponseError(null,c.error),!0;let l=!1,u=null,f={paused:!1,rawHeaders:null,rawTrailers:null,pause(){this.paused=!0},resume(){this.paused=!1},abort:e=>{l||(l=!0,u!==null&&(clearTimeout(u),u=null),i.onResponseError?.(f,e))}},g=r,v=e;if(i.onRequestStart?.(f,null),l)return!0;let y=I(r.body,i,f,()=>l);if(p(y))return y.then(e=>{e!==h&&(e!==r.body&&(g={...r,body:e}),x())},e=>f.abort(e)),!0;if(y===h)return!0;y!==r.body&&(g={...r,body:y}),x();function x(){if(c.callback){let{callback:t,...r}=c,a;try{a=t(g)}catch(t){O(e,n),i.onResponseError(null,t);return}if(p(a)){a.then(e=>{typeof e!=`object`||!e?i.onResponseError(null,new m(`reply options callback must return an object`)):S(v,{...r,...e})},e=>{i.onResponseError(null,e)});return}if(typeof a!=`object`||!a)throw new m(`reply options callback must return an object`);S(v,{...r,...a})}else typeof s==`number`&&s>0?u=setTimeout(()=>{u=null,S(v)},s):S(v)}function S(e,t=c){if(l)return;let{statusCode:a,data:o,headers:s,trailers:u}=t,m=Array.isArray(r.headers)?b(r.headers):r.headers,h=typeof o==`function`?o({...g,headers:m}):o;if(p(h))return h.then(n=>S(e,{...t,data:n}));if(l)return;let v=T(h),y=j(s??{}),x=j(u??{});f.rawHeaders=y,f.rawTrailers=x,i.onResponseStart?.(f,a,d(y),M(a)),i.onResponseData?.(f,Buffer.from(v)),i.onResponseEnd?.(f,d(x)),O(e,n)}return!0}function I(e,t,n,r){if(typeof t.onBodySent!=`function`&&typeof t.onRequestSent!=`function`)return e;if(e==null)return R(t,n,r)?e:h;if(e&&typeof e[Symbol.asyncIterator]==`function`)return ee(e,t,n,r);if(te(e)){let i=[];for(let a of e)if(r()||(i.push(a),!L(t,n,a)||r()))return h;return R(t,n,r)?i:h}return r()||!L(t,n,e)?h:R(t,n,r)?e:h}async function ee(e,t,n,r){let i=[];for await(let a of e)if(r()||(i.push(a),!L(t,n,a)||r()))return h;return R(t,n,r)?{async*[Symbol.asyncIterator](){yield*i}}:h}function L(e,t,n){try{return e.onBodySent?.(n),!0}catch(e){return t.abort(e),!1}}function R(e,t,n){try{return e.onRequestSent?.(),!n()}catch(e){return t.abort(e),!1}}function te(e){return typeof e!=`string`&&!Buffer.isBuffer(e)&&!ArrayBuffer.isView(e)&&typeof e[Symbol.iterator]==`function`}function ne(){let e=this[a],t=this[s],n=this[o];return function(a,o){if(e.isMockActive)try{P.call(this,a,o)}catch(s){if(s.code===`UND_MOCK_ERR_MOCK_NOT_MATCHED`){let u=e[c](),d=this[i][l]||this[i].length,f=`, ${this[i].filter(({consumed:e})=>!e).length} interceptor(s) remaining out of ${d} defined`;if(u===!1)throw new r(`${s.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)${f}`);if(re(u,t))n.call(this,`__mockAgentBodyForDispatch`in a?{...a,body:a.__mockAgentBodyForDispatch}:a,o);else throw new r(`${s.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)${f}`)}else throw s}else n.call(this,a,o)}}function re(e,t){let n=new URL(t);return!!(e===!0||Array.isArray(e)&&e.some(e=>g(e,n.host)))}function ie(e){return typeof e!=`string`&&!(e instanceof URL)?e:e instanceof URL?e.origin:e.toLowerCase()}function z(e){let{agent:t,...n}=e;if(`enableCallHistory`in n&&typeof n.enableCallHistory!=`boolean`)throw new m(`options.enableCallHistory must to be a boolean`);if(`acceptNonStandardSearchParameters`in n&&typeof n.acceptNonStandardSearchParameters!=`boolean`)throw new m(`options.acceptNonStandardSearchParameters must to be a boolean`);if(`ignoreTrailingSlash`in n&&typeof n.ignoreTrailingSlash!=`boolean`)throw new m(`options.ignoreTrailingSlash must to be a boolean`);return n}n.exports={getResponseData:T,getMockDispatch:E,addMockDispatch:D,deleteMockDispatch:O,buildKey:A,generateKeyValues:j,matchValue:g,getResponse:N,getStatusText:M,mockDispatch:P,buildMockDispatch:ne,checkNetConnect:re,buildAndValidateMockOptions:z,getHeaderByName:y,buildHeadersFromArray:b,normalizeSearchParams:S,normalizeOrigin:ie}})),ya=/* @__PURE__ */ a(((e,n)=>{let{getResponseData:r,buildKey:i,addMockDispatch:a}=va(),{kDispatches:o,kDispatchKey:s,kDefaultHeaders:c,kDefaultTrailers:l,kContentLength:u,kMockDispatch:d,kIgnoreTrailingSlash:f}=_a(),{InvalidArgumentError:p}=yi(),{serializePathWithQuery:m}=Si(),{types:{isPromise:h}}=t(`node:util`);var g=class{constructor(e){this[d]=e}delay(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new p(`waitInMs must be a valid integer > 0`);return this[d].delay=e,this}persist(){return this[d].persist=!0,this}times(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new p(`repeatTimes must be a valid integer > 0`);return this[d].times=e,this}},v=class{constructor(e,t){if(typeof e!=`object`)throw new p(`opts must be an object`);if(e.path===void 0)throw new p(`opts.path must be defined`);if(e.method===void 0&&(e.method=`GET`),typeof e.path==`string`){if(e.query)e.path=m(e.path,e.query);else{let t=new URL(e.path,`data://`);e.path=t.pathname+t.search}}typeof e.method==`string`&&(e.method=e.method.toUpperCase()),this[s]=i(e),this[o]=t,this[f]=e.ignoreTrailingSlash??!1,this[c]={},this[l]={},this[u]=!1}createMockScopeDispatchData({statusCode:e,data:t,responseOptions:n}){let i=r(t),a=this[u]?{"content-length":i.length}:{};return{statusCode:e,data:t,headers:{...this[c],...a,...n.headers},trailers:{...this[l],...n.trailers}}}validateReplyParameters(e){if(e.statusCode===void 0)throw new p(`statusCode must be defined`);if(typeof e.responseOptions!=`object`||e.responseOptions===null)throw new p(`responseOptions must be an object`)}reply(e){if(typeof e==`function`){let t=e=>{if(typeof e!=`object`||!e)throw new p(`reply options callback must return an object`);let t={data:``,responseOptions:{},...e};return this.validateReplyParameters(t),{...this.createMockScopeDispatchData(t)}};return new g(a(this[o],this[s],n=>{let r=e(n);return h(r)?r.then(t):t(r)},{ignoreTrailingSlash:this[f]}))}let t={statusCode:e,data:arguments[1]===void 0?``:arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);let n=this.createMockScopeDispatchData(t);return new g(a(this[o],this[s],n,{ignoreTrailingSlash:this[f]}))}replyWithError(e){if(e===void 0)throw new p(`error must be defined`);return new g(a(this[o],this[s],{error:e},{ignoreTrailingSlash:this[f]}))}defaultReplyHeaders(e){if(e===void 0)throw new p(`headers must be defined`);return this[c]=e,this}defaultReplyTrailers(e){if(e===void 0)throw new p(`trailers must be defined`);return this[l]=e,this}replyContentLength(){return this[u]=!0,this}};n.exports.MockInterceptor=v,n.exports.MockScope=g})),ba=/* @__PURE__ */ a(((e,n)=>{let{promisify:r}=t(`node:util`),i=Ki(),{buildMockDispatch:a}=va(),{kDispatches:o,kMockAgent:s,kClose:c,kOriginalClose:l,kOrigin:u,kOriginalDispatch:d,kConnected:f,kIgnoreTrailingSlash:p}=_a(),{MockInterceptor:m}=ya(),h=_i(),{InvalidArgumentError:g}=yi();n.exports=class extends i{constructor(e,t){if(!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new g(`Argument opts.agent must implement Agent`);super(e,t),this[s]=t.agent,this[u]=e,this[p]=t.ignoreTrailingSlash??!1,this[o]=[],this[f]=1,this[d]=this.dispatch,this[l]=this.close.bind(this),this.dispatch=a.call(this),this.close=this[c]}get[h.kConnected](){return this[f]}intercept(e){return new m(e&&{ignoreTrailingSlash:this[p],...e},this[o])}cleanMocks(){this[o]=[]}async[c](){await r(this[l])(),this[f]=0,this[s][h.kClients].delete(this[u])}}})),xa=/* @__PURE__ */ a(((e,t)=>{let{kMockCallHistoryAddLog:n}=_a(),{InvalidArgumentError:r}=yi();function i(e,t,n,i,a){switch(t.operator){case`OR`:return i.push(...n(e,a)),i;case`AND`:return n(e,i);default:throw new r(`options.operator must to be a case insensitive string equal to 'OR' or 'AND'`)}}function a(e={}){let t={};if(`operator`in e){if(typeof e.operator!=`string`||e.operator.toUpperCase()!==`OR`&&e.operator.toUpperCase()!==`AND`)throw new r(`options.operator must to be a case insensitive string equal to 'OR' or 'AND'`);return{...t,operator:e.operator.toUpperCase()}}return t}function o(e){return(t,n=this.logs)=>{if(typeof t==`string`||t==null)return n.filter(n=>n[e]===t);if(t instanceof RegExp)return n.filter(n=>t.test(n[e]));throw new r(`${e} parameter should be one of string, regexp, undefined or null`)}}function s(e){try{let t=new URL(e.path,e.origin);return t.search.length===0&&(t.search=new URLSearchParams(e.query).toString()),t}catch(e){throw new r(`An error occurred when computing MockCallHistoryLog.url`,{cause:e})}}var c=class{constructor(e={}){this.body=e.body,this.headers=e.headers,this.method=e.method;let t=s(e);this.fullUrl=t.toString(),this.origin=t.origin,this.path=t.pathname,this.searchParams=Object.fromEntries(t.searchParams),this.protocol=t.protocol,this.host=t.host,this.port=t.port,this.hash=t.hash}toMap(){return/* @__PURE__ */ new Map([[`protocol`,this.protocol],[`host`,this.host],[`port`,this.port],[`origin`,this.origin],[`path`,this.path],[`hash`,this.hash],[`searchParams`,this.searchParams],[`fullUrl`,this.fullUrl],[`method`,this.method],[`body`,this.body],[`headers`,this.headers]])}toString(){let e={betweenKeyValueSeparator:`->`,betweenPairSeparator:`|`},t=``;return this.toMap().forEach((n,r)=>{(typeof n==`string`||n==null)&&(t=`${t}${r}${e.betweenKeyValueSeparator}${n}${e.betweenPairSeparator}`),(typeof n==`object`&&n||Array.isArray(n))&&(t=`${t}${r}${e.betweenKeyValueSeparator}${JSON.stringify(n)}${e.betweenPairSeparator}`)}),t.slice(0,-1)}},l=class{logs=[];calls(){return this.logs}firstCall(){return this.logs.at(0)}lastCall(){return this.logs.at(-1)}nthCall(e){if(typeof e!=`number`)throw new r(`nthCall must be called with a number`);if(!Number.isInteger(e))throw new r(`nthCall must be called with an integer`);if(Math.sign(e)!==1)throw new r(`nthCall must be called with a positive value. use firstCall or lastCall instead`);return this.logs.at(e-1)}filterCalls(e,t){if(this.logs.length===0)return this.logs;if(typeof e==`function`)return this.logs.filter(e);if(e instanceof RegExp)return this.logs.filter(t=>e.test(t.toString()));if(typeof e==`object`&&e){if(Object.keys(e).length===0)return this.logs;let n={operator:`OR`,...a(t)},r=n.operator===`AND`?this.logs:[];return`protocol`in e&&(r=i(e.protocol,n,this.filterCallsByProtocol,r,this.logs)),`host`in e&&(r=i(e.host,n,this.filterCallsByHost,r,this.logs)),`port`in e&&(r=i(e.port,n,this.filterCallsByPort,r,this.logs)),`origin`in e&&(r=i(e.origin,n,this.filterCallsByOrigin,r,this.logs)),`path`in e&&(r=i(e.path,n,this.filterCallsByPath,r,this.logs)),`hash`in e&&(r=i(e.hash,n,this.filterCallsByHash,r,this.logs)),`fullUrl`in e&&(r=i(e.fullUrl,n,this.filterCallsByFullUrl,r,this.logs)),`method`in e&&(r=i(e.method,n,this.filterCallsByMethod,r,this.logs)),[...new Set(r)]}throw new r(`criteria parameter should be one of function, regexp, or object`)}filterCallsByProtocol=o.call(this,`protocol`);filterCallsByHost=o.call(this,`host`);filterCallsByPort=o.call(this,`port`);filterCallsByOrigin=o.call(this,`origin`);filterCallsByPath=o.call(this,`path`);filterCallsByHash=o.call(this,`hash`);filterCallsByFullUrl=o.call(this,`fullUrl`);filterCallsByMethod=o.call(this,`method`);clear(){this.logs=[]}[n](e){let t=new c(e);return this.logs.push(t),t}*[Symbol.iterator](){for(let e of this.calls())yield e}};t.exports.MockCallHistory=l,t.exports.MockCallHistoryLog=c})),Sa=/* @__PURE__ */ a(((e,n)=>{let{promisify:r}=t(`node:util`),i=Yi(),{buildMockDispatch:a}=va(),{kDispatches:o,kMockAgent:s,kClose:c,kOriginalClose:l,kOrigin:u,kOriginalDispatch:d,kConnected:f,kIgnoreTrailingSlash:p}=_a(),{MockInterceptor:m}=ya(),h=_i(),{InvalidArgumentError:g}=yi();n.exports=class extends i{constructor(e,t){if(!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new g(`Argument opts.agent must implement Agent`);super(e,t),this[s]=t.agent,this[u]=e,this[p]=t.ignoreTrailingSlash??!1,this[o]=[],this[f]=1,this[d]=this.dispatch,this[l]=this.close.bind(this),this.dispatch=a.call(this),this.close=this[c]}get[h.kConnected](){return this[f]}intercept(e){return new m(e&&{ignoreTrailingSlash:this[p],...e},this[o])}cleanMocks(){this[o]=[]}async[c](){await r(this[l])(),this[f]=0,this[s][h.kClients].delete(this[u])}}})),Ca=/* @__PURE__ */ a(((e,n)=>{let{Transform:r}=t(`node:stream`),{Console:i}=t(`node:console`),a=process.versions.icu?`✅`:`Y `,o=process.versions.icu?`❌`:`N `;n.exports=class{constructor({disableColors:e}={}){this.transform=new r({transform(e,t,n){n(null,e)}}),this.logger=new i({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){let t=e.map(({method:e,path:t,data:{statusCode:n},persist:r,times:i,timesInvoked:s,origin:c})=>({Method:e,Origin:c,Path:t,"Status code":n,Persistent:r?a:o,Invocations:s,Remaining:r?1/0:i-s}));return this.logger.table(t),this.transform.read().toString()}}})),wa=/* @__PURE__ */ a(((e,t)=>{let{kClients:n}=_i(),r=Qi(),{kAgent:i,kMockAgentSet:a,kMockAgentGet:o,kDispatches:s,kIsMockActive:c,kNetConnect:l,kGetNetConnect:u,kOptions:d,kFactory:f,kMockAgentRegisterCallHistory:p,kMockAgentIsCallHistoryEnabled:m,kMockAgentAddCallHistoryLog:h,kMockAgentMockCallHistoryInstance:g,kMockAgentAcceptsNonStandardSearchParameters:v,kMockCallHistoryAddLog:y,kIgnoreTrailingSlash:b}=_a(),x=ba(),S=Sa(),{matchValue:C,normalizeSearchParams:w,buildAndValidateMockOptions:T,normalizeOrigin:E}=va(),{InvalidArgumentError:D,UndiciError:O}=yi(),k=Ei(),A=Ca(),{MockCallHistory:j}=xa();t.exports=class extends k{constructor(e={}){super(e);let t=T(e);if(this[l]=!0,this[c]=!0,this[m]=t.enableCallHistory??!1,this[v]=t.acceptNonStandardSearchParameters??!1,this[b]=t.ignoreTrailingSlash??!1,e?.agent&&typeof e.agent.dispatch!=`function`)throw new D(`Argument opts.agent must implement Agent`);let a=e?.agent?e.agent:new r(e);this[i]=a,this[n]=a[n],this[d]=t,this[m]&&this[p]()}get(e){let t=E(e),n=this[b]?t.replace(/\/$/,``):t,r=this[o](n);return r||(r=this[f](n),this[a](n,r)),r}dispatch(e,t){e.origin=E(e.origin);let r=this.get(e.origin);this[h](e);let o=this[v],c={...e};if(c.allowH2===!1){let e=`${c.origin}#http1-only`;if(!this[n].has(e)){let t=this[f](c.origin);t[s]=r[s],this[a](e,t)}}if(o&&c.path){let[e,t]=c.path.split(`?`);c.path=`${e}?${w(t,o)}`}return this[i].dispatch(c,t)}async close(){this.clearCallHistory(),await this[i].close(),this[n].clear()}deactivate(){this[c]=!1}activate(){this[c]=!0}enableNetConnect(e){if(typeof e==`string`||typeof e==`function`||e instanceof RegExp)Array.isArray(this[l])?this[l].push(e):this[l]=[e];else if(e===void 0)this[l]=!0;else throw new D(`Unsupported matcher. Must be one of String|Function|RegExp.`)}disableNetConnect(){this[l]=!1}enableCallHistory(){return this[m]=!0,this}disableCallHistory(){return this[m]=!1,this}getCallHistory(){return this[g]}clearCallHistory(){this[g]!==void 0&&this[g].clear()}get isMockActive(){return this[c]}[p](){this[g]===void 0&&(this[g]=new j)}[h](e){this[m]&&(this[p](),this[g][y](e))}[a](e,t){this[n].set(e,t)}[f](e){let t=Object.assign({agent:this},this[d]);return this[d]&&this[d].connections===1?new x(e,t):new S(e,t)}[o](e){let t=this[n].get(e);if(t)return t;if(typeof e!=`string`){let t=this[f](`http://localhost:9999`);return this[a](e,t),t}for(let[t,r]of Array.from(this[n]))if(r&&typeof t!=`string`&&C(t,e)){let t=this[f](e);return this[a](e,t),t[s]=r[s],t}}[u](){return this[l]}pendingInterceptors(){let e=this[n];return Array.from(e.entries()).flatMap(([e,t])=>t[s].map(t=>({...t,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new A}={}){let t=this.pendingInterceptors();if(t.length!==0)throw new O(t.length===1?`1 interceptor is pending:\n\n${e.format(t)}`.trim():`${t.length} interceptors are pending:\n\n${e.format(t)}`.trim())}}})),Ta=/* @__PURE__ */ a(((e,n)=>{let{InvalidArgumentError:r}=yi(),{runtimeFeatures:i}=Bi();function a(e={}){let{ignoreHeaders:t=[],excludeHeaders:n=[],matchHeaders:r=[],caseSensitive:i=!1}=e;return{ignore:new Set(t.map(e=>i?e:e.toLowerCase())),exclude:new Set(n.map(e=>i?e:e.toLowerCase())),match:new Set(r.map(e=>i?e:e.toLowerCase()))}}let o=i.has(`crypto`)?t(`node:crypto`):null,s=o?.hash?e=>o.hash(`sha256`,e,`base64url`):e=>Buffer.from(e).toString(`base64url`);function c(e){return Array.isArray(e)&&!(e.length&1)}function l(e=[]){return e.length===0?()=>!1:function(t){let n;for(let r of e)if(typeof r==`string`){if(n||=t.toLowerCase(),n.includes(r.toLowerCase()))return!0}else if(r instanceof RegExp&&r.test(t))return!0;return!1}}function u(e){let t={};if(!e)return t;if(c(e)){for(let n=0;n{let{writeFile:r,readFile:i,mkdir:a}=t(`node:fs/promises`),{dirname:o,resolve:s}=t(`node:path`),{setTimeout:c,clearTimeout:l}=t(`node:timers`),{InvalidArgumentError:u,UndiciError:d}=yi(),{hashId:f,isUrlExcludedFactory:p,normalizeHeaders:m,createHeaderFilters:h}=Ta();function g(e,t,n){if(t===!1)return`${e.origin}${e.pathname}`;if(n){let t=String(n(e.searchParams)??``);return t?`${e.origin}${e.pathname}?${t}`:`${e.origin}${e.pathname}`}return e.toString()}function v(e,t,n){return t===!1?``:n?String(n(e)??``):e?String(e):``}function y(e,t,n={}){let r=new URL(e.path,e.origin),i=e._normalizedHeaders||m(e.headers);return e._normalizedHeaders||=i,{method:e.method||`GET`,url:g(r,n.matchQuery,n.normalizeQuery),headers:b(i,t,n),body:v(e.body,n.matchBody,n.normalizeBody)}}function b(e,t,n={}){if(!e||typeof e!=`object`)return{};let{caseSensitive:r=!1}=n,i={},{ignore:a,exclude:o,match:s}=t;for(let[t,n]of Object.entries(e)){let e=r?t:t.toLowerCase();o.has(e)||a.has(e)||(s.size===0||s.has(e))&&(i[e]=n)}return i}function x(e,t,n={}){if(!e||typeof e!=`object`)return{};let{caseSensitive:r=!1}=n,i={},{exclude:a}=t;for(let[t,n]of Object.entries(e)){let e=r?t:t.toLowerCase();a.has(e)||(i[e]=n)}return i}function S(e){let t=[e.method,e.url];if(e.headers&&typeof e.headers==`object`){let n=Object.keys(e.headers).sort();for(let r of n){let n=Array.isArray(e.headers[r])?e.headers[r]:[e.headers[r]];t.push(r);for(let e of n.sort())t.push(String(e))}}t.push(e.body);let n=t.join(`|`);return f(n)}n.exports={SnapshotRecorder:class{#e;#t;#n=/* @__PURE__ */ new Map;#r;#i=1/0;#a=!1;#o;constructor(e={}){this.#r=e.snapshotPath,this.#i=e.maxSnapshots||1/0,this.#a=e.autoFlush||!1,this.flushInterval=e.flushInterval||3e4,this._flushTimer=null,this.matchOptions={matchHeaders:e.matchHeaders||[],ignoreHeaders:e.ignoreHeaders||[],excludeHeaders:e.excludeHeaders||[],matchBody:e.matchBody!==!1,normalizeBody:e.normalizeBody||void 0,matchQuery:e.matchQuery!==!1,normalizeQuery:e.normalizeQuery||void 0,caseSensitive:e.caseSensitive||!1},this.#o=h(this.matchOptions),this.shouldRecord=e.shouldRecord||(()=>!0),this.shouldPlayback=e.shouldPlayback||(()=>!0),this.#t=p(e.excludeUrls),this.#a&&this.#r&&this.#s()}async record(e,t){if(!this.shouldRecord(e)||this.isUrlExcluded(e))return;let n=y(e,this.#o,this.matchOptions),r=S(n),i=m(t.headers),a={statusCode:t.statusCode,headers:x(i,this.#o,this.matchOptions),body:Buffer.isBuffer(t.body)?t.body.toString(`base64`):Buffer.from(String(t.body||``)).toString(`base64`),trailers:t.trailers};if(this.#n.size>=this.#i&&!this.#n.has(r)){let e=this.#n.keys().next().value;this.#n.delete(e)}let o=this.#n.get(r);o&&o.responses?(o.responses.push(a),o.timestamp=(/* @__PURE__ */ new Date()).toISOString()):this.#n.set(r,{request:n,responses:[a],callCount:0,timestamp:(/* @__PURE__ */ new Date()).toISOString()}),this.#a&&this.#r&&this.#l()}isUrlExcluded(e){let t=new URL(e.path,e.origin).toString();return this.#t(t)}findSnapshot(e){if(!this.shouldPlayback(e)||this.isUrlExcluded(e))return;let t=S(y(e,this.#o,this.matchOptions)),n=this.#n.get(t);if(!n)return;let r=n.callCount||0,i=Math.min(r,n.responses.length-1);return n.callCount=r+1,{...n,response:n.responses[i]}}async loadSnapshots(e){let t=e||this.#r;if(!t)throw new u(`Snapshot path is required`);try{let e=await i(s(t),`utf8`),n=JSON.parse(e);if(Array.isArray(n)){this.#n.clear();for(let{hash:e,snapshot:t}of n)this.#n.set(e,t)}else this.#n=new Map(Object.entries(n))}catch(e){if(e.code===`ENOENT`)this.#n.clear();else throw new d(`Failed to load snapshots from ${t}`,{cause:e})}}async saveSnapshots(e){let t=e||this.#r;if(!t)throw new u(`Snapshot path is required`);let n=s(t);await a(o(n),{recursive:!0});let i=Array.from(this.#n.entries()).map(([e,t])=>({hash:e,snapshot:t}));await r(n,JSON.stringify(i,null,2),{flush:!0})}clear(){this.#n.clear()}getSnapshots(){return Array.from(this.#n.values())}size(){return this.#n.size}resetCallCounts(){for(let e of this.#n.values())e.callCount=0}deleteSnapshot(e){let t=S(y(e,this.#o,this.matchOptions));return this.#n.delete(t)}getSnapshotInfo(e){let t=S(y(e,this.#o,this.matchOptions)),n=this.#n.get(t);return n?{hash:t,request:n.request,responseCount:n.responses?n.responses.length:+!!n.response,callCount:n.callCount||0,timestamp:n.timestamp}:null}replaceSnapshots(e){if(this.#n.clear(),Array.isArray(e))for(let{hash:t,snapshot:n}of e)this.#n.set(t,n);else e&&typeof e==`object`&&(this.#n=new Map(Object.entries(e)))}#s(){return this.#l()}#c(){this.#e&&=(l(this.#e),this.saveSnapshots().catch(()=>{}),null)}#l(){this.#e=c(()=>{this.saveSnapshots().catch(()=>{}),this.#a?this.#e?.refresh():this.#e=null},1e3)}destroy(){this.#c(),this.#e&&=(l(this.#e),null)}async close(){this.#r&&this.#n.size!==0&&await this.saveSnapshots(),this.destroy()}},formatRequestKey:y,createRequestHash:S,filterHeadersForMatching:b,filterHeadersForStorage:x,createHeaderFilters:h}})),Da=/* @__PURE__ */ a(((e,t)=>{let n=Qi(),r=wa(),{SnapshotRecorder:i}=Ea(),{InvalidArgumentError:a,UndiciError:o}=yi(),s=Si(),{validateSnapshotMode:c}=Ta(),l=Symbol(`kSnapshotRecorder`),u=Symbol(`kSnapshotMode`),d=Symbol(`kSnapshotPath`),f=Symbol(`kSnapshotLoaded`),p=Symbol(`kRealAgent`),m=!1;t.exports=class extends r{constructor(e={}){m||=(process.emitWarning(`SnapshotAgent is experimental and subject to change`,`ExperimentalWarning`),!0);let{mode:t=`record`,snapshotPath:r=null,...o}=e;if(super(o),c(t),(t===`playback`||t===`update`)&&!r)throw new a(`snapshotPath is required when mode is '${t}'`);this[u]=t,this[d]=r,this[l]=new i({snapshotPath:this[d],mode:this[u],maxSnapshots:e.maxSnapshots,autoFlush:e.autoFlush,flushInterval:e.flushInterval,matchHeaders:e.matchHeaders,ignoreHeaders:e.ignoreHeaders,excludeHeaders:e.excludeHeaders,matchBody:e.matchBody,normalizeBody:e.normalizeBody,matchQuery:e.matchQuery,normalizeQuery:e.normalizeQuery,caseSensitive:e.caseSensitive,shouldRecord:e.shouldRecord,shouldPlayback:e.shouldPlayback,excludeUrls:e.excludeUrls}),this[f]=!1,(this[u]===`record`||this[u]===`update`||this[u]===`playback`&&e.excludeUrls&&e.excludeUrls.length>0)&&(this[p]=new n(e)),(this[u]===`playback`||this[u]===`update`)&&this[d]&&this.loadSnapshots().catch(()=>{})}dispatch(e,t){let n=this[u];if(this[l].isUrlExcluded(e))return this[p].dispatch(e,t);if(n===`playback`||n===`update`){if(!this[f])return this.#e(e,t);let r=this[l].findSnapshot(e);if(r)return this.#n(r,t);if(n===`update`)return this.#t(e,t);{let n=new o(`No snapshot found for ${e.method||`GET`} ${e.path}`);if(t.onResponseError){t.onResponseError(null,n);return}throw n}}if(n===`record`)return this.#t(e,t)}async#e(e,t){return await this.loadSnapshots(),this.dispatch(e,t)}#t(e,t){let n={statusCode:null,headers:{},trailers:{},body:[]},r=this;return this[p].dispatch(e,{onRequestStart(e,n){return t.onRequestStart(e,{...n,history:this.history})},onRequestUpgrade(e,n,r,i){return t.onRequestUpgrade(e,n,r,i)},onResponseStart(e,r,i,a){return n.statusCode=r,n.headers=i,t.onResponseStart(e,r,i,a)},onResponseData(e,r){return n.body.push(r),t.onResponseData(e,r)},onResponseEnd(i,a){n.trailers=a;let o=Buffer.concat(n.body);r[l].record(e,{statusCode:n.statusCode,headers:n.headers,body:o,trailers:n.trailers}).then(()=>t.onResponseEnd(i,a)).catch(e=>t.onResponseError(i,e))},onResponseError(e,n){return t.onResponseError(e,n)}})}#n(e,t){try{let{response:n}=e,r={rawHeaders:n.headers?s.toRawHeaders(n.headers):[],rawTrailers:n.trailers?s.toRawHeaders(n.trailers):[],pause(){},resume(){},abort(e){this.aborted=!0,this.reason=e},aborted:!1,paused:!1};t.onRequestStart(r),t.onResponseStart(r,n.statusCode,n.headers,n.statusMessage);let i=Buffer.from(n.body,`base64`);t.onResponseData(r,i),t.onResponseEnd(r,n.trailers)}catch(e){t.onResponseError?.(null,e)}}async loadSnapshots(e){await this[l].loadSnapshots(e||this[d]),this[f]=!0,this[u]===`playback`&&this.#r()}async saveSnapshots(e){return this[l].saveSnapshots(e||this[d])}#r(){for(let e of this[l].getSnapshots()){let{request:t,responses:n,response:r}=e,i=new URL(t.url),a=this.get(i.origin),o=n?n[0]:r;o&&a.intercept({path:i.pathname+i.search,method:t.method,headers:t.headers,body:t.body}).reply(o.statusCode,o.body,{headers:o.headers,trailers:o.trailers}).persist()}}getRecorder(){return this[l]}getMode(){return this[u]}clearSnapshots(){this[l].clear()}resetCallCounts(){this[l].resetCallCounts()}deleteSnapshot(e){return this[l].deleteSnapshot(e)}getSnapshotInfo(e){return this[l].getSnapshotInfo(e)}replaceSnapshots(e){this[l].replaceSnapshots(e)}async close(){this[u]===`playback`?this[l].destroy():await this[l].close(),await this[p]?.close(),await super.close()}}})),U=/* @__PURE__ */ a(((e,t)=>{let n=Symbol.for(`undici.globalDispatcher.2`),r=Symbol.for(`undici.globalDispatcher.1`),{InvalidArgumentError:i}=yi(),a=Qi(),o=$i(),s;l()===void 0&&c(new a);function c(e){if(!e||typeof e.dispatch!=`function`)throw new i(`Argument agent must implement Agent`);try{Object.defineProperty(globalThis,n,{value:e,writable:!0,enumerable:!1,configurable:!1})}catch(t){if(t instanceof TypeError){s=e;return}throw t}try{let t=e instanceof o?e:new o(e);Object.defineProperty(globalThis,r,{value:t,writable:!0,enumerable:!1,configurable:!1})}catch(e){if(!(e instanceof TypeError))throw e}}function l(){return globalThis[n]??s}t.exports={setGlobalDispatcher:c,getGlobalDispatcher:l,installedExports:[`fetch`,`Headers`,`Response`,`Request`,`FormData`,`WebSocket`,`CloseEvent`,`ErrorEvent`,`MessageEvent`,`EventSource`]}})),Oa=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`);n.exports=class{#e;#t=!1;#n=!1;#r=!1;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`handler must be an object`);this.#e=e}onRequestStart(...e){this.#e.onRequestStart?.(...e)}onRequestUpgrade(...e){return r(!this.#t),r(!this.#n),this.#e.onRequestUpgrade?.(...e)}onResponseStart(...e){return r(!this.#t),r(!this.#n),r(!this.#r),this.#r=!0,this.#e.onResponseStart?.(...e)}onResponseData(...e){return r(!this.#t),r(!this.#n),this.#e.onResponseData?.(...e)}onResponseEnd(...e){return r(!this.#t),r(!this.#n),this.#t=!0,this.#e.onResponseEnd?.(...e)}onResponseError(...e){return this.#n=!0,this.#e.onResponseError?.(...e)}onBodySent(...e){return this.#e.onBodySent?.(...e)}onRequestSent(...e){return this.#e.onRequestSent?.(...e)}}})),ka=/* @__PURE__ */ a(((e,n)=>{let r=Si(),i=t(`node:assert`),{InvalidArgumentError:a}=yi(),{kRequestOrigin:o}=_i(),s=[300,301,302,303,307,308],c=()=>{};var l=class e{static buildDispatch(t,n){if(n!=null&&(!Number.isInteger(n)||n<0))throw new a(`maxRedirections must be a positive number`);let r=t.dispatch.bind(t);return(t,i)=>r(t,new e(r,n,t,i))}constructor(e,t,n,i){if(t!=null&&(!Number.isInteger(t)||t<0))throw new a(`maxRedirections must be a positive number`);if(n.throwOnMaxRedirect!=null&&typeof n.throwOnMaxRedirect!=`boolean`)throw new a(`throwOnMaxRedirect must be a boolean`);this.dispatch=e,this.location=null;let{maxRedirections:o,stripHeadersOnRedirect:s,stripHeadersOnCrossOriginRedirect:c,...l}=n;this.opts=l,this.opts.body=r.wrapRequestBody(this.opts.body),this.stripHeadersOnRedirect=d(s,`stripHeadersOnRedirect`),this.stripHeadersOnCrossOriginRedirect=d(c,`stripHeadersOnCrossOriginRedirect`),this.maxRedirections=t,this.handler=i,this.history=[]}onRequestStart(e,t){this.handler.onRequestStart?.(e,{...t,history:this.history})}onBodySent(e){this.handler.onBodySent?.(e)}onRequestSent(){this.handler.onRequestSent?.()}onRequestUpgrade(e,t,n,r){this.handler.onRequestUpgrade?.(e,t,n,r)}onResponseStart(e,t,n,i){if(t<200){this.handler.onResponseStart?.(e,t,n,i);return}if(this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections)throw Error(`max redirects`);let l=t===303;(t===301||t===302)&&this.opts.method===`POST`&&(this.opts.method=`GET`,r.isStream(this.opts.body)&&r.destroy(this.opts.body.on(`error`,c)),this.opts.body=null,l=!0),t===303&&this.opts.method!==`HEAD`&&(this.opts.method=`GET`,r.isStream(this.opts.body)&&r.destroy(this.opts.body.on(`error`,c)),this.opts.body=null),this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)||s.indexOf(t)===-1?null:n.location;let u=this.opts[o]===void 0?this.opts.origin:this.opts[o];if(u&&this.history.push(new URL(this.opts.path,u)),!this.location){this.handler.onResponseStart?.(e,t,n,i);return}let d=u?new URL(this.opts.path,u):void 0,{origin:p,pathname:m,search:h}=r.parseURL(new URL(this.location,d)),g=h?`${m}${h}`:m,v=`${p}${g}`;for(let e of this.history)if(e.toString()===v)throw new a(`Redirect loop detected. Cannot redirect to ${p}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`);this.opts.headers=f(this.opts.headers,l,u!==p,this.stripHeadersOnRedirect,this.stripHeadersOnCrossOriginRedirect),this.opts.path=g,this.opts.origin=p,this.opts[o]=p,this.opts.query=null}onResponseData(e,t){this.location||this.handler.onResponseData?.(e,t)}onResponseEnd(e,t){this.location?this.dispatch(this.opts,this):this.handler.onResponseEnd(e,t)}onResponseError(e,t){this.handler.onResponseError?.(e,t)}};function u(e,t,n,i,a){let o=r.headerNameToString(e);return o===`host`||i?.has(o)||n&&a?.has(o)||t&&o.startsWith(`content-`)?!0:n?o===`authorization`||o===`cookie`||o===`proxy-authorization`:!1}function d(e,t){if(e==null)return null;if(!Array.isArray(e))throw new a(`${t} must be an array`);let n=/* @__PURE__ */ new Set;for(let i of e){if(typeof i!=`string`)throw new a(`${t} must contain header names`);n.add(r.headerNameToString(i))}return n}function f(e,t,n,a,o){let s=[];if(Array.isArray(e))for(let r=0;r{let n=ka();function r({maxRedirections:e,throwOnMaxRedirect:t,stripHeadersOnRedirect:r,stripHeadersOnCrossOriginRedirect:i}={}){return a=>function(o,s){let{maxRedirections:c=e,throwOnMaxRedirect:l=t,stripHeadersOnRedirect:u=r,stripHeadersOnCrossOriginRedirect:d=i,...f}=o;if(c==null||c===0)return a(o,s);let p={...f,throwOnMaxRedirect:l,stripHeadersOnRedirect:u,stripHeadersOnCrossOriginRedirect:d};return a(p,new n(a,c,p,s))}}t.exports=r})),ja=/* @__PURE__ */ a(((e,t)=>{let n=Oa(),{ResponseError:r}=yi();var i=class extends n{#e;#t;#n;#r;#i;constructor(e,{handler:t}){super(t)}#a(e){return(this.#t??``).indexOf(e)===0}onRequestStart(e,t){return this.#e=0,this.#t=null,this.#n=null,this.#r=null,this.#i=``,super.onRequestStart(e,t)}onResponseStart(e,t,n,r){if(this.#e=t,this.#r=n,this.#t=n[`content-type`],this.#e<400)return super.onResponseStart(e,t,n,r);(this.#a(`application/json`)||this.#a(`text/plain`))&&(this.#n=new TextDecoder(`utf-8`))}onResponseData(e,t){if(this.#e<400)return super.onResponseData(e,t);this.#i+=this.#n?.decode(t,{stream:!0})??``}onResponseEnd(e,t){if(this.#e>=400){if(this.#i+=this.#n?.decode(void 0,{stream:!1})??``,this.#a(`application/json`))try{this.#i=JSON.parse(this.#i)}catch{}let t,n=Error.stackTraceLimit;Error.stackTraceLimit=0;try{t=new r(`Response Error`,this.#e,{body:this.#i,headers:this.#r})}finally{Error.stackTraceLimit=n}super.onResponseError(e,t)}else super.onResponseEnd(e,t)}onResponseError(e,t){super.onResponseError(e,t)}};t.exports=()=>e=>function(t,n){return e(t,new i(t,{handler:n}))}})),Ma=/* @__PURE__ */ a(((e,t)=>{let n=aa();t.exports=e=>t=>function(r,i){return t(r,new n({...r,retryOptions:{...e,...r.retryOptions}},{handler:i,dispatch:t}))}})),Na=/* @__PURE__ */ a(((e,t)=>{let{InvalidArgumentError:n,RequestAbortedError:r}=yi(),i=Oa();var a=class extends i{#e=1048576;#t=!1;#n=0;aborted=!1;reason=!1;constructor({maxSize:e,signal:t},r){if(e!=null&&(!Number.isFinite(e)||e<1))throw new n(`maxSize must be a number greater than 0`);super(r),this.#e=e??this.#e}#r(e){this.aborted=!0,this.reason=e}onRequestStart(e,t){return e.abort=this.#r.bind(this),super.onRequestStart(e,t)}onResponseStart(e,t,n,i){let a=n[`content-length`];if(a!=null&&a>this.#e)throw new r(`Response size (${a}) larger than maxSize (${this.#e})`);return this.aborted===!0||super.onResponseStart(e,t,n,i)}onResponseError(e,t){super.onResponseError(e,this.aborted===!0?this.reason:t)}onResponseData(e,t){if(this.#n+=t.length,this.#n>this.#e)throw new r(`Response size (${this.#n}) larger than maxSize (${this.#e})`);return this.#n===this.#e&&(this.#t=!0),!0}onResponseEnd(e,t){this.aborted===!0?super.onResponseError(e,this.reason):super.onResponseEnd(e,this.#t?{}:t)}};function o({maxSize:e}={maxSize:1048576}){return t=>function(n,r){let{dumpMaxSize:i=e}=n;return t(n,new a({maxSize:i,signal:n.signal},r))}}t.exports=o})),Pa=/* @__PURE__ */ a(((e,n)=>{let{isIP:r}=t(`node:net`),{lookup:i}=t(`node:dns`),a=Oa(),{InvalidArgumentError:o,InformationalError:s}=yi(),{kRequestOrigin:c}=_i(),l=2**31-1;function u(e){let t=Object.getPrototypeOf(e);return Object.hasOwn(e,Symbol.iterator)||t!=null&&t!==Object.prototype&&typeof e[Symbol.iterator]==`function`}function d(e){return typeof e==`string`&&e.toLowerCase()===`host`}function f(e){if(e==null)return null;if(Array.isArray(e)){if(e.length===0||!Array.isArray(e[0]))return e;let t=[];for(let n of e)Array.isArray(n)&&n.length===2?t.push(n[0],n[1]):t.push(n);return t}if(typeof e==`object`&&u(e)){let t=[];for(let n of e)Array.isArray(n)&&n.length===2?t.push(n[0],n[1]):t.push(n);return t}return e}function p(e){if(e==null)return!1;if(Array.isArray(e)){if(e.length===0)return!1;for(let t=0;t=this.#e}},g=class{#e=0;#t=0;dualStack=!0;affinity=null;lookup=null;pick=null;storage=null;constructor(e){this.#e=e.maxTTL,this.#t=e.maxItems,this.dualStack=e.dualStack,this.affinity=e.affinity,this.lookup=e.lookup??this.#n,this.pick=e.pick??this.#r,this.storage=e.storage??new h(e)}runLookup(e,t,n){let r=this.storage.get(e.hostname);if(r==null&&this.storage.full()){n(null,e);return}let i={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#e,maxItems:this.#t};if(r==null)this.lookup(e,i,(t,r)=>{if(t||r==null||r.length===0){n(t??new s(`No DNS entries found`));return}this.setRecords(e,r);let a=this.storage.get(e.hostname),o=this.pick(e,a,i.affinity),c;c=typeof o.port==`number`?`:${o.port}`:e.port===``?``:`:${e.port}`,n(null,new URL(`${e.protocol}//${o.family===6?`[${o.address}]`:o.address}${c}`))});else{let a=this.pick(e,r,i.affinity);if(a==null){this.storage.delete(e.hostname),this.runLookup(e,t,n);return}let o;o=typeof a.port==`number`?`:${a.port}`:e.port===``?``:`:${e.port}`,n(null,new URL(`${e.protocol}//${a.family===6?`[${a.address}]`:a.address}${o}`))}}#n(e,t,n){i(e.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:`ipv4first`},(e,t)=>{if(e)return n(e);let r=/* @__PURE__ */ new Map;for(let e of t)r.set(`${e.address}:${e.family}`,e);n(null,r.values())})}#r(e,t,n){let r=null,{records:i,offset:a}=t,o;if(this.dualStack?(n??(a==null||a===l?(t.offset=0,n=4):(t.offset++,n=(t.offset&1)==1?6:4)),o=i[n]!=null&&i[n].ips.length>0?i[n]:i[n===4?6:4]):o=i[n],o==null||o.ips.length===0)return r;o.offset==null||o.offset===l?o.offset=0:o.offset++;let s=o.offset%o.ips.length;return r=o.ips[s]??null,r==null?r:Date.now()-r.timestamp>r.ttl?(o.ips.splice(s,1),this.pick(e,t,n)):r}pickFamily(e,t){let n=this.storage.get(e.hostname)?.records;if(!n)return null;let r=n[t];if(!r)return null;r.offset==null||r.offset===l?r.offset=0:r.offset++;let i=r.offset%r.ips.length,a=r.ips[i]??null;return a==null||Date.now()-a.timestamp>a.ttl&&r.ips.splice(i,1),a}setRecords(e,t){let n=Date.now(),r={records:{4:null,6:null}},i=this.#e;for(let e of t){e.timestamp=n,typeof e.ttl==`number`?(e.ttl=Math.min(e.ttl,this.#e),i=Math.min(i,e.ttl)):e.ttl=this.#e;let t=r.records[e.family]??{ips:[]};t.ips.push(e),r.records[e.family]=t}this.storage.set(e.hostname,r,{ttl:i})}deleteRecords(e){this.storage.delete(e.hostname)}getHandler(e,t){return new v(this,e,t)}},v=class extends a{#e=null;#t=null;#n=null;#r=null;#i=null;#a=!0;constructor(e,{origin:t,handler:n,dispatch:r,newOrigin:i},a){super(n),this.#r=t,this.#i=i,this.#t={...a},this.#e=e,this.#n=r}onResponseError(e,t){switch(t.code){case`ETIMEDOUT`:case`ECONNREFUSED`:if(this.#e.dualStack){if(!this.#a){super.onResponseError(e,t);return}this.#a=!1;let n=this.#i.hostname[0]===`[`?4:6,r=this.#e.pickFamily(this.#r,n);if(r==null){super.onResponseError(e,t);return}let i;i=typeof r.port==`number`?`:${r.port}`:this.#r.port===``?``:`:${this.#r.port}`;let a={...this.#t,origin:`${this.#r.protocol}//${r.family===6?`[${r.address}]`:r.address}${i}`,[c]:this.#t[c]===void 0?this.#r:this.#t[c],headers:m(this.#r.host,this.#t.headers)};this.#n(a,this);return}super.onResponseError(e,t);break;case`ENOTFOUND`:this.#e.deleteRecords(this.#r),super.onResponseError(e,t);break;default:super.onResponseError(e,t)}}};n.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!=`number`||e?.maxTTL<0))throw new o(`Invalid maxTTL. Must be a positive number`);if(e?.maxItems!=null&&(typeof e?.maxItems!=`number`||e?.maxItems<1))throw new o(`Invalid maxItems. Must be a positive number and greater than zero`);if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new o(`Invalid affinity. Must be either 4 or 6`);if(e?.dualStack!=null&&typeof e?.dualStack!=`boolean`)throw new o(`Invalid dualStack. Must be a boolean`);if(e?.lookup!=null&&typeof e?.lookup!=`function`)throw new o(`Invalid lookup. Must be a function`);if(e?.pick!=null&&typeof e?.pick!=`function`)throw new o(`Invalid pick. Must be a function`);if(e?.storage!=null&&(typeof e?.storage?.get!=`function`||typeof e?.storage?.set!=`function`||typeof e?.storage?.full!=`function`||typeof e?.storage?.delete!=`function`))throw new o(`Invalid storage. Must be a object with methods: { get, set, full, delete }`);let t=e?.dualStack??!0,n;n=t?e?.affinity??null:e?.affinity??4;let i=new g({maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:n,maxItems:e?.maxItems??1/0,storage:e?.storage});return e=>function(t,n){if(t.origin==null)return e(t,n);let a=t.origin.constructor===URL?t.origin:new URL(t.origin);return r(a.hostname)===0?(i.runLookup(a,t,(r,o)=>{if(r)return n.onResponseError(null,r);e({...t,servername:a.hostname,origin:o.origin,[c]:t[c]===void 0?a:t[c],headers:m(a.host,t.headers)},i.getHandler({origin:a,dispatch:e,handler:n,newOrigin:o},t))}),!0):e(t,n)}}})),Fa=/* @__PURE__ */ a(((e,t)=>{let{safeHTTPMethods:n,pathHasQueryOrFragment:r,hasSafeIterator:i,isValidHTTPToken:a}=Si(),{serializePathWithQuery:o}=Si(),{kRequestOrigin:s}=_i(),c=[`no-store`,`private`,`no-cache`],l=Symbol(`invalid cache-control directives`);function u(e){return e.replace(/^[\t ]+|[\t ]+$/g,``)}function d(e,t){for(let n=0;ns}),c=e+1);return t.push({value:o.substring(c),fromMalformedQuote:c>s}),t}function g(e,t){let n=e[l];n===void 0&&(n=/* @__PURE__ */ new Set,Object.defineProperty(e,l,{value:n})),n.add(t)}function v(e,t){return e[l]?.has(t)===!0}function y(e){for(let t of c)if(e.startsWith(t)&&e.length>t.length&&!a(e[t.length]))return t;let t=``,n=!1;for(let r=0;r=2&&h[0]===`"`&&h[h.length-1]===`"`&&(h=h.substring(1,h.length-1)),!/^[0-9]+$/.test(h))){delete t[d],n.add(d),g(t,d);continue}let e=Math.min(parseInt(h,10),2147483647);d===`min-fresh`?(!(d in t)||t[d]e)&&(t[d]=e);break}case`private`:case`no-cache`:if(c||h!==void 0&&h.length===0){t[d]=!0;break}if(h){if(h[0]===`"`){h=p(h);let n=``,r=e,o=!1,s=m(h,1);if(s!==-1)n=h.substring(1,s),o=!0;else{let t=[h.substring(1)];for(let n=e+1;n{function n(e){switch(e[3]){case`,`:return i(e);case` `:return a(e);default:return o(e)}}function r(e,t,n,r,i,a,o){let s=new Date(Date.UTC(e,t,n,r,i,a));return e>=0&&e<=99&&s.setUTCFullYear(e),s.getUTCFullYear()===e&&s.getUTCMonth()===t&&s.getUTCDate()===n&&s.getUTCHours()===r&&s.getUTCMinutes()===i&&s.getUTCSeconds()===a&&s.getUTCDay()===o?s:void 0}function i(e){if(e.length!==29||e[4]!==` `||e[7]!==` `||e[11]!==` `||e[16]!==` `||e[19]!==`:`||e[22]!==`:`||e[25]!==` `||e[26]!==`G`||e[27]!==`M`||e[28]!==`T`)return;let t=-1;if(e[0]===`S`&&e[1]===`u`&&e[2]===`n`)t=0;else if(e[0]===`M`&&e[1]===`o`&&e[2]===`n`)t=1;else if(e[0]===`T`&&e[1]===`u`&&e[2]===`e`)t=2;else if(e[0]===`W`&&e[1]===`e`&&e[2]===`d`)t=3;else if(e[0]===`T`&&e[1]===`h`&&e[2]===`u`)t=4;else if(e[0]===`F`&&e[1]===`r`&&e[2]===`i`)t=5;else if(e[0]===`S`&&e[1]===`a`&&e[2]===`t`)t=6;else return;let n=0;if(e[5]===`0`){let t=e.charCodeAt(6);if(t<49||t>57)return;n=t-48}else{let t=e.charCodeAt(5);if(t<49||t>51)return;let r=e.charCodeAt(6);if(r<48||r>57)return;n=(t-48)*10+(r-48)}let i=-1;if(e[8]===`J`&&e[9]===`a`&&e[10]===`n`)i=0;else if(e[8]===`F`&&e[9]===`e`&&e[10]===`b`)i=1;else if(e[8]===`M`&&e[9]===`a`){if(e[10]===`r`)i=2;else if(e[10]===`y`)i=4;else return}else if(e[8]===`J`){if(e[9]===`a`&&e[10]===`n`)i=0;else if(e[9]===`u`){if(e[10]===`n`)i=5;else if(e[10]===`l`)i=6;else return}else return}else if(e[8]===`A`){if(e[9]===`p`&&e[10]===`r`)i=3;else if(e[9]===`u`&&e[10]===`g`)i=7;else return}else if(e[8]===`S`&&e[9]===`e`&&e[10]===`p`)i=8;else if(e[8]===`O`&&e[9]===`c`&&e[10]===`t`)i=9;else if(e[8]===`N`&&e[9]===`o`&&e[10]===`v`)i=10;else if(e[8]===`D`&&e[9]===`e`&&e[10]===`c`)i=11;else return;let a=e.charCodeAt(12);if(a<48||a>57)return;let o=e.charCodeAt(13);if(o<48||o>57)return;let s=e.charCodeAt(14);if(s<48||s>57)return;let c=e.charCodeAt(15);if(c<48||c>57)return;let l=(a-48)*1e3+(o-48)*100+(s-48)*10+(c-48),u=0;if(e[17]===`0`){let t=e.charCodeAt(18);if(t<48||t>57)return;u=t-48}else{let t=e.charCodeAt(17);if(t<48||t>50)return;let n=e.charCodeAt(18);if(n<48||n>57||t===50&&n>51)return;u=(t-48)*10+(n-48)}let d=0;if(e[20]===`0`){let t=e.charCodeAt(21);if(t<48||t>57)return;d=t-48}else{let t=e.charCodeAt(20);if(t<48||t>53)return;let n=e.charCodeAt(21);if(n<48||n>57)return;d=(t-48)*10+(n-48)}let f=0;if(e[23]===`0`){let t=e.charCodeAt(24);if(t<48||t>57)return;f=t-48}else{let t=e.charCodeAt(23);if(t<48||t>53)return;let n=e.charCodeAt(24);if(n<48||n>57)return;f=(t-48)*10+(n-48)}return r(l,i,n,u,d,f,t)}function a(e){if(e.length!==24||e[7]!==` `||e[10]!==` `||e[19]!==` `)return;let t=-1;if(e[0]===`S`&&e[1]===`u`&&e[2]===`n`)t=0;else if(e[0]===`M`&&e[1]===`o`&&e[2]===`n`)t=1;else if(e[0]===`T`&&e[1]===`u`&&e[2]===`e`)t=2;else if(e[0]===`W`&&e[1]===`e`&&e[2]===`d`)t=3;else if(e[0]===`T`&&e[1]===`h`&&e[2]===`u`)t=4;else if(e[0]===`F`&&e[1]===`r`&&e[2]===`i`)t=5;else if(e[0]===`S`&&e[1]===`a`&&e[2]===`t`)t=6;else return;let n=-1;if(e[4]===`J`&&e[5]===`a`&&e[6]===`n`)n=0;else if(e[4]===`F`&&e[5]===`e`&&e[6]===`b`)n=1;else if(e[4]===`M`&&e[5]===`a`){if(e[6]===`r`)n=2;else if(e[6]===`y`)n=4;else return}else if(e[4]===`J`){if(e[5]===`a`&&e[6]===`n`)n=0;else if(e[5]===`u`){if(e[6]===`n`)n=5;else if(e[6]===`l`)n=6;else return}else return}else if(e[4]===`A`){if(e[5]===`p`&&e[6]===`r`)n=3;else if(e[5]===`u`&&e[6]===`g`)n=7;else return}else if(e[4]===`S`&&e[5]===`e`&&e[6]===`p`)n=8;else if(e[4]===`O`&&e[5]===`c`&&e[6]===`t`)n=9;else if(e[4]===`N`&&e[5]===`o`&&e[6]===`v`)n=10;else if(e[4]===`D`&&e[5]===`e`&&e[6]===`c`)n=11;else return;let i=0;if(e[8]===` `){let t=e.charCodeAt(9);if(t<49||t>57)return;i=t-48}else{let t=e.charCodeAt(8);if(t<49||t>51)return;let n=e.charCodeAt(9);if(n<48||n>57)return;i=(t-48)*10+(n-48)}let a=0;if(e[11]===`0`){let t=e.charCodeAt(12);if(t<48||t>57)return;a=t-48}else{let t=e.charCodeAt(11);if(t<48||t>50)return;let n=e.charCodeAt(12);if(n<48||n>57||t===50&&n>51)return;a=(t-48)*10+(n-48)}let o=0;if(e[14]===`0`){let t=e.charCodeAt(15);if(t<48||t>57)return;o=t-48}else{let t=e.charCodeAt(14);if(t<48||t>53)return;let n=e.charCodeAt(15);if(n<48||n>57)return;o=(t-48)*10+(n-48)}let s=0;if(e[17]===`0`){let t=e.charCodeAt(18);if(t<48||t>57)return;s=t-48}else{let t=e.charCodeAt(17);if(t<48||t>53)return;let n=e.charCodeAt(18);if(n<48||n>57)return;s=(t-48)*10+(n-48)}let c=e.charCodeAt(20);if(c<48||c>57)return;let l=e.charCodeAt(21);if(l<48||l>57)return;let u=e.charCodeAt(22);if(u<48||u>57)return;let d=e.charCodeAt(23);if(!(d<48||d>57))return r((c-48)*1e3+(l-48)*100+(u-48)*10+(d-48),n,i,a,o,s,t)}function o(e){let t=-1,n=-1;if(e[0]===`S`)e[1]===`u`&&e[2]===`n`&&e[3]===`d`&&e[4]===`a`&&e[5]===`y`?(n=0,t=6):e[1]===`a`&&e[2]===`t`&&e[3]===`u`&&e[4]===`r`&&e[5]===`d`&&e[6]===`a`&&e[7]===`y`&&(n=6,t=8);else if(e[0]===`M`&&e[1]===`o`&&e[2]===`n`&&e[3]===`d`&&e[4]===`a`&&e[5]===`y`)n=1,t=6;else if(e[0]===`T`)e[1]===`u`&&e[2]===`e`&&e[3]===`s`&&e[4]===`d`&&e[5]===`a`&&e[6]===`y`?(n=2,t=7):e[1]===`h`&&e[2]===`u`&&e[3]===`r`&&e[4]===`s`&&e[5]===`d`&&e[6]===`a`&&e[7]===`y`&&(n=4,t=8);else if(e[0]===`W`&&e[1]===`e`&&e[2]===`d`&&e[3]===`n`&&e[4]===`e`&&e[5]===`s`&&e[6]===`d`&&e[7]===`a`&&e[8]===`y`)n=3,t=9;else if(e[0]===`F`&&e[1]===`r`&&e[2]===`i`&&e[3]===`d`&&e[4]===`a`&&e[5]===`y`)n=5,t=6;else return;if(e[t]!==`,`||e.length-t-1!=23||e[t+1]!==` `||e[t+4]!==`-`||e[t+8]!==`-`||e[t+11]!==` `||e[t+14]!==`:`||e[t+17]!==`:`||e[t+20]!==` `||e[t+21]!==`G`||e[t+22]!==`M`||e[t+23]!==`T`)return;let i=0;if(e[t+2]===`0`){let n=e.charCodeAt(t+3);if(n<49||n>57)return;i=n-48}else{let n=e.charCodeAt(t+2);if(n<49||n>51)return;let r=e.charCodeAt(t+3);if(r<48||r>57)return;i=(n-48)*10+(r-48)}let a=-1;if(e[t+5]===`J`&&e[t+6]===`a`&&e[t+7]===`n`)a=0;else if(e[t+5]===`F`&&e[t+6]===`e`&&e[t+7]===`b`)a=1;else if(e[t+5]===`M`&&e[t+6]===`a`&&e[t+7]===`r`)a=2;else if(e[t+5]===`A`&&e[t+6]===`p`&&e[t+7]===`r`)a=3;else if(e[t+5]===`M`&&e[t+6]===`a`&&e[t+7]===`y`)a=4;else if(e[t+5]===`J`&&e[t+6]===`u`&&e[t+7]===`n`)a=5;else if(e[t+5]===`J`&&e[t+6]===`u`&&e[t+7]===`l`)a=6;else if(e[t+5]===`A`&&e[t+6]===`u`&&e[t+7]===`g`)a=7;else if(e[t+5]===`S`&&e[t+6]===`e`&&e[t+7]===`p`)a=8;else if(e[t+5]===`O`&&e[t+6]===`c`&&e[t+7]===`t`)a=9;else if(e[t+5]===`N`&&e[t+6]===`o`&&e[t+7]===`v`)a=10;else if(e[t+5]===`D`&&e[t+6]===`e`&&e[t+7]===`c`)a=11;else return;let o=e.charCodeAt(t+9);if(o<48||o>57)return;let s=e.charCodeAt(t+10);if(s<48||s>57)return;let c=(o-48)*10+(s-48);c+=c<70?2e3:1900;let l=0;if(e[t+12]===`0`){let n=e.charCodeAt(t+13);if(n<48||n>57)return;l=n-48}else{let n=e.charCodeAt(t+12);if(n<48||n>50)return;let r=e.charCodeAt(t+13);if(r<48||r>57||n===50&&r>51)return;l=(n-48)*10+(r-48)}let u=0;if(e[t+15]===`0`){let n=e.charCodeAt(t+16);if(n<48||n>57)return;u=n-48}else{let n=e.charCodeAt(t+15);if(n<48||n>53)return;let r=e.charCodeAt(t+16);if(r<48||r>57)return;u=(n-48)*10+(r-48)}let d=0;if(e[t+18]===`0`){let n=e.charCodeAt(t+19);if(n<48||n>57)return;d=n-48}else{let n=e.charCodeAt(t+18);if(n<48||n>53)return;let r=e.charCodeAt(t+19);if(r<48||r>57)return;d=(n-48)*10+(r-48)}return r(c,a,i,l,u,d,n)}t.exports={parseHttpDate:n}})),La=/* @__PURE__ */ a(((e,t)=>{let n=Si(),{parseCacheControlHeader:r,hasInvalidCacheControlDirective:i,parseVaryHeader:a,hasVaryStar:o,isInvalidOrWildcardVaryHeader:s,isEtagUsable:c}=Fa(),{parseHttpDate:l}=Ia();function u(){}let d=[200,203,204,206,300,301,308,404,405,410,414,501],f=[206],p=2147483647e3;function m(e){return e.replace(/^[\t ]+|[\t ]+$/g,``)}function h(e,t){for(let n=0;nthis.#i.onResponseStart?.(e,t,i,o),u=this;if(!h(n.safeHTTPMethods,this.#e.method)&&t>=200&&t<=399)return x(this.#r,this.#e,i),l();let f=i[`cache-control`],m=f?r(f):{};if(T(this.#t,i,m))return C(this.#r,this.#e),l();let g=i[`last-modified`]&&h(d,t);if(!f&&!i.expires&&!g&&!this.#n)return t===304&&i.vary&&s(i.vary)&&C(this.#r,this.#e),l();if(!E(this.#t,this.#e.method,t,i,m,this.#e.headers))return t===304&&(f||T(this.#t,i,m))&&C(this.#r,this.#e),l();let v=Date.now(),y=Object.hasOwn(i,`age`)?O(i.age):void 0;if(y!==void 0&&y>=p)return w(t,this.#r,this.#e),l();let b=Object.hasOwn(i,`date`)?D(i.date):void 0;if(b===null)return w(t,this.#r,this.#e),l();let S=b?Math.max(0,v-b.getTime()):0,M=Math.max(S,y??0),N=typeof i.etag==`string`&&c(i.etag)||typeof i[`last-modified`]==`string`,P=k(this.#t,v,y,i,b,m,N)??this.#n,F=P===0&&N;if(P===void 0||M>=P&&!F)return(f||P!==void 0)&&w(t,this.#r,this.#e),l();let I=v-M,ee=P+I;if(v>=ee&&!F)return w(t,this.#r,this.#e),l();let L;if(this.#e.headers&&i.vary&&(L=a(i.vary,this.#e.headers),!L))return l();let R=I,te=A(I,v,m,ee),ne=j(i,m),re={statusCode:t,statusMessage:o,headers:ne,vary:L,cacheControlDirectives:m,cachedAt:R,staleAt:ee,deleteAt:te};if(t===304){let t=t=>{if(!t)return l();if(re.statusCode=t.statusCode,re.statusMessage=t.statusMessage,re.etag=t.etag,re.vary=L??t.vary,re.headers={...t.headers,...ne},l(),this.#a=this.#r.createWriteStream(this.#e,re),this.#a&&t?.body){if(typeof t.body.values==`function`){let n=t.body.values(),r=()=>{for(let t of n){let n=this.#a.write(t)===!1;if(this.#i.onResponseData?.(e,t),n)break}};this.#a.on(`error`,function(){u.#a=void 0,u.#r.delete(u.#e)}).on(`drain`,()=>{r()}).on(`close`,function(){u.#a===this&&(u.#a=void 0)}),r()}else typeof t.body.on==`function`&&(t.body.on(`data`,t=>{this.#a.write(t),this.#i.onResponseData?.(e,t)}).on(`end`,()=>{this.#a.end()}).on(`error`,()=>{this.#a=void 0,this.#r.delete(this.#e)}),this.#a.on(`error`,function(){u.#a=void 0,u.#r.delete(u.#e)}).on(`close`,function(){u.#a===this&&(u.#a=void 0)}))}},n=this.#r.get(this.#e);n&&typeof n.then==`function`?n.then(t):t(n)}else{if(typeof i.etag==`string`&&c(i.etag)&&(re.etag=i.etag),this.#a=this.#r.createWriteStream(this.#e,re),!this.#a)return l();this.#a.on(`drain`,()=>e.resume()).on(`error`,function(){u.#a=void 0,u.#r.delete(u.#e)}).on(`close`,function(){u.#a===this&&(u.#a=void 0),e.resume()}),l()}}onResponseData(e,t){this.#a?.write(t)===!1&&e.pause(),this.#i.onResponseData?.(e,t)}onResponseEnd(e,t){this.#a?.end(),this.#i.onResponseEnd?.(e,t)}onResponseError(e,t){this.#a?.destroy(t),this.#a=void 0,this.#i.onResponseError?.(e,t)}};function C(e,t){try{e.delete(t)?.catch?.(u)}catch{}}function w(e,t,n){e===304&&C(t,n)}function T(e,t,n){return n[`no-store`]===!0||e===`shared`&&(n.private===!0||Object.hasOwn(t,`set-cookie`))||(t.vary?s(t.vary):!1)}function E(e,t,r,i,a,s){return!(!h(n.safeHTTPMethods,t)||r<200||h(f,r)||!h(d,r)&&!i.expires&&!a.public&&a[`max-age`]===void 0&&!(a.private&&e===`private`)&&(a[`s-maxage`]===void 0||e!==`shared`)||a[`no-store`]||e===`shared`&&(a.private===!0||Object.hasOwn(i,`set-cookie`))||i.vary&&o(i.vary)||s!=null&&Object.hasOwn(s,`authorization`)&&(!a.public&&!a[`s-maxage`]&&!a[`must-revalidate`]||typeof s.authorization!=`string`||Array.isArray(a[`no-cache`])&&h(a[`no-cache`],`authorization`)||Array.isArray(a.private)&&h(a.private,`authorization`)))}function D(e){let t=e;if(Array.isArray(t)){if(t.length!==1)return null;t=t[0]}return typeof t==`string`?l(t):null}function O(e){let t=e;if(Array.isArray(t)){if(t.length!==1)return p;t=t[0]}if(typeof t!=`string`||!/^[\t ]*[0-9]+[\t ]*$/.test(t))return p;let n=BigInt(t.replace(/^[\t ]+|[\t ]+$/g,``));return n>=BigInt(p/1e3)?p:Number(n)*1e3}function k(e,t,n,r,a,o,s){if(e===`shared`){if(i(o,`s-maxage`))return 0;let e=o[`s-maxage`];if(e!==void 0)return e>0?e*1e3:0}if(i(o,`max-age`))return 0;let c=o[`max-age`];if(c!==void 0)return c>0?c*1e3:0;if(Object.hasOwn(r,`expires`)){if(typeof r.expires!=`string`)return 0;let e=l(r.expires);if(!e||t>=e.getTime())return 0;if(a){if(a>=e)return 0;let t=e.getTime()-a.getTime();return n!==void 0&&n>=t?0:t}return e.getTime()-t}if(typeof r[`last-modified`]==`string`){let e=l(r[`last-modified`]);if(e)return e.getTime()>=t?void 0:(t-e.getTime())*.1}if(o.immutable)return 31536e6;if(o[`no-cache`]===!0&&s)return 0}function A(e,t,n,r){let i=-1/0,a=-1/0,o=-1/0;if(n[`stale-while-revalidate`]&&(i=r+n[`stale-while-revalidate`]*1e3),n[`stale-if-error`]&&(a=r+n[`stale-if-error`]*1e3),n.immutable&&i===-1/0&&a===-1/0&&(o=t+31536e6),i===-1/0&&a===-1/0&&o===-1/0){let n=r-e;if(n<=0)return t+864e5;let i=Math.min(Math.max(t-e,0),1e3);return r+n+i}return Math.max(r,i,a,o)}function j(e,t){let n=[`connection`,`proxy-authenticate`,`proxy-authentication-info`,`proxy-authorization`,`proxy-connection`,`te`,`transfer-encoding`,`upgrade`,`age`];e.connection&&g(n,e.connection),Array.isArray(t[`no-cache`])&&n.push(...t[`no-cache`]),Array.isArray(t.private)&&n.push(...t.private);let r;for(let t of n)Object.hasOwn(e,t)&&(r??={...e},delete r[t]);return r??e}t.exports=S})),Ra=/* @__PURE__ */ a(((e,n)=>{let{Writable:r}=t(`node:stream`),{EventEmitter:i}=t(`node:events`),{assertCacheKey:a,assertCacheValue:o}=Fa();var s=class extends i{#e=1024;#t=104857600;#n=5242880;#r=0;#i=0;#a=/* @__PURE__ */ new Map;#o=!1;constructor(e){if(super(),e){if(typeof e!=`object`)throw TypeError(`MemoryCacheStore options must be an object`);if(e.maxCount!==void 0){if(typeof e.maxCount!=`number`||!Number.isInteger(e.maxCount)||e.maxCount<0)throw TypeError(`MemoryCacheStore options.maxCount must be a non-negative integer`);this.#e=e.maxCount}if(e.maxSize!==void 0){if(typeof e.maxSize!=`number`||!Number.isInteger(e.maxSize)||e.maxSize<0)throw TypeError(`MemoryCacheStore options.maxSize must be a non-negative integer`);this.#t=e.maxSize}if(e.maxEntrySize!==void 0){if(typeof e.maxEntrySize!=`number`||!Number.isInteger(e.maxEntrySize)||e.maxEntrySize<0)throw TypeError(`MemoryCacheStore options.maxEntrySize must be a non-negative integer`);this.#n=e.maxEntrySize}}}get size(){return this.#r}isFull(){return this.#r>=this.#t||this.#i>=this.#e}get(e){a(e);let t=`${e.origin}:${e.path}`,n=Date.now(),r=this.#a.get(t),i=r?c(e,r,n):null;return i==null?void 0:{statusMessage:i.statusMessage,statusCode:i.statusCode,headers:i.headers,body:i.body,vary:i.vary?i.vary:void 0,etag:i.etag,cacheControlDirectives:i.cacheControlDirectives,cachedAt:i.cachedAt,staleAt:i.staleAt,deleteAt:i.deleteAt}}createWriteStream(e,t){a(e),o(t);let n=`${e.origin}:${e.path}`,i=this,s={...e,...t,body:[],size:0};return new r({write(e,t,n){typeof e==`string`&&(e=Buffer.from(e,t)),s.size+=e.byteLength,s.size>i.#n?this.destroy():s.body.push(e),n(null)},final(t){let r=i.#a.get(n);r||(r=[],i.#a.set(n,r));let a=c(e,r,Date.now());if(a){let e=r.indexOf(a);r.splice(e,1,s),i.#r-=a.size}else r.push(s),i.#i+=1;if(i.#r+=s.size,i.#r>i.#t||i.#i>i.#e){i.#o||=(i.emit(`maxSizeExceeded`,{size:i.#r,maxSize:i.#t,count:i.#i,maxCount:i.#e}),!0);for(let[e,t]of i.#a){for(let e of t.splice(0,Math.ceil(t.length/2)))i.#r-=e.size,--i.#i;t.length===0&&i.#a.delete(e)}i.#rn&&i.method===e.method&&l(e,i))return i}}function l(e,t){if(t.vary==null)return!0;for(let n in t.vary)if(Object.hasOwn(t.vary,n)&&!u(e.headers?.[n],t.vary[n]))return!1;return!0}function u(e,t){if(e==null&&t==null)return!0;if(e==null&&t!=null||e!=null&&t==null)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n{let r=t(`node:assert`);n.exports=class{#e=!1;#t;#n;#r;#i;constructor(e,t,n){if(typeof e!=`function`)throw TypeError(`callback must be a function`);this.#t=e,this.#n=t,this.#i=n}onRequestStart(e,t){this.#e=!1,this.#r=t}onRequestUpgrade(e,t,n,r){this.#n.onRequestUpgrade?.(e,t,n,r)}onResponseStart(e,t,n,i){if(r(this.#t!=null),this.#e=t===304||this.#i&&t>=500&&t<=504,this.#t(this.#e,this.#r,t,n),this.#t=null,this.#e)return!0;this.#n.onRequestStart?.(e,this.#r),this.#n.onResponseStart?.(e,t,n,i)}onResponseData(e,t){if(!this.#e)return this.#n.onResponseData?.(e,t)}onResponseEnd(e,t){this.#e||this.#n.onResponseEnd?.(e,t)}onResponseError(e,t){if(!this.#e){if(this.#t){if(this.#i){this.#e=!0,this.#t(!0,this.#r),this.#t=null;return}this.#t(!1),this.#t=null}if(typeof this.#n.onResponseError==`function`)this.#n.onResponseError(e,t);else throw t}}}})),Ba=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{Readable:i}=t(`node:stream`),a=Si(),o=La(),s=Ra(),c=za(),{assertCacheStore:l,assertCacheMethods:u,getInterceptorOrigin:d,makeCacheKey:f,normalizeHeaders:p,parseCacheControlHeader:m,isInvalidOrWildcardVaryHeader:h,parseVaryHeader:g}=Fa(),{AbortError:v}=yi(),{parseHttpDate:y}=Ia();function b(e,t){if(e!==void 0){if(!Array.isArray(e))throw TypeError(`expected ${t} to be an array or undefined, got ${typeof e}`);for(let n=0;n{};function S(e){return e.replace(/^[\t ]+|[\t ]+$/g,``)}function C(e,t){for(let n=0;ne.staleAt?!E(e,n)&&t?.[`max-stale`]?r>e.staleAt+t[`max-stale`]*1e3:!0:t?.[`min-fresh`]?e.staleAt-r<=t[`min-fresh`]*1e3:!1}function P(e,t){let n=e.cacheControlDirectives?.[`stale-while-revalidate`];return!n||E(e,t)?!1:Date.now()<=e.staleAt+n*1e3}function F(e,t,n,r,i,a){if(a?.[`only-if-cached`]){let e=!1,t={paused:!1,rawHeaders:[],rawTrailers:[],pause(){this.paused=!0},resume(){this.paused=!1},abort:n=>{e=!0,r.onResponseError?.(t,n??new v)}};try{if(r.onRequestStart?.(t,null),e||(r.onResponseStart?.(t,504,{},`Gateway Timeout`),e))return;r.onResponseEnd?.(t,{})}catch(e){typeof r.onResponseError==`function`&&r.onResponseError(t,e)}return!0}return e(i,new o(t,n,r))}function I(e,t,n,o,s,c){let l=a.isStream(n.body)?n.body:i.from(n.body??[]);r(!l.destroyed,`stream should not be destroyed`),r(!l.readableDidRead,`stream should not be readableDidRead`);let u=!1,d={rawHeaders:[],rawTrailers:[],resume(){l.resume()},pause(){l.pause()},get paused(){return l.isPaused()},get aborted(){return u},get reason(){return l.errored},abort(e){u=!0,l.destroy(e??new v)}};if(l.on(`error`,function(t){if(!this.readableEnded){if(typeof e.onResponseError==`function`)e.onResponseError(d,t);else throw t}}).on(`close`,function(){this.errored||e.onResponseEnd?.(d,{})}),e.onRequestStart?.(d,s),l.destroyed)return;let f={...n.headers,age:String(o)};c&&(f.warning=`110 - "response is stale"`),d.rawHeaders=a.toRawHeaders(f),e.onResponseStart?.(d,n.statusCode,f,n.statusMessage),t.method===`HEAD`?l.destroy():l.on(`data`,function(t){e.onResponseData?.(d,t)})}function ee(e,t,n,r,i,s,l){if(!l)return F(e,t,n,r,i,s);if(t.type===`shared`&&Object.hasOwn(l.headers,`set-cookie`))return a.isStream(l.body)&&l.body.on(`error`,x).destroy(),A(t.store,n),F(e,t,n,r,i,s);let u=Date.now();if(u>l.deleteAt)return e(i,new o(t,n,r));let d=Math.round((u-l.cachedAt)/1e3),f=s?.[`max-age`]!==void 0&&d>=s[`max-age`],p=f||N(l,s,t.type),m=f||T(l,s,i);if(p||m){if(a.isStream(i.body)&&a.bodyLength(i.body)!==0)return e(i,new o(t,n,r));if(!m&&P(l,t.type))return I(r,i,l,d,null,!0),queueMicrotask(()=>{let r=M(i,l);e({...i,headers:r},new o(t,n,{onRequestStart(){},onRequestUpgrade(){},onResponseStart(){},onResponseData(){},onResponseEnd(){},onResponseError(){}}))}),!0;let f=!1;if(!E(l,t.type)){let e=l.cacheControlDirectives[`stale-if-error`]??s?.[`stale-if-error`];e&&(f=u{if(s){if(u===304){if(D(t.type,f))return a.isStream(l.body)&&l.body.on(`error`,x).destroy(),A(t.store,n),e(i,new o(t,n,r));if(O(f))A(t.store,n);else if(k(l,f.vary?g(f.vary,i.headers):void 0))return a.isStream(l.body)&&l.body.on(`error`,x).destroy(),A(t.store,n),e(i,new o(t,n,r))}I(r,i,l,d,c,p)}else a.isStream(l.body)&&l.body.on(`error`,x).destroy()},new o(t,n,r),f))}a.isStream(i.body)&&i.body.on(`error`,x).destroy(),I(r,i,l,d,null,!1)}n.exports=(e={})=>{let{store:t=new s,methods:n=[`GET`],cacheByDefault:r=void 0,type:i=`shared`,origins:c=void 0}=e;if(typeof e!=`object`||!e)throw TypeError(`expected type of opts to be an Object, got ${e===null?`null`:typeof e}`);if(l(t,`opts.store`),u(n,`opts.methods`),b(c,`opts.origins`),r!==void 0&&typeof r!=`number`)throw TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof r}`);if(i!==void 0&&i!==`shared`&&i!==`private`)throw TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof i}`);let h={store:t,methods:n,cacheByDefault:r,type:i},g=[];for(let e=0;e(r,i)=>{let s=d(r,n);if(!s||C(g,r.method))return e(r,i);if(c!==void 0){let t=s.toString().toLowerCase(),n=!1;for(let e=0;eee(e,h,u,i,r,l,t)):ee(e,h,u,i,r,l,v)}}})),Va=/* @__PURE__ */ a(((e,n)=>{let{createInflate:r,createGunzip:i,createBrotliDecompress:a,createZstdDecompress:o}=t(`node:zlib`),{pipeline:s,Transform:c}=t(`node:stream`),{InvalidArgumentError:l,ResponseExceededMaxSizeError:u}=yi(),d=Oa();var f=class{#e;#t;#n;#r=!1;constructor(e,t,n){this.#e=e,this.#t=t,this.#n=n,this.target=null}pause(){this.#r||(this.#r=!0,this.#e())}resume(){this.#r&&(this.#r=!1,this.#t())}abort(e){this.target?.abort(e),this.#n(e)}get paused(){return this.#r}get aborted(){return this.target?.aborted??!1}get reason(){return this.target?.reason??null}get rawHeaders(){return this.target?.rawHeaders??null}set rawHeaders(e){this.target&&(this.target.rawHeaders=e)}get rawTrailers(){return this.target?.rawTrailers??null}set rawTrailers(e){this.target&&(this.target.rawTrailers=e)}};let p={__proto__:null,gzip:i,"x-gzip":i,br:a,deflate:r,compress:r,"x-compress":r,zstd:o},m=[204,304];function h(e){let t=0;return new c({transform(n,r,i){let a=t+n.length;a>e?i(new u(`Decompressed response size (${a}) exceeded maxSize (${e})`)):(t=a,i(null,n))}})}let g=!1;var v=class extends d{#e=[];#t;#n;#r;#i;#a=0;#o=!1;#s=!1;#c=!1;#l=!1;#u=!1;#d=!1;#f=!1;#p;#m;constructor(e,{skipStatusCodes:t=m,skipErrorResponses:n=!0,maxSize:r=0}={}){if(!Number.isSafeInteger(r)||r<0)throw new l(`maxSize must be a non-negative integer`);super(e),this.#n=t,this.#r=n,this.#i=r,this.#m=new f(()=>this.#h(),()=>this.#g(),e=>{this.#s&&!this.#o&&this.onResponseError(this.#m,e)})}#h(){this.#_()}#g(){let e=this.#u;this.#y(),e||(this.#v(),this.#b())}#_(){!this.#l&&!this.#o&&(this.#l=!0,this.#m.target?.pause())}#v(){this.#l&&!this.#m.paused&&!this.#c&&(this.#l=!1,this.#s||this.#m.target?.resume())}#y(){if(!(this.#o||this.#m.paused||!this.#p)){if(this.#u)this.#d=!0;else{this.#u=!0;try{do{this.#d=!1;let e;for(;!this.#o&&!this.#m.paused&&(e=this.#p.read())!==null;){if(this.#i>0){let t=this.#a+e.length;if(t>this.#i){this.#w(new u(`Decompressed response size (${t}) exceeded maxSize (${this.#i})`));return}this.#a=t}super.onResponseData(this.#m,e)===!1&&!this.#m.paused&&this.#m.pause()}}while(this.#d&&!this.#o&&!this.#m.paused)}finally{this.#u=!1}this.#v(),this.#b()}}}#b(){this.#o||!this.#f||this.#m.paused||this.#u||(this.#o=!0,this.#k(),super.onResponseEnd(this.#m,this.#t))}#x(){this.#o||(this.#f=!0,this.#y(),this.#b())}#S(e,t){return!!(!e||t<200||this.#n.includes(t)||this.#r&&t>=400)}#C(e){let t=e.split(`,`);if(t.length>5)throw Error(`too many content-encodings in response: ${t.length}, maximum allowed is 5`);let n=[];for(let e=t.length-1;e>=0;e--){let r=t[e].trim();if(r){if(!p[r])return n.length=0,n;n.push(p[r]())}}if(n.length<2)return n;let r=[];for(let e=0;e0&&r.push(h(this.#i));return r}#w(e){this.#o||(this.#s?this.onResponseError(this.#m,e):this.#m.abort(e))}#T(e){this.#p=e,e.on(`readable`,()=>this.#y()),e.on(`error`,e=>this.#w(e))}#E(){let e=this.#e[0];this.#T(e),e.on(`end`,()=>this.#x())}#D(){let e=this.#e[this.#e.length-1];this.#T(e),s(this.#e,e=>{this.#o||(e?this.#w(e):this.#x())})}#O(){this.#e[0].on(`drain`,()=>{this.#o||(this.#c=!1,this.#m.paused||(this.#y(),this.#v()))})}#k(){this.#e.length=0,this.#p=void 0}onRequestStart(e,t){return this.#m.target=e,super.onRequestStart(this.#m,t)}onRequestUpgrade(e,t,n,r){return super.onRequestUpgrade(this.#m,t,n,r)}onResponseStart(e,t,n,r){let i=n[`content-encoding`],a=Array.isArray(i)?i.join(`,`):i;if(this.#S(a,t))return super.onResponseStart(this.#m,t,n,r);let o=this.#C(a.toLowerCase());if(o.length===0)return this.#k(),super.onResponseStart(this.#m,t,n,r);this.#e=o;let{"content-encoding":s,"content-length":c,...l}=n;if(this.#m.rawHeaders){let e=this.#m.rawHeaders;if(Array.isArray(e)){let t=[];for(let n=0;n0)this.#e[0].write(t)||(this.#c=!0,this.#_());else return super.onResponseData(this.#m,t)}onResponseEnd(e,t){if(this.#e.length>0)this.#s=!0,this.#t=t,this.#e[0].end();else return super.onResponseEnd(this.#m,t)}onResponseError(e,t){if(!this.#o){this.#o=!0;for(let e of this.#e)e.destroy();this.#k(),super.onResponseError(this.#m,t)}}};function y(e={}){return g||=(process.emitWarning(`DecompressInterceptor is experimental and subject to change`,`ExperimentalWarning`),!0),t=>(n,r)=>n.method===`HEAD`?t(n,r):t(n,new v(r,e))}n.exports=y})),Ha=/* @__PURE__ */ a(((e,t)=>{let{RequestAbortedError:n}=yi(),r=5242880;t.exports=class{#e;#t=[];#n=r;#r=0;#i={};#a=``;#o=!1;#s=!1;#c=!1;#l=!1;#u=null;#d=null;constructor(e,t,n=r){this.#e=e,this.#d=t,this.#n=n}addWaitingHandler(e){if(this.#l||this.#c)return!1;let t=this.#p(e),n=t.controller;try{if(e.onRequestStart?.(n,null),n.aborted)return t.done=!0,!0;this.#s&&e.onResponseStart?.(n,this.#r,this.#i,this.#a)}catch{return t.done=!0,!0}return n.aborted||this.#t.push(t),!0}onRequestStart(e,t){this.#u=e,this.#e.onRequestStart?.(e,t)}onRequestUpgrade(e,t,n,r){this.#e.onRequestUpgrade?.(e,t,n,r)}onResponseStart(e,t,n,r){this.#s=!0,this.#r=t,this.#i=n,this.#a=r,this.#e.onResponseStart?.(e,t,n,r);for(let e of this.#t){let{handler:i,controller:a}=e;if(e.done||a.aborted)e.done=!0;else{try{i.onResponseStart?.(a,t,n,r)}catch{}a.aborted&&(e.done=!0)}}this.#_()}onResponseData(e,t){if(!(this.#o||this.#l)){this.#c=!0,this.#e.onResponseData?.(e,t);for(let e of this.#t){let{handler:n,controller:r}=e;if(e.done||r.aborted)e.done=!0;else if(r.paused)this.#m(e,t);else{try{n.onResponseData?.(r,t)}catch{}r.aborted&&(e.done=!0,e.bufferedChunks=[],e.bufferedBytes=0)}}this.#_()}}onResponseEnd(e,t){if(!(this.#o||this.#l)){this.#f(),this.#e.onResponseEnd?.(e,t),this.#l=!0;for(let e of this.#t)if(e.done||e.controller.aborted)e.done=!0;else if(this.#h(e),e.done||e.controller.aborted)e.done=!0;else if(e.controller.paused)e.pendingTrailers=t;else{try{e.handler.onResponseEnd?.(e.controller,t)}catch(t){this.#g(e,t)}e.done=!0}this.#_()}}onResponseError(e,t){if(!this.#l){this.#o=!0,this.#l=!0,this.#f(),this.#e.onResponseError?.(e,t);for(let e of this.#t)this.#g(e,t);this.#t=[]}}#f(){let e=this.#d;this.#d=null,e?.()}#p(e){let t={handler:e,controller:null,bufferedChunks:[],bufferedBytes:0,pendingTrailers:null,done:!1},r={aborted:!1,paused:!1,reason:null};return t.controller={resume:()=>{if(!r.aborted){if(r.paused=!1,this.#h(t),this.#l&&t.pendingTrailers&&t.bufferedChunks.length===0&&!r.paused&&!r.aborted){try{t.handler.onResponseEnd?.(t.controller,t.pendingTrailers)}catch(e){this.#g(t,e)}t.pendingTrailers=null,t.done=!0}this.#_()}},pause:()=>{r.aborted||(r.paused=!0)},get paused(){return r.paused},get aborted(){return r.aborted},get reason(){return r.reason},abort:i=>{if(!r.aborted){r.aborted=!0,r.reason=i??null,t.done=!0,t.pendingTrailers=null,t.bufferedChunks=[],t.bufferedBytes=0;try{e.onResponseError?.(t.controller,r.reason??new n)}catch{}}}},t}#m(e,t){if(e.done||e.controller.aborted){e.done=!0,e.bufferedChunks=[],e.bufferedBytes=0;return}let r=Buffer.from(t);if(e.bufferedChunks.push(r),e.bufferedBytes+=r.length,e.bufferedBytes>this.#n){let t=new n(`Deduplicated waiting handler exceeded maxBufferSize (${this.#n} bytes) while paused`);e.controller.abort(t)}}#h(e){let{handler:t,controller:n}=e;for(;!e.done&&!n.aborted&&!n.paused&&e.bufferedChunks.length>0;){let r=e.bufferedChunks.shift();e.bufferedBytes-=r.length;try{t.onResponseData?.(n,r)}catch{}if(n.aborted){e.done=!0,e.pendingTrailers=null,e.bufferedChunks=[],e.bufferedBytes=0;break}}}#g(e,t){if(!e.done){e.done=!0,e.pendingTrailers=null,e.bufferedChunks=[],e.bufferedBytes=0;try{e.handler.onResponseError?.(e.controller,t)}catch{}}}#_(){this.#t=this.#t.filter(e=>e.done===!1)}}})),Ua=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:diagnostics_channel`),i=Si(),a=Ha(),{getInterceptorOrigin:o,normalizeHeaders:s,makeCacheKey:c,makeDeduplicationKey:l}=Fa(),u=r.channel(`undici:request:pending-requests`);n.exports=(e={})=>{let{methods:t=[`GET`],skipHeaderNames:n=[],excludeHeaderNames:r=[],maxBufferSize:d=5242880}=e;if(typeof e!=`object`||!e)throw TypeError(`expected type of opts to be an Object, got ${e===null?`null`:typeof e}`);if(!Array.isArray(t))throw TypeError(`expected opts.methods to be an array, got ${typeof t}`);for(let e of t)if(!i.safeHTTPMethods.includes(e))throw TypeError(`expected opts.methods to only contain safe HTTP methods, got ${e}`);if(!Array.isArray(n))throw TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof n}`);if(!Array.isArray(r))throw TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof r}`);if(!Number.isFinite(d)||d<=0)throw TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${d}`);let f=new Set(n.map(e=>e.toLowerCase())),p=new Set(r.map(e=>e.toLowerCase())),m=/* @__PURE__ */ new Map;return(e,n)=>(r,i)=>{let h=o(r,n);if(!h||r.upgrade||t.includes(r.method)===!1)return e(r,i);if(r={...r,headers:s(r)},f.size>0){for(let t of Object.keys(r.headers))if(f.has(t.toLowerCase()))return e(r,i)}let g=c(r,h),v=l(g,p),y=m.get(v);if(y)return y.addWaitingHandler(i)?!0:e(r,i);let b=new a(i,()=>{m.delete(v),u.hasSubscribers&&u.publish({size:m.size,key:v,type:`removed`})},d);return m.set(v,b),u.hasSubscribers&&u.publish({size:m.size,key:v,type:`added`}),e(r,b)}}})),Wa=/* @__PURE__ */ a(((e,n)=>{let{Writable:r}=t(`node:stream`),{assertCacheKey:i,assertCacheValue:a}=Fa(),o,s=2e9;n.exports=class{#e=s;#t=1/0;#n;#r;#i;#a;#o;#s;#c;#l;constructor(e){if(e){if(typeof e!=`object`)throw TypeError(`SqliteCacheStore options must be an object`);if(e.maxEntrySize!==void 0){if(typeof e.maxEntrySize!=`number`||!Number.isInteger(e.maxEntrySize)||e.maxEntrySize<0)throw TypeError(`SqliteCacheStore options.maxEntrySize must be a non-negative integer`);if(e.maxEntrySize>s)throw TypeError(`SqliteCacheStore options.maxEntrySize must be less than 2gb`);this.#e=e.maxEntrySize}if(e.maxCount!==void 0){if(typeof e.maxCount!=`number`||!Number.isInteger(e.maxCount)||e.maxCount<0)throw TypeError(`SqliteCacheStore options.maxCount must be a non-negative integer`);this.#t=e.maxCount}}o||=t(`node:sqlite`).DatabaseSync,this.#n=new o(e?.location??`:memory:`),this.#n.exec(` PRAGMA journal_mode = WAL; PRAGMA synchronous = NORMAL; PRAGMA temp_store = memory; @@ -94,17 +94,17 @@ Content-Type: ${o.type||`application/octet-stream`}\r\n\r\n`);a.push(e,o,u),type ORDER BY cachedAt ASC LIMIT ? ) - `)}close(){this.#n.close()}get(e){i(e);let t=this.#f(e);return t?{body:t.body?Buffer.from(t.body.buffer,t.body.byteOffset,t.body.byteLength):void 0,statusCode:t.statusCode,statusMessage:t.statusMessage,headers:t.headers?JSON.parse(t.headers):void 0,etag:t.etag?t.etag:void 0,vary:t.vary?JSON.parse(t.vary):void 0,cacheControlDirectives:t.cacheControlDirectives?JSON.parse(t.cacheControlDirectives):void 0,cachedAt:t.cachedAt,staleAt:t.staleAt,deleteAt:t.deleteAt}:void 0}set(e,t){i(e);let n=this.#d(e),r=Array.isArray(t.body)?Buffer.concat(t.body):t.body,a=r?.byteLength;if(a&&a>this.#e)return;let o=this.#f(e,!0);o?this.#i.run(r,t.deleteAt,t.statusCode,t.statusMessage,t.headers?JSON.stringify(t.headers):null,t.etag?t.etag:null,t.cacheControlDirectives?JSON.stringify(t.cacheControlDirectives):null,t.vary?JSON.stringify(t.vary):null,t.cachedAt,t.staleAt,o.id):(this.#a.run(n,e.method,r,t.deleteAt,t.statusCode,t.statusMessage,t.headers?JSON.stringify(t.headers):null,t.etag?t.etag:null,t.cacheControlDirectives?JSON.stringify(t.cacheControlDirectives):null,t.vary?JSON.stringify(t.vary):null,t.cachedAt,t.staleAt),this.#u())}createWriteStream(e,t){i(e),a(t);let n=0,o=[],s=this;return new r({decodeStrings:!0,write(e,t,r){n+=e.byteLength,n<=s.#e?o.push(e):this.destroy(),r()},final(n){s.set(e,{...t,body:o}),n()}})}delete(e){if(typeof e!=`object`)throw TypeError(`expected key to be object, got ${typeof e}`);this.#s.run(this.#d(e))}#u(){if(Number.isFinite(this.#t)&&this.size<=this.#t)return 0;{let e=this.#o.run(Date.now()).changes;if(e)return e}{let e=this.#l?.run(Math.max(Math.floor(this.#t*.1),1)).changes;if(e)return e}return 0}get size(){let{total:e}=this.#c.get();return e}#d(e){return`${e.origin}/${e.path}`}#f(e,t=!1){let n=this.#d(e),{headers:r,method:i}=e,a=this.#r.all(n,i);if(a.length===0)return;let o=Date.now();for(let e of a){if(o>=e.deleteAt&&!t)continue;let n=!0;if(e.vary){let t=JSON.parse(e.vary);for(let e in t)if(!c(r[e],t[e])){n=!1;break}}if(n)return e}}};function c(e,t){if(e==null&&t==null)return!0;if(e==null&&t!=null||e!=null&&t==null)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n{let{kConstruct:r}=gi(),{kEnumerableProperty:i}=xi(),{iteratorMixin:a,isValidHeaderName:o,isValidHeaderValue:s}=Ri(),{webidl:c}=Li(),l=t(`node:assert`),u=t(`node:util`);function d(e){return e===10||e===13||e===9||e===32}function f(e){let t=0,n=e.length;for(;n>t&&d(e.charCodeAt(n-1));)--n;for(;n>t&&d(e.charCodeAt(t));)++t;return t===0&&n===e.length?e:e.substring(t,n)}function p(e,t){if(Array.isArray(t))for(let n=0;n>`,`record`]})}function m(e,t,n){if(n=f(n),!o(t))throw c.errors.invalidArgument({prefix:`Headers.append`,value:t,type:`header name`});if(!s(n))throw c.errors.invalidArgument({prefix:`Headers.append`,value:n,type:`header value`});if(y(e)===`immutable`)throw TypeError(`immutable`);return x(e).append(t,n,!1)}function h(e){let t=x(e);if(!t)return[];if(t.sortedMap)return t.sortedMap;let n=[],r=t.toSortedArray(),i=t.cookies;if(i===null||i.length===1)return t.sortedMap=r;for(let e=0;e>1),t[s][0]<=c[0]?o=s+1:a=s;if(r!==s){for(i=r;i>o;)t[i]=t[--i];t[o]=c}} + `)}close(){this.#n.close()}get(e){i(e);let t=this.#f(e);return t?{body:t.body?Buffer.from(t.body.buffer,t.body.byteOffset,t.body.byteLength):void 0,statusCode:t.statusCode,statusMessage:t.statusMessage,headers:t.headers?JSON.parse(t.headers):void 0,etag:t.etag?t.etag:void 0,vary:t.vary?JSON.parse(t.vary):void 0,cacheControlDirectives:t.cacheControlDirectives?JSON.parse(t.cacheControlDirectives):void 0,cachedAt:t.cachedAt,staleAt:t.staleAt,deleteAt:t.deleteAt}:void 0}set(e,t){i(e);let n=this.#d(e),r=Array.isArray(t.body)?Buffer.concat(t.body):t.body,a=r?.byteLength;if(a&&a>this.#e)return;let o=this.#f(e,!0);o?this.#i.run(r,t.deleteAt,t.statusCode,t.statusMessage,t.headers?JSON.stringify(t.headers):null,t.etag?t.etag:null,t.cacheControlDirectives?JSON.stringify(t.cacheControlDirectives):null,t.vary?JSON.stringify(t.vary):null,t.cachedAt,t.staleAt,o.id):(this.#a.run(n,e.method,r,t.deleteAt,t.statusCode,t.statusMessage,t.headers?JSON.stringify(t.headers):null,t.etag?t.etag:null,t.cacheControlDirectives?JSON.stringify(t.cacheControlDirectives):null,t.vary?JSON.stringify(t.vary):null,t.cachedAt,t.staleAt),this.#u())}createWriteStream(e,t){i(e),a(t);let n=0,o=[],s=this;return new r({decodeStrings:!0,write(e,t,r){n+=e.byteLength,n<=s.#e?o.push(e):this.destroy(),r()},final(n){s.set(e,{...t,body:o}),n()}})}delete(e){if(typeof e!=`object`)throw TypeError(`expected key to be object, got ${typeof e}`);this.#s.run(this.#d(e))}#u(){if(Number.isFinite(this.#t)&&this.size<=this.#t)return 0;{let e=this.#o.run(Date.now()).changes;if(e)return e}{let e=this.#l?.run(Math.max(Math.floor(this.#t*.1),1)).changes;if(e)return e}return 0}get size(){let{total:e}=this.#c.get();return e}#d(e){return`${e.origin}/${e.path}`}#f(e,t=!1){let n=this.#d(e),{headers:r,method:i}=e,a=this.#r.all(n,i);if(a.length===0)return;let o=Date.now();for(let e of a){if(o>=e.deleteAt&&!t)continue;let n=!0;if(e.vary){let t=JSON.parse(e.vary);for(let e in t)if(!c(r[e],t[e])){n=!1;break}}if(n)return e}}};function c(e,t){if(e==null&&t==null)return!0;if(e==null&&t!=null||e!=null&&t==null)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n{let{kConstruct:r}=_i(),{kEnumerableProperty:i}=Si(),{iteratorMixin:a,isValidHeaderName:o,isValidHeaderValue:s}=zi(),{webidl:c}=Ri(),l=t(`node:assert`),u=t(`node:util`);function d(e){return e===10||e===13||e===9||e===32}function f(e){let t=0,n=e.length;for(;n>t&&d(e.charCodeAt(n-1));)--n;for(;n>t&&d(e.charCodeAt(t));)++t;return t===0&&n===e.length?e:e.substring(t,n)}function p(e,t){if(Array.isArray(t))for(let n=0;n>`,`record`]})}function m(e,t,n){if(n=f(n),!o(t))throw c.errors.invalidArgument({prefix:`Headers.append`,value:t,type:`header name`});if(!s(n))throw c.errors.invalidArgument({prefix:`Headers.append`,value:n,type:`header value`});if(y(e)===`immutable`)throw TypeError(`immutable`);return x(e).append(t,n,!1)}function h(e){let t=x(e);if(!t)return[];if(t.sortedMap)return t.sortedMap;let n=[],r=t.toSortedArray(),i=t.cookies;if(i===null||i.length===1)return t.sortedMap=r;for(let e=0;e>1),t[s][0]<=c[0]?o=s+1:a=s;if(r!==s){for(i=r;i>o;)t[i]=t[--i];t[o]=c}} /* c8 ignore next 4 */ -if(!n.next().done)throw TypeError(`Unreachable`);return t}{let e=0;for(let{0:n,1:{value:r}}of this.headersMap)t[e++]=[n,r],l(r!==null);return t.sort(g)}}};let y,b,x,S;var C=class{#e;#t;constructor(e=void 0){c.util.markAsUncloneable(this),e!==r&&(this.#t=new v,this.#e=`none`,e!==void 0&&(e=c.converters.HeadersInit(e,`Headers constructor`,`init`),p(this,e)))}append(e,t){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,2,`Headers.append`);let n=`Headers.append`;return e=c.converters.ByteString(e,n,`name`),t=c.converters.ByteString(t,n,`value`),m(this,e,t)}delete(e){if(c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,1,`Headers.delete`),e=c.converters.ByteString(e,`Headers.delete`,`name`),!o(e))throw c.errors.invalidArgument({prefix:`Headers.delete`,value:e,type:`header name`});if(this.#e===`immutable`)throw TypeError(`immutable`);this.#t.contains(e,!1)&&this.#t.delete(e,!1)}get(e){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,1,`Headers.get`);let t=`Headers.get`;if(e=c.converters.ByteString(e,t,`name`),!o(e))throw c.errors.invalidArgument({prefix:t,value:e,type:`header name`});return this.#t.get(e,!1)}has(e){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,1,`Headers.has`);let t=`Headers.has`;if(e=c.converters.ByteString(e,t,`name`),!o(e))throw c.errors.invalidArgument({prefix:t,value:e,type:`header name`});return this.#t.contains(e,!1)}set(e,t){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,2,`Headers.set`);let n=`Headers.set`;if(e=c.converters.ByteString(e,n,`name`),t=c.converters.ByteString(t,n,`value`),t=f(t),!o(e))throw c.errors.invalidArgument({prefix:n,value:e,type:`header name`});if(!s(t))throw c.errors.invalidArgument({prefix:n,value:t,type:`header value`});if(this.#e===`immutable`)throw TypeError(`immutable`);this.#t.set(e,t,!1)}getSetCookie(){c.brandCheck(this,c.is.Headers);let e=this.#t.cookies;return e?[...e]:[]}[u.inspect.custom](e,t){return t.depth??=e,`Headers ${u.formatWithOptions(t,this.#t.entries)}`}static{y=e=>e.#e,b=(e,t)=>{e.#e=t},x=e=>e.#t,S=(e,t)=>{e.#t=t},c.is.Headers=e=>typeof e==`object`&&!!e&&#e in e}};a(`Headers`,C,h,0,1,c.is.Headers),Object.defineProperties(C.prototype,{append:i,delete:i,get:i,has:i,set:i,getSetCookie:i,[Symbol.toStringTag]:{value:`Headers`,configurable:!0},[u.inspect.custom]:{enumerable:!1}}),c.converters.HeadersInit=function(e,t,n){if(c.util.Type(e)===c.util.Types.OBJECT){let r=Reflect.get(e,Symbol.iterator);if(!u.types.isProxy(e)&&r===C.prototype.entries)try{return x(e).entriesList}catch{}return typeof r==`function`?c.converters[`sequence>`](e,t,n,r.bind(e)):c.converters[`record`](e,t,n)}throw c.errors.conversionFailed({prefix:`Headers constructor`,argument:`Argument 1`,types:[`sequence>`,`record`]})},n.exports={fill:p,compareHeaderName:g,Headers:C,HeadersList:v,getHeadersGuard:y,setHeadersGuard:b,setHeadersList:S,getHeadersList:x}})),Ga=/* @__PURE__ */ a(((e,n)=>{let{Headers:r,HeadersList:i,fill:a,getHeadersGuard:o,setHeadersGuard:s,setHeadersList:c}=Wa(),{extractBody:l,cloneBody:u,mixinBody:d,streamRegistry:f,bodyUnusable:p}=Hi(),m=xi(),h=t(`node:util`),{kEnumerableProperty:g}=m,{isValidReasonPhrase:v,isCancelled:y,isAborted:b,isErrorLike:x,environmentSettingsObject:S}=Ri(),{redirectStatusSet:C,nullBodyStatus:w}=Mi(),{webidl:T}=Li(),{URLSerializer:E}=Ii(),{kConstruct:D}=gi(),O=t(`node:assert`),{isomorphicEncode:k,serializeJavascriptValueToJSONString:A}=Fi(),j=new TextEncoder(`utf-8`),M,N,P,F;var I=class{#e;#t;static error(){return ae(R(),`immutable`)}static json(e,t=void 0){T.argumentLengthCheck(arguments,1,`Response.json`),t=T.converters.ResponseInit(t);let n=j.encode(A(e)),r=l(n),i=ae(L({}),`response`);return z(i,t,{body:r[0],type:`application/json`}),i}static redirect(e,t=302){T.argumentLengthCheck(arguments,1,`Response.redirect`),e=T.converters.USVString(e),t=T.converters[`unsigned short`](t);let n;try{n=new URL(e,S.settingsObject.baseUrl)}catch(t){throw TypeError(`Failed to parse URL from ${e}`,{cause:t})}if(!C.has(t))throw RangeError(`Invalid status code ${t}`);let r=ae(L({}),`immutable`);r.#t.status=t;let i=k(E(n));return r.#t.headersList.append(`location`,i,!0),r}constructor(e=null,t=void 0){if(T.util.markAsUncloneable(this),e===D)return;e!==null&&(e=T.converters.BodyInit(e,`Response`,`body`)),t=T.converters.ResponseInit(t),this.#t=L({}),this.#e=new r(D),s(this.#e,`response`),c(this.#e,this.#t.headersList);let n=null;if(e!=null){let[t,r]=l(e);n={body:t,type:r}}z(this,t,n)}get type(){return T.brandCheck(this,T.is.Response),this.#t.type}get url(){T.brandCheck(this,T.is.Response);let e=this.#t.urlList,t=e[e.length-1]??null;return t===null?``:E(t,!0)}get redirected(){return T.brandCheck(this,T.is.Response),this.#t.urlList.length>1}get status(){return T.brandCheck(this,T.is.Response),this.#t.status}get ok(){return T.brandCheck(this,T.is.Response),this.#t.status>=200&&this.#t.status<=299}get statusText(){return T.brandCheck(this,T.is.Response),this.#t.statusText}get headers(){return T.brandCheck(this,T.is.Response),this.#e}get body(){return T.brandCheck(this,T.is.Response),this.#t.body?this.#t.body.stream:null}get bodyUsed(){return T.brandCheck(this,T.is.Response),!!this.#t.body&&m.isDisturbed(this.#t.body.stream)}clone(){if(T.brandCheck(this,T.is.Response),p(this.#t))throw T.errors.exception({header:`Response.clone`,message:`Body has already been consumed.`});let e=ee(this.#t);return this.#t.urlList.length!==0&&this.#t.body?.stream&&f.register(this,new WeakRef(this.#t.body.stream)),ae(e,o(this.#e))}[h.inspect.custom](e,t){t.depth===null&&(t.depth=2),t.colors??=!0;let n={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${h.formatWithOptions(t,n)}`}static{M=e=>e.#e,N=(e,t)=>{e.#e=t},P=e=>e.#t,F=(e,t)=>{e.#t=t},T.is.Response=e=>typeof e==`object`&&!!e&&#t in e}};d(I,P,T.is.Response),Object.defineProperties(I.prototype,{type:g,url:g,status:g,ok:g,redirected:g,statusText:g,headers:g,clone:g,body:g,bodyUsed:g,[Symbol.toStringTag]:{value:`Response`,configurable:!0}}),Object.defineProperties(I,{json:g,redirect:g,error:g});function ee(e){if(e.internalResponse)return re(ee(e.internalResponse),e.type);let t=L({...e,body:null});return e.body!=null&&(t.body=u(e.body)),t}function L(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:`default`,status:200,timingInfo:null,cacheState:``,statusText:``,...e,headersList:e?.headersList?new i(e?.headersList):new i,urlList:e?.urlList?[...e.urlList]:[]}}function R(e){return L({type:`error`,status:0,error:x(e)?e:Error(e&&String(e)),aborted:e&&e.name===`AbortError`})}function te(e){return e.type===`error`&&e.status===0}function ne(e,t){return t={internalResponse:e,...t},new Proxy(e,{get(e,n){return n in t?t[n]:e[n]},set(e,n,r){return O(!(n in t)),e[n]=r,!0}})}function re(e,t){if(t===`basic`)return ne(e,{type:`basic`,headersList:e.headersList});if(t===`cors`)return ne(e,{type:`cors`,headersList:e.headersList});if(t===`opaque`)return ne(e,{type:`opaque`,urlList:[],status:0,statusText:``,body:null});if(t===`opaqueredirect`)return ne(e,{type:`opaqueredirect`,status:0,statusText:``,headersList:[],body:null});O(!1)}function ie(e,t=null){return O(y(e)),b(e)?R(Object.assign(new DOMException(`The operation was aborted.`,`AbortError`),{cause:t})):R(Object.assign(new DOMException(`Request was cancelled.`),{cause:t}))}function z(e,t,n){if(t.status!==null&&(t.status<200||t.status>599))throw RangeError(`init["status"] must be in the range of 200 to 599, inclusive.`);if(`statusText`in t&&t.statusText!=null&&!v(String(t.statusText)))throw TypeError(`Invalid statusText`);if(`status`in t&&t.status!=null&&(P(e).status=t.status),`statusText`in t&&t.statusText!=null&&(P(e).statusText=t.statusText),`headers`in t&&t.headers!=null&&a(M(e),t.headers),n){if(w.includes(e.status))throw T.errors.exception({header:`Response constructor`,message:`Invalid response status code ${e.status}`});P(e).body=n.body,n.type!=null&&!P(e).headersList.contains(`content-type`,!0)&&P(e).headersList.append(`content-type`,n.type,!0)}}function ae(e,t){let n=new I(D);F(n,e);let i=new r(D);return N(n,i),c(i,e.headersList),s(i,t),e.urlList.length!==0&&e.body?.stream&&f.register(n,new WeakRef(e.body.stream)),n}T.converters.XMLHttpRequestBodyInit=function(e,t,n){return typeof e==`string`?T.converters.USVString(e,t,n):T.is.Blob(e)||T.is.BufferSource(e)||T.is.FormData(e)||T.is.URLSearchParams(e)?e:T.converters.DOMString(e,t,n)},T.converters.BodyInit=function(e,t,n){return T.is.ReadableStream(e)||e?.[Symbol.asyncIterator]?e:T.converters.XMLHttpRequestBodyInit(e,t,n)},T.converters.ResponseInit=T.dictionaryConverter([{key:`status`,converter:T.converters[`unsigned short`],defaultValue:()=>200},{key:`statusText`,converter:T.converters.ByteString,defaultValue:()=>``},{key:`headers`,converter:T.converters.HeadersInit}]),n.exports={isNetworkError:te,makeNetworkError:R,makeResponse:L,makeAppropriateNetworkError:ie,filterResponse:re,Response:I,cloneResponse:ee,fromInnerResponse:ae,getResponseState:P}})),Ka=/* @__PURE__ */ a(((e,n)=>{let{extractBody:r,mixinBody:i,cloneBody:a,bodyUnusable:o}=Hi(),{Headers:s,fill:c,HeadersList:l,setHeadersGuard:u,getHeadersGuard:d,setHeadersList:f,getHeadersList:p}=Wa(),m=xi(),h=t(`node:util`),{isValidHTTPToken:g,sameOrigin:v,environmentSettingsObject:y}=Ri(),{forbiddenMethodsSet:b,corsSafeListedMethodsSet:x,referrerPolicy:S,requestRedirect:C,requestMode:w,requestCredentials:T,requestCache:E,requestDuplex:D}=Mi(),{kEnumerableProperty:O,normalizedMethodRecordsBase:k,normalizedMethodRecords:A}=m,{webidl:j}=Li(),{URLSerializer:M}=Ii(),{kConstruct:N}=gi(),P=t(`node:assert`),{getMaxListeners:F,setMaxListeners:I,defaultMaxListeners:ee}=t(`node:events`),L=Symbol(`abortController`),R=new FinalizationRegistry(({signal:e,abort:t})=>{e.removeEventListener(`abort`,t)}),te=/* @__PURE__ */ new WeakMap,ne;try{ne=F(new AbortController().signal)>0}catch{ne=!1}function re(e){return t;function t(){let n=e.deref();if(n!==void 0){R.unregister(t),this.removeEventListener(`abort`,t),n.abort(this.reason);let e=te.get(n.signal);if(e!==void 0){if(e.size!==0){for(let t of e){let e=t.deref();e!==void 0&&e.abort(this.reason)}e.clear()}te.delete(n.signal)}}}}let ie=!1,z,ae,oe,se,ce,le,ue;var de=class{#e;#t;#n;#r;#i=null;constructor(e,t=void 0){if(j.util.markAsUncloneable(this),e===N)return;j.argumentLengthCheck(arguments,1,`Request constructor`),e=j.converters.RequestInfo(e),t=j.converters.RequestInit(t);let n=null,i=null,a=y.settingsObject.baseUrl,d=null;if(typeof e==`string`){this.#t=t.dispatcher;let r;try{r=new URL(e,a)}catch(t){throw TypeError(`Failed to parse URL from `+e,{cause:t})}if(r.username||r.password)throw TypeError(`Request cannot be constructed from a URL that includes credentials: `+e);n=fe({urlList:[r]}),i=`cors`}else P(j.is.Request(e)),n=e.#r,d=e.#e,this.#t=t.dispatcher||e.#t;let h=y.settingsObject.origin,S=`client`;if(n.window?.constructor?.name===`EnvironmentSettingsObject`&&v(n.window,h)&&(S=n.window),t.window!=null)throw TypeError(`'window' option '${S}' must be null`);`window`in t&&(S=`no-window`),n=fe({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:y.settingsObject,window:S,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});let C=Object.keys(t).length!==0;if(C&&(n.mode===`navigate`&&(n.mode=`same-origin`),n.reloadNavigation=!1,n.historyNavigation=!1,n.origin=`client`,n.referrer=`client`,n.referrerPolicy=``,n.url=n.urlList[n.urlList.length-1],n.urlList=[n.url]),t.referrer!==void 0){let e=t.referrer;if(e===``)n.referrer=`no-referrer`;else{let t;try{t=new URL(e,a)}catch(t){throw TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}t.protocol===`about:`&&t.hostname===`client`||h&&!v(t,y.settingsObject.baseUrl)?n.referrer=`client`:n.referrer=t}}t.referrerPolicy!==void 0&&(n.referrerPolicy=t.referrerPolicy);let w;if(w=t.mode===void 0?i:t.mode,w===`navigate`)throw j.errors.exception({header:`Request constructor`,message:`invalid request mode navigate.`});if(w!=null&&(n.mode=w),t.credentials!==void 0&&(n.credentials=t.credentials),t.cache!==void 0&&(n.cache=t.cache),n.cache===`only-if-cached`&&n.mode!==`same-origin`)throw TypeError(`'only-if-cached' can be set only with 'same-origin' mode`);if(t.redirect!==void 0&&(n.redirect=t.redirect),t.integrity!=null&&(n.integrity=String(t.integrity)),t.keepalive!==void 0&&(n.keepalive=!!t.keepalive),t.method!==void 0){let e=t.method,r=A[e];if(r!==void 0)n.method=r;else{if(!g(e))throw TypeError(`'${e}' is not a valid HTTP method.`);let t=e.toUpperCase();if(b.has(t))throw TypeError(`'${e}' HTTP method is unsupported.`);e=k[t]??e,n.method=e}!ie&&n.method===`patch`&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:`UNDICI-FETCH-patch`}),ie=!0)}t.signal!==void 0&&(d=t.signal),this.#r=n;let T=new AbortController;if(this.#e=T.signal,d!=null){if(d.aborted)T.abort(d.reason);else{this[L]=T;let e=re(new WeakRef(T));ne&&F(d)===ee&&I(1500,d);let t=m.addAbortListener(d,e);R.register(T,{signal:d,abort:e},e),this.#i=()=>{R.unregister(e),t(),this.#i=null}}}if(this.#n=new s(N),f(this.#n,n.headersList),u(this.#n,`request`),w===`no-cors`){if(!x.has(n.method))throw TypeError(`'${n.method} is unsupported in no-cors mode.`);u(this.#n,`request-no-cors`)}if(C){let e=p(this.#n),n=t.headers===void 0?new l(e):t.headers;if(e.clear(),n instanceof l){for(let{name:t,value:r}of n.rawValues())e.append(t,r,!1);e.cookies=n.cookies}else c(this.#n,n)}let E=j.is.Request(e)?e.#r.body:null;if((t.body!=null||E!=null)&&(n.method===`GET`||n.method===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body.`);let D=null;if(t.body!=null){let[e,i]=r(t.body,n.keepalive);D=e,i&&!p(this.#n).contains(`content-type`,!0)&&this.#n.append(`content-type`,i,!0)}let O=D??E;if(O!=null&&O.source==null){if(D!=null&&t.duplex==null)throw TypeError(`RequestInit: duplex option is required when sending a body.`);if(n.mode!==`same-origin`&&n.mode!==`cors`)throw TypeError(`If request is made from ReadableStream, mode should be "same-origin" or "cors"`);n.useCORSPreflightFlag=!0}let M=O;if(D==null&&E!=null){if(o(e.#r))throw TypeError(`Cannot construct a Request with a Request object that has already been used.`);let t=new TransformStream;E.stream.pipeThrough(t),M={source:E.source,length:E.length,stream:t.readable}}this.#r.body=M}get method(){return j.brandCheck(this,j.is.Request),this.#r.method}get url(){return j.brandCheck(this,j.is.Request),M(this.#r.url)}get headers(){return j.brandCheck(this,j.is.Request),this.#n}get destination(){return j.brandCheck(this,j.is.Request),this.#r.destination}get referrer(){return j.brandCheck(this,j.is.Request),this.#r.referrer===`no-referrer`?``:this.#r.referrer===`client`?`about:client`:this.#r.referrer.toString()}get referrerPolicy(){return j.brandCheck(this,j.is.Request),this.#r.referrerPolicy}get mode(){return j.brandCheck(this,j.is.Request),this.#r.mode}get credentials(){return j.brandCheck(this,j.is.Request),this.#r.credentials}get cache(){return j.brandCheck(this,j.is.Request),this.#r.cache}get redirect(){return j.brandCheck(this,j.is.Request),this.#r.redirect}get integrity(){return j.brandCheck(this,j.is.Request),this.#r.integrity}get keepalive(){return j.brandCheck(this,j.is.Request),this.#r.keepalive}get isReloadNavigation(){return j.brandCheck(this,j.is.Request),this.#r.reloadNavigation}get isHistoryNavigation(){return j.brandCheck(this,j.is.Request),this.#r.historyNavigation}get signal(){return j.brandCheck(this,j.is.Request),this.#e}get body(){return j.brandCheck(this,j.is.Request),this.#r.body?this.#r.body.stream:null}get bodyUsed(){return j.brandCheck(this,j.is.Request),!!this.#r.body&&m.isDisturbed(this.#r.body.stream)}get duplex(){return j.brandCheck(this,j.is.Request),`half`}clone(){if(j.brandCheck(this,j.is.Request),o(this.#r))throw TypeError(`unusable`);let e=pe(this.#r),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let e=te.get(this.signal);e===void 0&&(e=/* @__PURE__ */ new Set,te.set(this.signal,e));let n=new WeakRef(t);e.add(n),m.addAbortListener(t.signal,re(n))}return me(e,this.#t,t.signal,d(this.#n))}[h.inspect.custom](e,t){t.depth===null&&(t.depth=2),t.colors??=!0;let n={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${h.formatWithOptions(t,n)}`}static{z=(e,t)=>{e.#e=t},ae=e=>e.#t,oe=(e,t)=>{e.#t=t},se=(e,t)=>{e.#n=t},ce=e=>e.#r,le=(e,t)=>{e.#r=t},ue=e=>{e.#i?.()},j.is.Request=e=>typeof e==`object`&&!!e&&#r in e}};i(de,ce,j.is.Request);function fe(e){return{method:e.method??`GET`,localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??``,window:e.window??`client`,keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??`all`,initiator:e.initiator??``,destination:e.destination??``,priority:e.priority??`auto`,origin:e.origin??`client`,policyContainer:e.policyContainer??`client`,referrer:e.referrer??`client`,referrerPolicy:e.referrerPolicy??``,mode:e.mode??`no-cors`,useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??`same-origin`,useCredentials:e.useCredentials??!1,cache:e.cache??`default`,redirect:e.redirect??`follow`,integrity:e.integrity??``,cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??``,parserMetadata:e.parserMetadata??``,reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??`basic`,preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,useURLCredentials:e.useURLCredentials??void 0,traversableForUserPrompts:e.traversableForUserPrompts??`client`,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new l(e.headersList):new l}}function pe(e){let t=fe({...e,body:null});return e.body!=null&&(t.body=a(e.body)),t}function me(e,t,n,r){let i=new de(N);le(i,e),oe(i,t),z(i,n);let a=new s(N);return se(i,a),f(a,e.headersList),u(a,r),i}Object.defineProperties(de.prototype,{method:O,url:O,headers:O,redirect:O,clone:O,signal:O,duplex:O,destination:O,body:O,bodyUsed:O,isHistoryNavigation:O,isReloadNavigation:O,keepalive:O,integrity:O,cache:O,credentials:O,attribute:O,referrerPolicy:O,referrer:O,mode:O,[Symbol.toStringTag]:{value:`Request`,configurable:!0}}),j.converters.RequestInfo=function(e){return typeof e==`string`?j.converters.USVString(e):j.is.Request(e)?e:j.converters.USVString(e)},j.converters.RequestInit=j.dictionaryConverter([{key:`method`,converter:j.converters.ByteString},{key:`headers`,converter:j.converters.HeadersInit},{key:`body`,converter:j.nullableConverter(j.converters.BodyInit)},{key:`referrer`,converter:j.converters.USVString},{key:`referrerPolicy`,converter:j.converters.DOMString,allowedValues:S},{key:`mode`,converter:j.converters.DOMString,allowedValues:w},{key:`credentials`,converter:j.converters.DOMString,allowedValues:T},{key:`cache`,converter:j.converters.DOMString,allowedValues:E},{key:`redirect`,converter:j.converters.DOMString,allowedValues:C},{key:`integrity`,converter:j.converters.DOMString},{key:`keepalive`,converter:j.converters.boolean},{key:`signal`,converter:j.nullableConverter(e=>j.converters.AbortSignal(e,`RequestInit`,`signal`))},{key:`window`,converter:j.converters.any},{key:`duplex`,converter:j.converters.DOMString,allowedValues:D},{key:`dispatcher`,converter:j.converters.any},{key:`priority`,converter:j.converters.DOMString,allowedValues:[`high`,`low`,`auto`]}]),n.exports={Request:de,makeRequest:fe,fromInnerRequest:me,cloneRequest:pe,getRequestDispatcher:ae,getRequestState:ce,removeRequestAbortListener:ue}})),qa=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{runtimeFeatures:i}=zi(),a=/* @__PURE__ */ new Map([[`sha256`,0],[`sha384`,1],[`sha512`,2]]),o;if(i.has(`crypto`)){o=t(`node:crypto`);let e=o.getHashes();e.length===0&&a.clear();for(let t of a.keys())e.includes(t)===!1&&a.delete(t)}else a.clear();let s=Map.prototype.get.bind(a),c=Map.prototype.has.bind(a),l=i.has(`crypto`)===!1||a.size===0?()=>!0:(e,t)=>{let n=d(t);if(n.length===0)return!0;let r=u(n);for(let t of r){let n=t.alg,r=t.val;if(p(f(n,e),r))return!0}return!1};function u(e){let t=[],n=null;for(let i of e){if(r(c(i.alg),`Invalid SRI hash algorithm token`),t.length===0){t.push(i),n=i;continue}let e=n.alg,a=s(e),o=i.alg,l=s(o);la?(n=i,t[0]=i,t.length=1):t.push(i))}return t}function d(e){let t=[];for(let n of e.split(` `)){let e=n.split(`?`,1)[0],r=``,i=[e.slice(0,6),e.slice(7)],a=i[0];if(!c(a))continue;i[1]&&(r=i[1]);let o={alg:a,val:r};t.push(o)}return t}let f=(e,t)=>o.hash(e,t,`base64`);function p(e,t){let n=e.length;n!==0&&e[n-1]===`=`&&--n,n!==0&&e[n-1]===`=`&&--n;let r=t.length;if(r!==0&&t[r-1]===`=`&&--r,r!==0&&t[r-1]===`=`&&--r,n!==r)return!1;for(let r=0;r{let{makeNetworkError:r,makeAppropriateNetworkError:i,filterResponse:a,makeResponse:o,fromInnerResponse:s,getResponseState:c}=Ga(),{HeadersList:l}=Wa(),{Request:u,cloneRequest:d,getRequestDispatcher:f,getRequestState:p,removeRequestAbortListener:m}=Ka(),h=t(`node:zlib`),{makePolicyContainer:g,clonePolicyContainer:v,requestBadPort:y,TAOCheck:b,appendRequestOriginHeader:x,responseLocationURL:S,requestCurrentURL:C,setRequestReferrerPolicyOnRedirect:w,tryUpgradeRequestToAPotentiallyTrustworthyURL:T,createOpaqueTimingInfo:E,appendFetchMetadata:D,corsCheck:O,crossOriginResourcePolicyCheck:k,determineRequestsReferrer:A,coarsenedSharedCurrentTime:j,sameOrigin:M,isCancelled:N,isAborted:P,isErrorLike:F,fullyReadBody:I,readableStreamClose:ee,urlIsLocal:L,urlIsHttpHttpsScheme:R,urlHasHttpsScheme:te,clampAndCoarsenConnectionTimingInfo:ne,simpleRangeHeaderValue:re,buildContentRange:ie,createInflate:z,extractMimeType:ae,hasAuthenticationEntry:oe,includesCredentials:se,isTraversableNavigable:ce}=Ri(),le=t(`node:assert`),{safelyExtractBody:ue,extractBody:de}=Hi(),{redirectStatusSet:fe,nullBodyStatus:pe,safeMethodsSet:me,requestBodyHeader:he,subresourceSet:ge}=Mi(),_e=t(`node:events`),{Readable:ve,pipeline:ye,finished:be,isErrored:xe,isReadable:Se}=t(`node:stream`),{addAbortListener:Ce,bufferToLowerCasedHeaderName:we}=xi(),{SocketError:Te}=vi(),{dataURLProcessor:Ee,serializeAMimeType:De,minimizeSupportedMimeType:Oe}=Ii(),{getGlobalDispatcher:ke}=U(),{webidl:Ae}=Li(),{STATUS_CODES:je}=t(`node:http`),{bytesMatch:Me}=qa(),{isomorphicEncode:Ne}=Fi(),Pe=[`GET`,`HEAD`],Fe=typeof __UNDICI_IS_NODE__<`u`||typeof esbuildDetection<`u`?`node`:`undici`,Ie;function Le(e,t,n){if(Array.isArray(n))for(let t=0;t{o=!0,le(c!=null),c.abort(r.signal.reason);let e=a?.deref();Ue(n,i,e,r.signal.reason,c.controller)}),d=()=>{l(),m(r)};return c=We({request:i,processResponseEndOfBody:e=>{ze(e),d()},processResponse:e=>{o||(e.aborted?(Ue(n,i,a,c.serializedAbortReason,c.controller),d()):e.type===`error`?(n.reject(TypeError(`fetch failed`,{cause:e.error})),d()):(a=new WeakRef(s(e,`immutable`)),n.resolve(a.deref()),n=null))},dispatcher:f(r),requestObject:r}),n.promise}function Ve(e,t=`other`){if(e.type===`error`&&e.aborted||!e.urlList?.length)return;let n=e.urlList[0],r=e.timingInfo,i=e.cacheState;R(n)&&r!==null&&(e.timingAllowPassed||(r=E({startTime:r.startTime}),i=``),r.endTime=j(),e.timingInfo=r,He(r,n.href,t,globalThis,i,``,e.status))}let He=performance.markResourceTiming;function Ue(e,t,n,r,i){if(e&&e.reject(r),t.body?.stream!=null&&Se(t.body.stream)&&t.body.stream.cancel(r).catch(e=>{if(e.code!==`ERR_INVALID_STATE`)throw e}),n==null)return;let a=c(n);a.body?.stream!=null&&Se(a.body.stream)&&i.error(r)}function We({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseEndOfBody:i,processResponseConsumeBody:a,useParallelQueue:o=!1,dispatcher:s=ke(),requestObject:c=null}){le(s);let l=null,u=!1;e.client!=null&&(l=e.client.globalObject,u=e.client.crossOriginIsolatedCapability);let d=j(u),f=E({startTime:d}),p={controller:new Re(s),request:e,timingInfo:f,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseConsumeBody:a,processResponseEndOfBody:i,taskDestination:l,crossOriginIsolatedCapability:u,requestObject:c};return le(!e.body||e.body.stream),e.window===`client`&&(e.window=e.client?.globalObject?.constructor?.name===`Window`?e.client:`no-window`),e.origin===`client`&&(e.origin=e.client.origin),e.policyContainer===`client`&&(e.policyContainer=e.client==null?g():v(e.client.policyContainer)),e.headersList.contains(`accept`,!0)||e.headersList.append(`accept`,`*/*`,!0),e.headersList.contains(`accept-language`,!0)||e.headersList.append(`accept-language`,`*`,!0),e.priority,ge.has(e.destination),Ge(p,!1),p.controller}async function Ge(e,t){try{let n=e.request,i=null;if(n.localURLsOnly&&!L(C(n))&&(i=r(`local URLs only`)),T(n),y(n)===`blocked`&&(i=r(`bad port`)),n.referrerPolicy===``&&(n.referrerPolicy=n.policyContainer.referrerPolicy),n.referrer!==`no-referrer`&&(n.referrer=A(n)),i===null){let t=C(n);M(t,n.url)&&n.responseTainting===`basic`||t.protocol===`data:`||n.mode===`navigate`||n.mode===`websocket`?(n.responseTainting=`basic`,i=await Ke(e)):n.mode===`same-origin`?i=r(`request mode cannot be "same-origin"`):n.mode===`no-cors`?n.redirect===`follow`?(n.responseTainting=`opaque`,i=await Ke(e)):i=r(`redirect mode cannot be "follow" for "no-cors" request`):R(C(n))?(n.responseTainting=`cors`,i=await Ye(e)):i=r(`URL scheme must be a HTTP(S) scheme`)}if(t)return i;i.status!==0&&!i.internalResponse&&(n.responseTainting,n.responseTainting===`basic`?i=a(i,`basic`):n.responseTainting===`cors`?i=a(i,`cors`):n.responseTainting===`opaque`?i=a(i,`opaque`):le(!1));let o=i.status===0?i:i.internalResponse;if(o.urlList.length===0&&o.urlList.push(...n.urlList),n.timingAllowFailed||(i.timingAllowPassed=!0),i.type===`opaque`&&o.status===206&&o.rangeRequested&&!n.headers.contains(`range`,!0)&&(i=o=r()),i.status!==0&&(n.method===`HEAD`||n.method===`CONNECT`||pe.includes(o.status))&&(o.body=null,e.controller.dump=!0),n.integrity){let t=t=>Je(e,r(t));if(n.responseTainting===`opaque`||i.body==null){t(i.error);return}I(i.body,r=>{Me(r,n.integrity)?(i.body=ue(r)[0],Je(e,i)):t(`integrity mismatch`)},t)}else Je(e,i)}catch(t){e.controller.terminate(t)}}function Ke(e){if(N(e))return Promise.resolve(i(e));let{request:n}=e,{protocol:a}=C(n);switch(a){case`about:`:return Promise.resolve(r(`about scheme is not supported`));case`blob:`:{Ie||=t(`node:buffer`).resolveObjectURL;let e=C(n);if(e.search.length!==0)return Promise.resolve(r(`NetworkError when attempting to fetch resource.`));let i=Ie(e.toString());if(n.method!==`GET`||!Ae.is.Blob(i))return Promise.resolve(r(`invalid method`));let a=o(),s=i.size,c=Ne(`${s}`),l=i.type;if(n.headersList.contains(`range`,!0)){a.rangeRequested=!0;let e=n.headersList.get(`range`,!0),t=re(e,!0);if(t===`failure`)return Promise.resolve(r(`failed to fetch the data URL`));let{rangeStartValue:o,rangeEndValue:c}=t;if(o===null)o=s-c,c=o+c-1;else{if(o>=s)return Promise.resolve(r(`Range start is greater than the blob's size.`));(c===null||c>=s)&&(c=s-1)}let u=i.slice(o,c+1,l);a.body=de(u)[0];let d=Ne(`${u.size}`),f=ie(o,c,s);a.status=206,a.statusText=`Partial Content`,a.headersList.set(`content-length`,d,!0),a.headersList.set(`content-type`,l,!0),a.headersList.set(`content-range`,f,!0)}else{let e=de(i);a.statusText=`OK`,a.body=e[0],a.headersList.set(`content-length`,c,!0),a.headersList.set(`content-type`,l,!0)}return Promise.resolve(a)}case`data:`:{let e=C(n),t=Ee(e);if(t===`failure`)return Promise.resolve(r(`failed to fetch the data URL`));let i=De(t.mimeType);return Promise.resolve(o({statusText:`OK`,headersList:[[`content-type`,{name:`Content-Type`,value:i}]],body:ue(t.body)[0]}))}case`file:`:return Promise.resolve(r(`not implemented... yet...`));case`http:`:case`https:`:return Ye(e).catch(e=>r(e));default:return Promise.resolve(r(`unknown scheme`))}}function qe(e,t){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(t))}function Je(e,t){let n=e.timingInfo;e.request.destination===`document`&&(e.controller.fullTimingInfo=n);let r=()=>{let r=Date.now();e.controller.reportTimingSteps=()=>{if(!R(e.request.url))return;n.endTime=r;let i=t.cacheState,a=t.bodyInfo;t.timingAllowPassed||(n=E(n),i=``);let o=0;if(e.request.mode!==`navigate`||!t.hasCrossOriginRedirects){o=t.status;let e=ae(t.headersList);e!==`failure`&&(a.contentType=Oe(e))}e.request.initiatorType!=null&&He(n,e.request.url.href,e.request.initiatorType,globalThis,i,a,o)};let i=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(t)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>i())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(t),e.processResponse=null});let i=t.type===`error`?t:t.internalResponse??t;if(i.body==null?r():be(i.body.stream,()=>{r()}),e.processResponseConsumeBody!=null){let n=n=>e.processResponseConsumeBody(t,n);i.body==null?queueMicrotask(()=>n(null)):I(i.body,n,()=>e.processResponseConsumeBody(t,`failure`))}}async function Ye(e){let t=e.request,n=null,i=null,a=e.timingInfo;if(t.serviceWorkers,n===null){if(t.redirect===`follow`&&(t.serviceWorkers=`none`),i=n=await Ze(e),t.responseTainting===`cors`&&O(t,n)===`failure`)return r(`cors failure`);b(t,n)===`failure`&&(t.timingAllowFailed=!0)}return(t.responseTainting===`opaque`||n.type===`opaque`)&&k(t.origin,t.client,t.destination,i)===`blocked`?r(`blocked`):(fe.has(i.status)&&(t.redirect!==`manual`&&e.controller.connection.destroy(),t.redirect===`error`?n=r(`unexpected redirect`):t.redirect===`manual`?n=i:t.redirect===`follow`?n=await Xe(e,n):le(!1)),n.timingInfo=a,n)}function Xe(e,t){let n=e.request,i=t.internalResponse?t.internalResponse:t,a;try{if(a=S(i,C(n).hash),a==null)return t}catch(e){return Promise.resolve(r(e))}if(!R(a))return Promise.resolve(r(`URL scheme must be a HTTP(S) scheme`));if(n.redirectCount===20)return Promise.resolve(r(`redirect count exceeded`));if(n.redirectCount+=1,n.mode===`cors`&&(a.username||a.password)&&!M(n,a))return Promise.resolve(r(`cross origin not allowed for request mode "cors"`));if(n.responseTainting===`cors`&&(a.username||a.password))return Promise.resolve(r(`URL cannot contain credentials for request mode "cors"`));if(i.status!==303&&n.body!=null&&n.body.source==null)return Promise.resolve(r());if([301,302].includes(i.status)&&n.method===`POST`||i.status===303&&!Pe.includes(n.method)){n.method=`GET`,n.body=null;for(let e of he)n.headersList.delete(e)}M(C(n),a)||(n.headersList.delete(`authorization`,!0),n.headersList.delete(`proxy-authorization`,!0),n.headersList.delete(`cookie`,!0),n.headersList.delete(`host`,!0)),n.body!=null&&(le(n.body.source!=null),n.body=ue(n.body.source)[0]);let o=e.timingInfo;return o.redirectEndTime=o.postRedirectStartTime=j(e.crossOriginIsolatedCapability),o.redirectStartTime===0&&(o.redirectStartTime=o.startTime),n.urlList.push(a),w(n,i),Ge(e,!0)}async function Ze(e,t=!1,n=!1){let a=e.request,o=null,s=null,c=null;a.window===`no-window`&&a.redirect===`error`?(o=e,s=a):(a.body?.source==null?(s=d({...a,body:null}),s.body=a.body):s=d(a),o={...e},o.request=s);let l=a.credentials===`include`||a.credentials===`same-origin`&&a.responseTainting===`basic`,u=s.body?s.body.length:null,f=null;if(s.body==null&&[`POST`,`PUT`].includes(s.method)&&(f=`0`),u!=null&&(f=Ne(`${u}`)),f!=null&&!s.headersList.contains(`content-length`,!0)&&s.headersList.append(`content-length`,f,!0),u!=null&&s.keepalive,Ae.is.URL(s.referrer)&&s.headersList.append(`referer`,Ne(s.referrer.href),!0),x(s),D(s),s.headersList.contains(`user-agent`,!0)||s.headersList.append(`user-agent`,Fe,!0),s.cache==="default"&&(s.headersList.contains(`if-modified-since`,!0)||s.headersList.contains(`if-none-match`,!0)||s.headersList.contains(`if-unmodified-since`,!0)||s.headersList.contains(`if-match`,!0)||s.headersList.contains(`if-range`,!0))&&(s.cache=`no-store`),s.cache===`no-cache`&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains(`cache-control`,!0)&&s.headersList.append(`cache-control`,`max-age=0`,!0),(s.cache===`no-store`||s.cache===`reload`)&&(s.headersList.contains(`pragma`,!0)||s.headersList.append(`pragma`,`no-cache`,!0),s.headersList.contains(`cache-control`,!0)||s.headersList.append(`cache-control`,`no-cache`,!0)),s.headersList.contains(`range`,!0)&&s.headersList.append(`accept-encoding`,`identity`,!0),s.headersList.contains(`accept-encoding`,!0)||(te(C(s))?s.headersList.append(`accept-encoding`,`br, gzip, deflate, zstd`,!0):s.headersList.append(`accept-encoding`,`gzip, deflate`,!0)),s.headersList.delete(`host`,!0),l&&!s.headersList.contains(`authorization`,!0)){let e=null;if((!oe(s)||s.useURLCredentials!==void 0&&se(C(s)))&&se(C(s))&&t){let{username:t,password:n}=C(s);e=`Basic ${Buffer.from(`${t}:${n}`).toString(`base64`)}`}e!==null&&s.headersList.append(`Authorization`,e,!1)}if(s.cache=`no-store`,s.cache!==`no-store`&&s.cache,c==null){if(s.cache===`only-if-cached`)return r(`only if cached`);let e=await Qe(o,l,n);!me.has(s.method)&&e.status>=200&&e.status,c??=e}if(c.urlList=[...s.urlList],s.headersList.contains(`range`,!0)&&(c.rangeRequested=!0),c.requestIncludesCredentials=l,c.status===401&&s.responseTainting!==`cors`&&l&&(a.useURLCredentials!==void 0||ce(a.traversableForUserPrompts))){if(a.body!=null){if(a.body.source==null)return c;a.body=ue(a.body.source)[0]}if(a.useURLCredentials===void 0||t)return N(e)?i(e):c;e.controller.connection.destroy(),c=await Ze(e,!0)}if(c.status===407)return a.window===`no-window`?r():N(e)?i(e):r(`proxy authentication required`);if(c.status===421&&!n&&(a.body==null||a.body.source!=null)){if(N(e))return i(e);e.controller.connection.destroy(),c=await Ze(e,t,!0)}return c}async function Qe(e,t=!1,n=!1){le(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(e){this.destroyed||(this.destroyed=!0,this.abort?.(e??new DOMException(`The operation was aborted.`,`AbortError`)))}};let a=e.request,s=null,c=e.timingInfo;a.cache=`no-store`,a.mode;let u=null;if(a.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(a.body!=null){let t=async function*(t){N(e)||(yield t,e.processRequestBodyChunkLength?.(t.byteLength))},n=()=>{N(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},r=t=>{N(e)||(t.name===`AbortError`?e.controller.abort():e.controller.terminate(t))};u=(async function*(){try{for await(let e of a.body.stream)yield*t(e);n()}catch(e){r(e)}})()}try{let{body:t,status:n,statusText:r,headersList:i,socket:a}=await p({body:u});if(a)s=o({status:n,statusText:r,headersList:i,socket:a});else{let a=t[Symbol.asyncIterator]();e.controller.next=()=>a.next(),s=o({status:n,statusText:r,headersList:i})}}catch(t){return t.name===`AbortError`?(e.controller.connection.destroy(),i(e,t)):r(t)}let d=new ReadableStream({start(t){e.controller.controller=t},pull:()=>e.controller.resume(),cancel:t=>{N(e)||e.controller.abort(t)},type:`bytes`});s.body={stream:d,source:null,length:null},e.controller.resume||e.controller.on(`terminated`,f),e.controller.resume=async()=>{for(;;){let t,n;try{let{done:n,value:r}=await e.controller.next();if(P(e))break;t=n?void 0:r}catch(r){e.controller.ended&&!c.encodedBodySize?t=void 0:(t=r,n=!0)}if(t===void 0){ee(e.controller.controller),qe(e,s);return}if(c.decodedBodySize+=t?.byteLength??0,n){e.controller.terminate(t);return}let r=new Uint8Array(t);if(r.byteLength&&e.controller.controller.enqueue(r),xe(d)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function f(t){P(e)?(s.aborted=!0,Se(d)&&e.controller.controller.error(e.controller.serializedAbortReason)):Se(d)&&e.controller.controller.error(TypeError(`terminated`,{cause:F(t)?t:void 0})),e.controller.connection.destroy()}return s;function p({body:t}){let n=C(a),r=e.controller.dispatcher,i=n.pathname+n.search,o=n.search.length===0&&n.href[n.href.length-n.hash.length-1]===`?`;return s(t);function s(t,u){return new Promise((d,f)=>r.dispatch({path:o?`${i}?`:i,origin:n.origin,method:a.method,body:r.isMockActive?a.body&&(a.body.source||a.body.stream):t,__mockAgentBodyForDispatch:t,headers:a.headersList.entries,maxRedirections:0,upgrade:a.mode===`websocket`?`websocket`:void 0,...u===!1?{allowH2:u}:null},{body:null,abort:null,onRequestStart(t){let{connection:n}=e.controller;c.finalConnectionTimingInfo=ne(void 0,c.postRedirectStartTime,e.crossOriginIsolatedCapability);let r=e=>t.abort(e);n.destroyed?r(new DOMException(`The operation was aborted.`,`AbortError`)):(e.controller.on(`terminated`,r),this.abort=n.abort=r),c.finalNetworkRequestStartTime=j(e.crossOriginIsolatedCapability)},onResponseStarted(){c.finalNetworkResponseStartTime=j(e.crossOriginIsolatedCapability)},onResponseStart(e,t,n,r){if(t<200)return;let i=e?.rawHeaders??[],o=new l;Le(o,n,i);let s=o.get(`location`,!0);this.body=new ve({read:()=>e.resume()});let c=s&&a.redirect===`follow`&&fe.has(t),u=[];if(a.method!==`HEAD`&&a.method!==`CONNECT`&&!pe.includes(t)&&!c){let e=o.get(`content-encoding`,!0),t=e?e.toLowerCase().split(`,`):[];if(t.length>5){f(/* @__PURE__ */ Error(`too many content-encodings in response: ${t.length}, maximum allowed is 5`));return}for(let e=t.length-1;e>=0;--e){let n=t[e].trim();if(n===`x-gzip`||n===`gzip`)u.push(h.createGunzip({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}));else if(n===`deflate`)u.push(z({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}));else if(n===`br`)u.push(h.createBrotliDecompress({flush:h.constants.BROTLI_OPERATION_FLUSH,finishFlush:h.constants.BROTLI_OPERATION_FLUSH}));else if(n===`zstd`)u.push(h.createZstdDecompress({flush:h.constants.ZSTD_e_continue,finishFlush:h.constants.ZSTD_e_end}));else{u.length=0;break}}}let p=t=>this.onResponseError(e,t);d({status:t,statusText:r,headersList:o,body:u.length?ye(this.body,...u,t=>{t&&this.onResponseError(e,t)}).on(`error`,p):this.body.on(`error`,p)})},onResponseData(t,n){if(e.controller.dump)return;let r=n;c.encodedBodySize+=r.byteLength,this.body.push(r)===!1&&t.pause()},onResponseEnd(){this.abort&&e.controller.off(`terminated`,this.abort),e.controller.ended=!0,this.body?.push(null)},onResponseError(n,r){this.abort&&e.controller.off(`terminated`,this.abort),a.mode===`websocket`&&u!==!1&&r?.code===`UND_ERR_INFO`&&r?.message===`HTTP/2: Extended CONNECT protocol not supported by server`?d(s(t,!1)):(this.body?.destroy(r),n?.aborted||e.controller.terminate(r),f(r))},onRequestUpgrade(e,t,n,r){if(r.session!=null&&t!==200||r.session==null&&t!==101)return r.session!=null&&e.abort(new Te(`bad upgrade`,null)),!1;let i=e?.rawHeaders??[],a=new l;return Le(a,n,i),d({status:t,statusText:je[t],headersList:a,socket:r}),!0}}))}}}n.exports={fetch:Be,Fetch:Re,fetching:We,finalizeAndReportTiming:Ve}})),Ya=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{URLSerializer:i}=Ii(),{isValidHeaderName:a}=Ri();function o(e,t,n=!1){return i(e,n)===i(t,n)}function s(e){r(e!==null);let t=[];for(let n of e.split(`,`))n=n.trim(),a(n)&&t.push(n);return t}n.exports={urlEquals:o,getFieldValues:s}})),Xa=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{kConstruct:i}=gi(),{urlEquals:a,getFieldValues:o}=Ya(),{kEnumerableProperty:s,isDisturbed:c}=xi(),{webidl:l}=Li(),{cloneResponse:u,fromInnerResponse:d,getResponseState:f}=Ga(),{Request:p,fromInnerRequest:m,getRequestState:h}=Ka(),{fetching:g}=Ja(),{urlIsHttpHttpsScheme:v,readAllBytes:y}=Ri();var b=class{#e;constructor(){arguments[0]!==i&&l.illegalConstructor(),l.util.markAsUncloneable(this),this.#e=arguments[1]}async match(e,t={}){l.brandCheck(this,l.is.Cache);let n=`Cache.match`;l.argumentLengthCheck(arguments,1,n),e=l.converters.RequestInfo(e),t=l.converters.CacheQueryOptions(t,n,`options`);let r=this.#i(e,t,1);if(r.length!==0)return r[0]}async matchAll(e=void 0,t={}){return l.brandCheck(this,l.is.Cache),e!==void 0&&(e=l.converters.RequestInfo(e)),t=l.converters.CacheQueryOptions(t,`Cache.matchAll`,`options`),this.#i(e,t)}async add(e){l.brandCheck(this,l.is.Cache),l.argumentLengthCheck(arguments,1,`Cache.add`),e=l.converters.RequestInfo(e);let t=[e];return await this.addAll(t)}async addAll(e){l.brandCheck(this,l.is.Cache);let t=`Cache.addAll`;l.argumentLengthCheck(arguments,1,t);let n=[],r=[];for(let n of e){if(n===void 0)throw l.errors.conversionFailed({prefix:t,argument:`Argument 1`,types:[`undefined is not allowed`]});if(n=l.converters.RequestInfo(n),typeof n==`string`)continue;let e=h(n);if(!v(e.url)||e.method!==`GET`)throw l.errors.exception({header:t,message:`Expected http/s scheme when method is not GET.`})}let i=[];for(let a of e){let e=h(new p(a));if(!v(e.url))throw l.errors.exception({header:t,message:`Expected http/s scheme.`});e.initiator=`fetch`,e.destination=`subresource`,r.push(e);let s=Promise.withResolvers();i.push(g({request:e,processResponse(e){if(e.type===`error`||e.status===206||e.status<200||e.status>299)s.reject(l.errors.exception({header:`Cache.addAll`,message:`Received an invalid status code or the request failed.`}));else if(e.headersList.contains(`vary`)){let t=o(e.headersList.get(`vary`));for(let e of t)if(e===`*`){s.reject(l.errors.exception({header:`Cache.addAll`,message:`invalid vary field value`}));for(let e of i)e.abort();return}}},processResponseConsumeBody(e){e.aborted?s.reject(new DOMException(`aborted`,`AbortError`)):s.resolve(e)}})),n.push(s.promise)}let a=await Promise.all(n),s=[],c=0;for(let e of a){let t={type:`put`,request:r[c],response:e};s.push(t),c++}let u=Promise.withResolvers(),d=null;try{this.#t(s)}catch(e){d=e}return queueMicrotask(()=>{d===null?u.resolve(void 0):u.reject(d)}),u.promise}async put(e,t){l.brandCheck(this,l.is.Cache);let n=`Cache.put`;l.argumentLengthCheck(arguments,2,n),e=l.converters.RequestInfo(e),t=l.converters.Response(t,n,`response`);let r=null;if(r=l.is.Request(e)?h(e):h(new p(e)),!v(r.url)||r.method!==`GET`)throw l.errors.exception({header:n,message:`Expected an http/s scheme when method is not GET`});let i=f(t);if(i.status===206)throw l.errors.exception({header:n,message:`Got 206 status`});if(i.headersList.contains(`vary`)){let e=o(i.headersList.get(`vary`));for(let t of e)if(t===`*`)throw l.errors.exception({header:n,message:`Got * vary field value`})}if(i.body&&(c(i.body.stream)||i.body.stream.locked))throw l.errors.exception({header:n,message:`Response body is locked or disturbed`});let a=u(i),s=Promise.withResolvers();if(i.body!=null){let e=i.body.stream.getReader();y(e,s.resolve,s.reject)}else s.resolve(void 0);let d=[],m={type:`put`,request:r,response:a};d.push(m);let g=await s.promise;a.body!=null&&(a.body.source=g);let b=Promise.withResolvers(),x=null;try{this.#t(d)}catch(e){x=e}return queueMicrotask(()=>{x===null?b.resolve():b.reject(x)}),b.promise}async delete(e,t={}){l.brandCheck(this,l.is.Cache);let n=`Cache.delete`;l.argumentLengthCheck(arguments,1,n),e=l.converters.RequestInfo(e),t=l.converters.CacheQueryOptions(t,n,`options`);let i=null;if(l.is.Request(e)){if(i=h(e),i.method!==`GET`&&!t.ignoreMethod)return!1}else r(typeof e==`string`),i=h(new p(e));let a=[],o={type:`delete`,request:i,options:t};a.push(o);let s=Promise.withResolvers(),c=null,u;try{u=this.#t(a)}catch(e){c=e}return queueMicrotask(()=>{c===null?s.resolve(!!u?.length):s.reject(c)}),s.promise}async keys(e=void 0,t={}){l.brandCheck(this,l.is.Cache),e!==void 0&&(e=l.converters.RequestInfo(e)),t=l.converters.CacheQueryOptions(t,`Cache.keys`,`options`);let n=null;if(e!==void 0){if(l.is.Request(e)){if(n=h(e),n.method!==`GET`&&!t.ignoreMethod)return[]}else typeof e==`string`&&(n=h(new p(e)))}let r=Promise.withResolvers(),i=[];if(e===void 0)for(let e of this.#e)i.push(e[0]);else{let e=this.#n(n,t);for(let t of e)i.push(t[0])}return queueMicrotask(()=>{let e=[];for(let t of i){let n=m(t,void 0,new AbortController().signal,`immutable`);e.push(n)}r.resolve(Object.freeze(e))}),r.promise}#t(e){let t=this.#e,n=[...t],i=[],a=[];try{for(let n of e){if(n.type!==`delete`&&n.type!==`put`)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`operation type does not match "delete" or "put"`});if(n.type===`delete`&&n.response!=null)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`delete operation should not have an associated response`});if(this.#n(n.request,n.options,i).length)throw new DOMException(`???`,`InvalidStateError`);let e;if(n.type===`delete`){if(e=this.#n(n.request,n.options),e.length===0)return[];for(let n of e){let e=t.indexOf(n);r(e!==-1),t.splice(e,1)}}else if(n.type===`put`){if(n.response==null)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`put operation should have an associated response`});let a=n.request;if(!v(a.url))throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`expected http or https scheme`});if(a.method!==`GET`)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`not get method`});if(n.options!=null)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`options must not be defined`});e=this.#n(n.request);for(let n of e){let e=t.indexOf(n);r(e!==-1),t.splice(e,1)}t.push([n.request,n.response]),i.push([n.request,n.response])}a.push([n.request,n.response])}return a}catch(e){throw this.#e.length=0,this.#e=n,e}}#n(e,t,n){let r=[],i=n??this.#e;for(let n of i){let[i,a]=n;this.#r(e,i,a,t)&&r.push(n)}return r}#r(e,t,n=null,r){let i=new URL(e.url),s=new URL(t.url);if(r?.ignoreSearch&&(s.search=``,i.search=``),!a(i,s,!0))return!1;if(n==null||r?.ignoreVary||!n.headersList.contains(`vary`))return!0;let c=o(n.headersList.get(`vary`));for(let n of c)if(n===`*`||t.headersList.get(n)!==e.headersList.get(n))return!1;return!0}#i(e,t,n=1/0){let r=null;if(e!==void 0){if(l.is.Request(e)){if(r=h(e),r.method!==`GET`&&!t.ignoreMethod)return[]}else typeof e==`string`&&(r=h(new p(e)))}let i=[];if(e===void 0)for(let e of this.#e)i.push(e[1]);else{let e=this.#n(r,t);for(let t of e)i.push(t[1])}let a=[];for(let e of i){let t=d(u(e),`immutable`);if(a.push(t),a.length>=n)break}return Object.freeze(a)}static{l.is.Cache=e=>typeof e==`object`&&!!e&&#e in e}};Object.defineProperties(b.prototype,{[Symbol.toStringTag]:{value:`Cache`,configurable:!0},match:s,matchAll:s,add:s,addAll:s,put:s,delete:s,keys:s});let x=[{key:`ignoreSearch`,converter:l.converters.boolean,defaultValue:()=>!1},{key:`ignoreMethod`,converter:l.converters.boolean,defaultValue:()=>!1},{key:`ignoreVary`,converter:l.converters.boolean,defaultValue:()=>!1}];l.converters.CacheQueryOptions=l.dictionaryConverter(x),l.converters.MultiCacheQueryOptions=l.dictionaryConverter([...x,{key:`cacheName`,converter:l.converters.DOMString}]),l.converters.Response=l.interfaceConverter(l.is.Response,`Response`),l.converters[`sequence`]=l.sequenceConverter(l.converters.RequestInfo),n.exports={Cache:b}})),Za=/* @__PURE__ */ a(((e,t)=>{let{Cache:n}=Xa(),{webidl:r}=Li(),{kEnumerableProperty:i}=xi(),{kConstruct:a}=gi();var o=class{#e=/* @__PURE__ */ new Map;constructor(){arguments[0]!==a&&r.illegalConstructor(),r.util.markAsUncloneable(this)}async match(e,t={}){if(r.brandCheck(this,r.is.CacheStorage),r.argumentLengthCheck(arguments,1,`CacheStorage.match`),e=r.converters.RequestInfo(e),t=r.converters.MultiCacheQueryOptions(t),t.cacheName!=null){if(this.#e.has(t.cacheName)){let r=this.#e.get(t.cacheName);return await new n(a,r).match(e,t)}}else for(let r of this.#e.values()){let i=await new n(a,r).match(e,t);if(i!==void 0)return i}}async has(e){r.brandCheck(this,r.is.CacheStorage);let t=`CacheStorage.has`;return r.argumentLengthCheck(arguments,1,t),e=r.converters.DOMString(e,t,`cacheName`),this.#e.has(e)}async open(e){r.brandCheck(this,r.is.CacheStorage);let t=`CacheStorage.open`;if(r.argumentLengthCheck(arguments,1,t),e=r.converters.DOMString(e,t,`cacheName`),this.#e.has(e)){let t=this.#e.get(e);return new n(a,t)}let i=[];return this.#e.set(e,i),new n(a,i)}async delete(e){r.brandCheck(this,r.is.CacheStorage);let t=`CacheStorage.delete`;return r.argumentLengthCheck(arguments,1,t),e=r.converters.DOMString(e,t,`cacheName`),this.#e.delete(e)}async keys(){return r.brandCheck(this,r.is.CacheStorage),[...this.#e.keys()]}static{r.is.CacheStorage=e=>typeof e==`object`&&!!e&&#e in e}};Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:`CacheStorage`,configurable:!0},match:i,has:i,open:i,delete:i,keys:i}),t.exports={CacheStorage:o}})),Qa=/* @__PURE__ */ a(((e,t)=>{t.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}})),$a=/* @__PURE__ */ a(((e,t)=>{function n(e){for(let t=0;t=0&&n<=8||n>=10&&n<=31||n===127)return!0}return!1}function r(e){for(let t=0;t126||n===34||n===40||n===41||n===60||n===62||n===64||n===44||n===59||n===58||n===92||n===47||n===91||n===93||n===63||n===61||n===123||n===125)throw Error(`Invalid cookie name`)}}function i(e){let t=e.length,n=0;if(e[0]===`"`){if(t===1||e[t-1]!==`"`)throw Error(`Invalid cookie value`);--t,++n}for(;n126||t===34||t===44||t===59||t===92)throw Error(`Invalid cookie value`)}}function a(e){for(let t=0;t126||n===59)throw Error(`Invalid cookie path`)}}function o(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function s(e){if(e===` `)return;if(e.length>255)throw Error(`Invalid cookie domain`);let t=0;for(let n=0;n63)throw Error(`Invalid cookie domain`)}if(t===0||e.charCodeAt(e.length-1)===45)throw Error(`Invalid cookie domain`)}let c=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],l=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],u=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,`0`));function d(e){return typeof e==`number`&&(e=new Date(e)),`${c[e.getUTCDay()]}, ${u[e.getUTCDate()]} ${l[e.getUTCMonth()]} ${e.getUTCFullYear()} ${u[e.getUTCHours()]}:${u[e.getUTCMinutes()]}:${u[e.getUTCSeconds()]} GMT`}function f(e){if(e<0)throw Error(`Invalid cookie max-age`)}function p(e){if(e.name.length===0)return null;r(e.name),i(e.value);let t=[`${e.name}=${e.value}`];e.name.startsWith(`__Secure-`)&&(e.secure=!0),e.name.startsWith(`__Host-`)&&(e.secure=!0,e.domain=null,e.path=`/`),e.secure&&t.push(`Secure`),e.httpOnly&&t.push(`HttpOnly`),typeof e.maxAge==`number`&&(f(e.maxAge),t.push(`Max-Age=${e.maxAge}`)),e.domain&&(s(e.domain),t.push(`Domain=${e.domain}`)),e.path&&(a(e.path),t.push(`Path=${e.path}`)),e.expires!=null&&e.expires.toString()!==`Invalid Date`&&t.push(`Expires=${d(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`);for(let n of e.unparsed){if(!n.includes(`=`))throw Error(`Invalid unparsed`);let[e,...a]=n.split(`=`),o=e.trim(),s=a.join(`=`);r(o),i(s),t.push(`${o}=${s}`)}return t.join(`; `)}t.exports={isCTLExcludingHtab:n,validateCookieName:r,validateCookiePath:a,validateCookieValue:i,toIMFDate:d,stringify:p}})),eo=/* @__PURE__ */ a(((e,n)=>{let{collectASequenceOfCodePointsFast:r}=Fi(),{maxNameValuePairSize:i,maxAttributeValueSize:a}=Qa(),{isCTLExcludingHtab:o}=$a(),s=t(`node:assert`);function c(e){if(o(e))return null;let t=``,n=``,a=``,s=``;if(e.includes(`;`)){let i={position:0};t=r(`;`,e,i),n=e.slice(i.position)}else t=e;if(!t.includes(`=`))s=t;else{let e={position:0};a=r(`=`,t,e),s=t.slice(e.position+1)}return a=a.trim(),s=s.trim(),a.length+s.length>i?null:{name:a,value:s,...l(n)}}function l(e,t={}){for(;;){if(e.length===0)return t;s(e[0]===`;`),e=e.slice(1);let n=``;e.includes(`;`)?(n=r(`;`,e,{position:0}),e=e.slice(n.length)):(n=e,e=``);let i=``,o=``;if(n.includes(`=`)){let e={position:0};i=r(`=`,n,e),o=n.slice(e.position+1)}else i=n;if(i=i.trim(),o=o.trim(),o.length>a)continue;let c=i.toLowerCase();if(c===`expires`){let e=new Date(o);Number.isNaN(e.getTime())||(t.expires=e)}else if(c===`max-age`){let e=o.charCodeAt(0),n=e>=48&&e<=57,r=o[0]===`-`&&o.length>1;if(!n&&!r||/[^\d]/.test(o.slice(1)))continue;t.maxAge=Number(o)}else if(c===`domain`){let e=o;e[0]===`.`&&(e=e.slice(1)),e=e.toLowerCase(),t.domain=e}else if(c===`path`){let e=``;e=o.length===0||o[0]!==`/`?`/`:o,t.path=e}else if(c===`secure`)t.secure=!0;else if(c===`httponly`)t.httpOnly=!0;else if(c===`samesite`){let e=o.toLowerCase();e===`none`?t.sameSite=`None`:e===`strict`?t.sameSite=`Strict`:e===`lax`&&(t.sameSite=`Lax`)}else t.unparsed??=[],t.unparsed.push(`${i}=${o}`)}}n.exports={parseSetCookie:c,parseUnparsedAttributes:l}})),to=/* @__PURE__ */ a(((e,t)=>{let{parseSetCookie:n}=eo(),{stringify:r}=$a(),{webidl:i}=Li(),a=e=>i.brandCheck(e,i.util.MakeTypeAssertion(globalThis.Headers)),o=e=>i.brandCheck(e,i.is.Headers);function s(e){try{o(e);return}catch{}a(e)}function c(e){i.argumentLengthCheck(arguments,1,`getCookies`),s(e);let t=e.get(`cookie`),n={__proto__:null};if(!t)return n;for(let e of t.split(`;`)){let[t,...r]=e.split(`=`);n[t.trim()]=r.join(`=`)}return n}function l(e,t,n){s(e);let r=`deleteCookie`;i.argumentLengthCheck(arguments,2,r),t=i.converters.DOMString(t,r,`name`),n=i.converters.DeleteCookieAttributes(n),f(e,{name:t,value:``,expires:/* @__PURE__ */ new Date(0),...n})}function u(e){i.argumentLengthCheck(arguments,1,`getSetCookies`),s(e);let t=e.getSetCookie();return t?t.map(e=>n(e)):[]}function d(e){return e=i.converters.DOMString(e),n(e)}function f(e,t){i.argumentLengthCheck(arguments,2,`setCookie`),s(e),t=i.converters.Cookie(t);let n=r(t);n&&e.append(`set-cookie`,n,!0)}i.converters.DeleteCookieAttributes=i.dictionaryConverter([{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:()=>null}]),i.converters.Cookie=i.dictionaryConverter([{converter:i.converters.DOMString,key:`name`},{converter:i.converters.DOMString,key:`value`},{converter:i.nullableConverter(e=>typeof e==`number`?i.converters[`unsigned long long`](e):new Date(e)),key:`expires`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters[`long long`]),key:`maxAge`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.boolean),key:`secure`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.boolean),key:`httpOnly`,defaultValue:()=>null},{converter:i.converters.USVString,key:`sameSite`,allowedValues:[`Strict`,`Lax`,`None`]},{converter:i.sequenceConverter(i.converters.DOMString),key:`unparsed`,defaultValue:()=>[]}]),t.exports={getCookies:c,deleteCookie:l,getSetCookies:u,setCookie:f,parseCookie:d}})),no=/* @__PURE__ */ a(((e,t)=>{let{webidl:n}=Li(),{kEnumerableProperty:r}=xi(),{kConstruct:i}=gi(),a;var o=class e extends Event{#e;constructor(e,t={}){if(e===i){super(arguments[1],arguments[2]),n.util.markAsUncloneable(this);return}let r=`MessageEvent constructor`;n.argumentLengthCheck(arguments,1,r),e=n.converters.DOMString(e,r,`type`),t=n.converters.MessageEventInit(t,r,`eventInitDict`),super(e,t),this.#e=t,n.util.markAsUncloneable(this)}get data(){return n.brandCheck(this,n.is.MessageEvent),this.#e.data}get origin(){return n.brandCheck(this,n.is.MessageEvent),this.#e.origin}get lastEventId(){return n.brandCheck(this,n.is.MessageEvent),this.#e.lastEventId}get source(){return n.brandCheck(this,n.is.MessageEvent),this.#e.source}get ports(){return n.brandCheck(this,n.is.MessageEvent),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(t,r=!1,i=!1,a=null,o=``,s=``,c=null,l=[]){return n.brandCheck(this,n.is.MessageEvent),n.argumentLengthCheck(arguments,1,`MessageEvent.initMessageEvent`),new e(t,{bubbles:r,cancelable:i,data:a,origin:o,lastEventId:s,source:c,ports:l})}static{a=(t,n)=>{let r=new e(i,t,n);return r.#e=n,r.#e.data??=null,r.#e.origin??=``,r.#e.lastEventId??=``,r.#e.source??=null,r.#e.ports??=[],r},n.is.MessageEvent=e=>typeof e==`object`&&!!e&&#e in e}},s=class extends Event{#e;constructor(e,t={}){let r=`CloseEvent constructor`;n.argumentLengthCheck(arguments,1,r),e=n.converters.DOMString(e,r,`type`),t=n.converters.CloseEventInit(t),super(e,t),this.#e=t,n.util.markAsUncloneable(this)}get wasClean(){return n.brandCheck(this,n.is.CloseEvent),this.#e.wasClean}get code(){return n.brandCheck(this,n.is.CloseEvent),this.#e.code}get reason(){return n.brandCheck(this,n.is.CloseEvent),this.#e.reason}static{n.is.CloseEvent=e=>typeof e==`object`&&!!e&&#e in e}},c=class extends Event{#e;constructor(e,t){let r=`ErrorEvent constructor`;n.argumentLengthCheck(arguments,1,r),super(e,t),n.util.markAsUncloneable(this),e=n.converters.DOMString(e,r,`type`),t=n.converters.ErrorEventInit(t??{}),this.#e=t}get message(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.message}get filename(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.filename}get lineno(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.lineno}get colno(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.colno}get error(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.error}static{n.is.ErrorEvent=e=>typeof e==`object`&&!!e&&#e in e}};Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:`MessageEvent`,configurable:!0},data:r,origin:r,lastEventId:r,source:r,ports:r,initMessageEvent:r}),Object.defineProperties(s.prototype,{[Symbol.toStringTag]:{value:`CloseEvent`,configurable:!0},reason:r,code:r,wasClean:r}),Object.defineProperties(c.prototype,{[Symbol.toStringTag]:{value:`ErrorEvent`,configurable:!0},message:r,filename:r,lineno:r,colno:r,error:r}),n.converters.MessagePort=n.interfaceConverter(n.is.MessagePort,`MessagePort`),n.converters[`sequence`]=n.sequenceConverter(n.converters.MessagePort);let l=[{key:`bubbles`,converter:n.converters.boolean,defaultValue:()=>!1},{key:`cancelable`,converter:n.converters.boolean,defaultValue:()=>!1},{key:`composed`,converter:n.converters.boolean,defaultValue:()=>!1}];n.converters.MessageEventInit=n.dictionaryConverter([...l,{key:`data`,converter:n.converters.any,defaultValue:()=>null},{key:`origin`,converter:n.converters.USVString,defaultValue:()=>``},{key:`lastEventId`,converter:n.converters.DOMString,defaultValue:()=>``},{key:`source`,converter:n.nullableConverter(n.converters.MessagePort),defaultValue:()=>null},{key:`ports`,converter:n.converters[`sequence`],defaultValue:()=>[]}]),n.converters.CloseEventInit=n.dictionaryConverter([...l,{key:`wasClean`,converter:n.converters.boolean,defaultValue:()=>!1},{key:`code`,converter:n.converters[`unsigned short`],defaultValue:()=>0},{key:`reason`,converter:n.converters.USVString,defaultValue:()=>``}]),n.converters.ErrorEventInit=n.dictionaryConverter([...l,{key:`message`,converter:n.converters.DOMString,defaultValue:()=>``},{key:`filename`,converter:n.converters.USVString,defaultValue:()=>``},{key:`lineno`,converter:n.converters[`unsigned long`],defaultValue:()=>0},{key:`colno`,converter:n.converters[`unsigned long`],defaultValue:()=>0},{key:`error`,converter:n.converters.any}]),t.exports={MessageEvent:o,CloseEvent:s,ErrorEvent:c,createFastMessageEvent:a}})),ro=/* @__PURE__ */ a(((e,t)=>{t.exports={uid:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,sentCloseFrameState:{SENT:1,RECEIVED:2},staticPropertyDescriptors:{enumerable:!0,writable:!1,configurable:!1},states:{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},opcodes:{CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit:65535,parserStates:{INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer:Buffer.allocUnsafe(0),sendHints:{text:1,typedArray:2,arrayBuffer:3,blob:4}}})),io=/* @__PURE__ */ a(((e,n)=>{let{states:r,opcodes:i}=ro(),{isUtf8:a}=t(`node:buffer`),{removeHTTPWhitespace:o}=Ii(),{collectASequenceOfCodePointsFast:s}=Fi();function c(e){return e===r.CONNECTING}function l(e){return e===r.OPEN}function u(e){return e===r.CLOSING}function d(e){return e===r.CLOSED}function f(e,t,n=(e,t)=>new Event(e,t),r={}){let i=n(e,r);t.dispatchEvent(i)}function p(e,t,n){e.onMessage(t,n)}function m(e){return e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer}function h(e){if(e.length===0)return!1;for(let t=0;t126||n===34||n===40||n===41||n===44||n===47||n===58||n===59||n===60||n===61||n===62||n===63||n===64||n===91||n===92||n===93||n===123||n===125)return!1}return!0}function g(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function v(e){return e===i.CLOSE||e===i.PING||e===i.PONG}function y(e){return e===i.CONTINUATION}function b(e){return e===i.TEXT||e===i.BINARY}function x(e){return b(e)||y(e)||v(e)}function S(e){let t={position:0},n=/* @__PURE__ */ new Map;for(;t.position57)return!1}let t=Number.parseInt(e,10);return t>=8&&t<=15}function w(e,t){let n;try{n=new URL(e,t)}catch(e){throw new DOMException(e,`SyntaxError`)}if(n.protocol===`http:`?n.protocol=`ws:`:n.protocol===`https:`&&(n.protocol=`wss:`),n.protocol!==`ws:`&&n.protocol!==`wss:`)throw new DOMException(`expected a ws: or wss: url`,`SyntaxError`);if(n.hash.length||n.href.endsWith(`#`))throw new DOMException(`hash`,`SyntaxError`);return n}function T(e,t){if(e!==null&&e!==1e3&&(e<3e3||e>4999))throw new DOMException(`invalid code`,`InvalidAccessError`);if(t!==null){let e=Buffer.byteLength(t);if(e>123)throw new DOMException(`Reason must be less than 123 bytes; received ${e}`,`SyntaxError`)}}n.exports={isConnecting:c,isEstablished:l,isClosing:u,isClosed:d,fireEvent:f,isValidSubprotocol:h,isValidStatusCode:g,websocketMessageReceived:p,utf8Decode:(()=>{if(typeof process.versions.icu==`string`){let e=new TextDecoder(`utf-8`,{fatal:!0});return e.decode.bind(e)}return function(e){if(a(e))return e.toString(`utf-8`);throw TypeError(`Invalid utf-8 received.`)}})(),isControlFrame:v,isContinuationFrame:y,isTextBinaryFrame:b,isValidOpcode:x,parseExtensions:S,isValidClientWindowBits:C,toArrayBuffer:m,getURLRecord:w,validateCloseCodeAndReason:T}})),ao=/* @__PURE__ */ a(((e,n)=>{let{runtimeFeatures:r}=zi(),{maxUnsigned16Bit:i,opcodes:a}=ro(),o=8192,s=null,c=o,l=r.has(`crypto`)?t(`node:crypto`).randomFillSync:null;function u(){return c===o&&(c=0,l(s??=Buffer.allocUnsafeSlow(o),0,o)),[s[c++],s[c++],s[c++],s[c++]]} +if(!n.next().done)throw TypeError(`Unreachable`);return t}{let e=0;for(let{0:n,1:{value:r}}of this.headersMap)t[e++]=[n,r],l(r!==null);return t.sort(g)}}};let y,b,x,S;var C=class{#e;#t;constructor(e=void 0){c.util.markAsUncloneable(this),e!==r&&(this.#t=new v,this.#e=`none`,e!==void 0&&(e=c.converters.HeadersInit(e,`Headers constructor`,`init`),p(this,e)))}append(e,t){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,2,`Headers.append`);let n=`Headers.append`;return e=c.converters.ByteString(e,n,`name`),t=c.converters.ByteString(t,n,`value`),m(this,e,t)}delete(e){if(c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,1,`Headers.delete`),e=c.converters.ByteString(e,`Headers.delete`,`name`),!o(e))throw c.errors.invalidArgument({prefix:`Headers.delete`,value:e,type:`header name`});if(this.#e===`immutable`)throw TypeError(`immutable`);this.#t.contains(e,!1)&&this.#t.delete(e,!1)}get(e){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,1,`Headers.get`);let t=`Headers.get`;if(e=c.converters.ByteString(e,t,`name`),!o(e))throw c.errors.invalidArgument({prefix:t,value:e,type:`header name`});return this.#t.get(e,!1)}has(e){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,1,`Headers.has`);let t=`Headers.has`;if(e=c.converters.ByteString(e,t,`name`),!o(e))throw c.errors.invalidArgument({prefix:t,value:e,type:`header name`});return this.#t.contains(e,!1)}set(e,t){c.brandCheck(this,c.is.Headers),c.argumentLengthCheck(arguments,2,`Headers.set`);let n=`Headers.set`;if(e=c.converters.ByteString(e,n,`name`),t=c.converters.ByteString(t,n,`value`),t=f(t),!o(e))throw c.errors.invalidArgument({prefix:n,value:e,type:`header name`});if(!s(t))throw c.errors.invalidArgument({prefix:n,value:t,type:`header value`});if(this.#e===`immutable`)throw TypeError(`immutable`);this.#t.set(e,t,!1)}getSetCookie(){c.brandCheck(this,c.is.Headers);let e=this.#t.cookies;return e?[...e]:[]}[u.inspect.custom](e,t){return t.depth??=e,`Headers ${u.formatWithOptions(t,this.#t.entries)}`}static{y=e=>e.#e,b=(e,t)=>{e.#e=t},x=e=>e.#t,S=(e,t)=>{e.#t=t},c.is.Headers=e=>typeof e==`object`&&!!e&&#e in e}};a(`Headers`,C,h,0,1,c.is.Headers),Object.defineProperties(C.prototype,{append:i,delete:i,get:i,has:i,set:i,getSetCookie:i,[Symbol.toStringTag]:{value:`Headers`,configurable:!0},[u.inspect.custom]:{enumerable:!1}}),c.converters.HeadersInit=function(e,t,n){if(c.util.Type(e)===c.util.Types.OBJECT){let r=Reflect.get(e,Symbol.iterator);if(!u.types.isProxy(e)&&r===C.prototype.entries)try{return x(e).entriesList}catch{}return typeof r==`function`?c.converters[`sequence>`](e,t,n,r.bind(e)):c.converters[`record`](e,t,n)}throw c.errors.conversionFailed({prefix:`Headers constructor`,argument:`Argument 1`,types:[`sequence>`,`record`]})},n.exports={fill:p,compareHeaderName:g,Headers:C,HeadersList:v,getHeadersGuard:y,setHeadersGuard:b,setHeadersList:S,getHeadersList:x}})),Ka=/* @__PURE__ */ a(((e,n)=>{let{Headers:r,HeadersList:i,fill:a,getHeadersGuard:o,setHeadersGuard:s,setHeadersList:c}=Ga(),{extractBody:l,cloneBody:u,mixinBody:d,streamRegistry:f,bodyUnusable:p}=Ui(),m=Si(),h=t(`node:util`),{kEnumerableProperty:g}=m,{isValidReasonPhrase:v,isCancelled:y,isAborted:b,isErrorLike:x,environmentSettingsObject:S}=zi(),{redirectStatusSet:C,nullBodyStatus:w}=Ni(),{webidl:T}=Ri(),{URLSerializer:E}=Li(),{kConstruct:D}=_i(),O=t(`node:assert`),{isomorphicEncode:k,serializeJavascriptValueToJSONString:A}=Ii(),j=new TextEncoder(`utf-8`),M,N,P,F;var I=class{#e;#t;static error(){return ae(R(),`immutable`)}static json(e,t=void 0){T.argumentLengthCheck(arguments,1,`Response.json`),t=T.converters.ResponseInit(t);let n=j.encode(A(e)),r=l(n),i=ae(L({}),`response`);return z(i,t,{body:r[0],type:`application/json`}),i}static redirect(e,t=302){T.argumentLengthCheck(arguments,1,`Response.redirect`),e=T.converters.USVString(e),t=T.converters[`unsigned short`](t);let n;try{n=new URL(e,S.settingsObject.baseUrl)}catch(t){throw TypeError(`Failed to parse URL from ${e}`,{cause:t})}if(!C.has(t))throw RangeError(`Invalid status code ${t}`);let r=ae(L({}),`immutable`);r.#t.status=t;let i=k(E(n));return r.#t.headersList.append(`location`,i,!0),r}constructor(e=null,t=void 0){if(T.util.markAsUncloneable(this),e===D)return;e!==null&&(e=T.converters.BodyInit(e,`Response`,`body`)),t=T.converters.ResponseInit(t),this.#t=L({}),this.#e=new r(D),s(this.#e,`response`),c(this.#e,this.#t.headersList);let n=null;if(e!=null){let[t,r]=l(e);n={body:t,type:r}}z(this,t,n)}get type(){return T.brandCheck(this,T.is.Response),this.#t.type}get url(){T.brandCheck(this,T.is.Response);let e=this.#t.urlList,t=e[e.length-1]??null;return t===null?``:E(t,!0)}get redirected(){return T.brandCheck(this,T.is.Response),this.#t.urlList.length>1}get status(){return T.brandCheck(this,T.is.Response),this.#t.status}get ok(){return T.brandCheck(this,T.is.Response),this.#t.status>=200&&this.#t.status<=299}get statusText(){return T.brandCheck(this,T.is.Response),this.#t.statusText}get headers(){return T.brandCheck(this,T.is.Response),this.#e}get body(){return T.brandCheck(this,T.is.Response),this.#t.body?this.#t.body.stream:null}get bodyUsed(){return T.brandCheck(this,T.is.Response),!!this.#t.body&&m.isDisturbed(this.#t.body.stream)}clone(){if(T.brandCheck(this,T.is.Response),p(this.#t))throw T.errors.exception({header:`Response.clone`,message:`Body has already been consumed.`});let e=ee(this.#t);return this.#t.urlList.length!==0&&this.#t.body?.stream&&f.register(this,new WeakRef(this.#t.body.stream)),ae(e,o(this.#e))}[h.inspect.custom](e,t){t.depth===null&&(t.depth=2),t.colors??=!0;let n={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${h.formatWithOptions(t,n)}`}static{M=e=>e.#e,N=(e,t)=>{e.#e=t},P=e=>e.#t,F=(e,t)=>{e.#t=t},T.is.Response=e=>typeof e==`object`&&!!e&&#t in e}};d(I,P,T.is.Response),Object.defineProperties(I.prototype,{type:g,url:g,status:g,ok:g,redirected:g,statusText:g,headers:g,clone:g,body:g,bodyUsed:g,[Symbol.toStringTag]:{value:`Response`,configurable:!0}}),Object.defineProperties(I,{json:g,redirect:g,error:g});function ee(e){if(e.internalResponse)return re(ee(e.internalResponse),e.type);let t=L({...e,body:null});return e.body!=null&&(t.body=u(e.body)),t}function L(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:`default`,status:200,timingInfo:null,cacheState:``,statusText:``,...e,headersList:e?.headersList?new i(e?.headersList):new i,urlList:e?.urlList?[...e.urlList]:[]}}function R(e){return L({type:`error`,status:0,error:x(e)?e:Error(e&&String(e)),aborted:e&&e.name===`AbortError`})}function te(e){return e.type===`error`&&e.status===0}function ne(e,t){return t={internalResponse:e,...t},new Proxy(e,{get(e,n){return n in t?t[n]:e[n]},set(e,n,r){return O(!(n in t)),e[n]=r,!0}})}function re(e,t){if(t===`basic`)return ne(e,{type:`basic`,headersList:e.headersList});if(t===`cors`)return ne(e,{type:`cors`,headersList:e.headersList});if(t===`opaque`)return ne(e,{type:`opaque`,urlList:[],status:0,statusText:``,body:null});if(t===`opaqueredirect`)return ne(e,{type:`opaqueredirect`,status:0,statusText:``,headersList:[],body:null});O(!1)}function ie(e,t=null){return O(y(e)),b(e)?R(Object.assign(new DOMException(`The operation was aborted.`,`AbortError`),{cause:t})):R(Object.assign(new DOMException(`Request was cancelled.`),{cause:t}))}function z(e,t,n){if(t.status!==null&&(t.status<200||t.status>599))throw RangeError(`init["status"] must be in the range of 200 to 599, inclusive.`);if(`statusText`in t&&t.statusText!=null&&!v(String(t.statusText)))throw TypeError(`Invalid statusText`);if(`status`in t&&t.status!=null&&(P(e).status=t.status),`statusText`in t&&t.statusText!=null&&(P(e).statusText=t.statusText),`headers`in t&&t.headers!=null&&a(M(e),t.headers),n){if(w.includes(e.status))throw T.errors.exception({header:`Response constructor`,message:`Invalid response status code ${e.status}`});P(e).body=n.body,n.type!=null&&!P(e).headersList.contains(`content-type`,!0)&&P(e).headersList.append(`content-type`,n.type,!0)}}function ae(e,t){let n=new I(D);F(n,e);let i=new r(D);return N(n,i),c(i,e.headersList),s(i,t),e.urlList.length!==0&&e.body?.stream&&f.register(n,new WeakRef(e.body.stream)),n}T.converters.XMLHttpRequestBodyInit=function(e,t,n){return typeof e==`string`?T.converters.USVString(e,t,n):T.is.Blob(e)||T.is.BufferSource(e)||T.is.FormData(e)||T.is.URLSearchParams(e)?e:T.converters.DOMString(e,t,n)},T.converters.BodyInit=function(e,t,n){return T.is.ReadableStream(e)||e?.[Symbol.asyncIterator]?e:T.converters.XMLHttpRequestBodyInit(e,t,n)},T.converters.ResponseInit=T.dictionaryConverter([{key:`status`,converter:T.converters[`unsigned short`],defaultValue:()=>200},{key:`statusText`,converter:T.converters.ByteString,defaultValue:()=>``},{key:`headers`,converter:T.converters.HeadersInit}]),n.exports={isNetworkError:te,makeNetworkError:R,makeResponse:L,makeAppropriateNetworkError:ie,filterResponse:re,Response:I,cloneResponse:ee,fromInnerResponse:ae,getResponseState:P}})),qa=/* @__PURE__ */ a(((e,n)=>{let{extractBody:r,mixinBody:i,cloneBody:a,bodyUnusable:o}=Ui(),{Headers:s,fill:c,HeadersList:l,setHeadersGuard:u,getHeadersGuard:d,setHeadersList:f,getHeadersList:p}=Ga(),m=Si(),h=t(`node:util`),{isValidHTTPToken:g,sameOrigin:v,environmentSettingsObject:y}=zi(),{forbiddenMethodsSet:b,corsSafeListedMethodsSet:x,referrerPolicy:S,requestRedirect:C,requestMode:w,requestCredentials:T,requestCache:E,requestDuplex:D}=Ni(),{kEnumerableProperty:O,normalizedMethodRecordsBase:k,normalizedMethodRecords:A}=m,{webidl:j}=Ri(),{URLSerializer:M}=Li(),{kConstruct:N}=_i(),P=t(`node:assert`),{getMaxListeners:F,setMaxListeners:I,defaultMaxListeners:ee}=t(`node:events`),L=Symbol(`abortController`),R=new FinalizationRegistry(({signal:e,abort:t})=>{e.removeEventListener(`abort`,t)}),te=/* @__PURE__ */ new WeakMap,ne;try{ne=F(new AbortController().signal)>0}catch{ne=!1}function re(e){return t;function t(){let n=e.deref();if(n!==void 0){R.unregister(t),this.removeEventListener(`abort`,t),n.abort(this.reason);let e=te.get(n.signal);if(e!==void 0){if(e.size!==0){for(let t of e){let e=t.deref();e!==void 0&&e.abort(this.reason)}e.clear()}te.delete(n.signal)}}}}let ie=!1,z,ae,oe,se,ce,le,ue;var de=class{#e;#t;#n;#r;#i=null;constructor(e,t=void 0){if(j.util.markAsUncloneable(this),e===N)return;j.argumentLengthCheck(arguments,1,`Request constructor`),e=j.converters.RequestInfo(e),t=j.converters.RequestInit(t);let n=null,i=null,a=y.settingsObject.baseUrl,d=null;if(typeof e==`string`){this.#t=t.dispatcher;let r;try{r=new URL(e,a)}catch(t){throw TypeError(`Failed to parse URL from `+e,{cause:t})}if(r.username||r.password)throw TypeError(`Request cannot be constructed from a URL that includes credentials: `+e);n=fe({urlList:[r]}),i=`cors`}else P(j.is.Request(e)),n=e.#r,d=e.#e,this.#t=t.dispatcher||e.#t;let h=y.settingsObject.origin,S=`client`;if(n.window?.constructor?.name===`EnvironmentSettingsObject`&&v(n.window,h)&&(S=n.window),t.window!=null)throw TypeError(`'window' option '${S}' must be null`);`window`in t&&(S=`no-window`),n=fe({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:y.settingsObject,window:S,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});let C=Object.keys(t).length!==0;if(C&&(n.mode===`navigate`&&(n.mode=`same-origin`),n.reloadNavigation=!1,n.historyNavigation=!1,n.origin=`client`,n.referrer=`client`,n.referrerPolicy=``,n.url=n.urlList[n.urlList.length-1],n.urlList=[n.url]),t.referrer!==void 0){let e=t.referrer;if(e===``)n.referrer=`no-referrer`;else{let t;try{t=new URL(e,a)}catch(t){throw TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}t.protocol===`about:`&&t.hostname===`client`||h&&!v(t,y.settingsObject.baseUrl)?n.referrer=`client`:n.referrer=t}}t.referrerPolicy!==void 0&&(n.referrerPolicy=t.referrerPolicy);let w;if(w=t.mode===void 0?i:t.mode,w===`navigate`)throw j.errors.exception({header:`Request constructor`,message:`invalid request mode navigate.`});if(w!=null&&(n.mode=w),t.credentials!==void 0&&(n.credentials=t.credentials),t.cache!==void 0&&(n.cache=t.cache),n.cache===`only-if-cached`&&n.mode!==`same-origin`)throw TypeError(`'only-if-cached' can be set only with 'same-origin' mode`);if(t.redirect!==void 0&&(n.redirect=t.redirect),t.integrity!=null&&(n.integrity=String(t.integrity)),t.keepalive!==void 0&&(n.keepalive=!!t.keepalive),t.method!==void 0){let e=t.method,r=A[e];if(r!==void 0)n.method=r;else{if(!g(e))throw TypeError(`'${e}' is not a valid HTTP method.`);let t=e.toUpperCase();if(b.has(t))throw TypeError(`'${e}' HTTP method is unsupported.`);e=k[t]??e,n.method=e}!ie&&n.method===`patch`&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:`UNDICI-FETCH-patch`}),ie=!0)}t.signal!==void 0&&(d=t.signal),this.#r=n;let T=new AbortController;if(this.#e=T.signal,d!=null){if(d.aborted)T.abort(d.reason);else{this[L]=T;let e=re(new WeakRef(T));ne&&F(d)===ee&&I(1500,d);let t=m.addAbortListener(d,e);R.register(T,{signal:d,abort:e},e),this.#i=()=>{R.unregister(e),t(),this.#i=null}}}if(this.#n=new s(N),f(this.#n,n.headersList),u(this.#n,`request`),w===`no-cors`){if(!x.has(n.method))throw TypeError(`'${n.method} is unsupported in no-cors mode.`);u(this.#n,`request-no-cors`)}if(C){let e=p(this.#n),n=t.headers===void 0?new l(e):t.headers;if(e.clear(),n instanceof l){for(let{name:t,value:r}of n.rawValues())e.append(t,r,!1);e.cookies=n.cookies}else c(this.#n,n)}let E=j.is.Request(e)?e.#r.body:null;if((t.body!=null||E!=null)&&(n.method===`GET`||n.method===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body.`);let D=null;if(t.body!=null){let[e,i]=r(t.body,n.keepalive);D=e,i&&!p(this.#n).contains(`content-type`,!0)&&this.#n.append(`content-type`,i,!0)}let O=D??E;if(O!=null&&O.source==null){if(D!=null&&t.duplex==null)throw TypeError(`RequestInit: duplex option is required when sending a body.`);if(n.mode!==`same-origin`&&n.mode!==`cors`)throw TypeError(`If request is made from ReadableStream, mode should be "same-origin" or "cors"`);n.useCORSPreflightFlag=!0}let M=O;if(D==null&&E!=null){if(o(e.#r))throw TypeError(`Cannot construct a Request with a Request object that has already been used.`);let t=new TransformStream;E.stream.pipeThrough(t),M={source:E.source,length:E.length,stream:t.readable}}this.#r.body=M}get method(){return j.brandCheck(this,j.is.Request),this.#r.method}get url(){return j.brandCheck(this,j.is.Request),M(this.#r.url)}get headers(){return j.brandCheck(this,j.is.Request),this.#n}get destination(){return j.brandCheck(this,j.is.Request),this.#r.destination}get referrer(){return j.brandCheck(this,j.is.Request),this.#r.referrer===`no-referrer`?``:this.#r.referrer===`client`?`about:client`:this.#r.referrer.toString()}get referrerPolicy(){return j.brandCheck(this,j.is.Request),this.#r.referrerPolicy}get mode(){return j.brandCheck(this,j.is.Request),this.#r.mode}get credentials(){return j.brandCheck(this,j.is.Request),this.#r.credentials}get cache(){return j.brandCheck(this,j.is.Request),this.#r.cache}get redirect(){return j.brandCheck(this,j.is.Request),this.#r.redirect}get integrity(){return j.brandCheck(this,j.is.Request),this.#r.integrity}get keepalive(){return j.brandCheck(this,j.is.Request),this.#r.keepalive}get isReloadNavigation(){return j.brandCheck(this,j.is.Request),this.#r.reloadNavigation}get isHistoryNavigation(){return j.brandCheck(this,j.is.Request),this.#r.historyNavigation}get signal(){return j.brandCheck(this,j.is.Request),this.#e}get body(){return j.brandCheck(this,j.is.Request),this.#r.body?this.#r.body.stream:null}get bodyUsed(){return j.brandCheck(this,j.is.Request),!!this.#r.body&&m.isDisturbed(this.#r.body.stream)}get duplex(){return j.brandCheck(this,j.is.Request),`half`}clone(){if(j.brandCheck(this,j.is.Request),o(this.#r))throw TypeError(`unusable`);let e=pe(this.#r),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let e=te.get(this.signal);e===void 0&&(e=/* @__PURE__ */ new Set,te.set(this.signal,e));let n=new WeakRef(t);e.add(n),m.addAbortListener(t.signal,re(n))}return me(e,this.#t,t.signal,d(this.#n))}[h.inspect.custom](e,t){t.depth===null&&(t.depth=2),t.colors??=!0;let n={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${h.formatWithOptions(t,n)}`}static{z=(e,t)=>{e.#e=t},ae=e=>e.#t,oe=(e,t)=>{e.#t=t},se=(e,t)=>{e.#n=t},ce=e=>e.#r,le=(e,t)=>{e.#r=t},ue=e=>{e.#i?.()},j.is.Request=e=>typeof e==`object`&&!!e&&#r in e}};i(de,ce,j.is.Request);function fe(e){return{method:e.method??`GET`,localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??``,window:e.window??`client`,keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??`all`,initiator:e.initiator??``,destination:e.destination??``,priority:e.priority??`auto`,origin:e.origin??`client`,policyContainer:e.policyContainer??`client`,referrer:e.referrer??`client`,referrerPolicy:e.referrerPolicy??``,mode:e.mode??`no-cors`,useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??`same-origin`,useCredentials:e.useCredentials??!1,cache:e.cache??`default`,redirect:e.redirect??`follow`,integrity:e.integrity??``,cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??``,parserMetadata:e.parserMetadata??``,reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??`basic`,preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,useURLCredentials:e.useURLCredentials??void 0,traversableForUserPrompts:e.traversableForUserPrompts??`client`,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new l(e.headersList):new l}}function pe(e){let t=fe({...e,body:null});return e.body!=null&&(t.body=a(e.body)),t}function me(e,t,n,r){let i=new de(N);le(i,e),oe(i,t),z(i,n);let a=new s(N);return se(i,a),f(a,e.headersList),u(a,r),i}Object.defineProperties(de.prototype,{method:O,url:O,headers:O,redirect:O,clone:O,signal:O,duplex:O,destination:O,body:O,bodyUsed:O,isHistoryNavigation:O,isReloadNavigation:O,keepalive:O,integrity:O,cache:O,credentials:O,attribute:O,referrerPolicy:O,referrer:O,mode:O,[Symbol.toStringTag]:{value:`Request`,configurable:!0}}),j.converters.RequestInfo=function(e){return typeof e==`string`?j.converters.USVString(e):j.is.Request(e)?e:j.converters.USVString(e)},j.converters.RequestInit=j.dictionaryConverter([{key:`method`,converter:j.converters.ByteString},{key:`headers`,converter:j.converters.HeadersInit},{key:`body`,converter:j.nullableConverter(j.converters.BodyInit)},{key:`referrer`,converter:j.converters.USVString},{key:`referrerPolicy`,converter:j.converters.DOMString,allowedValues:S},{key:`mode`,converter:j.converters.DOMString,allowedValues:w},{key:`credentials`,converter:j.converters.DOMString,allowedValues:T},{key:`cache`,converter:j.converters.DOMString,allowedValues:E},{key:`redirect`,converter:j.converters.DOMString,allowedValues:C},{key:`integrity`,converter:j.converters.DOMString},{key:`keepalive`,converter:j.converters.boolean},{key:`signal`,converter:j.nullableConverter(e=>j.converters.AbortSignal(e,`RequestInit`,`signal`))},{key:`window`,converter:j.converters.any},{key:`duplex`,converter:j.converters.DOMString,allowedValues:D},{key:`dispatcher`,converter:j.converters.any},{key:`priority`,converter:j.converters.DOMString,allowedValues:[`high`,`low`,`auto`]}]),n.exports={Request:de,makeRequest:fe,fromInnerRequest:me,cloneRequest:pe,getRequestDispatcher:ae,getRequestState:ce,removeRequestAbortListener:ue}})),Ja=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{runtimeFeatures:i}=Bi(),a=/* @__PURE__ */ new Map([[`sha256`,0],[`sha384`,1],[`sha512`,2]]),o;if(i.has(`crypto`)){o=t(`node:crypto`);let e=o.getHashes();e.length===0&&a.clear();for(let t of a.keys())e.includes(t)===!1&&a.delete(t)}else a.clear();let s=Map.prototype.get.bind(a),c=Map.prototype.has.bind(a),l=i.has(`crypto`)===!1||a.size===0?()=>!0:(e,t)=>{let n=d(t);if(n.length===0)return!0;let r=u(n);for(let t of r){let n=t.alg,r=t.val;if(p(f(n,e),r))return!0}return!1};function u(e){let t=[],n=null;for(let i of e){if(r(c(i.alg),`Invalid SRI hash algorithm token`),t.length===0){t.push(i),n=i;continue}let e=n.alg,a=s(e),o=i.alg,l=s(o);la?(n=i,t[0]=i,t.length=1):t.push(i))}return t}function d(e){let t=[];for(let n of e.split(` `)){let e=n.split(`?`,1)[0],r=``,i=[e.slice(0,6),e.slice(7)],a=i[0];if(!c(a))continue;i[1]&&(r=i[1]);let o={alg:a,val:r};t.push(o)}return t}let f=(e,t)=>o.hash(e,t,`base64`);function p(e,t){let n=e.length;n!==0&&e[n-1]===`=`&&--n,n!==0&&e[n-1]===`=`&&--n;let r=t.length;if(r!==0&&t[r-1]===`=`&&--r,r!==0&&t[r-1]===`=`&&--r,n!==r)return!1;for(let r=0;r{let{makeNetworkError:r,makeAppropriateNetworkError:i,filterResponse:a,makeResponse:o,fromInnerResponse:s,getResponseState:c}=Ka(),{HeadersList:l}=Ga(),{Request:u,cloneRequest:d,getRequestDispatcher:f,getRequestState:p,removeRequestAbortListener:m}=qa(),h=t(`node:zlib`),{makePolicyContainer:g,clonePolicyContainer:v,requestBadPort:y,TAOCheck:b,appendRequestOriginHeader:x,responseLocationURL:S,requestCurrentURL:C,setRequestReferrerPolicyOnRedirect:w,tryUpgradeRequestToAPotentiallyTrustworthyURL:T,createOpaqueTimingInfo:E,appendFetchMetadata:D,corsCheck:O,crossOriginResourcePolicyCheck:k,determineRequestsReferrer:A,coarsenedSharedCurrentTime:j,sameOrigin:M,isCancelled:N,isAborted:P,isErrorLike:F,fullyReadBody:I,readableStreamClose:ee,urlIsLocal:L,urlIsHttpHttpsScheme:R,urlHasHttpsScheme:te,clampAndCoarsenConnectionTimingInfo:ne,simpleRangeHeaderValue:re,buildContentRange:ie,createInflate:z,extractMimeType:ae,hasAuthenticationEntry:oe,includesCredentials:se,isTraversableNavigable:ce}=zi(),le=t(`node:assert`),{safelyExtractBody:ue,extractBody:de}=Ui(),{redirectStatusSet:fe,nullBodyStatus:pe,safeMethodsSet:me,requestBodyHeader:he,subresourceSet:ge}=Ni(),_e=t(`node:events`),{Readable:ve,pipeline:ye,finished:be,isErrored:xe,isReadable:Se}=t(`node:stream`),{addAbortListener:Ce,bufferToLowerCasedHeaderName:we}=Si(),{SocketError:Te}=yi(),{dataURLProcessor:Ee,serializeAMimeType:De,minimizeSupportedMimeType:Oe}=Li(),{getGlobalDispatcher:ke}=U(),{webidl:Ae}=Ri(),{STATUS_CODES:je}=t(`node:http`),{bytesMatch:Me}=Ja(),{isomorphicEncode:Ne}=Ii(),Pe=[`GET`,`HEAD`],Fe=typeof __UNDICI_IS_NODE__<`u`||typeof esbuildDetection<`u`?`node`:`undici`,Ie;function Le(e,t,n){if(Array.isArray(n))for(let t=0;t{o=!0,le(c!=null),c.abort(r.signal.reason);let e=a?.deref();Ue(n,i,e,r.signal.reason,c.controller)}),d=()=>{l(),m(r)};return c=We({request:i,processResponseEndOfBody:e=>{ze(e),d()},processResponse:e=>{o||(e.aborted?(Ue(n,i,a,c.serializedAbortReason,c.controller),d()):e.type===`error`?(n.reject(TypeError(`fetch failed`,{cause:e.error})),d()):(a=new WeakRef(s(e,`immutable`)),n.resolve(a.deref()),n=null))},dispatcher:f(r),requestObject:r}),n.promise}function Ve(e,t=`other`){if(e.type===`error`&&e.aborted||!e.urlList?.length)return;let n=e.urlList[0],r=e.timingInfo,i=e.cacheState;R(n)&&r!==null&&(e.timingAllowPassed||(r=E({startTime:r.startTime}),i=``),r.endTime=j(),e.timingInfo=r,He(r,n.href,t,globalThis,i,``,e.status))}let He=performance.markResourceTiming;function Ue(e,t,n,r,i){if(e&&e.reject(r),t.body?.stream!=null&&Se(t.body.stream)&&t.body.stream.cancel(r).catch(e=>{if(e.code!==`ERR_INVALID_STATE`)throw e}),n==null)return;let a=c(n);a.body?.stream!=null&&Se(a.body.stream)&&i.error(r)}function We({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseEndOfBody:i,processResponseConsumeBody:a,useParallelQueue:o=!1,dispatcher:s=ke(),requestObject:c=null}){le(s);let l=null,u=!1;e.client!=null&&(l=e.client.globalObject,u=e.client.crossOriginIsolatedCapability);let d=j(u),f=E({startTime:d}),p={controller:new Re(s),request:e,timingInfo:f,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseConsumeBody:a,processResponseEndOfBody:i,taskDestination:l,crossOriginIsolatedCapability:u,requestObject:c};return le(!e.body||e.body.stream),e.window===`client`&&(e.window=e.client?.globalObject?.constructor?.name===`Window`?e.client:`no-window`),e.origin===`client`&&(e.origin=e.client.origin),e.policyContainer===`client`&&(e.policyContainer=e.client==null?g():v(e.client.policyContainer)),e.headersList.contains(`accept`,!0)||e.headersList.append(`accept`,`*/*`,!0),e.headersList.contains(`accept-language`,!0)||e.headersList.append(`accept-language`,`*`,!0),e.priority,ge.has(e.destination),Ge(p,!1),p.controller}async function Ge(e,t){try{let n=e.request,i=null;if(n.localURLsOnly&&!L(C(n))&&(i=r(`local URLs only`)),T(n),y(n)===`blocked`&&(i=r(`bad port`)),n.referrerPolicy===``&&(n.referrerPolicy=n.policyContainer.referrerPolicy),n.referrer!==`no-referrer`&&(n.referrer=A(n)),i===null){let t=C(n);M(t,n.url)&&n.responseTainting===`basic`||t.protocol===`data:`||n.mode===`navigate`||n.mode===`websocket`?(n.responseTainting=`basic`,i=await Ke(e)):n.mode===`same-origin`?i=r(`request mode cannot be "same-origin"`):n.mode===`no-cors`?n.redirect===`follow`?(n.responseTainting=`opaque`,i=await Ke(e)):i=r(`redirect mode cannot be "follow" for "no-cors" request`):R(C(n))?(n.responseTainting=`cors`,i=await Ye(e)):i=r(`URL scheme must be a HTTP(S) scheme`)}if(t)return i;i.status!==0&&!i.internalResponse&&(n.responseTainting,n.responseTainting===`basic`?i=a(i,`basic`):n.responseTainting===`cors`?i=a(i,`cors`):n.responseTainting===`opaque`?i=a(i,`opaque`):le(!1));let o=i.status===0?i:i.internalResponse;if(o.urlList.length===0&&o.urlList.push(...n.urlList),n.timingAllowFailed||(i.timingAllowPassed=!0),i.type===`opaque`&&o.status===206&&o.rangeRequested&&!n.headers.contains(`range`,!0)&&(i=o=r()),i.status!==0&&(n.method===`HEAD`||n.method===`CONNECT`||pe.includes(o.status))&&(o.body=null,e.controller.dump=!0),n.integrity){let t=t=>Je(e,r(t));if(n.responseTainting===`opaque`||i.body==null){t(i.error);return}I(i.body,r=>{Me(r,n.integrity)?(i.body=ue(r)[0],Je(e,i)):t(`integrity mismatch`)},t)}else Je(e,i)}catch(t){e.controller.terminate(t)}}function Ke(e){if(N(e))return Promise.resolve(i(e));let{request:n}=e,{protocol:a}=C(n);switch(a){case`about:`:return Promise.resolve(r(`about scheme is not supported`));case`blob:`:{Ie||=t(`node:buffer`).resolveObjectURL;let e=C(n);if(e.search.length!==0)return Promise.resolve(r(`NetworkError when attempting to fetch resource.`));let i=Ie(e.toString());if(n.method!==`GET`||!Ae.is.Blob(i))return Promise.resolve(r(`invalid method`));let a=o(),s=i.size,c=Ne(`${s}`),l=i.type;if(n.headersList.contains(`range`,!0)){a.rangeRequested=!0;let e=n.headersList.get(`range`,!0),t=re(e,!0);if(t===`failure`)return Promise.resolve(r(`failed to fetch the data URL`));let{rangeStartValue:o,rangeEndValue:c}=t;if(o===null)o=s-c,c=o+c-1;else{if(o>=s)return Promise.resolve(r(`Range start is greater than the blob's size.`));(c===null||c>=s)&&(c=s-1)}let u=i.slice(o,c+1,l);a.body=de(u)[0];let d=Ne(`${u.size}`),f=ie(o,c,s);a.status=206,a.statusText=`Partial Content`,a.headersList.set(`content-length`,d,!0),a.headersList.set(`content-type`,l,!0),a.headersList.set(`content-range`,f,!0)}else{let e=de(i);a.statusText=`OK`,a.body=e[0],a.headersList.set(`content-length`,c,!0),a.headersList.set(`content-type`,l,!0)}return Promise.resolve(a)}case`data:`:{let e=C(n),t=Ee(e);if(t===`failure`)return Promise.resolve(r(`failed to fetch the data URL`));let i=De(t.mimeType);return Promise.resolve(o({statusText:`OK`,headersList:[[`content-type`,{name:`Content-Type`,value:i}]],body:ue(t.body)[0]}))}case`file:`:return Promise.resolve(r(`not implemented... yet...`));case`http:`:case`https:`:return Ye(e).catch(e=>r(e));default:return Promise.resolve(r(`unknown scheme`))}}function qe(e,t){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(t))}function Je(e,t){let n=e.timingInfo;e.request.destination===`document`&&(e.controller.fullTimingInfo=n);let r=()=>{let r=Date.now();e.controller.reportTimingSteps=()=>{if(!R(e.request.url))return;n.endTime=r;let i=t.cacheState,a=t.bodyInfo;t.timingAllowPassed||(n=E(n),i=``);let o=0;if(e.request.mode!==`navigate`||!t.hasCrossOriginRedirects){o=t.status;let e=ae(t.headersList);e!==`failure`&&(a.contentType=Oe(e))}e.request.initiatorType!=null&&He(n,e.request.url.href,e.request.initiatorType,globalThis,i,a,o)};let i=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(t)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>i())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(t),e.processResponse=null});let i=t.type===`error`?t:t.internalResponse??t;if(i.body==null?r():be(i.body.stream,()=>{r()}),e.processResponseConsumeBody!=null){let n=n=>e.processResponseConsumeBody(t,n);i.body==null?queueMicrotask(()=>n(null)):I(i.body,n,()=>e.processResponseConsumeBody(t,`failure`))}}async function Ye(e){let t=e.request,n=null,i=null,a=e.timingInfo;if(t.serviceWorkers,n===null){if(t.redirect===`follow`&&(t.serviceWorkers=`none`),i=n=await Ze(e),t.responseTainting===`cors`&&O(t,n)===`failure`)return r(`cors failure`);b(t,n)===`failure`&&(t.timingAllowFailed=!0)}return(t.responseTainting===`opaque`||n.type===`opaque`)&&k(t.origin,t.client,t.destination,i)===`blocked`?r(`blocked`):(fe.has(i.status)&&(t.redirect!==`manual`&&e.controller.connection.destroy(),t.redirect===`error`?n=r(`unexpected redirect`):t.redirect===`manual`?n=i:t.redirect===`follow`?n=await Xe(e,n):le(!1)),n.timingInfo=a,n)}function Xe(e,t){let n=e.request,i=t.internalResponse?t.internalResponse:t,a;try{if(a=S(i,C(n).hash),a==null)return t}catch(e){return Promise.resolve(r(e))}if(!R(a))return Promise.resolve(r(`URL scheme must be a HTTP(S) scheme`));if(n.redirectCount===20)return Promise.resolve(r(`redirect count exceeded`));if(n.redirectCount+=1,n.mode===`cors`&&(a.username||a.password)&&!M(n,a))return Promise.resolve(r(`cross origin not allowed for request mode "cors"`));if(n.responseTainting===`cors`&&(a.username||a.password))return Promise.resolve(r(`URL cannot contain credentials for request mode "cors"`));if(i.status!==303&&n.body!=null&&n.body.source==null)return Promise.resolve(r());if([301,302].includes(i.status)&&n.method===`POST`||i.status===303&&!Pe.includes(n.method)){n.method=`GET`,n.body=null;for(let e of he)n.headersList.delete(e)}M(C(n),a)||(n.headersList.delete(`authorization`,!0),n.headersList.delete(`proxy-authorization`,!0),n.headersList.delete(`cookie`,!0),n.headersList.delete(`host`,!0)),n.body!=null&&(le(n.body.source!=null),n.body=ue(n.body.source)[0]);let o=e.timingInfo;return o.redirectEndTime=o.postRedirectStartTime=j(e.crossOriginIsolatedCapability),o.redirectStartTime===0&&(o.redirectStartTime=o.startTime),n.urlList.push(a),w(n,i),Ge(e,!0)}async function Ze(e,t=!1,n=!1){let a=e.request,o=null,s=null,c=null;a.window===`no-window`&&a.redirect===`error`?(o=e,s=a):(a.body?.source==null?(s=d({...a,body:null}),s.body=a.body):s=d(a),o={...e},o.request=s);let l=a.credentials===`include`||a.credentials===`same-origin`&&a.responseTainting===`basic`,u=s.body?s.body.length:null,f=null;if(s.body==null&&[`POST`,`PUT`].includes(s.method)&&(f=`0`),u!=null&&(f=Ne(`${u}`)),f!=null&&!s.headersList.contains(`content-length`,!0)&&s.headersList.append(`content-length`,f,!0),u!=null&&s.keepalive,Ae.is.URL(s.referrer)&&s.headersList.append(`referer`,Ne(s.referrer.href),!0),x(s),D(s),s.headersList.contains(`user-agent`,!0)||s.headersList.append(`user-agent`,Fe,!0),s.cache==="default"&&(s.headersList.contains(`if-modified-since`,!0)||s.headersList.contains(`if-none-match`,!0)||s.headersList.contains(`if-unmodified-since`,!0)||s.headersList.contains(`if-match`,!0)||s.headersList.contains(`if-range`,!0))&&(s.cache=`no-store`),s.cache===`no-cache`&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains(`cache-control`,!0)&&s.headersList.append(`cache-control`,`max-age=0`,!0),(s.cache===`no-store`||s.cache===`reload`)&&(s.headersList.contains(`pragma`,!0)||s.headersList.append(`pragma`,`no-cache`,!0),s.headersList.contains(`cache-control`,!0)||s.headersList.append(`cache-control`,`no-cache`,!0)),s.headersList.contains(`range`,!0)&&s.headersList.append(`accept-encoding`,`identity`,!0),s.headersList.contains(`accept-encoding`,!0)||(te(C(s))?s.headersList.append(`accept-encoding`,`br, gzip, deflate, zstd`,!0):s.headersList.append(`accept-encoding`,`gzip, deflate`,!0)),s.headersList.delete(`host`,!0),l&&!s.headersList.contains(`authorization`,!0)){let e=null;if((!oe(s)||s.useURLCredentials!==void 0&&se(C(s)))&&se(C(s))&&t){let{username:t,password:n}=C(s);e=`Basic ${Buffer.from(`${t}:${n}`).toString(`base64`)}`}e!==null&&s.headersList.append(`Authorization`,e,!1)}if(s.cache=`no-store`,s.cache!==`no-store`&&s.cache,c==null){if(s.cache===`only-if-cached`)return r(`only if cached`);let e=await Qe(o,l,n);!me.has(s.method)&&e.status>=200&&e.status,c??=e}if(c.urlList=[...s.urlList],s.headersList.contains(`range`,!0)&&(c.rangeRequested=!0),c.requestIncludesCredentials=l,c.status===401&&s.responseTainting!==`cors`&&l&&(a.useURLCredentials!==void 0||ce(a.traversableForUserPrompts))){if(a.body!=null){if(a.body.source==null)return c;a.body=ue(a.body.source)[0]}if(a.useURLCredentials===void 0||t)return N(e)?i(e):c;e.controller.connection.destroy(),c=await Ze(e,!0)}if(c.status===407)return a.window===`no-window`?r():N(e)?i(e):r(`proxy authentication required`);if(c.status===421&&!n&&(a.body==null||a.body.source!=null)){if(N(e))return i(e);e.controller.connection.destroy(),c=await Ze(e,t,!0)}return c}async function Qe(e,t=!1,n=!1){le(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(e){this.destroyed||(this.destroyed=!0,this.abort?.(e??new DOMException(`The operation was aborted.`,`AbortError`)))}};let a=e.request,s=null,c=e.timingInfo;a.cache=`no-store`,a.mode;let u=null;if(a.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(a.body!=null){let t=async function*(t){N(e)||(yield t,e.processRequestBodyChunkLength?.(t.byteLength))},n=()=>{N(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},r=t=>{N(e)||(t.name===`AbortError`?e.controller.abort():e.controller.terminate(t))};u=(async function*(){try{for await(let e of a.body.stream)yield*t(e);n()}catch(e){r(e)}})()}try{let{body:t,status:n,statusText:r,headersList:i,socket:a}=await p({body:u});if(a)s=o({status:n,statusText:r,headersList:i,socket:a});else{let a=t[Symbol.asyncIterator]();e.controller.next=()=>a.next(),s=o({status:n,statusText:r,headersList:i})}}catch(t){return t.name===`AbortError`?(e.controller.connection.destroy(),i(e,t)):r(t)}let d=new ReadableStream({start(t){e.controller.controller=t},pull:()=>e.controller.resume(),cancel:t=>{N(e)||e.controller.abort(t)},type:`bytes`});s.body={stream:d,source:null,length:null},e.controller.resume||e.controller.on(`terminated`,f),e.controller.resume=async()=>{for(;;){let t,n;try{let{done:n,value:r}=await e.controller.next();if(P(e))break;t=n?void 0:r}catch(r){e.controller.ended&&!c.encodedBodySize?t=void 0:(t=r,n=!0)}if(t===void 0){ee(e.controller.controller),qe(e,s);return}if(c.decodedBodySize+=t?.byteLength??0,n){e.controller.terminate(t);return}let r=new Uint8Array(t);if(r.byteLength&&e.controller.controller.enqueue(r),xe(d)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function f(t){P(e)?(s.aborted=!0,Se(d)&&e.controller.controller.error(e.controller.serializedAbortReason)):Se(d)&&e.controller.controller.error(TypeError(`terminated`,{cause:F(t)?t:void 0})),e.controller.connection.destroy()}return s;function p({body:t}){let n=C(a),r=e.controller.dispatcher,i=n.pathname+n.search,o=n.search.length===0&&n.href[n.href.length-n.hash.length-1]===`?`;return s(t);function s(t,u){return new Promise((d,f)=>r.dispatch({path:o?`${i}?`:i,origin:n.origin,method:a.method,body:r.isMockActive?a.body&&(a.body.source||a.body.stream):t,__mockAgentBodyForDispatch:t,headers:a.headersList.entries,maxRedirections:0,upgrade:a.mode===`websocket`?`websocket`:void 0,...u===!1?{allowH2:u}:null},{body:null,abort:null,onRequestStart(t){let{connection:n}=e.controller;c.finalConnectionTimingInfo=ne(void 0,c.postRedirectStartTime,e.crossOriginIsolatedCapability);let r=e=>t.abort(e);n.destroyed?r(new DOMException(`The operation was aborted.`,`AbortError`)):(e.controller.on(`terminated`,r),this.abort=n.abort=r),c.finalNetworkRequestStartTime=j(e.crossOriginIsolatedCapability)},onResponseStarted(){c.finalNetworkResponseStartTime=j(e.crossOriginIsolatedCapability)},onResponseStart(e,t,n,r){if(t<200)return;let i=e?.rawHeaders??[],o=new l;Le(o,n,i);let s=o.get(`location`,!0);this.body=new ve({read:()=>e.resume()});let c=s&&a.redirect===`follow`&&fe.has(t),u=[];if(a.method!==`HEAD`&&a.method!==`CONNECT`&&!pe.includes(t)&&!c){let e=o.get(`content-encoding`,!0),t=e?e.toLowerCase().split(`,`):[];if(t.length>5){f(/* @__PURE__ */ Error(`too many content-encodings in response: ${t.length}, maximum allowed is 5`));return}for(let e=t.length-1;e>=0;--e){let n=t[e].trim();if(n===`x-gzip`||n===`gzip`)u.push(h.createGunzip({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}));else if(n===`deflate`)u.push(z({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}));else if(n===`br`)u.push(h.createBrotliDecompress({flush:h.constants.BROTLI_OPERATION_FLUSH,finishFlush:h.constants.BROTLI_OPERATION_FLUSH}));else if(n===`zstd`)u.push(h.createZstdDecompress({flush:h.constants.ZSTD_e_continue,finishFlush:h.constants.ZSTD_e_end}));else{u.length=0;break}}}let p=t=>this.onResponseError(e,t);d({status:t,statusText:r,headersList:o,body:u.length?ye(this.body,...u,t=>{t&&this.onResponseError(e,t)}).on(`error`,p):this.body.on(`error`,p)})},onResponseData(t,n){if(e.controller.dump)return;let r=n;c.encodedBodySize+=r.byteLength,this.body.push(r)===!1&&t.pause()},onResponseEnd(){this.abort&&e.controller.off(`terminated`,this.abort),e.controller.ended=!0,this.body?.push(null)},onResponseError(n,r){this.abort&&e.controller.off(`terminated`,this.abort),a.mode===`websocket`&&u!==!1&&r?.code===`UND_ERR_INFO`&&r?.message===`HTTP/2: Extended CONNECT protocol not supported by server`?d(s(t,!1)):(this.body?.destroy(r),n?.aborted||e.controller.terminate(r),f(r))},onRequestUpgrade(e,t,n,r){if(r.session!=null&&t!==200||r.session==null&&t!==101)return r.session!=null&&e.abort(new Te(`bad upgrade`,null)),!1;let i=e?.rawHeaders??[],a=new l;return Le(a,n,i),d({status:t,statusText:je[t],headersList:a,socket:r}),!0}}))}}}n.exports={fetch:Be,Fetch:Re,fetching:We,finalizeAndReportTiming:Ve}})),Xa=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{URLSerializer:i}=Li(),{isValidHeaderName:a}=zi();function o(e,t,n=!1){return i(e,n)===i(t,n)}function s(e){r(e!==null);let t=[];for(let n of e.split(`,`))n=n.trim(),a(n)&&t.push(n);return t}n.exports={urlEquals:o,getFieldValues:s}})),Za=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:assert`),{kConstruct:i}=_i(),{urlEquals:a,getFieldValues:o}=Xa(),{kEnumerableProperty:s,isDisturbed:c}=Si(),{webidl:l}=Ri(),{cloneResponse:u,fromInnerResponse:d,getResponseState:f}=Ka(),{Request:p,fromInnerRequest:m,getRequestState:h}=qa(),{fetching:g}=Ya(),{urlIsHttpHttpsScheme:v,readAllBytes:y}=zi();var b=class{#e;constructor(){arguments[0]!==i&&l.illegalConstructor(),l.util.markAsUncloneable(this),this.#e=arguments[1]}async match(e,t={}){l.brandCheck(this,l.is.Cache);let n=`Cache.match`;l.argumentLengthCheck(arguments,1,n),e=l.converters.RequestInfo(e),t=l.converters.CacheQueryOptions(t,n,`options`);let r=this.#i(e,t,1);if(r.length!==0)return r[0]}async matchAll(e=void 0,t={}){return l.brandCheck(this,l.is.Cache),e!==void 0&&(e=l.converters.RequestInfo(e)),t=l.converters.CacheQueryOptions(t,`Cache.matchAll`,`options`),this.#i(e,t)}async add(e){l.brandCheck(this,l.is.Cache),l.argumentLengthCheck(arguments,1,`Cache.add`),e=l.converters.RequestInfo(e);let t=[e];return await this.addAll(t)}async addAll(e){l.brandCheck(this,l.is.Cache);let t=`Cache.addAll`;l.argumentLengthCheck(arguments,1,t);let n=[],r=[];for(let n of e){if(n===void 0)throw l.errors.conversionFailed({prefix:t,argument:`Argument 1`,types:[`undefined is not allowed`]});if(n=l.converters.RequestInfo(n),typeof n==`string`)continue;let e=h(n);if(!v(e.url)||e.method!==`GET`)throw l.errors.exception({header:t,message:`Expected http/s scheme when method is not GET.`})}let i=[];for(let a of e){let e=h(new p(a));if(!v(e.url))throw l.errors.exception({header:t,message:`Expected http/s scheme.`});e.initiator=`fetch`,e.destination=`subresource`,r.push(e);let s=Promise.withResolvers();i.push(g({request:e,processResponse(e){if(e.type===`error`||e.status===206||e.status<200||e.status>299)s.reject(l.errors.exception({header:`Cache.addAll`,message:`Received an invalid status code or the request failed.`}));else if(e.headersList.contains(`vary`)){let t=o(e.headersList.get(`vary`));for(let e of t)if(e===`*`){s.reject(l.errors.exception({header:`Cache.addAll`,message:`invalid vary field value`}));for(let e of i)e.abort();return}}},processResponseConsumeBody(e){e.aborted?s.reject(new DOMException(`aborted`,`AbortError`)):s.resolve(e)}})),n.push(s.promise)}let a=await Promise.all(n),s=[],c=0;for(let e of a){let t={type:`put`,request:r[c],response:e};s.push(t),c++}let u=Promise.withResolvers(),d=null;try{this.#t(s)}catch(e){d=e}return queueMicrotask(()=>{d===null?u.resolve(void 0):u.reject(d)}),u.promise}async put(e,t){l.brandCheck(this,l.is.Cache);let n=`Cache.put`;l.argumentLengthCheck(arguments,2,n),e=l.converters.RequestInfo(e),t=l.converters.Response(t,n,`response`);let r=null;if(r=l.is.Request(e)?h(e):h(new p(e)),!v(r.url)||r.method!==`GET`)throw l.errors.exception({header:n,message:`Expected an http/s scheme when method is not GET`});let i=f(t);if(i.status===206)throw l.errors.exception({header:n,message:`Got 206 status`});if(i.headersList.contains(`vary`)){let e=o(i.headersList.get(`vary`));for(let t of e)if(t===`*`)throw l.errors.exception({header:n,message:`Got * vary field value`})}if(i.body&&(c(i.body.stream)||i.body.stream.locked))throw l.errors.exception({header:n,message:`Response body is locked or disturbed`});let a=u(i),s=Promise.withResolvers();if(i.body!=null){let e=i.body.stream.getReader();y(e,s.resolve,s.reject)}else s.resolve(void 0);let d=[],m={type:`put`,request:r,response:a};d.push(m);let g=await s.promise;a.body!=null&&(a.body.source=g);let b=Promise.withResolvers(),x=null;try{this.#t(d)}catch(e){x=e}return queueMicrotask(()=>{x===null?b.resolve():b.reject(x)}),b.promise}async delete(e,t={}){l.brandCheck(this,l.is.Cache);let n=`Cache.delete`;l.argumentLengthCheck(arguments,1,n),e=l.converters.RequestInfo(e),t=l.converters.CacheQueryOptions(t,n,`options`);let i=null;if(l.is.Request(e)){if(i=h(e),i.method!==`GET`&&!t.ignoreMethod)return!1}else r(typeof e==`string`),i=h(new p(e));let a=[],o={type:`delete`,request:i,options:t};a.push(o);let s=Promise.withResolvers(),c=null,u;try{u=this.#t(a)}catch(e){c=e}return queueMicrotask(()=>{c===null?s.resolve(!!u?.length):s.reject(c)}),s.promise}async keys(e=void 0,t={}){l.brandCheck(this,l.is.Cache),e!==void 0&&(e=l.converters.RequestInfo(e)),t=l.converters.CacheQueryOptions(t,`Cache.keys`,`options`);let n=null;if(e!==void 0){if(l.is.Request(e)){if(n=h(e),n.method!==`GET`&&!t.ignoreMethod)return[]}else typeof e==`string`&&(n=h(new p(e)))}let r=Promise.withResolvers(),i=[];if(e===void 0)for(let e of this.#e)i.push(e[0]);else{let e=this.#n(n,t);for(let t of e)i.push(t[0])}return queueMicrotask(()=>{let e=[];for(let t of i){let n=m(t,void 0,new AbortController().signal,`immutable`);e.push(n)}r.resolve(Object.freeze(e))}),r.promise}#t(e){let t=this.#e,n=[...t],i=[],a=[];try{for(let n of e){if(n.type!==`delete`&&n.type!==`put`)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`operation type does not match "delete" or "put"`});if(n.type===`delete`&&n.response!=null)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`delete operation should not have an associated response`});if(this.#n(n.request,n.options,i).length)throw new DOMException(`???`,`InvalidStateError`);let e;if(n.type===`delete`){if(e=this.#n(n.request,n.options),e.length===0)return[];for(let n of e){let e=t.indexOf(n);r(e!==-1),t.splice(e,1)}}else if(n.type===`put`){if(n.response==null)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`put operation should have an associated response`});let a=n.request;if(!v(a.url))throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`expected http or https scheme`});if(a.method!==`GET`)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`not get method`});if(n.options!=null)throw l.errors.exception({header:`Cache.#batchCacheOperations`,message:`options must not be defined`});e=this.#n(n.request);for(let n of e){let e=t.indexOf(n);r(e!==-1),t.splice(e,1)}t.push([n.request,n.response]),i.push([n.request,n.response])}a.push([n.request,n.response])}return a}catch(e){throw this.#e.length=0,this.#e=n,e}}#n(e,t,n){let r=[],i=n??this.#e;for(let n of i){let[i,a]=n;this.#r(e,i,a,t)&&r.push(n)}return r}#r(e,t,n=null,r){let i=new URL(e.url),s=new URL(t.url);if(r?.ignoreSearch&&(s.search=``,i.search=``),!a(i,s,!0))return!1;if(n==null||r?.ignoreVary||!n.headersList.contains(`vary`))return!0;let c=o(n.headersList.get(`vary`));for(let n of c)if(n===`*`||t.headersList.get(n)!==e.headersList.get(n))return!1;return!0}#i(e,t,n=1/0){let r=null;if(e!==void 0){if(l.is.Request(e)){if(r=h(e),r.method!==`GET`&&!t.ignoreMethod)return[]}else typeof e==`string`&&(r=h(new p(e)))}let i=[];if(e===void 0)for(let e of this.#e)i.push(e[1]);else{let e=this.#n(r,t);for(let t of e)i.push(t[1])}let a=[];for(let e of i){let t=d(u(e),`immutable`);if(a.push(t),a.length>=n)break}return Object.freeze(a)}static{l.is.Cache=e=>typeof e==`object`&&!!e&&#e in e}};Object.defineProperties(b.prototype,{[Symbol.toStringTag]:{value:`Cache`,configurable:!0},match:s,matchAll:s,add:s,addAll:s,put:s,delete:s,keys:s});let x=[{key:`ignoreSearch`,converter:l.converters.boolean,defaultValue:()=>!1},{key:`ignoreMethod`,converter:l.converters.boolean,defaultValue:()=>!1},{key:`ignoreVary`,converter:l.converters.boolean,defaultValue:()=>!1}];l.converters.CacheQueryOptions=l.dictionaryConverter(x),l.converters.MultiCacheQueryOptions=l.dictionaryConverter([...x,{key:`cacheName`,converter:l.converters.DOMString}]),l.converters.Response=l.interfaceConverter(l.is.Response,`Response`),l.converters[`sequence`]=l.sequenceConverter(l.converters.RequestInfo),n.exports={Cache:b}})),Qa=/* @__PURE__ */ a(((e,t)=>{let{Cache:n}=Za(),{webidl:r}=Ri(),{kEnumerableProperty:i}=Si(),{kConstruct:a}=_i();var o=class{#e=/* @__PURE__ */ new Map;constructor(){arguments[0]!==a&&r.illegalConstructor(),r.util.markAsUncloneable(this)}async match(e,t={}){if(r.brandCheck(this,r.is.CacheStorage),r.argumentLengthCheck(arguments,1,`CacheStorage.match`),e=r.converters.RequestInfo(e),t=r.converters.MultiCacheQueryOptions(t),t.cacheName!=null){if(this.#e.has(t.cacheName)){let r=this.#e.get(t.cacheName);return await new n(a,r).match(e,t)}}else for(let r of this.#e.values()){let i=await new n(a,r).match(e,t);if(i!==void 0)return i}}async has(e){r.brandCheck(this,r.is.CacheStorage);let t=`CacheStorage.has`;return r.argumentLengthCheck(arguments,1,t),e=r.converters.DOMString(e,t,`cacheName`),this.#e.has(e)}async open(e){r.brandCheck(this,r.is.CacheStorage);let t=`CacheStorage.open`;if(r.argumentLengthCheck(arguments,1,t),e=r.converters.DOMString(e,t,`cacheName`),this.#e.has(e)){let t=this.#e.get(e);return new n(a,t)}let i=[];return this.#e.set(e,i),new n(a,i)}async delete(e){r.brandCheck(this,r.is.CacheStorage);let t=`CacheStorage.delete`;return r.argumentLengthCheck(arguments,1,t),e=r.converters.DOMString(e,t,`cacheName`),this.#e.delete(e)}async keys(){return r.brandCheck(this,r.is.CacheStorage),[...this.#e.keys()]}static{r.is.CacheStorage=e=>typeof e==`object`&&!!e&&#e in e}};Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:`CacheStorage`,configurable:!0},match:i,has:i,open:i,delete:i,keys:i}),t.exports={CacheStorage:o}})),$a=/* @__PURE__ */ a(((e,t)=>{t.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}})),eo=/* @__PURE__ */ a(((e,t)=>{function n(e){for(let t=0;t=0&&n<=8||n>=10&&n<=31||n===127)return!0}return!1}function r(e){for(let t=0;t126||n===34||n===40||n===41||n===60||n===62||n===64||n===44||n===59||n===58||n===92||n===47||n===91||n===93||n===63||n===61||n===123||n===125)throw Error(`Invalid cookie name`)}}function i(e){let t=e.length,n=0;if(e[0]===`"`){if(t===1||e[t-1]!==`"`)throw Error(`Invalid cookie value`);--t,++n}for(;n126||t===34||t===44||t===59||t===92)throw Error(`Invalid cookie value`)}}function a(e){for(let t=0;t126||n===59)throw Error(`Invalid cookie path`)}}function o(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function s(e){if(e===` `)return;if(e.length>255)throw Error(`Invalid cookie domain`);let t=0;for(let n=0;n63)throw Error(`Invalid cookie domain`)}if(t===0||e.charCodeAt(e.length-1)===45)throw Error(`Invalid cookie domain`)}let c=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],l=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],u=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,`0`));function d(e){return typeof e==`number`&&(e=new Date(e)),`${c[e.getUTCDay()]}, ${u[e.getUTCDate()]} ${l[e.getUTCMonth()]} ${e.getUTCFullYear()} ${u[e.getUTCHours()]}:${u[e.getUTCMinutes()]}:${u[e.getUTCSeconds()]} GMT`}function f(e){if(e<0)throw Error(`Invalid cookie max-age`)}function p(e){if(e.name.length===0)return null;r(e.name),i(e.value);let t=[`${e.name}=${e.value}`];e.name.startsWith(`__Secure-`)&&(e.secure=!0),e.name.startsWith(`__Host-`)&&(e.secure=!0,e.domain=null,e.path=`/`),e.secure&&t.push(`Secure`),e.httpOnly&&t.push(`HttpOnly`),typeof e.maxAge==`number`&&(f(e.maxAge),t.push(`Max-Age=${e.maxAge}`)),e.domain&&(s(e.domain),t.push(`Domain=${e.domain}`)),e.path&&(a(e.path),t.push(`Path=${e.path}`)),e.expires!=null&&e.expires.toString()!==`Invalid Date`&&t.push(`Expires=${d(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`);for(let n of e.unparsed){if(!n.includes(`=`))throw Error(`Invalid unparsed`);let[e,...a]=n.split(`=`),o=e.trim(),s=a.join(`=`);r(o),i(s),t.push(`${o}=${s}`)}return t.join(`; `)}t.exports={isCTLExcludingHtab:n,validateCookieName:r,validateCookiePath:a,validateCookieValue:i,toIMFDate:d,stringify:p}})),to=/* @__PURE__ */ a(((e,n)=>{let{collectASequenceOfCodePointsFast:r}=Ii(),{maxNameValuePairSize:i,maxAttributeValueSize:a}=$a(),{isCTLExcludingHtab:o}=eo(),s=t(`node:assert`);function c(e){if(o(e))return null;let t=``,n=``,a=``,s=``;if(e.includes(`;`)){let i={position:0};t=r(`;`,e,i),n=e.slice(i.position)}else t=e;if(!t.includes(`=`))s=t;else{let e={position:0};a=r(`=`,t,e),s=t.slice(e.position+1)}return a=a.trim(),s=s.trim(),a.length+s.length>i?null:{name:a,value:s,...l(n)}}function l(e,t={}){for(;;){if(e.length===0)return t;s(e[0]===`;`),e=e.slice(1);let n=``;e.includes(`;`)?(n=r(`;`,e,{position:0}),e=e.slice(n.length)):(n=e,e=``);let i=``,o=``;if(n.includes(`=`)){let e={position:0};i=r(`=`,n,e),o=n.slice(e.position+1)}else i=n;if(i=i.trim(),o=o.trim(),o.length>a)continue;let c=i.toLowerCase();if(c===`expires`){let e=new Date(o);Number.isNaN(e.getTime())||(t.expires=e)}else if(c===`max-age`){let e=o.charCodeAt(0),n=e>=48&&e<=57,r=o[0]===`-`&&o.length>1;if(!n&&!r||/[^\d]/.test(o.slice(1)))continue;t.maxAge=Number(o)}else if(c===`domain`){let e=o;e[0]===`.`&&(e=e.slice(1)),e=e.toLowerCase(),t.domain=e}else if(c===`path`){let e=``;e=o.length===0||o[0]!==`/`?`/`:o,t.path=e}else if(c===`secure`)t.secure=!0;else if(c===`httponly`)t.httpOnly=!0;else if(c===`samesite`){let e=o.toLowerCase();e===`none`?t.sameSite=`None`:e===`strict`?t.sameSite=`Strict`:e===`lax`&&(t.sameSite=`Lax`)}else t.unparsed??=[],t.unparsed.push(`${i}=${o}`)}}n.exports={parseSetCookie:c,parseUnparsedAttributes:l}})),no=/* @__PURE__ */ a(((e,t)=>{let{parseSetCookie:n}=to(),{stringify:r}=eo(),{webidl:i}=Ri(),a=e=>i.brandCheck(e,i.util.MakeTypeAssertion(globalThis.Headers)),o=e=>i.brandCheck(e,i.is.Headers);function s(e){try{o(e);return}catch{}a(e)}function c(e){i.argumentLengthCheck(arguments,1,`getCookies`),s(e);let t=e.get(`cookie`),n={__proto__:null};if(!t)return n;for(let e of t.split(`;`)){let[t,...r]=e.split(`=`);n[t.trim()]=r.join(`=`)}return n}function l(e,t,n){s(e);let r=`deleteCookie`;i.argumentLengthCheck(arguments,2,r),t=i.converters.DOMString(t,r,`name`),n=i.converters.DeleteCookieAttributes(n),f(e,{name:t,value:``,expires:/* @__PURE__ */ new Date(0),...n})}function u(e){i.argumentLengthCheck(arguments,1,`getSetCookies`),s(e);let t=e.getSetCookie();return t?t.map(e=>n(e)):[]}function d(e){return e=i.converters.DOMString(e),n(e)}function f(e,t){i.argumentLengthCheck(arguments,2,`setCookie`),s(e),t=i.converters.Cookie(t);let n=r(t);n&&e.append(`set-cookie`,n,!0)}i.converters.DeleteCookieAttributes=i.dictionaryConverter([{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:()=>null}]),i.converters.Cookie=i.dictionaryConverter([{converter:i.converters.DOMString,key:`name`},{converter:i.converters.DOMString,key:`value`},{converter:i.nullableConverter(e=>typeof e==`number`?i.converters[`unsigned long long`](e):new Date(e)),key:`expires`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters[`long long`]),key:`maxAge`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.boolean),key:`secure`,defaultValue:()=>null},{converter:i.nullableConverter(i.converters.boolean),key:`httpOnly`,defaultValue:()=>null},{converter:i.converters.USVString,key:`sameSite`,allowedValues:[`Strict`,`Lax`,`None`]},{converter:i.sequenceConverter(i.converters.DOMString),key:`unparsed`,defaultValue:()=>[]}]),t.exports={getCookies:c,deleteCookie:l,getSetCookies:u,setCookie:f,parseCookie:d}})),ro=/* @__PURE__ */ a(((e,t)=>{let{webidl:n}=Ri(),{kEnumerableProperty:r}=Si(),{kConstruct:i}=_i(),a;var o=class e extends Event{#e;constructor(e,t={}){if(e===i){super(arguments[1],arguments[2]),n.util.markAsUncloneable(this);return}let r=`MessageEvent constructor`;n.argumentLengthCheck(arguments,1,r),e=n.converters.DOMString(e,r,`type`),t=n.converters.MessageEventInit(t,r,`eventInitDict`),super(e,t),this.#e=t,n.util.markAsUncloneable(this)}get data(){return n.brandCheck(this,n.is.MessageEvent),this.#e.data}get origin(){return n.brandCheck(this,n.is.MessageEvent),this.#e.origin}get lastEventId(){return n.brandCheck(this,n.is.MessageEvent),this.#e.lastEventId}get source(){return n.brandCheck(this,n.is.MessageEvent),this.#e.source}get ports(){return n.brandCheck(this,n.is.MessageEvent),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(t,r=!1,i=!1,a=null,o=``,s=``,c=null,l=[]){return n.brandCheck(this,n.is.MessageEvent),n.argumentLengthCheck(arguments,1,`MessageEvent.initMessageEvent`),new e(t,{bubbles:r,cancelable:i,data:a,origin:o,lastEventId:s,source:c,ports:l})}static{a=(t,n)=>{let r=new e(i,t,n);return r.#e=n,r.#e.data??=null,r.#e.origin??=``,r.#e.lastEventId??=``,r.#e.source??=null,r.#e.ports??=[],r},n.is.MessageEvent=e=>typeof e==`object`&&!!e&&#e in e}},s=class extends Event{#e;constructor(e,t={}){let r=`CloseEvent constructor`;n.argumentLengthCheck(arguments,1,r),e=n.converters.DOMString(e,r,`type`),t=n.converters.CloseEventInit(t),super(e,t),this.#e=t,n.util.markAsUncloneable(this)}get wasClean(){return n.brandCheck(this,n.is.CloseEvent),this.#e.wasClean}get code(){return n.brandCheck(this,n.is.CloseEvent),this.#e.code}get reason(){return n.brandCheck(this,n.is.CloseEvent),this.#e.reason}static{n.is.CloseEvent=e=>typeof e==`object`&&!!e&&#e in e}},c=class extends Event{#e;constructor(e,t){let r=`ErrorEvent constructor`;n.argumentLengthCheck(arguments,1,r),super(e,t),n.util.markAsUncloneable(this),e=n.converters.DOMString(e,r,`type`),t=n.converters.ErrorEventInit(t??{}),this.#e=t}get message(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.message}get filename(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.filename}get lineno(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.lineno}get colno(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.colno}get error(){return n.brandCheck(this,n.is.ErrorEvent),this.#e.error}static{n.is.ErrorEvent=e=>typeof e==`object`&&!!e&&#e in e}};Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:`MessageEvent`,configurable:!0},data:r,origin:r,lastEventId:r,source:r,ports:r,initMessageEvent:r}),Object.defineProperties(s.prototype,{[Symbol.toStringTag]:{value:`CloseEvent`,configurable:!0},reason:r,code:r,wasClean:r}),Object.defineProperties(c.prototype,{[Symbol.toStringTag]:{value:`ErrorEvent`,configurable:!0},message:r,filename:r,lineno:r,colno:r,error:r}),n.converters.MessagePort=n.interfaceConverter(n.is.MessagePort,`MessagePort`),n.converters[`sequence`]=n.sequenceConverter(n.converters.MessagePort);let l=[{key:`bubbles`,converter:n.converters.boolean,defaultValue:()=>!1},{key:`cancelable`,converter:n.converters.boolean,defaultValue:()=>!1},{key:`composed`,converter:n.converters.boolean,defaultValue:()=>!1}];n.converters.MessageEventInit=n.dictionaryConverter([...l,{key:`data`,converter:n.converters.any,defaultValue:()=>null},{key:`origin`,converter:n.converters.USVString,defaultValue:()=>``},{key:`lastEventId`,converter:n.converters.DOMString,defaultValue:()=>``},{key:`source`,converter:n.nullableConverter(n.converters.MessagePort),defaultValue:()=>null},{key:`ports`,converter:n.converters[`sequence`],defaultValue:()=>[]}]),n.converters.CloseEventInit=n.dictionaryConverter([...l,{key:`wasClean`,converter:n.converters.boolean,defaultValue:()=>!1},{key:`code`,converter:n.converters[`unsigned short`],defaultValue:()=>0},{key:`reason`,converter:n.converters.USVString,defaultValue:()=>``}]),n.converters.ErrorEventInit=n.dictionaryConverter([...l,{key:`message`,converter:n.converters.DOMString,defaultValue:()=>``},{key:`filename`,converter:n.converters.USVString,defaultValue:()=>``},{key:`lineno`,converter:n.converters[`unsigned long`],defaultValue:()=>0},{key:`colno`,converter:n.converters[`unsigned long`],defaultValue:()=>0},{key:`error`,converter:n.converters.any}]),t.exports={MessageEvent:o,CloseEvent:s,ErrorEvent:c,createFastMessageEvent:a}})),io=/* @__PURE__ */ a(((e,t)=>{t.exports={uid:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,sentCloseFrameState:{SENT:1,RECEIVED:2},staticPropertyDescriptors:{enumerable:!0,writable:!1,configurable:!1},states:{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},opcodes:{CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit:65535,parserStates:{INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer:Buffer.allocUnsafe(0),sendHints:{text:1,typedArray:2,arrayBuffer:3,blob:4}}})),ao=/* @__PURE__ */ a(((e,n)=>{let{states:r,opcodes:i}=io(),{isUtf8:a}=t(`node:buffer`),{removeHTTPWhitespace:o}=Li(),{collectASequenceOfCodePointsFast:s}=Ii();function c(e){return e===r.CONNECTING}function l(e){return e===r.OPEN}function u(e){return e===r.CLOSING}function d(e){return e===r.CLOSED}function f(e,t,n=(e,t)=>new Event(e,t),r={}){let i=n(e,r);t.dispatchEvent(i)}function p(e,t,n){e.onMessage(t,n)}function m(e){return e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer}function h(e){if(e.length===0)return!1;for(let t=0;t126||n===34||n===40||n===41||n===44||n===47||n===58||n===59||n===60||n===61||n===62||n===63||n===64||n===91||n===92||n===93||n===123||n===125)return!1}return!0}function g(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function v(e){return e===i.CLOSE||e===i.PING||e===i.PONG}function y(e){return e===i.CONTINUATION}function b(e){return e===i.TEXT||e===i.BINARY}function x(e){return b(e)||y(e)||v(e)}function S(e){let t={position:0},n=/* @__PURE__ */ new Map;for(;t.position57)return!1}let t=Number.parseInt(e,10);return t>=8&&t<=15}function w(e,t){let n;try{n=new URL(e,t)}catch(e){throw new DOMException(e,`SyntaxError`)}if(n.protocol===`http:`?n.protocol=`ws:`:n.protocol===`https:`&&(n.protocol=`wss:`),n.protocol!==`ws:`&&n.protocol!==`wss:`)throw new DOMException(`expected a ws: or wss: url`,`SyntaxError`);if(n.hash.length||n.href.endsWith(`#`))throw new DOMException(`hash`,`SyntaxError`);return n}function T(e,t){if(e!==null&&e!==1e3&&(e<3e3||e>4999))throw new DOMException(`invalid code`,`InvalidAccessError`);if(t!==null){let e=Buffer.byteLength(t);if(e>123)throw new DOMException(`Reason must be less than 123 bytes; received ${e}`,`SyntaxError`)}}n.exports={isConnecting:c,isEstablished:l,isClosing:u,isClosed:d,fireEvent:f,isValidSubprotocol:h,isValidStatusCode:g,websocketMessageReceived:p,utf8Decode:(()=>{if(typeof process.versions.icu==`string`){let e=new TextDecoder(`utf-8`,{fatal:!0});return e.decode.bind(e)}return function(e){if(a(e))return e.toString(`utf-8`);throw TypeError(`Invalid utf-8 received.`)}})(),isControlFrame:v,isContinuationFrame:y,isTextBinaryFrame:b,isValidOpcode:x,parseExtensions:S,isValidClientWindowBits:C,toArrayBuffer:m,getURLRecord:w,validateCloseCodeAndReason:T}})),oo=/* @__PURE__ */ a(((e,n)=>{let{runtimeFeatures:r}=Bi(),{maxUnsigned16Bit:i,opcodes:a}=io(),o=8192,s=null,c=o,l=r.has(`crypto`)?t(`node:crypto`).randomFillSync:null;function u(){return c===o&&(c=0,l(s??=Buffer.allocUnsafeSlow(o),0,o)),[s[c++],s[c++],s[c++],s[c++]]} /*! ws. MIT License. Einar Otto Stangvik */ -n.exports={WebsocketFrameSend:class{constructor(e){this.frameData=e}createFrame(e){let t=this.frameData,n=u(),r=t?.byteLength??0,a=r,o=6;r>i?(o+=8,a=127):r>125&&(o+=2,a=126);let s=Buffer.allocUnsafe(r+o);s[0]=s[1]=0,s[0]|=128,s[0]=(s[0]&240)+e,s[o-4]=n[0],s[o-3]=n[1],s[o-2]=n[2],s[o-1]=n[3],s[1]=a,a===126?s.writeUInt16BE(r,2):a===127&&(s[2]=s[3]=0,s.writeUIntBE(r,4,6)),s[1]|=128;for(let e=0;ei?(o+=8,r=127):n>125&&(o+=2,r=126);let s=Buffer.allocUnsafeSlow(o);return s[0]=128|a.TEXT,s[1]=r|128,s[o-4]=t[0],s[o-3]=t[1],s[o-2]=t[2],s[o-1]=t[3],r===126?s.writeUInt16BE(n,2):r===127&&(s[2]=s[3]=0,s.writeUIntBE(n,4,6)),[s,e]}},generateMask:u}})),oo=/* @__PURE__ */ a(((e,n)=>{let{uid:r,states:i,sentCloseFrameState:a,emptyBuffer:o,opcodes:s}=ro(),{parseExtensions:c,isClosed:l,isClosing:u,isEstablished:d,isConnecting:f,validateCloseCodeAndReason:p}=io(),{makeRequest:m}=Ka(),{fetching:h}=Ja(),{Headers:g,getHeadersList:v}=Wa(),{getDecodeSplit:y}=Ri(),{WebsocketFrameSend:b}=ao(),x=t(`node:assert`),{runtimeFeatures:S}=zi(),C=S.has(`crypto`)?t(`node:crypto`):null,w=!1;function T(e,t,n,i,a){let o=e;o.protocol=e.protocol===`ws:`?`http:`:`https:`;let s=m({urlList:[o],client:n,serviceWorkers:`none`,referrer:`no-referrer`,mode:`websocket`,credentials:`include`,cache:`no-store`,redirect:`error`,useURLCredentials:!0});a.headers&&(s.headersList=v(new g(a.headers)));let l=C.randomBytes(16).toString(`base64`);s.headersList.append(`sec-websocket-key`,l,!0),s.headersList.append(`sec-websocket-version`,`13`,!0);for(let e of t)s.headersList.append(`sec-websocket-protocol`,e,!0);return s.headersList.append(`sec-websocket-extensions`,`permessage-deflate; client_max_window_bits`,!0),h({request:s,useParallelQueue:!0,dispatcher:a.dispatcher,processResponse(e){if(e.type===`error`||e.status!==101){if(e.socket?.session==null){D(i,e,1002,`Received network error or non-101 status code.`,e.error);return}if(e.status!==200){D(i,e,1002,`Received network error or non-200 status code.`,e.error);return}}if(w===!1&&e.socket?.session!=null&&(process.emitWarning(`WebSocket over HTTP2 is experimental, and subject to change.`,`ExperimentalWarning`),w=!0),t.length!==0&&!e.headersList.get(`Sec-WebSocket-Protocol`)){D(i,e,1002,`Server did not respond with sent protocols.`);return}if(e.socket.session==null&&e.headersList.get(`Upgrade`)?.toLowerCase()!==`websocket`){D(i,e,1002,`Server did not set Upgrade header to "websocket".`);return}if(e.socket.session==null&&e.headersList.get(`Connection`)?.toLowerCase()!==`upgrade`){D(i,e,1002,`Server did not set Connection header to "upgrade".`);return}if(e.socket.session==null&&e.headersList.get(`Sec-WebSocket-Accept`)!==C.hash(`sha1`,l+r,`base64`)){D(i,e,1002,`Incorrect hash received in Sec-WebSocket-Accept header.`);return}let n=e.headersList.get(`Sec-WebSocket-Extensions`),a;if(n!==null&&(a=c(n),!a.has(`permessage-deflate`))){D(i,e,1002,`Sec-WebSocket-Extensions header does not match.`);return}let o=e.headersList.get(`Sec-WebSocket-Protocol`);if(o!==null){let t=y(`sec-websocket-protocol`,s.headersList);if(t===null||!t.includes(o)){D(i,e,1002,`Protocol was not set in the opening handshake.`);return}}e.socket.session!=null&&(e.socket.allowHalfOpen=!1),e.socket.on(`data`,i.onSocketData),e.socket.on(`close`,i.onSocketClose),e.socket.on(`error`,i.onSocketError),i.wasEverConnected=!0,i.onConnectionEstablished(e,a)}})}function E(e,t,n,r=!1){if(t??=null,n??=``,r&&p(t,n),!(l(e.readyState)||u(e.readyState))){if(!d(e.readyState))O(e),e.readyState=i.CLOSING;else if(!e.closeState.has(a.SENT)&&!e.closeState.has(a.RECEIVED)){let r=new b;n.length!==0&&t===null&&(t=1e3),x(t===null||Number.isInteger(t)),t===null&&n.length===0?r.frameData=o:t!==null&&n===null?(r.frameData=Buffer.allocUnsafe(2),r.frameData.writeUInt16BE(t,0)):t!==null&&n!==null?(r.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(n)),r.frameData.writeUInt16BE(t,0),r.frameData.write(n,2,`utf-8`)):r.frameData=o,e.socket.write(r.createFrame(s.CLOSE)),e.closeState.add(a.SENT),e.readyState=i.CLOSING}else e.readyState=i.CLOSING}}function D(e,t,n,r,i){t.socket?.session!=null&&!t.socket.destroyed&&t.socket.destroy(),O(e,n,r,i)}function O(e,t,n,r){d(e.readyState)&&E(e,t,n,!1),e.controller.abort(),f(e.readyState)?e.onSocketClose():e.socket?.destroyed===!1&&e.socket.destroy()}n.exports={establishWebSocketConnection:T,failWebsocketConnection:O,closeWebSocketConnection:E}})),so=/* @__PURE__ */ a(((e,n)=>{let{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:i}=t(`node:zlib`),{isValidClientWindowBits:a}=io(),{MessageSizeExceededError:o}=vi(),s=Buffer.from([0,0,255,255]),c=Symbol(`kBuffer`),l=Symbol(`kLength`);n.exports={PerMessageDeflate:class{#e;#t={};#n=0;constructor(e,t){this.#t.serverNoContextTakeover=e.has(`server_no_context_takeover`),this.#t.serverMaxWindowBits=e.get(`server_max_window_bits`),this.#n=t.maxPayloadSize}decompress(e,t,n){if(!this.#e){let e=i;if(this.#t.serverMaxWindowBits){if(!a(this.#t.serverMaxWindowBits)){n(/* @__PURE__ */ Error(`Invalid server_max_window_bits`));return}e=Number.parseInt(this.#t.serverMaxWindowBits)}try{this.#e=r({windowBits:e})}catch(e){n(e);return}this.#e[c]=[],this.#e[l]=0,this.#e.on(`data`,e=>{this.#e[l]+=e.length,this.#n>0&&this.#e[l]>this.#n?(n(new o),this.#e.removeAllListeners(),this.#e.destroy(),this.#e=null):this.#e[c].push(e)}),this.#e.on(`error`,e=>{this.#e=null,n(e)})}this.#e.write(e),t&&this.#e.write(s),this.#e.flush(()=>{if(!this.#e)return;let e=Buffer.concat(this.#e[c],this.#e[l]);this.#e[c].length=0,this.#e[l]=0,n(null,e)})}}}})),co=/* @__PURE__ */ a(((e,n)=>{let{Writable:r}=t(`node:stream`),i=t(`node:assert`),{parserStates:a,opcodes:o,states:s,emptyBuffer:c,sentCloseFrameState:l}=ro(),{isValidStatusCode:u,isValidOpcode:d,websocketMessageReceived:f,utf8Decode:p,isControlFrame:m,isTextBinaryFrame:h,isContinuationFrame:g}=io(),{failWebsocketConnection:v}=oo(),{WebsocketFrameSend:y}=ao(),{PerMessageDeflate:b}=so(),{MessageSizeExceededError:x}=vi();n.exports={ByteParser:class extends r{#e=[];#t=0;#n=0;#r=!1;#i=a.INFO;#a={};#o=[];#s;#c;#l;#u;constructor(e,t,n={}){super(),this.#c=e,this.#s=t??/* @__PURE__ */ new Map,this.#l=n.maxFragments??0,this.#u=n.maxPayloadSize??0,this.#s.has(`permessage-deflate`)&&this.#s.set(`permessage-deflate`,new b(t,n))}_write(e,t,n){this.#e.push(e),this.#n+=e.length,this.#r=!0,this.run(n)}#d(){return this.#u>0&&!m(this.#a.opcode)&&this.#a.payloadLength+this.#t>this.#u?(v(this.#c,1009,`Payload size exceeds maximum allowed size`),!1):!0}run(e){for(;this.#r;)if(this.#i===a.INFO){if(this.#n<2)return e();let t=this.consume(2),n=!!(t[0]&128),r=t[0]&15,i=(t[1]&128)==128,s=!n&&r!==o.CONTINUATION,c=t[1]&127,l=t[0]&64,u=t[0]&32,f=t[0]&16;if(!d(r))return v(this.#c,1002,`Invalid opcode received`),e();if(i)return v(this.#c,1002,`Frame cannot be masked`),e();if(l!==0&&!this.#s.has(`permessage-deflate`)){v(this.#c,1002,`Expected RSV1 to be clear.`);return}if(u!==0||f!==0){v(this.#c,1002,`RSV1, RSV2, RSV3 must be clear`);return}if(s&&!h(r)){v(this.#c,1002,`Invalid frame type was fragmented.`);return}if(h(r)&&this.#o.length>0){v(this.#c,1002,`Expected continuation frame`);return}if(this.#a.fragmented&&s){v(this.#c,1002,`Fragmented frame exceeded 125 bytes.`);return}if((c>125||s)&&m(r)){v(this.#c,1002,`Control frame either too large or fragmented`);return}if(g(r)&&this.#o.length===0&&!this.#a.compressed){v(this.#c,1002,`Unexpected continuation frame`);return}if(c<=125){if(this.#a.payloadLength=c,this.#i=a.READ_DATA,!this.#d())return}else c===126?this.#i=a.PAYLOADLENGTH_16:c===127&&(this.#i=a.PAYLOADLENGTH_64);h(r)&&(this.#a.binaryType=r,this.#a.compressed=l!==0),this.#a.opcode=r,this.#a.masked=i,this.#a.fin=n,this.#a.fragmented=s}else if(this.#i===a.PAYLOADLENGTH_16){if(this.#n<2)return e();let t=this.consume(2);if(this.#a.payloadLength=t.readUInt16BE(0),this.#i=a.READ_DATA,!this.#d())return}else if(this.#i===a.PAYLOADLENGTH_64){if(this.#n<8)return e();let t=this.consume(8),n=t.readUInt32BE(0),r=t.readUInt32BE(4);if(n!==0||r>2**31-1){v(this.#c,1009,`Received payload length > 2^31 bytes.`);return}if(this.#a.payloadLength=r,this.#i=a.READ_DATA,!this.#d())return}else if(this.#i===a.READ_DATA){if(this.#n{if(t){let e=t instanceof x?1009:1007;v(this.#c,e,t.message)}else this.writeFragments(n)&&(this.#u>0&&this.#t>this.#u?v(this.#c,1009,new x().message):this.#a.fin?(f(this.#c,this.#a.binaryType,this.consumeFragments()),this.#r=!0,this.#i=a.INFO,this.run(e)):(this.#i=a.INFO,this.#r=!0,this.run(e)))},this.#t),this.#r=!1;break}else{if(!this.writeFragments(t))return;!this.#a.fragmented&&this.#a.fin&&f(this.#c,this.#a.binaryType,this.consumeFragments()),this.#i=a.INFO}}}consume(e){if(e>this.#n)throw Error(`Called consume() before buffers satiated.`);if(e===0)return c;this.#n-=e;let t=this.#e[0];if(t.length>e)return this.#e[0]=t.subarray(e,t.length),t.subarray(0,e);if(t.length===e)return this.#e.shift();{let t=0,n=Buffer.allocUnsafeSlow(e);for(;t!==e;){let r=this.#e[0],i=r.length;if(i+t===e){n.set(this.#e.shift(),t);break}if(i+t>e){n.set(r.subarray(0,e-t),t),this.#e[0]=r.subarray(e-t);break}n.set(this.#e.shift(),t),t+=i}return n}}writeFragments(e){return this.#l>0&&this.#o.length===this.#l?(v(this.#c,1008,`Too many message fragments`),!1):(this.#t+=e.length,this.#o.push(e),!0)}consumeFragments(){let e=this.#o;if(this.#a.compressed=!1,e.length===1)return this.#t=0,e.shift();let t=0,n=Buffer.allocUnsafeSlow(this.#t);for(let r=0;r=2&&(t=e.readUInt16BE(0)),t!==void 0&&!u(t))return{code:1002,reason:`Invalid status code`,error:!0};let n=e.subarray(2);n[0]===239&&n[1]===187&&n[2]===191&&(n=n.subarray(3));try{n=p(n)}catch{return{code:1007,reason:`Invalid UTF-8`,error:!0}}return{code:t,reason:n,error:!1}}parseControlFrame(e){let{opcode:t,payloadLength:n}=this.#a;if(t===o.CLOSE){if(n===1)return v(this.#c,1002,`Received close frame with a 1-byte body.`),!1;if(this.#a.closeInfo=this.parseCloseBody(e),this.#a.closeInfo.error){let{code:e,reason:t}=this.#a.closeInfo;return v(this.#c,e,t),!1}if(!this.#c.closeState.has(l.SENT)&&!this.#c.closeState.has(l.RECEIVED)){let e=c;this.#a.closeInfo.code&&(e=Buffer.allocUnsafe(2),e.writeUInt16BE(this.#a.closeInfo.code,0));let t=new y(e);this.#c.socket.write(t.createFrame(o.CLOSE)),this.#c.closeState.add(l.SENT)}return this.#c.readyState=s.CLOSING,this.#c.closeState.add(l.RECEIVED),!1}if(t===o.PING){if(!this.#c.closeState.has(l.RECEIVED)){let t=new y(e);this.#c.socket.write(t.createFrame(o.PONG)),this.#c.onPing(e)}}else t===o.PONG&&this.#c.onPong(e);return!0}get closingInfo(){return this.#a.closeInfo}}}})),lo=/* @__PURE__ */ a(((e,t)=>{let{WebsocketFrameSend:n}=ao(),{opcodes:r,sendHints:i}=ro(),a=Ki();var o=class{#e=new a;#t=!1;#n;constructor(e){this.#n=e}add(e,t,r){if(r!==i.blob){if(this.#t){let n={promise:null,callback:t,frame:s(e,r)};this.#e.push(n)}else if(r===i.text){let{0:r,1:i}=n.createFastTextFrame(e);this.#n.cork(),this.#n.write(r),this.#n.write(i,t),this.#n.uncork()}else this.#n.write(s(e,r),t);return}let a={promise:e.arrayBuffer().then(e=>{a.promise=null,a.frame=s(e,r)}),callback:t,frame:null};this.#e.push(a),this.#t||this.#r()}async#r(){this.#t=!0;let e=this.#e;for(;!e.isEmpty();){let t=e.shift();t.promise!==null&&await t.promise,this.#n.write(t.frame,t.callback),t.callback=t.frame=null}this.#t=!1}};function s(e,t){return new n(c(e,t)).createFrame(t===i.text?r.TEXT:r.BINARY)}function c(e,t){switch(t){case i.text:case i.typedArray:return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);case i.arrayBuffer:case i.blob:return new Uint8Array(e)}}t.exports={SendQueue:o}})),uo=/* @__PURE__ */ a(((e,n)=>{let{isArrayBuffer:r}=t(`node:util/types`),{webidl:i}=Li(),{URLSerializer:a}=Ii(),{environmentSettingsObject:o}=Ri(),{staticPropertyDescriptors:s,states:c,sentCloseFrameState:l,sendHints:u,opcodes:d}=ro(),{isConnecting:f,isEstablished:p,isClosing:m,isClosed:h,isValidSubprotocol:g,fireEvent:v,utf8Decode:y,toArrayBuffer:b,getURLRecord:x}=io(),{establishWebSocketConnection:S,closeWebSocketConnection:C,failWebsocketConnection:w}=oo(),{ByteParser:T}=co(),{kEnumerableProperty:E}=xi(),{getGlobalDispatcher:D}=U(),{ErrorEvent:O,CloseEvent:k,createFastMessageEvent:A}=no(),{SendQueue:j}=lo(),{WebsocketFrameSend:M}=ao(),{channels:N}=Ci(),P=Symbol.for(`nodejs.ref`),F=Symbol.for(`nodejs.unref`),I;function ee(e){return typeof e?.address==`function`?e.address():typeof e?.session?.socket?.address==`function`?e.session.socket.address():null}var L=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#t=0;#n=``;#r=``;#i=!0;#a;#o={onConnectionEstablished:(e,t)=>this.#u(e,t),onMessage:(e,t)=>this.#d(e,t),onParserError:e=>w(this.#o,null,e.message),onParserDrain:()=>this.#f(),onSocketData:e=>{this.#l.write(e)||this.#o.socket.pause()},onSocketError:e=>{this.#o.readyState=c.CLOSING,N.socketError.hasSubscribers&&N.socketError.publish(e),this.#o.socket.destroy()},onSocketClose:()=>this.#p(),onPing:e=>{N.ping.hasSubscribers&&N.ping.publish({payload:e,websocket:this})},onPong:e=>{N.pong.hasSubscribers&&N.pong.publish({payload:e,websocket:this})},readyState:c.CONNECTING,socket:null,closeState:/* @__PURE__ */ new Set,controller:null,wasEverConnected:!1};#s;#c;#l;constructor(t,n=[]){super(),i.util.markAsUncloneable(this);let r=`WebSocket constructor`;i.argumentLengthCheck(arguments,1,r);let a=i.converters[`DOMString or sequence or WebSocketInit`](n,r,`options`);t=i.converters.USVString(t),n=a.protocols;let s=o.settingsObject.baseUrl,c=x(t,s);if(typeof n==`string`&&(n=[n]),n.length!==new Set(n.map(e=>e.toLowerCase())).size||n.length>0&&!n.every(e=>g(e)))throw new DOMException(`Invalid Sec-WebSocket-Protocol value`,`SyntaxError`);this.#s=new URL(c.href);let l=o.settingsObject;this.#o.controller=S(c,n,l,this.#o,a),this.#o.readyState=e.CONNECTING,this.#c=`blob`}[P](){this.#i=!0,this.#o.socket?.ref?.()}[F](){this.#i=!1,this.#o.socket?.unref?.()}close(e=void 0,t=void 0){i.brandCheck(this,i.is.WebSocket),e!==void 0&&(e=i.converters[`unsigned short`](e,`WebSocket.close`,`code`,i.attributes.Clamp)),t!==void 0&&(t=i.converters.USVString(t)),e??=null,t??=``,C(this.#o,e,t,!0)}send(e){i.brandCheck(this,i.is.WebSocket);let t=`WebSocket.send`;if(i.argumentLengthCheck(arguments,1,t),e=i.converters.WebSocketSendData(e,t,`data`),f(this.#o.readyState))throw new DOMException(`Sent before connected.`,`InvalidStateError`);if(p(this.#o.readyState)&&!m(this.#o.readyState)){if(typeof e==`string`){let t=Buffer.from(e);this.#t+=t.byteLength,this.#a.add(t,()=>{this.#t-=t.byteLength},u.text)}else r(e)?(this.#t+=e.byteLength,this.#a.add(e,()=>{this.#t-=e.byteLength},u.arrayBuffer)):ArrayBuffer.isView(e)?(this.#t+=e.byteLength,this.#a.add(e,()=>{this.#t-=e.byteLength},u.typedArray)):i.is.Blob(e)&&(this.#t+=e.size,this.#a.add(e,()=>{this.#t-=e.size},u.blob))}}get readyState(){return i.brandCheck(this,i.is.WebSocket),this.#o.readyState}get bufferedAmount(){return i.brandCheck(this,i.is.WebSocket),this.#t}get url(){return i.brandCheck(this,i.is.WebSocket),a(this.#s)}get extensions(){return i.brandCheck(this,i.is.WebSocket),this.#r}get protocol(){return i.brandCheck(this,i.is.WebSocket),this.#n}get onopen(){return i.brandCheck(this,i.is.WebSocket),this.#e.open}set onopen(e){i.brandCheck(this,i.is.WebSocket),this.#e.open&&this.removeEventListener(`open`,this.#e.open);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.open=null:(this.addEventListener(`open`,t),this.#e.open=e)}get onerror(){return i.brandCheck(this,i.is.WebSocket),this.#e.error}set onerror(e){i.brandCheck(this,i.is.WebSocket),this.#e.error&&this.removeEventListener(`error`,this.#e.error);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.error=null:(this.addEventListener(`error`,t),this.#e.error=e)}get onclose(){return i.brandCheck(this,i.is.WebSocket),this.#e.close}set onclose(e){i.brandCheck(this,i.is.WebSocket),this.#e.close&&this.removeEventListener(`close`,this.#e.close);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.close=null:(this.addEventListener(`close`,t),this.#e.close=e)}get onmessage(){return i.brandCheck(this,i.is.WebSocket),this.#e.message}set onmessage(e){i.brandCheck(this,i.is.WebSocket),this.#e.message&&this.removeEventListener(`message`,this.#e.message);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.message=null:(this.addEventListener(`message`,t),this.#e.message=e)}get binaryType(){return i.brandCheck(this,i.is.WebSocket),this.#c}set binaryType(e){i.brandCheck(this,i.is.WebSocket),this.#c=e!==`blob`&&e!==`arraybuffer`?`blob`:e}#u(e,t){this.#o.socket=e.socket,this.#i||this.#o.socket.unref?.();let n=this.#o.controller.dispatcher?.webSocketOptions?.maxFragments,r=this.#o.controller.dispatcher?.webSocketOptions?.maxPayloadSize,i=new T(this.#o,t,{maxFragments:n,maxPayloadSize:r});i.on(`drain`,()=>this.#o.onParserDrain()),i.on(`error`,e=>this.#o.onParserError(e)),this.#l=i,this.#a=new j(e.socket),this.#o.readyState=c.OPEN;let a=e.headersList.get(`sec-websocket-extensions`);a!==null&&(this.#r=a);let o=e.headersList.get(`sec-websocket-protocol`);if(o!==null&&(this.#n=o),v(`open`,this),N.open.hasSubscribers){let t=e.headersList.entries;N.open.publish({address:ee(e.socket),protocol:this.#n,extensions:this.#r,websocket:this,handshakeResponse:{status:e.status,statusText:e.statusText,headers:t}})}}#d(e,t){if(this.#o.readyState!==c.OPEN)return;let n;if(e===d.TEXT)try{n=y(t)}catch{w(this.#o,1007,`Received invalid UTF-8 in text frame.`);return}else e===d.BINARY&&(n=this.#c===`blob`?new Blob([t]):b(t));v(`message`,this,A,{origin:this.#s.origin,data:n})}#f(){this.#o.socket.resume()}#p(){let e=this.#o.closeState.has(l.SENT)&&this.#o.closeState.has(l.RECEIVED),t=1005,n=``,r=this.#l?.closingInfo;r&&!r.error&&(t=r.code??1005,n=r.reason),this.#o.readyState=c.CLOSED,this.#o.closeState.has(l.RECEIVED)||(t=1006,v(`error`,this,(e,t)=>new O(e,t),{error:TypeError(n)})),v(`close`,this,(e,t)=>new k(e,t),{wasClean:e,code:t,reason:n}),N.close.hasSubscribers&&N.close.publish({websocket:this,code:t,reason:n})}static{I=(e,t)=>{if(Buffer.isBuffer(t)){if(t.length>125)throw TypeError(`A PING frame cannot have a body larger than 125 bytes.`)}else if(t!==void 0)throw TypeError(`Expected buffer payload`);let n=e.#o.readyState;if(p(n)&&!m(n)&&!h(n)){let n=new M(t);e.#o.socket.write(n.createFrame(d.PING))}},i.is.WebSocket=e=>typeof e==`object`&&!!e&&#o in e}};L.CONNECTING=L.prototype.CONNECTING=c.CONNECTING,L.OPEN=L.prototype.OPEN=c.OPEN,L.CLOSING=L.prototype.CLOSING=c.CLOSING,L.CLOSED=L.prototype.CLOSED=c.CLOSED,Object.defineProperties(L.prototype,{CONNECTING:s,OPEN:s,CLOSING:s,CLOSED:s,url:E,readyState:E,bufferedAmount:E,onopen:E,onerror:E,onclose:E,close:E,onmessage:E,binaryType:E,send:E,extensions:E,protocol:E,[Symbol.toStringTag]:{value:`WebSocket`,writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(L,{CONNECTING:s,OPEN:s,CLOSING:s,CLOSED:s}),i.converters[`sequence`]=i.sequenceConverter(i.converters.DOMString),i.converters[`DOMString or sequence`]=function(e,t,n){return i.util.Type(e)===i.util.Types.OBJECT&&Symbol.iterator in e?i.converters[`sequence`](e):i.converters.DOMString(e,t,n)},i.converters.WebSocketInit=i.dictionaryConverter([{key:`protocols`,converter:i.converters[`DOMString or sequence`],defaultValue:()=>[]},{key:`dispatcher`,converter:i.converters.any,defaultValue:()=>D()},{key:`headers`,converter:i.nullableConverter(i.converters.HeadersInit)}]),i.converters[`DOMString or sequence or WebSocketInit`]=function(e){return i.util.Type(e)===i.util.Types.OBJECT&&!(Symbol.iterator in e)?i.converters.WebSocketInit(e):{protocols:i.converters[`DOMString or sequence`](e)}},i.converters.WebSocketSendData=function(e){return i.util.Type(e)===i.util.Types.OBJECT&&(i.is.Blob(e)||i.is.BufferSource(e))?e:i.converters.USVString(e)},n.exports={WebSocket:L,ping:I}})),fo=/* @__PURE__ */ a(((e,t)=>{let{webidl:n}=Li(),{validateCloseCodeAndReason:r}=io(),{kConstruct:i}=gi(),{kEnumerableProperty:a}=xi();function o(){class e extends DOMException{get reason(){return``}}return new e().reason===void 0?new Proxy(DOMException,{construct(e,t,n){let r=Reflect.construct(e,t,e);return Object.setPrototypeOf(r,n.prototype),r}}):DOMException}let s;var c=class e extends o(){#e;#t;constructor(e=``,t=void 0){if(e=n.converters.DOMString(e,`WebSocketError`,`message`),super(e,`WebSocketError`),t===i)return;t!==null&&(t=n.converters.WebSocketCloseInfo(t));let a=t.closeCode??null,o=t.reason??``;r(a,o),o.length!==0&&a===null&&(a=1e3),this.#e=a,this.#t=o}get closeCode(){return this.#e}get reason(){return this.#t}static{s=(t,n,r)=>{let a=new e(t,i);return a.#e=n,a.#t=r,a},n.is.WebSocketError=e=>typeof e==`object`&&!!e&&#t in e}};Object.defineProperties(c.prototype,{closeCode:a,reason:a,[Symbol.toStringTag]:{value:`WebSocketError`,writable:!1,enumerable:!1,configurable:!0}}),t.exports={WebSocketError:c,createUnvalidatedWebSocketError:s}})),po=/* @__PURE__ */ a(((e,n)=>{let{addAbortListener:r}=t(`node:events`),{environmentSettingsObject:i,readableStreamClose:a}=Ri(),{states:o,opcodes:s,sentCloseFrameState:c}=ro(),{webidl:l}=Li(),{getURLRecord:u,isValidSubprotocol:d,isEstablished:f,utf8Decode:p}=io(),{establishWebSocketConnection:m,failWebsocketConnection:h,closeWebSocketConnection:g}=oo(),{channels:v}=Ci(),{WebsocketFrameSend:y}=ao(),{ByteParser:b}=co(),{WebSocketError:x,createUnvalidatedWebSocketError:S}=fo(),{kEnumerableProperty:C}=xi(),{utf8DecodeBytes:w}=Pi(),T=!1;var E=class{#e;#t;#n;#r;#i;#a;#o=!1;#s={onConnectionEstablished:(e,t)=>this.#u(e,t),onMessage:(e,t)=>this.#d(e,t),onParserError:e=>h(this.#s,null,e.message),onParserDrain:()=>this.#s.socket.resume(),onSocketData:e=>{this.#c.write(e)||this.#s.socket.pause()},onSocketError:e=>{this.#s.readyState=o.CLOSING,v.socketError.hasSubscribers&&v.socketError.publish(e),this.#s.socket.destroy()},onSocketClose:()=>queueMicrotask(()=>this.#f()),onPing:()=>{},onPong:()=>{},readyState:o.CONNECTING,socket:null,closeState:/* @__PURE__ */ new Set,controller:null,wasEverConnected:!1};#c;constructor(e,t=void 0){T||=(process.emitWarning(`WebSocketStream is experimental! Expect it to change at any time.`,{code:`UNDICI-WSS`}),!0),l.argumentLengthCheck(arguments,1,`WebSocket`),e=l.converters.USVString(e),t!==null&&(t=l.converters.WebSocketStreamOptions(t));let n=i.settingsObject.baseUrl,a=u(e,n),s=t.protocols;if(s.length!==new Set(s.map(e=>e.toLowerCase())).size||s.length>0&&!s.every(e=>d(e)))throw new DOMException(`Invalid Sec-WebSocket-Protocol value`,`SyntaxError`);if(this.#e=a.toString(),this.#t=Promise.withResolvers(),this.#n=Promise.withResolvers(),t.signal!=null){let e=t.signal;if(e.aborted){this.#t.reject(e.reason),this.#n.reject(e.reason);return}r(e,()=>{f(this.#s.readyState)||(h(this.#s),this.#s.readyState=o.CLOSING,this.#t.reject(e.reason),this.#n.reject(e.reason),this.#o=!0)})}let c=i.settingsObject;this.#s.controller=m(a,s,c,this.#s,t)}get url(){return this.#e.toString()}get opened(){return this.#t.promise}get closed(){return this.#n.promise}close(e=void 0){e!==null&&(e=l.converters.WebSocketCloseInfo(e));let t=e.closeCode??null,n=e.reason;g(this.#s,t,n,!0)}#l(e){e=l.converters.WebSocketStreamWrite(e);let t=Promise.withResolvers(),n=null,r=null;if(l.is.BufferSource(e))n=new Uint8Array(ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e.slice()),r=s.BINARY;else{let i;try{i=l.converters.DOMString(e)}catch(e){return t.reject(e),t.promise}n=new TextEncoder().encode(i),r=s.TEXT}if(!this.#s.closeState.has(c.SENT)&&!this.#s.closeState.has(c.RECEIVED)){let e=new y(n);this.#s.socket.write(e.createFrame(r),()=>{t.resolve(void 0)})}else t.resolve(void 0);return t.promise}#u(e,t){this.#s.socket=e.socket;let n=this.#s.controller.dispatcher?.webSocketOptions?.maxFragments,r=this.#s.controller.dispatcher?.webSocketOptions?.maxPayloadSize,i=new b(this.#s,t,{maxFragments:n,maxPayloadSize:r});i.on(`drain`,()=>this.#s.onParserDrain()),i.on(`error`,e=>this.#s.onParserError(e)),this.#c=i,this.#s.readyState=o.OPEN;let a=e.headersList.get(`sec-websocket-extensions`)??``,s=e.headersList.get(`sec-websocket-protocol`)??``,c=new ReadableStream({start:e=>{this.#i=e},pull:()=>this.#m(),cancel:e=>this.#h(e)}),l=new WritableStream({start:e=>{this.#a=e},write:e=>this.#l(e),close:()=>g(this.#s,null,null),abort:e=>this.#p(e)});this.#r=c,this.#t.resolve({extensions:a,protocol:s,readable:c,writable:l})}#d(e,t){if(this.#s.readyState!==o.OPEN)return;let n;if(e===s.TEXT)try{n=p(t)}catch{h(this.#s,1007,`Received invalid UTF-8 in text frame.`);return}else e===s.BINARY&&(n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength));this.#i.enqueue(n),this.#i.desiredSize<=0&&this.#s.socket.pause()}#f(){let e=this.#s.closeState.has(c.SENT)&&this.#s.closeState.has(c.RECEIVED);if(this.#s.readyState=o.CLOSED,this.#o)return;this.#s.wasEverConnected||this.#t.reject(new x(`Socket never opened`));let t=this.#c?.closingInfo,n=t?.code??1005;this.#s.closeState.has(c.RECEIVED)||(n=1006);let r=t?.reason==null?``:w(Buffer.from(t.reason));if(e)a(this.#i),this.#a.error(new DOMException(`A closed WebSocketStream cannot be written to`,`InvalidStateError`)),this.#n.resolve({closeCode:n,reason:r});else{let e=S(`unclean close`,n,r);this.#i?.error(e),this.#a?.error(e),this.#n.reject(e)}}#p(e){let t=null,n=``;l.is.WebSocketError(e)&&(t=e.closeCode,n=e.reason),g(this.#s,t,n)}#m(){this.#s.socket.resume()}#h(e){this.#p(e)}};Object.defineProperties(E.prototype,{url:C,opened:C,closed:C,close:C,[Symbol.toStringTag]:{value:`WebSocketStream`,writable:!1,enumerable:!1,configurable:!0}}),l.converters.WebSocketStreamOptions=l.dictionaryConverter([{key:`protocols`,converter:l.sequenceConverter(l.converters.USVString),defaultValue:()=>[]},{key:`signal`,converter:l.nullableConverter(l.converters.AbortSignal),defaultValue:()=>null}]),l.converters.WebSocketCloseInfo=l.dictionaryConverter([{key:`closeCode`,converter:e=>l.converters[`unsigned short`](e,l.attributes.EnforceRange)},{key:`reason`,converter:l.converters.USVString,defaultValue:()=>``}]),l.converters.WebSocketStreamWrite=function(e){return typeof e==`string`?l.converters.USVString(e):l.converters.BufferSource(e)},n.exports={WebSocketStream:E}})),mo=/* @__PURE__ */ a(((e,t)=>{let{makeRequest:n}=Ka();function r(e){return e.indexOf(`\0`)===-1}function i(e){if(e.length===0)return!1;for(let t=0;t57)return!1;return!0}function a(e,t,r,i){let a=r===`no cors`?`no-cors`:`cors`;i&&a===`no-cors`&&(a=`same-origin`);let o=`include`;return r===`anonymous`&&(o=`same-origin`),n({urlList:[e],destination:t,mode:a,credentials:o,useURLCredentials:!0})}t.exports={isValidLastEventId:r,isASCIINumber:i,createPotentialCORSRequest:a}})),ho=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:buffer`),{Transform:i}=t(`node:stream`),{isASCIINumber:a,isValidLastEventId:o}=mo(),s=[239,187,191],c=r.kStringMaxLength,l=Buffer.from(`data`),u=Buffer.from(`event`),d=Buffer.from(`id`),f=Buffer.from(`retry`);function p(e,t){if(t>=e.length)return!1;for(let n=t;n57)return!1;return!0}function m(e,t){for(let n=t;n0&&r>this.maxEventSize)throw g();let a=e.toString(`utf8`,i);t.data===void 0?t.data=a:t.data+=`\n${a}`,this.eventDataSize=r}else if(h(e,r,f))p(e,i)&&(t.retry=e.toString(`utf8`,i));else if(h(e,r,d))m(e,i)&&(t.id=e.toString(`utf8`,i));else if(h(e,r,u)){let n=e.toString(`utf8`,i);n.length>0&&(t.event=n)}}processEvent(e){e.retry&&a(e.retry)&&(this.state.reconnectionTime=parseInt(e.retry,10)),e.id!==void 0&&o(e.id)&&(this.state.lastEventId=e.id),e.data!==void 0&&this.push({type:e.event||`message`,options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event.data=void 0,this.event.event=void 0,this.event.id=void 0,this.event.retry=void 0,this.eventDataSize=0}hasPendingEvent(){return this.event.data!==void 0||this.event.event!==void 0||this.event.id!==void 0||this.event.retry!==void 0}hasCurrentByte(){return this.chunkIndex=this.chunks[this.chunkIndex].length;)this.chunkIndex++,this.pos=0}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex,this.linePos=this.pos,this.dropConsumedChunks()}dropConsumedChunks(){for(;this.lineChunkIndex>0;)this.chunks.shift(),this.lineChunkIndex--,this.chunkIndex--;this.chunkIndex===this.chunks.length&&(this.chunks.length=0,this.chunkIndex=0,this.pos=0,this.lineChunkIndex=0,this.linePos=0)}readLine(){if(this.lineChunkIndex===this.chunkIndex)return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos);let e=[],t=0;for(let n=this.lineChunkIndex;n<=this.chunkIndex;n++){let r=this.chunks[n],i=n===this.lineChunkIndex?this.linePos:0,a=n===this.chunkIndex?this.pos:r.length,o=r.subarray(i,a);t+=o.length,e.push(o)}return Buffer.concat(e,t)}peekBufferedByte(e){let t=this.lineChunkIndex,n=this.linePos;for(;t0&&this.lineChunkIndex{let{pipeline:r}=t(`node:stream`),{fetching:i}=Ja(),{webidl:a}=Li(),{EventSourceStream:o}=ho(),{parseMIMEType:s}=Ii(),{createFastMessageEvent:c}=no(),{isNetworkError:l}=Ga(),{isValidHeaderValue:u,kEnumerableProperty:d}=xi(),{environmentSettingsObject:f}=Ri(),{createPotentialCORSRequest:p}=mo(),{getGlobalDispatcher:m}=U(),{isomorphicDecode:h}=Fi(),g=new TextEncoder,v=!1,y=3e3;var b=class extends EventTarget{#e={open:null,error:null,message:null};#t;#n=!1;#r=0;#i=null;#a=null;#o;#s;constructor(e,t={}){super(),a.util.markAsUncloneable(this);let n=`EventSource constructor`;a.argumentLengthCheck(arguments,1,n),v||(v=!0,process.emitWarning(`EventSource is experimental, expect them to change at any time.`,{code:`UNDICI-ES`})),e=a.converters.USVString(e),t=a.converters.EventSourceInitDict(t,n,`eventSourceInitDict`),this.#o=t.node.dispatcher||t.dispatcher,this.#s={lastEventId:``,reconnectionTime:t.node.reconnectionTime};let r=f,i;try{i=new URL(e,r.settingsObject.baseUrl),this.#s.origin=i.origin}catch(e){throw new DOMException(e,`SyntaxError`)}this.#t=i.href;let o=`anonymous`;t.withCredentials===!0&&(o=`use-credentials`,this.#n=!0);let s=p(i,``,o);s.client=f.settingsObject,s.headersList.set(`Accept`,`text/event-stream`),s.cache=`no-store`,s.initiator=`other`,this.#i=s,this.#c()}get readyState(){return a.brandCheck(this,a.is.EventSource),this.#r}get url(){return a.brandCheck(this,a.is.EventSource),this.#t}get withCredentials(){return a.brandCheck(this,a.is.EventSource),this.#n}#c(){if(this.#r===2)return;this.#r=0;let e={request:this.#i,dispatcher:this.#o};e.processResponseEndOfBody=e=>{if(!l(e))return this.#l()},e.processResponse=e=>{if(l(e)){if(e.aborted){this.close(),this.dispatchEvent(new Event(`error`));return}this.#l();return}let t=e.headersList.get(`content-type`,!0),n=t===null?`failure`:s(t),i=n!==`failure`&&n.essence===`text/event-stream`;if(e.status!==200||i===!1){this.close(),this.dispatchEvent(new Event(`error`));return}this.#r=1,this.dispatchEvent(new Event(`open`)),this.#s.origin=e.urlList[e.urlList.length-1].origin;let a=new o({eventSourceSettings:this.#s,maxEventSize:this.#o.eventSourceOptions?.maxEventSize,push:e=>{this.dispatchEvent(c(e.type,e.options))}});r(e.body.stream,a,e=>{e?.aborted===!1&&(this.close(),this.dispatchEvent(new Event(`error`)))})},this.#a=i(e)}#l(){this.#r!==2&&(this.#r=0,this.dispatchEvent(new Event(`error`)),setTimeout(()=>{if(this.#r===0){if(this.#i.headersList.delete(`last-event-id`,!0),this.#s.lastEventId.length){let e=h(g.encode(this.#s.lastEventId));u(e)&&this.#i.headersList.set(`last-event-id`,e,!0)}this.#c()}},this.#s.reconnectionTime)?.unref())}close(){a.brandCheck(this,a.is.EventSource),this.#r!==2&&(this.#r=2,this.#a.abort(),this.#i=null)}get onopen(){return a.brandCheck(this,a.is.EventSource),this.#e.open}set onopen(e){a.brandCheck(this,a.is.EventSource),this.#e.open&&this.removeEventListener(`open`,this.#e.open);let t=a.converters.EventHandlerNonNull(e);t===null?this.#e.open=null:(this.addEventListener(`open`,t),this.#e.open=e)}get onmessage(){return a.brandCheck(this,a.is.EventSource),this.#e.message}set onmessage(e){a.brandCheck(this,a.is.EventSource),this.#e.message&&this.removeEventListener(`message`,this.#e.message);let t=a.converters.EventHandlerNonNull(e);t===null?this.#e.message=null:(this.addEventListener(`message`,t),this.#e.message=e)}get onerror(){return a.brandCheck(this,a.is.EventSource),this.#e.error}set onerror(e){a.brandCheck(this,a.is.EventSource),this.#e.error&&this.removeEventListener(`error`,this.#e.error);let t=a.converters.EventHandlerNonNull(e);t===null?this.#e.error=null:(this.addEventListener(`error`,t),this.#e.error=e)}static{a.is.EventSource=e=>typeof e==`object`&&!!e&&#e in e}};let x={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:0,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:1,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:2,writable:!1}};Object.defineProperties(b,x),Object.defineProperties(b.prototype,x),Object.defineProperties(b.prototype,{close:d,onerror:d,onmessage:d,onopen:d,readyState:d,url:d,withCredentials:d}),a.converters.EventSourceInitDict=a.dictionaryConverter([{key:`withCredentials`,converter:a.converters.boolean,defaultValue:()=>!1},{key:`dispatcher`,converter:a.converters.any,defaultValue:()=>m()},{key:`node`,converter:a.dictionaryConverter([{key:`reconnectionTime`,converter:a.converters[`unsigned long`],defaultValue:()=>y},{key:`dispatcher`,converter:a.converters.any}]),defaultValue:()=>({})}]),n.exports={EventSource:b,defaultReconnectionTime:y}})),_o=/* @__PURE__ */ a(((e,t)=>{let n=Gi(),r=Ti(),i=Ji(),a=Yi(),o=Xi(),s=Zi(),c=Qi(),l=na(),u=ta(),d=ra(),f=aa(),p=oa(),m=vi(),h=xi(),{InvalidArgumentError:g}=m,v=ma(),y=Di(),b=ya(),{MockCallHistory:x,MockCallHistoryLog:S}=ba(),C=Ca(),w=xa(),T=Ea(),E=ha(),D=ia(),{getGlobalDispatcher:O,setGlobalDispatcher:k}=U(),A=Da(),j=Oa();Object.assign(r.prototype,v),t.exports.Dispatcher=r,t.exports.Client=n,t.exports.Pool=i,t.exports.BalancedPool=a,t.exports.RoundRobinPool=o,t.exports.Agent=s,t.exports.Dispatcher1Wrapper=c,t.exports.ProxyAgent=l,t.exports.Socks5ProxyAgent=u,t.exports.EnvHttpProxyAgent=d,t.exports.RetryAgent=f,t.exports.H2CClient=p,t.exports.RetryHandler=D,t.exports.DecoratorHandler=A,t.exports.RedirectHandler=j,t.exports.interceptors={redirect:ka(),responseError:Aa(),retry:ja(),dump:Ma(),dns:Na(),cache:za(),decompress:Ba(),deduplicate:Ha()},t.exports.cacheStores={MemoryCacheStore:La()};let M=Ua();t.exports.cacheStores.SqliteCacheStore=M,t.exports.buildConnector=y,t.exports.errors=m,t.exports.util={parseHeaders:h.parseHeaders,headerNameToString:h.headerNameToString};function N(e){return(t,n,r)=>{if(typeof n==`function`&&(r=n,n=null),!t||typeof t!=`string`&&typeof t!=`object`&&!(t instanceof URL))throw new g(`invalid url`);if(n!=null&&typeof n!=`object`)throw new g(`invalid opts`);if(n&&n.path!=null){if(typeof n.path!=`string`)throw new g(`invalid opts.path`);let e=n.path;n.path.startsWith(`/`)||(e=`/${e}`),t=new URL(h.parseOrigin(t).origin+e)}else n||=typeof t==`object`?t:{},t=h.parseURL(t);let{agent:i,dispatcher:a=O(),...o}=n;if(i)throw new g(`unsupported opts.agent. Did you mean opts.client?`);return e.call(a,{...o,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:n.method||(n.body?`PUT`:`GET`)},r)}}t.exports.setGlobalDispatcher=k,t.exports.getGlobalDispatcher=O;let P=Ja().fetch,F=typeof __filename<`u`?__filename:void 0;function I(e,t){if(!e||typeof e!=`object`)return;let n=typeof e.stack==`string`?e.stack:``,r=t.replace(/\\/g,`/`);if(n&&(n.includes(t)||n.includes(r)))return;let i={};if(Error.captureStackTrace(i,I),!i.stack)return;let a=i.stack.split(` +n.exports={WebsocketFrameSend:class{constructor(e){this.frameData=e}createFrame(e){let t=this.frameData,n=u(),r=t?.byteLength??0,a=r,o=6;r>i?(o+=8,a=127):r>125&&(o+=2,a=126);let s=Buffer.allocUnsafe(r+o);s[0]=s[1]=0,s[0]|=128,s[0]=(s[0]&240)+e,s[o-4]=n[0],s[o-3]=n[1],s[o-2]=n[2],s[o-1]=n[3],s[1]=a,a===126?s.writeUInt16BE(r,2):a===127&&(s[2]=s[3]=0,s.writeUIntBE(r,4,6)),s[1]|=128;for(let e=0;ei?(o+=8,r=127):n>125&&(o+=2,r=126);let s=Buffer.allocUnsafeSlow(o);return s[0]=128|a.TEXT,s[1]=r|128,s[o-4]=t[0],s[o-3]=t[1],s[o-2]=t[2],s[o-1]=t[3],r===126?s.writeUInt16BE(n,2):r===127&&(s[2]=s[3]=0,s.writeUIntBE(n,4,6)),[s,e]}},generateMask:u}})),so=/* @__PURE__ */ a(((e,n)=>{let{uid:r,states:i,sentCloseFrameState:a,emptyBuffer:o,opcodes:s}=io(),{parseExtensions:c,isClosed:l,isClosing:u,isEstablished:d,isConnecting:f,validateCloseCodeAndReason:p}=ao(),{makeRequest:m}=qa(),{fetching:h}=Ya(),{Headers:g,getHeadersList:v}=Ga(),{getDecodeSplit:y}=zi(),{WebsocketFrameSend:b}=oo(),x=t(`node:assert`),{runtimeFeatures:S}=Bi(),C=S.has(`crypto`)?t(`node:crypto`):null,w=!1;function T(e,t,n,i,a){let o=e;o.protocol=e.protocol===`ws:`?`http:`:`https:`;let s=m({urlList:[o],client:n,serviceWorkers:`none`,referrer:`no-referrer`,mode:`websocket`,credentials:`include`,cache:`no-store`,redirect:`error`,useURLCredentials:!0});a.headers&&(s.headersList=v(new g(a.headers)));let l=C.randomBytes(16).toString(`base64`);s.headersList.append(`sec-websocket-key`,l,!0),s.headersList.append(`sec-websocket-version`,`13`,!0);for(let e of t)s.headersList.append(`sec-websocket-protocol`,e,!0);return s.headersList.append(`sec-websocket-extensions`,`permessage-deflate; client_max_window_bits`,!0),h({request:s,useParallelQueue:!0,dispatcher:a.dispatcher,processResponse(e){if(e.type===`error`||e.status!==101){if(e.socket?.session==null){D(i,e,1002,`Received network error or non-101 status code.`,e.error);return}if(e.status!==200){D(i,e,1002,`Received network error or non-200 status code.`,e.error);return}}if(w===!1&&e.socket?.session!=null&&(process.emitWarning(`WebSocket over HTTP2 is experimental, and subject to change.`,`ExperimentalWarning`),w=!0),t.length!==0&&!e.headersList.get(`Sec-WebSocket-Protocol`)){D(i,e,1002,`Server did not respond with sent protocols.`);return}if(e.socket.session==null&&e.headersList.get(`Upgrade`)?.toLowerCase()!==`websocket`){D(i,e,1002,`Server did not set Upgrade header to "websocket".`);return}if(e.socket.session==null&&e.headersList.get(`Connection`)?.toLowerCase()!==`upgrade`){D(i,e,1002,`Server did not set Connection header to "upgrade".`);return}if(e.socket.session==null&&e.headersList.get(`Sec-WebSocket-Accept`)!==C.hash(`sha1`,l+r,`base64`)){D(i,e,1002,`Incorrect hash received in Sec-WebSocket-Accept header.`);return}let n=e.headersList.get(`Sec-WebSocket-Extensions`),a;if(n!==null&&(a=c(n),!a.has(`permessage-deflate`))){D(i,e,1002,`Sec-WebSocket-Extensions header does not match.`);return}let o=e.headersList.get(`Sec-WebSocket-Protocol`);if(o!==null){let t=y(`sec-websocket-protocol`,s.headersList);if(t===null||!t.includes(o)){D(i,e,1002,`Protocol was not set in the opening handshake.`);return}}e.socket.session!=null&&(e.socket.allowHalfOpen=!1),e.socket.on(`data`,i.onSocketData),e.socket.on(`close`,i.onSocketClose),e.socket.on(`error`,i.onSocketError),i.wasEverConnected=!0,i.onConnectionEstablished(e,a)}})}function E(e,t,n,r=!1){if(t??=null,n??=``,r&&p(t,n),!(l(e.readyState)||u(e.readyState))){if(!d(e.readyState))O(e),e.readyState=i.CLOSING;else if(!e.closeState.has(a.SENT)&&!e.closeState.has(a.RECEIVED)){let r=new b;n.length!==0&&t===null&&(t=1e3),x(t===null||Number.isInteger(t)),t===null&&n.length===0?r.frameData=o:t!==null&&n===null?(r.frameData=Buffer.allocUnsafe(2),r.frameData.writeUInt16BE(t,0)):t!==null&&n!==null?(r.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(n)),r.frameData.writeUInt16BE(t,0),r.frameData.write(n,2,`utf-8`)):r.frameData=o,e.socket.write(r.createFrame(s.CLOSE)),e.closeState.add(a.SENT),e.readyState=i.CLOSING}else e.readyState=i.CLOSING}}function D(e,t,n,r,i){t.socket?.session!=null&&!t.socket.destroyed&&t.socket.destroy(),O(e,n,r,i)}function O(e,t,n,r){d(e.readyState)&&E(e,t,n,!1),e.controller.abort(),f(e.readyState)?e.onSocketClose():e.socket?.destroyed===!1&&e.socket.destroy()}n.exports={establishWebSocketConnection:T,failWebsocketConnection:O,closeWebSocketConnection:E}})),co=/* @__PURE__ */ a(((e,n)=>{let{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:i}=t(`node:zlib`),{isValidClientWindowBits:a}=ao(),{MessageSizeExceededError:o}=yi(),s=Buffer.from([0,0,255,255]),c=Symbol(`kBuffer`),l=Symbol(`kLength`);n.exports={PerMessageDeflate:class{#e;#t={};#n=0;constructor(e,t){this.#t.serverNoContextTakeover=e.has(`server_no_context_takeover`),this.#t.serverMaxWindowBits=e.get(`server_max_window_bits`),this.#n=t.maxPayloadSize}decompress(e,t,n){if(!this.#e){let e=i;if(this.#t.serverMaxWindowBits){if(!a(this.#t.serverMaxWindowBits)){n(/* @__PURE__ */ Error(`Invalid server_max_window_bits`));return}e=Number.parseInt(this.#t.serverMaxWindowBits)}try{this.#e=r({windowBits:e})}catch(e){n(e);return}this.#e[c]=[],this.#e[l]=0,this.#e.on(`data`,e=>{this.#e[l]+=e.length,this.#n>0&&this.#e[l]>this.#n?(n(new o),this.#e.removeAllListeners(),this.#e.destroy(),this.#e=null):this.#e[c].push(e)}),this.#e.on(`error`,e=>{this.#e=null,n(e)})}this.#e.write(e),t&&this.#e.write(s),this.#e.flush(()=>{if(!this.#e)return;let e=Buffer.concat(this.#e[c],this.#e[l]);this.#e[c].length=0,this.#e[l]=0,n(null,e)})}}}})),lo=/* @__PURE__ */ a(((e,n)=>{let{Writable:r}=t(`node:stream`),i=t(`node:assert`),{parserStates:a,opcodes:o,states:s,emptyBuffer:c,sentCloseFrameState:l}=io(),{isValidStatusCode:u,isValidOpcode:d,websocketMessageReceived:f,utf8Decode:p,isControlFrame:m,isTextBinaryFrame:h,isContinuationFrame:g}=ao(),{failWebsocketConnection:v}=so(),{WebsocketFrameSend:y}=oo(),{PerMessageDeflate:b}=co(),{MessageSizeExceededError:x}=yi();n.exports={ByteParser:class extends r{#e=[];#t=0;#n=0;#r=!1;#i=a.INFO;#a={};#o=[];#s;#c;#l;#u;constructor(e,t,n={}){super(),this.#c=e,this.#s=t??/* @__PURE__ */ new Map,this.#l=n.maxFragments??0,this.#u=n.maxPayloadSize??0,this.#s.has(`permessage-deflate`)&&this.#s.set(`permessage-deflate`,new b(t,n))}_write(e,t,n){this.#e.push(e),this.#n+=e.length,this.#r=!0,this.run(n)}#d(){return this.#u>0&&!m(this.#a.opcode)&&this.#a.payloadLength+this.#t>this.#u?(v(this.#c,1009,`Payload size exceeds maximum allowed size`),!1):!0}run(e){for(;this.#r;)if(this.#i===a.INFO){if(this.#n<2)return e();let t=this.consume(2),n=!!(t[0]&128),r=t[0]&15,i=(t[1]&128)==128,s=!n&&r!==o.CONTINUATION,c=t[1]&127,l=t[0]&64,u=t[0]&32,f=t[0]&16;if(!d(r))return v(this.#c,1002,`Invalid opcode received`),e();if(i)return v(this.#c,1002,`Frame cannot be masked`),e();if(l!==0&&!this.#s.has(`permessage-deflate`)){v(this.#c,1002,`Expected RSV1 to be clear.`);return}if(u!==0||f!==0){v(this.#c,1002,`RSV1, RSV2, RSV3 must be clear`);return}if(s&&!h(r)){v(this.#c,1002,`Invalid frame type was fragmented.`);return}if(h(r)&&this.#o.length>0){v(this.#c,1002,`Expected continuation frame`);return}if(this.#a.fragmented&&s){v(this.#c,1002,`Fragmented frame exceeded 125 bytes.`);return}if((c>125||s)&&m(r)){v(this.#c,1002,`Control frame either too large or fragmented`);return}if(g(r)&&this.#o.length===0&&!this.#a.compressed){v(this.#c,1002,`Unexpected continuation frame`);return}if(c<=125){if(this.#a.payloadLength=c,this.#i=a.READ_DATA,!this.#d())return}else c===126?this.#i=a.PAYLOADLENGTH_16:c===127&&(this.#i=a.PAYLOADLENGTH_64);h(r)&&(this.#a.binaryType=r,this.#a.compressed=l!==0),this.#a.opcode=r,this.#a.masked=i,this.#a.fin=n,this.#a.fragmented=s}else if(this.#i===a.PAYLOADLENGTH_16){if(this.#n<2)return e();let t=this.consume(2);if(this.#a.payloadLength=t.readUInt16BE(0),this.#i=a.READ_DATA,!this.#d())return}else if(this.#i===a.PAYLOADLENGTH_64){if(this.#n<8)return e();let t=this.consume(8),n=t.readUInt32BE(0),r=t.readUInt32BE(4);if(n!==0||r>2**31-1){v(this.#c,1009,`Received payload length > 2^31 bytes.`);return}if(this.#a.payloadLength=r,this.#i=a.READ_DATA,!this.#d())return}else if(this.#i===a.READ_DATA){if(this.#n{if(t){let e=t instanceof x?1009:1007;v(this.#c,e,t.message)}else this.writeFragments(n)&&(this.#u>0&&this.#t>this.#u?v(this.#c,1009,new x().message):this.#a.fin?(f(this.#c,this.#a.binaryType,this.consumeFragments()),this.#r=!0,this.#i=a.INFO,this.run(e)):(this.#i=a.INFO,this.#r=!0,this.run(e)))},this.#t),this.#r=!1;break}else{if(!this.writeFragments(t))return;!this.#a.fragmented&&this.#a.fin&&f(this.#c,this.#a.binaryType,this.consumeFragments()),this.#i=a.INFO}}}consume(e){if(e>this.#n)throw Error(`Called consume() before buffers satiated.`);if(e===0)return c;this.#n-=e;let t=this.#e[0];if(t.length>e)return this.#e[0]=t.subarray(e,t.length),t.subarray(0,e);if(t.length===e)return this.#e.shift();{let t=0,n=Buffer.allocUnsafeSlow(e);for(;t!==e;){let r=this.#e[0],i=r.length;if(i+t===e){n.set(this.#e.shift(),t);break}if(i+t>e){n.set(r.subarray(0,e-t),t),this.#e[0]=r.subarray(e-t);break}n.set(this.#e.shift(),t),t+=i}return n}}writeFragments(e){return this.#l>0&&this.#o.length===this.#l?(v(this.#c,1008,`Too many message fragments`),!1):(this.#t+=e.length,this.#o.push(e),!0)}consumeFragments(){let e=this.#o;if(this.#a.compressed=!1,e.length===1)return this.#t=0,e.shift();let t=0,n=Buffer.allocUnsafeSlow(this.#t);for(let r=0;r=2&&(t=e.readUInt16BE(0)),t!==void 0&&!u(t))return{code:1002,reason:`Invalid status code`,error:!0};let n=e.subarray(2);n[0]===239&&n[1]===187&&n[2]===191&&(n=n.subarray(3));try{n=p(n)}catch{return{code:1007,reason:`Invalid UTF-8`,error:!0}}return{code:t,reason:n,error:!1}}parseControlFrame(e){let{opcode:t,payloadLength:n}=this.#a;if(t===o.CLOSE){if(n===1)return v(this.#c,1002,`Received close frame with a 1-byte body.`),!1;if(this.#a.closeInfo=this.parseCloseBody(e),this.#a.closeInfo.error){let{code:e,reason:t}=this.#a.closeInfo;return v(this.#c,e,t),!1}if(!this.#c.closeState.has(l.SENT)&&!this.#c.closeState.has(l.RECEIVED)){let e=c;this.#a.closeInfo.code&&(e=Buffer.allocUnsafe(2),e.writeUInt16BE(this.#a.closeInfo.code,0));let t=new y(e);this.#c.socket.write(t.createFrame(o.CLOSE)),this.#c.closeState.add(l.SENT)}return this.#c.readyState=s.CLOSING,this.#c.closeState.add(l.RECEIVED),!1}if(t===o.PING){if(!this.#c.closeState.has(l.RECEIVED)){let t=new y(e);this.#c.socket.write(t.createFrame(o.PONG)),this.#c.onPing(e)}}else t===o.PONG&&this.#c.onPong(e);return!0}get closingInfo(){return this.#a.closeInfo}}}})),uo=/* @__PURE__ */ a(((e,t)=>{let{WebsocketFrameSend:n}=oo(),{opcodes:r,sendHints:i}=io(),a=qi();var o=class{#e=new a;#t=!1;#n;constructor(e){this.#n=e}add(e,t,r){if(r!==i.blob){if(this.#t){let n={promise:null,callback:t,frame:s(e,r)};this.#e.push(n)}else if(r===i.text){let{0:r,1:i}=n.createFastTextFrame(e);this.#n.cork(),this.#n.write(r),this.#n.write(i,t),this.#n.uncork()}else this.#n.write(s(e,r),t);return}let a={promise:e.arrayBuffer().then(e=>{a.promise=null,a.frame=s(e,r)}),callback:t,frame:null};this.#e.push(a),this.#t||this.#r()}async#r(){this.#t=!0;let e=this.#e;for(;!e.isEmpty();){let t=e.shift();t.promise!==null&&await t.promise,this.#n.write(t.frame,t.callback),t.callback=t.frame=null}this.#t=!1}};function s(e,t){return new n(c(e,t)).createFrame(t===i.text?r.TEXT:r.BINARY)}function c(e,t){switch(t){case i.text:case i.typedArray:return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);case i.arrayBuffer:case i.blob:return new Uint8Array(e)}}t.exports={SendQueue:o}})),fo=/* @__PURE__ */ a(((e,n)=>{let{isArrayBuffer:r}=t(`node:util/types`),{webidl:i}=Ri(),{URLSerializer:a}=Li(),{environmentSettingsObject:o}=zi(),{staticPropertyDescriptors:s,states:c,sentCloseFrameState:l,sendHints:u,opcodes:d}=io(),{isConnecting:f,isEstablished:p,isClosing:m,isClosed:h,isValidSubprotocol:g,fireEvent:v,utf8Decode:y,toArrayBuffer:b,getURLRecord:x}=ao(),{establishWebSocketConnection:S,closeWebSocketConnection:C,failWebsocketConnection:w}=so(),{ByteParser:T}=lo(),{kEnumerableProperty:E}=Si(),{getGlobalDispatcher:D}=U(),{ErrorEvent:O,CloseEvent:k,createFastMessageEvent:A}=ro(),{SendQueue:j}=uo(),{WebsocketFrameSend:M}=oo(),{channels:N}=wi(),P=Symbol.for(`nodejs.ref`),F=Symbol.for(`nodejs.unref`),I;function ee(e){return typeof e?.address==`function`?e.address():typeof e?.session?.socket?.address==`function`?e.session.socket.address():null}var L=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#t=0;#n=``;#r=``;#i=!0;#a;#o={onConnectionEstablished:(e,t)=>this.#u(e,t),onMessage:(e,t)=>this.#d(e,t),onParserError:e=>w(this.#o,null,e.message),onParserDrain:()=>this.#f(),onSocketData:e=>{this.#l.write(e)||this.#o.socket.pause()},onSocketError:e=>{this.#o.readyState=c.CLOSING,N.socketError.hasSubscribers&&N.socketError.publish(e),this.#o.socket.destroy()},onSocketClose:()=>this.#p(),onPing:e=>{N.ping.hasSubscribers&&N.ping.publish({payload:e,websocket:this})},onPong:e=>{N.pong.hasSubscribers&&N.pong.publish({payload:e,websocket:this})},readyState:c.CONNECTING,socket:null,closeState:/* @__PURE__ */ new Set,controller:null,wasEverConnected:!1};#s;#c;#l;constructor(t,n=[]){super(),i.util.markAsUncloneable(this);let r=`WebSocket constructor`;i.argumentLengthCheck(arguments,1,r);let a=i.converters[`DOMString or sequence or WebSocketInit`](n,r,`options`);t=i.converters.USVString(t),n=a.protocols;let s=o.settingsObject.baseUrl,c=x(t,s);if(typeof n==`string`&&(n=[n]),n.length!==new Set(n.map(e=>e.toLowerCase())).size||n.length>0&&!n.every(e=>g(e)))throw new DOMException(`Invalid Sec-WebSocket-Protocol value`,`SyntaxError`);this.#s=new URL(c.href);let l=o.settingsObject;this.#o.controller=S(c,n,l,this.#o,a),this.#o.readyState=e.CONNECTING,this.#c=`blob`}[P](){this.#i=!0,this.#o.socket?.ref?.()}[F](){this.#i=!1,this.#o.socket?.unref?.()}close(e=void 0,t=void 0){i.brandCheck(this,i.is.WebSocket),e!==void 0&&(e=i.converters[`unsigned short`](e,`WebSocket.close`,`code`,i.attributes.Clamp)),t!==void 0&&(t=i.converters.USVString(t)),e??=null,t??=``,C(this.#o,e,t,!0)}send(e){i.brandCheck(this,i.is.WebSocket);let t=`WebSocket.send`;if(i.argumentLengthCheck(arguments,1,t),e=i.converters.WebSocketSendData(e,t,`data`),f(this.#o.readyState))throw new DOMException(`Sent before connected.`,`InvalidStateError`);if(p(this.#o.readyState)&&!m(this.#o.readyState)){if(typeof e==`string`){let t=Buffer.from(e);this.#t+=t.byteLength,this.#a.add(t,()=>{this.#t-=t.byteLength},u.text)}else r(e)?(this.#t+=e.byteLength,this.#a.add(e,()=>{this.#t-=e.byteLength},u.arrayBuffer)):ArrayBuffer.isView(e)?(this.#t+=e.byteLength,this.#a.add(e,()=>{this.#t-=e.byteLength},u.typedArray)):i.is.Blob(e)&&(this.#t+=e.size,this.#a.add(e,()=>{this.#t-=e.size},u.blob))}}get readyState(){return i.brandCheck(this,i.is.WebSocket),this.#o.readyState}get bufferedAmount(){return i.brandCheck(this,i.is.WebSocket),this.#t}get url(){return i.brandCheck(this,i.is.WebSocket),a(this.#s)}get extensions(){return i.brandCheck(this,i.is.WebSocket),this.#r}get protocol(){return i.brandCheck(this,i.is.WebSocket),this.#n}get onopen(){return i.brandCheck(this,i.is.WebSocket),this.#e.open}set onopen(e){i.brandCheck(this,i.is.WebSocket),this.#e.open&&this.removeEventListener(`open`,this.#e.open);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.open=null:(this.addEventListener(`open`,t),this.#e.open=e)}get onerror(){return i.brandCheck(this,i.is.WebSocket),this.#e.error}set onerror(e){i.brandCheck(this,i.is.WebSocket),this.#e.error&&this.removeEventListener(`error`,this.#e.error);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.error=null:(this.addEventListener(`error`,t),this.#e.error=e)}get onclose(){return i.brandCheck(this,i.is.WebSocket),this.#e.close}set onclose(e){i.brandCheck(this,i.is.WebSocket),this.#e.close&&this.removeEventListener(`close`,this.#e.close);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.close=null:(this.addEventListener(`close`,t),this.#e.close=e)}get onmessage(){return i.brandCheck(this,i.is.WebSocket),this.#e.message}set onmessage(e){i.brandCheck(this,i.is.WebSocket),this.#e.message&&this.removeEventListener(`message`,this.#e.message);let t=i.converters.EventHandlerNonNull(e);t===null?this.#e.message=null:(this.addEventListener(`message`,t),this.#e.message=e)}get binaryType(){return i.brandCheck(this,i.is.WebSocket),this.#c}set binaryType(e){i.brandCheck(this,i.is.WebSocket),this.#c=e!==`blob`&&e!==`arraybuffer`?`blob`:e}#u(e,t){this.#o.socket=e.socket,this.#i||this.#o.socket.unref?.();let n=this.#o.controller.dispatcher?.webSocketOptions?.maxFragments,r=this.#o.controller.dispatcher?.webSocketOptions?.maxPayloadSize,i=new T(this.#o,t,{maxFragments:n,maxPayloadSize:r});i.on(`drain`,()=>this.#o.onParserDrain()),i.on(`error`,e=>this.#o.onParserError(e)),this.#l=i,this.#a=new j(e.socket),this.#o.readyState=c.OPEN;let a=e.headersList.get(`sec-websocket-extensions`);a!==null&&(this.#r=a);let o=e.headersList.get(`sec-websocket-protocol`);if(o!==null&&(this.#n=o),v(`open`,this),N.open.hasSubscribers){let t=e.headersList.entries;N.open.publish({address:ee(e.socket),protocol:this.#n,extensions:this.#r,websocket:this,handshakeResponse:{status:e.status,statusText:e.statusText,headers:t}})}}#d(e,t){if(this.#o.readyState!==c.OPEN)return;let n;if(e===d.TEXT)try{n=y(t)}catch{w(this.#o,1007,`Received invalid UTF-8 in text frame.`);return}else e===d.BINARY&&(n=this.#c===`blob`?new Blob([t]):b(t));v(`message`,this,A,{origin:this.#s.origin,data:n})}#f(){this.#o.socket.resume()}#p(){let e=this.#o.closeState.has(l.SENT)&&this.#o.closeState.has(l.RECEIVED),t=1005,n=``,r=this.#l?.closingInfo;r&&!r.error&&(t=r.code??1005,n=r.reason),this.#o.readyState=c.CLOSED,this.#o.closeState.has(l.RECEIVED)||(t=1006,v(`error`,this,(e,t)=>new O(e,t),{error:TypeError(n)})),v(`close`,this,(e,t)=>new k(e,t),{wasClean:e,code:t,reason:n}),N.close.hasSubscribers&&N.close.publish({websocket:this,code:t,reason:n})}static{I=(e,t)=>{if(Buffer.isBuffer(t)){if(t.length>125)throw TypeError(`A PING frame cannot have a body larger than 125 bytes.`)}else if(t!==void 0)throw TypeError(`Expected buffer payload`);let n=e.#o.readyState;if(p(n)&&!m(n)&&!h(n)){let n=new M(t);e.#o.socket.write(n.createFrame(d.PING))}},i.is.WebSocket=e=>typeof e==`object`&&!!e&&#o in e}};L.CONNECTING=L.prototype.CONNECTING=c.CONNECTING,L.OPEN=L.prototype.OPEN=c.OPEN,L.CLOSING=L.prototype.CLOSING=c.CLOSING,L.CLOSED=L.prototype.CLOSED=c.CLOSED,Object.defineProperties(L.prototype,{CONNECTING:s,OPEN:s,CLOSING:s,CLOSED:s,url:E,readyState:E,bufferedAmount:E,onopen:E,onerror:E,onclose:E,close:E,onmessage:E,binaryType:E,send:E,extensions:E,protocol:E,[Symbol.toStringTag]:{value:`WebSocket`,writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(L,{CONNECTING:s,OPEN:s,CLOSING:s,CLOSED:s}),i.converters[`sequence`]=i.sequenceConverter(i.converters.DOMString),i.converters[`DOMString or sequence`]=function(e,t,n){return i.util.Type(e)===i.util.Types.OBJECT&&Symbol.iterator in e?i.converters[`sequence`](e):i.converters.DOMString(e,t,n)},i.converters.WebSocketInit=i.dictionaryConverter([{key:`protocols`,converter:i.converters[`DOMString or sequence`],defaultValue:()=>[]},{key:`dispatcher`,converter:i.converters.any,defaultValue:()=>D()},{key:`headers`,converter:i.nullableConverter(i.converters.HeadersInit)}]),i.converters[`DOMString or sequence or WebSocketInit`]=function(e){return i.util.Type(e)===i.util.Types.OBJECT&&!(Symbol.iterator in e)?i.converters.WebSocketInit(e):{protocols:i.converters[`DOMString or sequence`](e)}},i.converters.WebSocketSendData=function(e){return i.util.Type(e)===i.util.Types.OBJECT&&(i.is.Blob(e)||i.is.BufferSource(e))?e:i.converters.USVString(e)},n.exports={WebSocket:L,ping:I}})),po=/* @__PURE__ */ a(((e,t)=>{let{webidl:n}=Ri(),{validateCloseCodeAndReason:r}=ao(),{kConstruct:i}=_i(),{kEnumerableProperty:a}=Si();function o(){class e extends DOMException{get reason(){return``}}return new e().reason===void 0?new Proxy(DOMException,{construct(e,t,n){let r=Reflect.construct(e,t,e);return Object.setPrototypeOf(r,n.prototype),r}}):DOMException}let s;var c=class e extends o(){#e;#t;constructor(e=``,t=void 0){if(e=n.converters.DOMString(e,`WebSocketError`,`message`),super(e,`WebSocketError`),t===i)return;t!==null&&(t=n.converters.WebSocketCloseInfo(t));let a=t.closeCode??null,o=t.reason??``;r(a,o),o.length!==0&&a===null&&(a=1e3),this.#e=a,this.#t=o}get closeCode(){return this.#e}get reason(){return this.#t}static{s=(t,n,r)=>{let a=new e(t,i);return a.#e=n,a.#t=r,a},n.is.WebSocketError=e=>typeof e==`object`&&!!e&&#t in e}};Object.defineProperties(c.prototype,{closeCode:a,reason:a,[Symbol.toStringTag]:{value:`WebSocketError`,writable:!1,enumerable:!1,configurable:!0}}),t.exports={WebSocketError:c,createUnvalidatedWebSocketError:s}})),mo=/* @__PURE__ */ a(((e,n)=>{let{addAbortListener:r}=t(`node:events`),{environmentSettingsObject:i,readableStreamClose:a}=zi(),{states:o,opcodes:s,sentCloseFrameState:c}=io(),{webidl:l}=Ri(),{getURLRecord:u,isValidSubprotocol:d,isEstablished:f,utf8Decode:p}=ao(),{establishWebSocketConnection:m,failWebsocketConnection:h,closeWebSocketConnection:g}=so(),{channels:v}=wi(),{WebsocketFrameSend:y}=oo(),{ByteParser:b}=lo(),{WebSocketError:x,createUnvalidatedWebSocketError:S}=po(),{kEnumerableProperty:C}=Si(),{utf8DecodeBytes:w}=Fi(),T=!1;var E=class{#e;#t;#n;#r;#i;#a;#o=!1;#s={onConnectionEstablished:(e,t)=>this.#u(e,t),onMessage:(e,t)=>this.#d(e,t),onParserError:e=>h(this.#s,null,e.message),onParserDrain:()=>this.#s.socket.resume(),onSocketData:e=>{this.#c.write(e)||this.#s.socket.pause()},onSocketError:e=>{this.#s.readyState=o.CLOSING,v.socketError.hasSubscribers&&v.socketError.publish(e),this.#s.socket.destroy()},onSocketClose:()=>queueMicrotask(()=>this.#f()),onPing:()=>{},onPong:()=>{},readyState:o.CONNECTING,socket:null,closeState:/* @__PURE__ */ new Set,controller:null,wasEverConnected:!1};#c;constructor(e,t=void 0){T||=(process.emitWarning(`WebSocketStream is experimental! Expect it to change at any time.`,{code:`UNDICI-WSS`}),!0),l.argumentLengthCheck(arguments,1,`WebSocket`),e=l.converters.USVString(e),t!==null&&(t=l.converters.WebSocketStreamOptions(t));let n=i.settingsObject.baseUrl,a=u(e,n),s=t.protocols;if(s.length!==new Set(s.map(e=>e.toLowerCase())).size||s.length>0&&!s.every(e=>d(e)))throw new DOMException(`Invalid Sec-WebSocket-Protocol value`,`SyntaxError`);if(this.#e=a.toString(),this.#t=Promise.withResolvers(),this.#n=Promise.withResolvers(),t.signal!=null){let e=t.signal;if(e.aborted){this.#t.reject(e.reason),this.#n.reject(e.reason);return}r(e,()=>{f(this.#s.readyState)||(h(this.#s),this.#s.readyState=o.CLOSING,this.#t.reject(e.reason),this.#n.reject(e.reason),this.#o=!0)})}let c=i.settingsObject;this.#s.controller=m(a,s,c,this.#s,t)}get url(){return this.#e.toString()}get opened(){return this.#t.promise}get closed(){return this.#n.promise}close(e=void 0){e!==null&&(e=l.converters.WebSocketCloseInfo(e));let t=e.closeCode??null,n=e.reason;g(this.#s,t,n,!0)}#l(e){e=l.converters.WebSocketStreamWrite(e);let t=Promise.withResolvers(),n=null,r=null;if(l.is.BufferSource(e))n=new Uint8Array(ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e.slice()),r=s.BINARY;else{let i;try{i=l.converters.DOMString(e)}catch(e){return t.reject(e),t.promise}n=new TextEncoder().encode(i),r=s.TEXT}if(!this.#s.closeState.has(c.SENT)&&!this.#s.closeState.has(c.RECEIVED)){let e=new y(n);this.#s.socket.write(e.createFrame(r),()=>{t.resolve(void 0)})}else t.resolve(void 0);return t.promise}#u(e,t){this.#s.socket=e.socket;let n=this.#s.controller.dispatcher?.webSocketOptions?.maxFragments,r=this.#s.controller.dispatcher?.webSocketOptions?.maxPayloadSize,i=new b(this.#s,t,{maxFragments:n,maxPayloadSize:r});i.on(`drain`,()=>this.#s.onParserDrain()),i.on(`error`,e=>this.#s.onParserError(e)),this.#c=i,this.#s.readyState=o.OPEN;let a=e.headersList.get(`sec-websocket-extensions`)??``,s=e.headersList.get(`sec-websocket-protocol`)??``,c=new ReadableStream({start:e=>{this.#i=e},pull:()=>this.#m(),cancel:e=>this.#h(e)}),l=new WritableStream({start:e=>{this.#a=e},write:e=>this.#l(e),close:()=>g(this.#s,null,null),abort:e=>this.#p(e)});this.#r=c,this.#t.resolve({extensions:a,protocol:s,readable:c,writable:l})}#d(e,t){if(this.#s.readyState!==o.OPEN)return;let n;if(e===s.TEXT)try{n=p(t)}catch{h(this.#s,1007,`Received invalid UTF-8 in text frame.`);return}else e===s.BINARY&&(n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength));this.#i.enqueue(n),this.#i.desiredSize<=0&&this.#s.socket.pause()}#f(){let e=this.#s.closeState.has(c.SENT)&&this.#s.closeState.has(c.RECEIVED);if(this.#s.readyState=o.CLOSED,this.#o)return;this.#s.wasEverConnected||this.#t.reject(new x(`Socket never opened`));let t=this.#c?.closingInfo,n=t?.code??1005;this.#s.closeState.has(c.RECEIVED)||(n=1006);let r=t?.reason==null?``:w(Buffer.from(t.reason));if(e)a(this.#i),this.#a.error(new DOMException(`A closed WebSocketStream cannot be written to`,`InvalidStateError`)),this.#n.resolve({closeCode:n,reason:r});else{let e=S(`unclean close`,n,r);this.#i?.error(e),this.#a?.error(e),this.#n.reject(e)}}#p(e){let t=null,n=``;l.is.WebSocketError(e)&&(t=e.closeCode,n=e.reason),g(this.#s,t,n)}#m(){this.#s.socket.resume()}#h(e){this.#p(e)}};Object.defineProperties(E.prototype,{url:C,opened:C,closed:C,close:C,[Symbol.toStringTag]:{value:`WebSocketStream`,writable:!1,enumerable:!1,configurable:!0}}),l.converters.WebSocketStreamOptions=l.dictionaryConverter([{key:`protocols`,converter:l.sequenceConverter(l.converters.USVString),defaultValue:()=>[]},{key:`signal`,converter:l.nullableConverter(l.converters.AbortSignal),defaultValue:()=>null}]),l.converters.WebSocketCloseInfo=l.dictionaryConverter([{key:`closeCode`,converter:e=>l.converters[`unsigned short`](e,l.attributes.EnforceRange)},{key:`reason`,converter:l.converters.USVString,defaultValue:()=>``}]),l.converters.WebSocketStreamWrite=function(e){return typeof e==`string`?l.converters.USVString(e):l.converters.BufferSource(e)},n.exports={WebSocketStream:E}})),ho=/* @__PURE__ */ a(((e,t)=>{let{makeRequest:n}=qa();function r(e){return e.indexOf(`\0`)===-1}function i(e){if(e.length===0)return!1;for(let t=0;t57)return!1;return!0}function a(e,t,r,i){let a=r===`no cors`?`no-cors`:`cors`;i&&a===`no-cors`&&(a=`same-origin`);let o=`include`;return r===`anonymous`&&(o=`same-origin`),n({urlList:[e],destination:t,mode:a,credentials:o,useURLCredentials:!0})}t.exports={isValidLastEventId:r,isASCIINumber:i,createPotentialCORSRequest:a}})),go=/* @__PURE__ */ a(((e,n)=>{let r=t(`node:buffer`),{Transform:i}=t(`node:stream`),{isASCIINumber:a,isValidLastEventId:o}=ho(),s=[239,187,191],c=r.kStringMaxLength,l=Buffer.from(`data`),u=Buffer.from(`event`),d=Buffer.from(`id`),f=Buffer.from(`retry`);function p(e,t){if(t>=e.length)return!1;for(let n=t;n57)return!1;return!0}function m(e,t){for(let n=t;n0&&r>this.maxEventSize)throw g();let a=e.toString(`utf8`,i);t.data===void 0?t.data=a:t.data+=`\n${a}`,this.eventDataSize=r}else if(h(e,r,f))p(e,i)&&(t.retry=e.toString(`utf8`,i));else if(h(e,r,d))m(e,i)&&(t.id=e.toString(`utf8`,i));else if(h(e,r,u)){let n=e.toString(`utf8`,i);n.length>0&&(t.event=n)}}processEvent(e){e.retry&&a(e.retry)&&(this.state.reconnectionTime=parseInt(e.retry,10)),e.id!==void 0&&o(e.id)&&(this.state.lastEventId=e.id),e.data!==void 0&&this.push({type:e.event||`message`,options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event.data=void 0,this.event.event=void 0,this.event.id=void 0,this.event.retry=void 0,this.eventDataSize=0}hasPendingEvent(){return this.event.data!==void 0||this.event.event!==void 0||this.event.id!==void 0||this.event.retry!==void 0}hasCurrentByte(){return this.chunkIndex=this.chunks[this.chunkIndex].length;)this.chunkIndex++,this.pos=0}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex,this.linePos=this.pos,this.dropConsumedChunks()}dropConsumedChunks(){for(;this.lineChunkIndex>0;)this.chunks.shift(),this.lineChunkIndex--,this.chunkIndex--;this.chunkIndex===this.chunks.length&&(this.chunks.length=0,this.chunkIndex=0,this.pos=0,this.lineChunkIndex=0,this.linePos=0)}readLine(){if(this.lineChunkIndex===this.chunkIndex)return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos);let e=[],t=0;for(let n=this.lineChunkIndex;n<=this.chunkIndex;n++){let r=this.chunks[n],i=n===this.lineChunkIndex?this.linePos:0,a=n===this.chunkIndex?this.pos:r.length,o=r.subarray(i,a);t+=o.length,e.push(o)}return Buffer.concat(e,t)}peekBufferedByte(e){let t=this.lineChunkIndex,n=this.linePos;for(;t0&&this.lineChunkIndex{let{pipeline:r}=t(`node:stream`),{fetching:i}=Ya(),{webidl:a}=Ri(),{EventSourceStream:o}=go(),{parseMIMEType:s}=Li(),{createFastMessageEvent:c}=ro(),{isNetworkError:l}=Ka(),{isValidHeaderValue:u,kEnumerableProperty:d}=Si(),{environmentSettingsObject:f}=zi(),{createPotentialCORSRequest:p}=ho(),{getGlobalDispatcher:m}=U(),{isomorphicDecode:h}=Ii(),g=new TextEncoder,v=!1,y=3e3;var b=class extends EventTarget{#e={open:null,error:null,message:null};#t;#n=!1;#r=0;#i=null;#a=null;#o;#s;constructor(e,t={}){super(),a.util.markAsUncloneable(this);let n=`EventSource constructor`;a.argumentLengthCheck(arguments,1,n),v||(v=!0,process.emitWarning(`EventSource is experimental, expect them to change at any time.`,{code:`UNDICI-ES`})),e=a.converters.USVString(e),t=a.converters.EventSourceInitDict(t,n,`eventSourceInitDict`),this.#o=t.node.dispatcher||t.dispatcher,this.#s={lastEventId:``,reconnectionTime:t.node.reconnectionTime};let r=f,i;try{i=new URL(e,r.settingsObject.baseUrl),this.#s.origin=i.origin}catch(e){throw new DOMException(e,`SyntaxError`)}this.#t=i.href;let o=`anonymous`;t.withCredentials===!0&&(o=`use-credentials`,this.#n=!0);let s=p(i,``,o);s.client=f.settingsObject,s.headersList.set(`Accept`,`text/event-stream`),s.cache=`no-store`,s.initiator=`other`,this.#i=s,this.#c()}get readyState(){return a.brandCheck(this,a.is.EventSource),this.#r}get url(){return a.brandCheck(this,a.is.EventSource),this.#t}get withCredentials(){return a.brandCheck(this,a.is.EventSource),this.#n}#c(){if(this.#r===2)return;this.#r=0;let e={request:this.#i,dispatcher:this.#o};e.processResponseEndOfBody=e=>{if(!l(e))return this.#l()},e.processResponse=e=>{if(l(e)){if(e.aborted){this.close(),this.dispatchEvent(new Event(`error`));return}this.#l();return}let t=e.headersList.get(`content-type`,!0),n=t===null?`failure`:s(t),i=n!==`failure`&&n.essence===`text/event-stream`;if(e.status!==200||i===!1){this.close(),this.dispatchEvent(new Event(`error`));return}this.#r=1,this.dispatchEvent(new Event(`open`)),this.#s.origin=e.urlList[e.urlList.length-1].origin;let a=new o({eventSourceSettings:this.#s,maxEventSize:this.#o.eventSourceOptions?.maxEventSize,push:e=>{this.dispatchEvent(c(e.type,e.options))}});r(e.body.stream,a,e=>{e?.aborted===!1&&(this.close(),this.dispatchEvent(new Event(`error`)))})},this.#a=i(e)}#l(){this.#r!==2&&(this.#r=0,this.dispatchEvent(new Event(`error`)),setTimeout(()=>{if(this.#r===0){if(this.#i.headersList.delete(`last-event-id`,!0),this.#s.lastEventId.length){let e=h(g.encode(this.#s.lastEventId));u(e)&&this.#i.headersList.set(`last-event-id`,e,!0)}this.#c()}},this.#s.reconnectionTime)?.unref())}close(){a.brandCheck(this,a.is.EventSource),this.#r!==2&&(this.#r=2,this.#a.abort(),this.#i=null)}get onopen(){return a.brandCheck(this,a.is.EventSource),this.#e.open}set onopen(e){a.brandCheck(this,a.is.EventSource),this.#e.open&&this.removeEventListener(`open`,this.#e.open);let t=a.converters.EventHandlerNonNull(e);t===null?this.#e.open=null:(this.addEventListener(`open`,t),this.#e.open=e)}get onmessage(){return a.brandCheck(this,a.is.EventSource),this.#e.message}set onmessage(e){a.brandCheck(this,a.is.EventSource),this.#e.message&&this.removeEventListener(`message`,this.#e.message);let t=a.converters.EventHandlerNonNull(e);t===null?this.#e.message=null:(this.addEventListener(`message`,t),this.#e.message=e)}get onerror(){return a.brandCheck(this,a.is.EventSource),this.#e.error}set onerror(e){a.brandCheck(this,a.is.EventSource),this.#e.error&&this.removeEventListener(`error`,this.#e.error);let t=a.converters.EventHandlerNonNull(e);t===null?this.#e.error=null:(this.addEventListener(`error`,t),this.#e.error=e)}static{a.is.EventSource=e=>typeof e==`object`&&!!e&&#e in e}};let x={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:0,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:1,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:2,writable:!1}};Object.defineProperties(b,x),Object.defineProperties(b.prototype,x),Object.defineProperties(b.prototype,{close:d,onerror:d,onmessage:d,onopen:d,readyState:d,url:d,withCredentials:d}),a.converters.EventSourceInitDict=a.dictionaryConverter([{key:`withCredentials`,converter:a.converters.boolean,defaultValue:()=>!1},{key:`dispatcher`,converter:a.converters.any,defaultValue:()=>m()},{key:`node`,converter:a.dictionaryConverter([{key:`reconnectionTime`,converter:a.converters[`unsigned long`],defaultValue:()=>y},{key:`dispatcher`,converter:a.converters.any}]),defaultValue:()=>({})}]),n.exports={EventSource:b,defaultReconnectionTime:y}})),vo=/* @__PURE__ */ a(((e,t)=>{let n=Ki(),r=Ei(),i=Yi(),a=Xi(),o=Zi(),s=Qi(),c=$i(),l=ra(),u=na(),d=ia(),f=oa(),p=sa(),m=yi(),h=Si(),{InvalidArgumentError:g}=m,v=ha(),y=Oi(),b=ba(),{MockCallHistory:x,MockCallHistoryLog:S}=xa(),C=wa(),w=Sa(),T=Da(),E=ga(),D=aa(),{getGlobalDispatcher:O,setGlobalDispatcher:k}=U(),A=Oa(),j=ka();Object.assign(r.prototype,v),t.exports.Dispatcher=r,t.exports.Client=n,t.exports.Pool=i,t.exports.BalancedPool=a,t.exports.RoundRobinPool=o,t.exports.Agent=s,t.exports.Dispatcher1Wrapper=c,t.exports.ProxyAgent=l,t.exports.Socks5ProxyAgent=u,t.exports.EnvHttpProxyAgent=d,t.exports.RetryAgent=f,t.exports.H2CClient=p,t.exports.RetryHandler=D,t.exports.DecoratorHandler=A,t.exports.RedirectHandler=j,t.exports.interceptors={redirect:Aa(),responseError:ja(),retry:Ma(),dump:Na(),dns:Pa(),cache:Ba(),decompress:Va(),deduplicate:Ua()},t.exports.cacheStores={MemoryCacheStore:Ra()};let M=Wa();t.exports.cacheStores.SqliteCacheStore=M,t.exports.buildConnector=y,t.exports.errors=m,t.exports.util={parseHeaders:h.parseHeaders,headerNameToString:h.headerNameToString};function N(e){return(t,n,r)=>{if(typeof n==`function`&&(r=n,n=null),!t||typeof t!=`string`&&typeof t!=`object`&&!(t instanceof URL))throw new g(`invalid url`);if(n!=null&&typeof n!=`object`)throw new g(`invalid opts`);if(n&&n.path!=null){if(typeof n.path!=`string`)throw new g(`invalid opts.path`);let e=n.path;n.path.startsWith(`/`)||(e=`/${e}`),t=new URL(h.parseOrigin(t).origin+e)}else n||=typeof t==`object`?t:{},t=h.parseURL(t);let{agent:i,dispatcher:a=O(),...o}=n;if(i)throw new g(`unsupported opts.agent. Did you mean opts.client?`);return e.call(a,{...o,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:n.method||(n.body?`PUT`:`GET`)},r)}}t.exports.setGlobalDispatcher=k,t.exports.getGlobalDispatcher=O;let P=Ya().fetch,F=typeof __filename<`u`?__filename:void 0;function I(e,t){if(!e||typeof e!=`object`)return;let n=typeof e.stack==`string`?e.stack:``,r=t.replace(/\\/g,`/`);if(n&&(n.includes(t)||n.includes(r)))return;let i={};if(Error.captureStackTrace(i,I),!i.stack)return;let a=i.stack.split(` `).slice(1).join(` -`);e.stack=n?`${n}\n${a}`:i.stack}t.exports.fetch=function(e,n=void 0){return P(e,n).catch(e=>{throw F?I(e,F):e&&typeof e==`object`&&Error.captureStackTrace(e,t.exports.fetch),e})},t.exports.Headers=Wa().Headers,t.exports.Response=Ga().Response,t.exports.Request=Ka().Request,t.exports.FormData=Bi().FormData;let{setGlobalOrigin:ee,getGlobalOrigin:L}=Ni();t.exports.setGlobalOrigin=ee,t.exports.getGlobalOrigin=L;let{CacheStorage:R}=Za(),{kConstruct:te}=gi();t.exports.caches=new R(te);let{deleteCookie:ne,getCookies:re,getSetCookies:ie,setCookie:z,parseCookie:ae}=to();t.exports.deleteCookie=ne,t.exports.getCookies=re,t.exports.getSetCookies=ie,t.exports.setCookie=z,t.exports.parseCookie=ae;let{parseMIMEType:oe,serializeAMimeType:se}=Ii();t.exports.parseMIMEType=oe,t.exports.serializeAMimeType=se;let{CloseEvent:ce,ErrorEvent:le,MessageEvent:ue}=no(),{WebSocket:de,ping:fe}=uo();t.exports.WebSocket=de,t.exports.CloseEvent=ce,t.exports.ErrorEvent=le,t.exports.MessageEvent=ue,t.exports.ping=fe,t.exports.WebSocketStream=po().WebSocketStream,t.exports.WebSocketError=fo().WebSocketError,t.exports.request=N(v.request),t.exports.stream=N(v.stream),t.exports.pipeline=N(v.pipeline),t.exports.connect=N(v.connect),t.exports.upgrade=N(v.upgrade),t.exports.MockClient=b,t.exports.MockCallHistory=x,t.exports.MockCallHistoryLog=S,t.exports.MockPool=w,t.exports.MockAgent=C,t.exports.SnapshotAgent=T,t.exports.mockErrors=E;let{EventSource:pe}=go();t.exports.EventSource=pe;function me(){globalThis.fetch=t.exports.fetch,globalThis.Headers=t.exports.Headers,globalThis.Response=t.exports.Response,globalThis.Request=t.exports.Request,globalThis.FormData=t.exports.FormData,globalThis.WebSocket=t.exports.WebSocket,globalThis.CloseEvent=t.exports.CloseEvent,globalThis.ErrorEvent=t.exports.ErrorEvent,globalThis.MessageEvent=t.exports.MessageEvent,globalThis.EventSource=t.exports.EventSource}t.exports.install=me})),vo=/* @__PURE__ */ r(hi(),1),yo=_o(),bo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},xo;(function(e){e[e.OK=200]=`OK`,e[e.MultipleChoices=300]=`MultipleChoices`,e[e.MovedPermanently=301]=`MovedPermanently`,e[e.ResourceMoved=302]=`ResourceMoved`,e[e.SeeOther=303]=`SeeOther`,e[e.NotModified=304]=`NotModified`,e[e.UseProxy=305]=`UseProxy`,e[e.SwitchProxy=306]=`SwitchProxy`,e[e.TemporaryRedirect=307]=`TemporaryRedirect`,e[e.PermanentRedirect=308]=`PermanentRedirect`,e[e.BadRequest=400]=`BadRequest`,e[e.Unauthorized=401]=`Unauthorized`,e[e.PaymentRequired=402]=`PaymentRequired`,e[e.Forbidden=403]=`Forbidden`,e[e.NotFound=404]=`NotFound`,e[e.MethodNotAllowed=405]=`MethodNotAllowed`,e[e.NotAcceptable=406]=`NotAcceptable`,e[e.ProxyAuthenticationRequired=407]=`ProxyAuthenticationRequired`,e[e.RequestTimeout=408]=`RequestTimeout`,e[e.Conflict=409]=`Conflict`,e[e.Gone=410]=`Gone`,e[e.TooManyRequests=429]=`TooManyRequests`,e[e.InternalServerError=500]=`InternalServerError`,e[e.NotImplemented=501]=`NotImplemented`,e[e.BadGateway=502]=`BadGateway`,e[e.ServiceUnavailable=503]=`ServiceUnavailable`,e[e.GatewayTimeout=504]=`GatewayTimeout`})(xo||={});var So;(function(e){e.Accept=`accept`,e.ContentType=`content-type`})(So||={});var Co;(function(e){e.ApplicationJson=`application/json`})(Co||={});const wo=[xo.MovedPermanently,xo.ResourceMoved,xo.SeeOther,xo.TemporaryRedirect,xo.PermanentRedirect],To=[xo.BadGateway,xo.ServiceUnavailable,xo.GatewayTimeout],Eo=[`OPTIONS`,`GET`,`DELETE`,`HEAD`];var Do=class e extends Error{constructor(t,n){super(t),this.name=`HttpClientError`,this.statusCode=n,Object.setPrototypeOf(this,e.prototype)}},Oo=class{constructor(e){this.message=e}readBody(){return bo(this,void 0,void 0,function*(){return new Promise(e=>bo(this,void 0,void 0,function*(){let t=Buffer.alloc(0);this.message.on(`data`,e=>{t=Buffer.concat([t,e])}),this.message.on(`end`,()=>{e(t.toString())})}))})}readBodyBuffer(){return bo(this,void 0,void 0,function*(){return new Promise(e=>bo(this,void 0,void 0,function*(){let t=[];this.message.on(`data`,e=>{t.push(e)}),this.message.on(`end`,()=>{e(Buffer.concat(t))})}))})}},ko=class{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(e),this.handlers=t||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,t){return bo(this,void 0,void 0,function*(){return this.request(`OPTIONS`,e,null,t||{})})}get(e,t){return bo(this,void 0,void 0,function*(){return this.request(`GET`,e,null,t||{})})}del(e,t){return bo(this,void 0,void 0,function*(){return this.request(`DELETE`,e,null,t||{})})}post(e,t,n){return bo(this,void 0,void 0,function*(){return this.request(`POST`,e,t,n||{})})}patch(e,t,n){return bo(this,void 0,void 0,function*(){return this.request(`PATCH`,e,t,n||{})})}put(e,t,n){return bo(this,void 0,void 0,function*(){return this.request(`PUT`,e,t,n||{})})}head(e,t){return bo(this,void 0,void 0,function*(){return this.request(`HEAD`,e,null,t||{})})}sendStream(e,t,n,r){return bo(this,void 0,void 0,function*(){return this.request(e,t,n,r)})}getJson(e){return bo(this,arguments,void 0,function*(e,t={}){t[So.Accept]=this._getExistingOrDefaultHeader(t,So.Accept,Co.ApplicationJson);let n=yield this.get(e,t);return this._processResponse(n,this.requestOptions)})}postJson(e,t){return bo(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[So.Accept]=this._getExistingOrDefaultHeader(n,So.Accept,Co.ApplicationJson),n[So.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,Co.ApplicationJson);let i=yield this.post(e,r,n);return this._processResponse(i,this.requestOptions)})}putJson(e,t){return bo(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[So.Accept]=this._getExistingOrDefaultHeader(n,So.Accept,Co.ApplicationJson),n[So.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,Co.ApplicationJson);let i=yield this.put(e,r,n);return this._processResponse(i,this.requestOptions)})}patchJson(e,t){return bo(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[So.Accept]=this._getExistingOrDefaultHeader(n,So.Accept,Co.ApplicationJson),n[So.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,Co.ApplicationJson);let i=yield this.patch(e,r,n);return this._processResponse(i,this.requestOptions)})}request(e,t,n,r){return bo(this,void 0,void 0,function*(){if(this._disposed)throw Error(`Client has already been disposed.`);let i=new URL(t),a=this._prepareRequest(e,i,r),o=this._allowRetries&&Eo.includes(e)?this._maxRetries+1:1,s=0,c;do{if(c=yield this.requestRaw(a,n),c&&c.message&&c.message.statusCode===xo.Unauthorized){let e;for(let t of this.handlers)if(t.canHandleAuthentication(c)){e=t;break}return e?e.handleAuthentication(this,a,n):c}let t=this._maxRedirects;for(;c.message.statusCode&&wo.includes(c.message.statusCode)&&this._allowRedirects&&t>0;){let o=c.message.headers.location;if(!o)break;let s=new URL(o);if(i.protocol===`https:`&&i.protocol!==s.protocol&&!this._allowRedirectDowngrade)throw Error(`Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.`);if(yield c.readBody(),s.hostname!==i.hostname)for(let e in r)e.toLowerCase()===`authorization`&&delete r[e];a=this._prepareRequest(e,s,r),c=yield this.requestRaw(a,n),t--}if(!c.message.statusCode||!To.includes(c.message.statusCode))return c;s+=1,s{function i(e,t){e?r(e):t?n(t):r(/* @__PURE__ */ Error(`Unknown error`))}this.requestRawWithCallback(e,t,i)})})}requestRawWithCallback(e,t,n){typeof t==`string`&&(e.options.headers||(e.options.headers={}),e.options.headers[`Content-Length`]=Buffer.byteLength(t,`utf8`));let r=!1;function i(e,t){r||(r=!0,n(e,t))}let a=e.httpModule.request(e.options,e=>{i(void 0,new Oo(e))}),o;a.on(`socket`,e=>{o=e}),a.setTimeout(this._socketTimeout||18e4,()=>{o&&o.end(),i(/* @__PURE__ */ Error(`Request timeout: ${e.options.path}`))}),a.on(`error`,function(e){i(e)}),t&&typeof t==`string`&&a.write(t,`utf8`),t&&typeof t!=`string`?(t.on(`close`,function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){let t=new URL(e),n=ui(t);if(n&&n.hostname)return this._getProxyAgentDispatcher(t,n)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i=r.parsedUrl.protocol===`https:`;r.httpModule=i?cr:sr;let a=i?443:80;if(r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):a,r.options.path=(r.parsedUrl.pathname||``)+(r.parsedUrl.search||``),r.options.method=e,r.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(r.options.headers[`user-agent`]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers)for(let e of this.handlers)e.prepareRequest(r.options);return r}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},Ao(this.requestOptions.headers),Ao(e||{})):Ao(e||{})}_getExistingOrDefaultHeader(e,t,n){let r;if(this.requestOptions&&this.requestOptions.headers){let e=Ao(this.requestOptions.headers)[t];e&&(r=typeof e==`number`?e.toString():e)}let i=e[t];return i===void 0?r===void 0?n:r:typeof i==`number`?i.toString():i}_getExistingOrDefaultContentTypeHeader(e,t){let n;if(this.requestOptions&&this.requestOptions.headers){let e=Ao(this.requestOptions.headers)[So.ContentType];e&&(n=typeof e==`number`?String(e):Array.isArray(e)?e.join(`, `):e)}let r=e[So.ContentType];return r===void 0?n===void 0?t:n:typeof r==`number`?String(r):Array.isArray(r)?r.join(`, `):r}_getAgent(e){let t,n=ui(e),r=n&&n.hostname;if(this._keepAlive&&r&&(t=this._proxyAgent),r||(t=this._agent),t)return t;let i=e.protocol===`https:`,a=100;if(this.requestOptions&&(a=this.requestOptions.maxSockets||sr.globalAgent.maxSockets),n&&n.hostname){let e={maxSockets:a,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},r,o=n.protocol===`https:`;r=i?o?vo.httpsOverHttps:vo.httpsOverHttp:o?vo.httpOverHttps:vo.httpOverHttp,t=r(e),this._proxyAgent=t}if(!t){let e={keepAlive:this._keepAlive,maxSockets:a};t=i?new cr.Agent(e):new sr.Agent(e),this._agent=t}return i&&this._ignoreSslError&&(t.options=Object.assign(t.options||{},{rejectUnauthorized:!1})),t}_getProxyAgentDispatcher(e,t){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let r=e.protocol===`https:`;return n=new yo.ProxyAgent(Object.assign({uri:t.href,pipelining:+!!this._keepAlive},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString(`base64`)}`})),this._proxyAgentDispatcher=n,r&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_getUserAgentWithOrchestrationId(e){let t=e||`actions/http-client`,n=process.env.ACTIONS_ORCHESTRATION_ID;return n?`${t} actions_orchestration_id/${n.replace(/[^a-z0-9_.-]/gi,`_`)}`:t}_performExponentialBackoff(e){return bo(this,void 0,void 0,function*(){e=Math.min(10,e);let t=5*2**e;return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return bo(this,void 0,void 0,function*(){return new Promise((n,r)=>bo(this,void 0,void 0,function*(){let i=e.message.statusCode||0,a={statusCode:i,result:null,headers:{}};i===xo.NotFound&&n(a);function o(e,t){if(typeof t==`string`){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}let s,c;try{c=yield e.readBody(),c&&c.length>0&&(s=t&&t.deserializeDates?JSON.parse(c,o):JSON.parse(c),a.result=s),a.headers=e.message.headers}catch{}if(i>299){let e;e=s&&s.message?s.message:c&&c.length>0?c:`Failed request: (${i})`;let t=new Do(e,i);t.result=a.result,r(t)}else n(a)}))})}};const Ao=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{});var jo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Mo=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Bearer ${this.token}`}canHandleAuthentication(){return!1}handleAuthentication(){return jo(this,void 0,void 0,function*(){throw Error(`not implemented`)})}},No=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};const{access:Po,appendFile:Fo,writeFile:Io}=nr,Lo=`GITHUB_STEP_SUMMARY`,Ro=new class{constructor(){this._buffer=``}filePath(){return No(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let e=process.env[Lo];if(!e)throw Error(`Unable to find environment variable for $${Lo}. Check if your runtime environment supports job summaries.`);try{yield Po(e,er.R_OK|er.W_OK)}catch{throw Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}return this._filePath=e,this._filePath})}wrap(e,t,n={}){let r=Object.entries(n).map(([e,t])=>` ${e}="${t}"`).join(``);return t?`<${e}${r}>${t}`:`<${e}${r}>`}write(e){return No(this,void 0,void 0,function*(){let t=!!e?.overwrite,n=yield this.filePath();return yield(t?Io:Fo)(n,this._buffer,{encoding:`utf8`}),this.emptyBuffer()})}clear(){return No(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer=``,this}addRaw(e,t=!1){return this._buffer+=e,t?this.addEOL():this}addEOL(){return this.addRaw(Zn)}addCodeBlock(e,t){let n=Object.assign({},t&&{lang:t}),r=this.wrap(`pre`,this.wrap(`code`,e),n);return this.addRaw(r).addEOL()}addList(e,t=!1){let n=t?`ol`:`ul`,r=e.map(e=>this.wrap(`li`,e)).join(``),i=this.wrap(n,r);return this.addRaw(i).addEOL()}addTable(e){let t=e.map(e=>{let t=e.map(e=>{if(typeof e==`string`)return this.wrap(`td`,e);let{header:t,data:n,colspan:r,rowspan:i}=e,a=t?`th`:`td`,o=Object.assign(Object.assign({},r&&{colspan:r}),i&&{rowspan:i});return this.wrap(a,n,o)}).join(``);return this.wrap(`tr`,t)}).join(``),n=this.wrap(`table`,t);return this.addRaw(n).addEOL()}addDetails(e,t){let n=this.wrap(`details`,this.wrap(`summary`,e)+t);return this.addRaw(n).addEOL()}addImage(e,t,n){let{width:r,height:i}=n||{},a=Object.assign(Object.assign({},r&&{width:r}),i&&{height:i}),o=this.wrap(`img`,null,Object.assign({src:e,alt:t},a));return this.addRaw(o).addEOL()}addHeading(e,t){let n=`h${t}`,r=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`].includes(n)?n:`h1`,i=this.wrap(r,e);return this.addRaw(i).addEOL()}addSeparator(){let e=this.wrap(`hr`,null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap(`br`,null);return this.addRaw(e).addEOL()}addQuote(e,t){let n=Object.assign({},t&&{cite:t}),r=this.wrap(`blockquote`,e,n);return this.addRaw(r).addEOL()}addLink(e,t){let n=this.wrap(`a`,e,{href:t});return this.addRaw(n).addEOL()}};var zo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};const{chmod:Bo,copyFile:Vo,lstat:Ho,mkdir:Uo,open:Wo,readdir:Go,rename:Ko,rm:qo,rmdir:Jo,stat:Yo,symlink:Xo,unlink:Zo}=$n.promises,Qo=process.platform===`win32`;function $o(e){return zo(this,void 0,void 0,function*(){let t=yield $n.promises.readlink(e);return Qo&&!t.endsWith(`\\`)?`${t}\\`:t})}$n.constants.O_RDONLY;function es(e){return zo(this,void 0,void 0,function*(){try{yield Yo(e)}catch(e){if(e.code===`ENOENT`)return!1;throw e}return!0})}function ts(e){if(e=rs(e),!e)throw Error(`isRooted() parameter "p" cannot be empty`);return Qo?e.startsWith(`\\`)||/^[A-Z]:/i.test(e):e.startsWith(`/`)}function ns(e,t){return zo(this,void 0,void 0,function*(){let n;try{n=yield Yo(e)}catch(t){t.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}if(n&&n.isFile()){if(Qo){let n=V.extname(e).toUpperCase();if(t.some(e=>e.toUpperCase()===n))return e}else if(is(n))return e}let r=e;for(let i of t){e=r+i,n=void 0;try{n=yield Yo(e)}catch(t){t.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}if(n&&n.isFile()){if(Qo){try{let t=V.dirname(e),n=V.basename(e).toUpperCase();for(let r of yield Go(t))if(n===r.toUpperCase()){e=V.join(t,r);break}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}if(is(n))return e}}return``})}function rs(e){return e||=``,Qo?(e=e.replace(/\//g,`\\`),e.replace(/\\\\+/g,`\\`)):e.replace(/\/\/+/g,`/`)}function is(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==void 0&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==void 0&&e.uid===process.getuid()}var as=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function os(e,t){return as(this,arguments,void 0,function*(e,t,n={}){let{force:r,recursive:i,copySourceDirectory:a}=ds(n),o=(yield es(t))?yield Yo(t):null;if(o&&o.isFile()&&!r)return;let s=o&&o.isDirectory()&&a?V.join(t,V.basename(e)):t;if(!(yield es(e)))throw Error(`no such file or directory: ${e}`);if((yield Yo(e)).isDirectory()){if(i)yield fs(e,s,0,r);else throw Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{if(V.relative(e,s)===``)throw Error(`'${s}' and '${e}' are the same file`);yield ps(e,s,r)}})}function ss(e){return as(this,void 0,void 0,function*(){if(Qo&&/[*"<>|]/.test(e))throw Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');try{yield qo(e,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(e){throw Error(`File was unable to be removed ${e}`)}})}function cs(e){return as(this,void 0,void 0,function*(){fr(e,`a path argument must be provided`),yield Uo(e,{recursive:!0})})}function ls(e,t){return as(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);if(t){let t=yield ls(e,!1);if(!t)throw Error(Qo?`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`:`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return t}let n=yield us(e);return n&&n.length>0?n[0]:``})}function us(e){return as(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);let t=[];if(Qo&&process.env.PATHEXT)for(let e of process.env.PATHEXT.split(V.delimiter))e&&t.push(e);if(ts(e)){let n=yield ns(e,t);return n?[n]:[]}if(e.includes(V.sep))return[];let n=[];if(process.env.PATH)for(let e of process.env.PATH.split(V.delimiter))e&&n.push(e);let r=[];for(let i of n){let n=yield ns(V.join(i,e),t);n&&r.push(n)}return r})}function ds(e){return{force:e.force==null||e.force,recursive:!!e.recursive,copySourceDirectory:e.copySourceDirectory==null||!!e.copySourceDirectory}}function fs(e,t,n,r){return as(this,void 0,void 0,function*(){if(n>=255)return;n++,yield cs(t);let i=yield Go(e);for(let a of i){let i=`${e}/${a}`,o=`${t}/${a}`;(yield Ho(i)).isDirectory()?yield fs(i,o,n,r):yield ps(i,o,r)}yield Bo(t,(yield Yo(e)).mode)})}function ps(e,t,n){return as(this,void 0,void 0,function*(){if((yield Ho(e)).isSymbolicLink()){try{yield Ho(t),yield Zo(t)}catch(e){e.code===`EPERM`&&(yield Bo(t,`0666`),yield Zo(t))}let n=yield $o(e);yield Xo(n,t,Qo?`junction`:null)}else(!(yield es(t))||n)&&(yield Vo(e,t))})}var ms=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};const hs=process.platform===`win32`;var gs=class extends lr.EventEmitter{constructor(e,t,n){if(super(),!e)throw Error(`Parameter 'toolPath' cannot be null or empty.`);this.toolPath=e,this.args=t||[],this.options=n||{}}_debug(e){this.options.listeners&&this.options.listeners.debug&&this.options.listeners.debug(e)}_getCommandString(e,t){let n=this._getSpawnFileName(),r=this._getSpawnArgs(e),i=t?``:`[command]`;if(hs){if(this._isCmdFile()){i+=n;for(let e of r)i+=` ${e}`}else if(e.windowsVerbatimArguments){i+=`"${n}"`;for(let e of r)i+=` ${e}`}else{i+=this._windowsQuoteCmdArg(n);for(let e of r)i+=` ${this._windowsQuoteCmdArg(e)}`}}else{i+=n;for(let e of r)i+=` ${e}`}return i}_processLineBuffer(e,t,n){try{let r=t+e.toString(),i=r.indexOf(Yn.EOL);for(;i>-1;)n(r.substring(0,i)),r=r.substring(i+Yn.EOL.length),i=r.indexOf(Yn.EOL);return r}catch(e){return this._debug(`error processing line. Failed with error ${e}`),``}}_getSpawnFileName(){return hs&&this._isCmdFile()?process.env.COMSPEC||`cmd.exe`:this.toolPath}_getSpawnArgs(e){if(hs&&this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let n of this.args)t+=` `,t+=e.windowsVerbatimArguments?n:this._windowsQuoteCmdArg(n);return t+=`"`,[t]}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){let e=this.toolPath.toUpperCase();return this._endsWith(e,`.CMD`)||this._endsWith(e,`.BAT`)}_windowsQuoteCmdArg(e){if(!this._isCmdFile())return this._uvQuoteCmdArg(e);if(!e)return`""`;let t=[` `,` `,`&`,`(`,`)`,`[`,`]`,`{`,`}`,`^`,`=`,`;`,`!`,`'`,`+`,`,`,"`",`~`,`|`,`<`,`>`,`"`],n=!1;for(let r of e)if(t.some(e=>e===r)){n=!0;break}if(!n)return e;let r=`"`,i=!0;for(let t=e.length;t>0;t--)r+=e[t-1],i&&e[t-1]===`\\`?r+=`\\`:e[t-1]===`"`?(i=!0,r+=`"`):i=!1;return r+=`"`,r.split(``).reverse().join(``)}_uvQuoteCmdArg(e){if(!e)return`""`;if(!e.includes(` `)&&!e.includes(` `)&&!e.includes(`"`))return e;if(!e.includes(`"`)&&!e.includes(`\\`))return`"${e}"`;let t=`"`,n=!0;for(let r=e.length;r>0;r--)t+=e[r-1],n&&e[r-1]===`\\`?t+=`\\`:e[r-1]===`"`?(n=!0,t+=`\\`):n=!1;return t+=`"`,t.split(``).reverse().join(``)}_cloneExecOptions(e){e||={};let t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||!1,windowsVerbatimArguments:e.windowsVerbatimArguments||!1,failOnStdErr:e.failOnStdErr||!1,ignoreReturnCode:e.ignoreReturnCode||!1,delay:e.delay||1e4};return t.outStream=e.outStream||process.stdout,t.errStream=e.errStream||process.stderr,t}_getSpawnOptions(e,t){e||={};let n={};return n.cwd=e.cwd,n.env=e.env,n.windowsVerbatimArguments=e.windowsVerbatimArguments||this._isCmdFile(),e.windowsVerbatimArguments&&(n.argv0=`"${t}"`),n}exec(){return ms(this,void 0,void 0,function*(){return!ts(this.toolPath)&&(this.toolPath.includes(`/`)||hs&&this.toolPath.includes(`\\`))&&(this.toolPath=V.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)),this.toolPath=yield ls(this.toolPath,!0),new Promise((e,t)=>ms(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug(`arguments:`);for(let e of this.args)this._debug(` ${e}`);let n=this._cloneExecOptions(this.options);!n.silent&&n.outStream&&n.outStream.write(this._getCommandString(n)+Yn.EOL);let r=new vs(n,this.toolPath);if(r.on(`debug`,e=>{this._debug(e)}),this.options.cwd&&!(yield es(this.options.cwd)))return t(/* @__PURE__ */ Error(`The cwd: ${this.options.cwd} does not exist!`));let i=this._getSpawnFileName(),a=nee.spawn(i,this._getSpawnArgs(n),this._getSpawnOptions(this.options,i)),o=``;a.stdout&&a.stdout.on(`data`,e=>{this.options.listeners&&this.options.listeners.stdout&&this.options.listeners.stdout(e),!n.silent&&n.outStream&&n.outStream.write(e),o=this._processLineBuffer(e,o,e=>{this.options.listeners&&this.options.listeners.stdline&&this.options.listeners.stdline(e)})});let s=``;if(a.stderr&&a.stderr.on(`data`,e=>{r.processStderr=!0,this.options.listeners&&this.options.listeners.stderr&&this.options.listeners.stderr(e),!n.silent&&n.errStream&&n.outStream&&(n.failOnStdErr?n.errStream:n.outStream).write(e),s=this._processLineBuffer(e,s,e=>{this.options.listeners&&this.options.listeners.errline&&this.options.listeners.errline(e)})}),a.on(`error`,e=>{r.processError=e.message,r.processExited=!0,r.processClosed=!0,r.CheckComplete()}),a.on(`exit`,e=>{r.processExitCode=e,r.processExited=!0,this._debug(`Exit code ${e} received from tool '${this.toolPath}'`),r.CheckComplete()}),a.on(`close`,e=>{r.processExitCode=e,r.processExited=!0,r.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),r.CheckComplete()}),r.on(`done`,(n,r)=>{o.length>0&&this.emit(`stdline`,o),s.length>0&&this.emit(`errline`,s),a.removeAllListeners(),n?t(n):e(r)}),this.options.input){if(!a.stdin)throw Error(`child process missing stdin`);a.stdin.end(this.options.input)}}))})}};function _s(e){let t=[],n=!1,r=!1,i=``;function a(e){r&&e!==`"`&&(i+=`\\`),i+=e,r=!1}for(let o=0;o0&&(t.push(i),i=``):a(s)}return i.length>0&&t.push(i.trim()),t}var vs=class e extends lr.EventEmitter{constructor(e,t){if(super(),this.processClosed=!1,this.processError=``,this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!t)throw Error(`toolPath must not be empty`);this.options=e,this.toolPath=t,e.delay&&(this.delay=e.delay)}CheckComplete(){this.done||(this.processClosed?this._setResult():this.processExited&&(this.timeout=ree(e.HandleTimeout,this.delay,this)))}_debug(e){this.emit(`debug`,e)}_setResult(){let e;this.processExited&&(this.processError?e=/* @__PURE__ */ Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`):this.processExitCode!==0&&!this.options.ignoreReturnCode?e=/* @__PURE__ */ Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`):this.processStderr&&this.options.failOnStdErr&&(e=/* @__PURE__ */ Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`))),this.timeout&&=(clearTimeout(this.timeout),null),this.done=!0,this.emit(`done`,e,this.processExitCode)}static HandleTimeout(e){if(!e.done){if(!e.processClosed&&e.processExited){let t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},ys=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function bs(e,t,n){return ys(this,void 0,void 0,function*(){let r=_s(e);if(r.length===0)throw Error(`Parameter 'commandLine' cannot be null or empty.`);let i=r[0];return t=r.slice(1).concat(t||[]),new gs(i,t,n).exec()})}function xs(e,t,n){return ys(this,void 0,void 0,function*(){let r=``,i=``,a=new Fr(`utf8`),o=new Fr(`utf8`),s=n?.listeners?.stdout,c=n?.listeners?.stderr,l=Object.assign(Object.assign({},n?.listeners),{stdout:e=>{r+=a.write(e),s&&s(e)},stderr:e=>{i+=o.write(e),c&&c(e)}}),u=yield bs(e,t,Object.assign(Object.assign({},n),{listeners:l}));return r+=a.end(),i+=o.end(),{exitCode:u,stdout:r,stderr:i}})}Xn.platform(),Xn.arch();var Ss;(function(e){e[e.Success=0]=`Success`,e[e.Failure=1]=`Failure`})(Ss||={});function Cs(e,t){let n=ni(t);if(process.env[e]=n,process.env.GITHUB_ENV)return ci(`ENV`,li(e,t));ii(`set-env`,{name:e},n)}function ws(e){ii(`add-mask`,{},e)}function Ts(e){process.env.GITHUB_PATH?ci(`PATH`,e):ii(`add-path`,{},e),process.env.PATH=`${e}${V.delimiter}${process.env.PATH}`}function Es(e,t){let n=process.env[`INPUT_${e.replace(/ /g,`_`).toUpperCase()}`]||``;if(t&&t.required&&!n)throw Error(`Input required and not supplied: ${e}`);return t&&t.trimWhitespace===!1?n:n.trim()}function Ds(e,t){if(process.env.GITHUB_OUTPUT)return ci(`OUTPUT`,li(e,t));process.stdout.write(Yn.EOL),ii(`set-output`,{name:e},ni(t))}function Os(e){process.exitCode=Ss.Failure,As(e)}function ks(){return process.env.RUNNER_DEBUG===`1`}function W(e){ii(`debug`,{},e)}function As(e,t={}){ii(`error`,ri(t),e instanceof Error?e.toString():e)}function js(e,t={}){ii(`warning`,ri(t),e instanceof Error?e.toString():e)}function Ms(e,t={}){ii(`notice`,ri(t),e instanceof Error?e.toString():e)}function Ns(e){process.stdout.write(e+Yn.EOL)}function Ps(e,t){if(process.env.GITHUB_STATE)return ci(`STATE`,li(e,t));ii(`save-state`,{name:e},ni(t))}function Fs(e){return process.env[`STATE_${e}`]||``}const Is=/* @__PURE__ */ new Set(/* @__PURE__ */ `GITHUB_REPOSITORY.GITHUB_WORKSPACE.GITHUB_REF.GITHUB_REF_NAME.GITHUB_REF_TYPE.GITHUB_SHA.GITHUB_EVENT_NAME.GITHUB_RUN_ID.GITHUB_RUN_NUMBER.GITHUB_ACTOR.GITHUB_SERVER_URL.GITHUB_API_URL.GITHUB_GRAPHQL_URL.GITHUB_WORKFLOW.GITHUB_JOB.GITHUB_ACTION.GITHUB_EVENT_PATH.PATH.HOME.SHELL.USER.LOGNAME.PWD.TMPDIR.TMP.TEMP.CI.LANG.TERM.GH_CONFIG_DIR.TZ.FRO_BOT_OPENCODE_URL.HTTP_PROXY.HTTPS_PROXY.NO_PROXY.http_proxy.https_proxy.no_proxy.GIT_SSL_CAINFO.SSL_CERT_FILE.SSL_CERT_DIR.NODE_EXTRA_CA_CERTS`.split(`.`)),Ls=[`OPENCODE_`,`RUNNER_`,`XDG_`,`LC_`],Rs=[`_TOKEN`,`_API_KEY`,`_APIKEY`,`_SECRET`,`_PASSWORD`,`_PASSWD`,`_PRIVATE_KEY`,`_KEY`,`_CREDENTIALS`,`_CREDENTIAL`],zs=/* @__PURE__ */ new Set([`GITHUB_TOKEN`,`GH_TOKEN`,`OPENCODE_PURE`,`NODE_OPTIONS`]),Bs=[`AWS_`,`INPUT_`];function Vs(e){return zs.has(e)||Bs.some(t=>e.startsWith(t))?!0:Rs.some(t=>e.endsWith(t))}function Hs(e){return Is.has(e)||Ls.some(t=>e.startsWith(t))}function Us(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&Hs(n)&&!Vs(n)&&(t[n]=r);return t}function Ws(e){try{return e instanceof Error?e.message:String(e)}catch{return`[unprintable error]`}}function Gs(e){return e instanceof Error?e:Error(Ws(e))}function Ks(e){return typeof e==`string`&&e.length>0?e:void 0}function qs(e){return e.length>500?`${e.slice(0,497)}...`:e}function Js(e){try{if(typeof e!=`object`||!e||e instanceof Error)return qs(Ws(e));let t=e;return qs(Ks((typeof t.data==`object`&&t.data!==null?t.data:void 0)?.message)??Ks(t.message)??Ks(t.name)??Ks(t.type)??JSON.stringify(e))}catch{return`[unprintable error]`}}function Ys(e){return{success:!0,data:e}}function G(e){return{success:!1,error:e}}function Xs(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Zs(e,t=`|`){return e.map(e=>Cc(e)).join(t)}function Qs(e,t){return typeof t==`bigint`?t.toString():t}var $s=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function ec(e){return new $s(e)}function tc(e){return e==null}function nc(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function rc(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):cc(e,a,r?r(n.value,a):n.value))}}function uc(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?sc(e,n,()=>t[n]):cc(e,n,r.value))}}function dc(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function fc(e){return JSON.stringify(e)}function pc(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}const mc=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function hc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const gc=/* @__PURE__*/ ec(()=>{if(fl.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function _c(e){if(hc(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return hc(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function vc(e){return _c(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const yc=/* @__PURE__*/ new Set([`string`,`number`,`symbol`]);function bc(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function xc(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function Sc(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Cc(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function wc(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}const Tc={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Ec={int64:[/* @__PURE__*/ BigInt(`-9223372036854775808`),/* @__PURE__*/ BigInt(`9223372036854775807`)],uint64:[/* @__PURE__*/ BigInt(0),/* @__PURE__*/ BigInt(`18446744073709551615`)]};function Dc(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return lc(i,e,Oc(e,t)),xc(e,dc(n,{shape:i,checks:[]}))}function Oc(e,t){let n=oc(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function kc(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(Oc(e,t)),a={};return lc(a,e,Reflect.ownKeys(oc(e)).filter(e=>!i.has(e))),xc(e,dc(n,{shape:a,checks:[]}))}function Ac(e,t){if(!_c(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=oc(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return xc(e,dc(e._zod.def,{shape:jc(e,t)}))}function jc(e,t){let n={};return lc(n,e,Reflect.ownKeys(oc(e))),uc(n,t),n}function Mc(e,t){if(!_c(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return xc(e,dc(e._zod.def,{shape:jc(e,t)}))}function Nc(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return lc(n,e,Reflect.ownKeys(oc(e))),lc(n,t,Reflect.ownKeys(oc(t))),xc(e,dc(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Pc(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(Oc(t,n)):void 0,o={};return lc(o,t,Reflect.ownKeys(oc(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),xc(t,dc(t._zod.def,{shape:o,checks:[]}))}function Fc(e,t,n){let r=n?new Set(Oc(t,n)):void 0,i={};return lc(i,t,Reflect.ownKeys(oc(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),xc(t,dc(t._zod.def,{shape:i}))}function Ic(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function zc(e){return typeof e==`string`?e:e?.message}function Bc(e){let t=[];for(let n of e??[]){let e=n._zod.def;if(!/_(length|size)$|_equals$/.test(e.check))break;let r=e.maximum??e.length??e.size;r>=0&&t.push([r,n])}return t}function Vc(e,t,n){var r;for(let i=t;ie;return t[`~constantCatch`]=!0,t}var ol;const sl={value:void 0,enumerable:!1};let cl=`captureStackTrace`in Error?Error:null;function ll(e){let t=cl;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return cl=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}/* @__NO_SIDE_EFFECTS__ */ -function K(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=/* @__PURE__ */ new Set}a.prototype=i;let o=n,s=o&&/* @__PURE__ */ new WeakSet;function c(n,r){if(!n._zod){sl.value=new a(r);try{Object.defineProperty(n,"_zod",sl)}finally{sl.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),Jc(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?ll(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var ul=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},dl=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(ol=globalThis).__zod_globalConfig??(ol.__zod_globalConfig={});const fl=globalThis.__zod_globalConfig;function pl(e){return e&&Object.assign(fl,e),fl}function ml(){let e=this._zod;return e.message??=JSON.stringify(e.def,Qs,2),e.message}function hl(e){this._zod.message=e}const gl={get:ml,set:hl,enumerable:!0,configurable:!0},_l={value:void 0,enumerable:!1},vl=/* @__PURE__ */ new WeakSet([Object.prototype,Error.prototype]),yl=/* @__PURE__ */ K(`$ZodError`,(e,t)=>{e.name=`$ZodError`,_l.value=t,Object.defineProperty(e,"issues",_l),_l.value=void 0,Object.defineProperty(e,"message",gl);let n=Object.getPrototypeOf(e);vl.has(n)||(vl.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))});function bl(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function xl(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?bl(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Sl(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new ul;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Hc(e,o,pl())));throw mc(n,a?.callee??t),n}return s.value};return t},Tl=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Hc(e,o,pl())));throw mc(n,a?.callee??t),n}return s.value};return t},El=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new ul;return a.issues.length?Dl(e,a.issues,i):{success:!0,data:a.value}};function Dl(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>Hc(e,n,pl()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}const Ol=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?Dl(e,a.issues,i):{success:!0,data:a.value}},kl=/* @__PURE__ */ Symbol.for(`zod.compile.invalid`),Al=/* @__PURE__ */ Symbol.for(`zod.compile.fallback`),jl=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==kl)return!0;if(r.definite===!0&&n===void 0)return!1}return Ml(e,t,n)});function Ml(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[Al]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new ul;return a.issues.length===0}const Nl=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},q=e=>{let t=wl(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,Cl(n,a))};return n},Pl=e=>{let t=wl(e),n=(e,r,i,a)=>t(e,r,i,Cl(n,a));return n},Fl=e=>{let t=Tl(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,Cl(n,a))};return n},J=e=>{let t=Tl(e),n=async(e,r,i,a)=>await t(e,r,i,Cl(n,a));return n},Il=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return El(e)(t,n,i)},Ll=e=>(t,n,r)=>El(e)(t,n,r),Y=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ol(e)(t,n,i)},Rl=e=>async(t,n,r)=>Ol(e)(t,n,r),zl=/^[cC][0-9a-z]{6,}$/,Bl=/^[0-9a-z]+$/,Vl=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Hl=/^[0-9a-vA-V]{20}$/,Ul=/^[A-Za-z0-9]{27}$/,Wl=/^[a-zA-Z0-9_-]{21}$/;function Gl(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}const Kl=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ql=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Jl=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Yl=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;function Xl(){return RegExp(`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`,`u`)}const Zl=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ql=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,$l=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,X=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,eu=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,tu=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,nu=/^https?$/,ru=/^\+[1-9]\d{6,14}$/,iu=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function au(e){return RegExp(`^${e}$`)}const ou=/*@__PURE__*/ au(iu);function su(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function cu(e){return RegExp(`^${su(e)}$`)}function lu(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${su({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${su({precision:e.precision})}`:n;return RegExp(`^${iu}T(?:${r})$`)}const uu=/^[\s\S]{0,}$/,du=/^-?\d+(?:\.\d+)?$/,fu=/^(?:true|false)$/i,pu=/^[^A-Z]*$/,mu=/^[^a-z]*$/,hu=/*@__PURE__*/ K(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),gu=e=>{let t=e.value;return!tc(t)&&t.length!==void 0},_u={number:`number`,bigint:`bigint`,object:`date`},vu=/*@__PURE__*/ K(`$ZodCheckLessThan`,(e,t)=>{hu.init(e,t);let n=_u[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{hu.init(e,t);let n=_u[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:_u[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),bu=/*@__PURE__*/ K(`$ZodCheckMultipleOf`,(e,t)=>{hu.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):rc(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),xu=/*@__PURE__*/ K(`$ZodCheckNumberFormat`,(e,t)=>{hu.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Tc[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Su=/*@__PURE__*/ K(`$ZodCheckMaxLength`,(e,t)=>{var n;hu.init(e,t),(n=e._zod.def).when??(n.when=gu),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Wc(r):i)<=t.maximum)return;let a=Gc(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Cu=/*@__PURE__*/ K(`$ZodCheckMinLength`,(e,t)=>{var n;hu.init(e,t),(n=e._zod.def).when??(n.when=gu),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=Gc(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),wu=/*@__PURE__*/ K(`$ZodCheckLengthEquals`,(e,t)=>{var n;hu.init(e,t),(n=e._zod.def).when??(n.when=gu),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Wc(r):i;if(a===t.length)return;let o=Gc(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Tu=/*@__PURE__*/ K(`$ZodCheckStringFormat`,(e,t)=>{var n,r;hu.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Eu=/*@__PURE__*/ K(`$ZodCheckRegex`,(e,t)=>{Tu.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Du=/*@__PURE__*/ K(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=pu,Tu.init(e,t)}),Ou=/*@__PURE__*/ K(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=mu,Tu.init(e,t)}),ku=/*@__PURE__*/ K(`$ZodCheckIncludes`,(e,t)=>{hu.init(e,t);let n=bc(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Au=/*@__PURE__*/ K(`$ZodCheckStartsWith`,(e,t)=>{hu.init(e,t);let n=RegExp(`^${bc(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Z=/*@__PURE__*/ K(`$ZodCheckEndsWith`,(e,t)=>{hu.init(e,t);let n=RegExp(`.*${bc(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),ju=/*@__PURE__*/ K(`$ZodCheckOverwrite`,(e,t)=>{hu.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});var Mu=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +`);e.stack=n?`${n}\n${a}`:i.stack}t.exports.fetch=function(e,n=void 0){return P(e,n).catch(e=>{throw F?I(e,F):e&&typeof e==`object`&&Error.captureStackTrace(e,t.exports.fetch),e})},t.exports.Headers=Ga().Headers,t.exports.Response=Ka().Response,t.exports.Request=qa().Request,t.exports.FormData=Vi().FormData;let{setGlobalOrigin:ee,getGlobalOrigin:L}=Pi();t.exports.setGlobalOrigin=ee,t.exports.getGlobalOrigin=L;let{CacheStorage:R}=Qa(),{kConstruct:te}=_i();t.exports.caches=new R(te);let{deleteCookie:ne,getCookies:re,getSetCookies:ie,setCookie:z,parseCookie:ae}=no();t.exports.deleteCookie=ne,t.exports.getCookies=re,t.exports.getSetCookies=ie,t.exports.setCookie=z,t.exports.parseCookie=ae;let{parseMIMEType:oe,serializeAMimeType:se}=Li();t.exports.parseMIMEType=oe,t.exports.serializeAMimeType=se;let{CloseEvent:ce,ErrorEvent:le,MessageEvent:ue}=ro(),{WebSocket:de,ping:fe}=fo();t.exports.WebSocket=de,t.exports.CloseEvent=ce,t.exports.ErrorEvent=le,t.exports.MessageEvent=ue,t.exports.ping=fe,t.exports.WebSocketStream=mo().WebSocketStream,t.exports.WebSocketError=po().WebSocketError,t.exports.request=N(v.request),t.exports.stream=N(v.stream),t.exports.pipeline=N(v.pipeline),t.exports.connect=N(v.connect),t.exports.upgrade=N(v.upgrade),t.exports.MockClient=b,t.exports.MockCallHistory=x,t.exports.MockCallHistoryLog=S,t.exports.MockPool=w,t.exports.MockAgent=C,t.exports.SnapshotAgent=T,t.exports.mockErrors=E;let{EventSource:pe}=_o();t.exports.EventSource=pe;function me(){globalThis.fetch=t.exports.fetch,globalThis.Headers=t.exports.Headers,globalThis.Response=t.exports.Response,globalThis.Request=t.exports.Request,globalThis.FormData=t.exports.FormData,globalThis.WebSocket=t.exports.WebSocket,globalThis.CloseEvent=t.exports.CloseEvent,globalThis.ErrorEvent=t.exports.ErrorEvent,globalThis.MessageEvent=t.exports.MessageEvent,globalThis.EventSource=t.exports.EventSource}t.exports.install=me})),yo=/* @__PURE__ */ r(gi(),1),bo=vo(),xo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},So;(function(e){e[e.OK=200]=`OK`,e[e.MultipleChoices=300]=`MultipleChoices`,e[e.MovedPermanently=301]=`MovedPermanently`,e[e.ResourceMoved=302]=`ResourceMoved`,e[e.SeeOther=303]=`SeeOther`,e[e.NotModified=304]=`NotModified`,e[e.UseProxy=305]=`UseProxy`,e[e.SwitchProxy=306]=`SwitchProxy`,e[e.TemporaryRedirect=307]=`TemporaryRedirect`,e[e.PermanentRedirect=308]=`PermanentRedirect`,e[e.BadRequest=400]=`BadRequest`,e[e.Unauthorized=401]=`Unauthorized`,e[e.PaymentRequired=402]=`PaymentRequired`,e[e.Forbidden=403]=`Forbidden`,e[e.NotFound=404]=`NotFound`,e[e.MethodNotAllowed=405]=`MethodNotAllowed`,e[e.NotAcceptable=406]=`NotAcceptable`,e[e.ProxyAuthenticationRequired=407]=`ProxyAuthenticationRequired`,e[e.RequestTimeout=408]=`RequestTimeout`,e[e.Conflict=409]=`Conflict`,e[e.Gone=410]=`Gone`,e[e.TooManyRequests=429]=`TooManyRequests`,e[e.InternalServerError=500]=`InternalServerError`,e[e.NotImplemented=501]=`NotImplemented`,e[e.BadGateway=502]=`BadGateway`,e[e.ServiceUnavailable=503]=`ServiceUnavailable`,e[e.GatewayTimeout=504]=`GatewayTimeout`})(So||={});var Co;(function(e){e.Accept=`accept`,e.ContentType=`content-type`})(Co||={});var wo;(function(e){e.ApplicationJson=`application/json`})(wo||={});const To=[So.MovedPermanently,So.ResourceMoved,So.SeeOther,So.TemporaryRedirect,So.PermanentRedirect],Eo=[So.BadGateway,So.ServiceUnavailable,So.GatewayTimeout],Do=[`OPTIONS`,`GET`,`DELETE`,`HEAD`];var Oo=class e extends Error{constructor(t,n){super(t),this.name=`HttpClientError`,this.statusCode=n,Object.setPrototypeOf(this,e.prototype)}},ko=class{constructor(e){this.message=e}readBody(){return xo(this,void 0,void 0,function*(){return new Promise(e=>xo(this,void 0,void 0,function*(){let t=Buffer.alloc(0);this.message.on(`data`,e=>{t=Buffer.concat([t,e])}),this.message.on(`end`,()=>{e(t.toString())})}))})}readBodyBuffer(){return xo(this,void 0,void 0,function*(){return new Promise(e=>xo(this,void 0,void 0,function*(){let t=[];this.message.on(`data`,e=>{t.push(e)}),this.message.on(`end`,()=>{e(Buffer.concat(t))})}))})}},Ao=class{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(e),this.handlers=t||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,t){return xo(this,void 0,void 0,function*(){return this.request(`OPTIONS`,e,null,t||{})})}get(e,t){return xo(this,void 0,void 0,function*(){return this.request(`GET`,e,null,t||{})})}del(e,t){return xo(this,void 0,void 0,function*(){return this.request(`DELETE`,e,null,t||{})})}post(e,t,n){return xo(this,void 0,void 0,function*(){return this.request(`POST`,e,t,n||{})})}patch(e,t,n){return xo(this,void 0,void 0,function*(){return this.request(`PATCH`,e,t,n||{})})}put(e,t,n){return xo(this,void 0,void 0,function*(){return this.request(`PUT`,e,t,n||{})})}head(e,t){return xo(this,void 0,void 0,function*(){return this.request(`HEAD`,e,null,t||{})})}sendStream(e,t,n,r){return xo(this,void 0,void 0,function*(){return this.request(e,t,n,r)})}getJson(e){return xo(this,arguments,void 0,function*(e,t={}){t[Co.Accept]=this._getExistingOrDefaultHeader(t,Co.Accept,wo.ApplicationJson);let n=yield this.get(e,t);return this._processResponse(n,this.requestOptions)})}postJson(e,t){return xo(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[Co.Accept]=this._getExistingOrDefaultHeader(n,Co.Accept,wo.ApplicationJson),n[Co.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,wo.ApplicationJson);let i=yield this.post(e,r,n);return this._processResponse(i,this.requestOptions)})}putJson(e,t){return xo(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[Co.Accept]=this._getExistingOrDefaultHeader(n,Co.Accept,wo.ApplicationJson),n[Co.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,wo.ApplicationJson);let i=yield this.put(e,r,n);return this._processResponse(i,this.requestOptions)})}patchJson(e,t){return xo(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[Co.Accept]=this._getExistingOrDefaultHeader(n,Co.Accept,wo.ApplicationJson),n[Co.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,wo.ApplicationJson);let i=yield this.patch(e,r,n);return this._processResponse(i,this.requestOptions)})}request(e,t,n,r){return xo(this,void 0,void 0,function*(){if(this._disposed)throw Error(`Client has already been disposed.`);let i=new URL(t),a=this._prepareRequest(e,i,r),o=this._allowRetries&&Do.includes(e)?this._maxRetries+1:1,s=0,c;do{if(c=yield this.requestRaw(a,n),c&&c.message&&c.message.statusCode===So.Unauthorized){let e;for(let t of this.handlers)if(t.canHandleAuthentication(c)){e=t;break}return e?e.handleAuthentication(this,a,n):c}let t=this._maxRedirects;for(;c.message.statusCode&&To.includes(c.message.statusCode)&&this._allowRedirects&&t>0;){let o=c.message.headers.location;if(!o)break;let s=new URL(o);if(i.protocol===`https:`&&i.protocol!==s.protocol&&!this._allowRedirectDowngrade)throw Error(`Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.`);if(yield c.readBody(),s.hostname!==i.hostname)for(let e in r)e.toLowerCase()===`authorization`&&delete r[e];a=this._prepareRequest(e,s,r),c=yield this.requestRaw(a,n),t--}if(!c.message.statusCode||!Eo.includes(c.message.statusCode))return c;s+=1,s{function i(e,t){e?r(e):t?n(t):r(/* @__PURE__ */ Error(`Unknown error`))}this.requestRawWithCallback(e,t,i)})})}requestRawWithCallback(e,t,n){typeof t==`string`&&(e.options.headers||(e.options.headers={}),e.options.headers[`Content-Length`]=Buffer.byteLength(t,`utf8`));let r=!1;function i(e,t){r||(r=!0,n(e,t))}let a=e.httpModule.request(e.options,e=>{i(void 0,new ko(e))}),o;a.on(`socket`,e=>{o=e}),a.setTimeout(this._socketTimeout||18e4,()=>{o&&o.end(),i(/* @__PURE__ */ Error(`Request timeout: ${e.options.path}`))}),a.on(`error`,function(e){i(e)}),t&&typeof t==`string`&&a.write(t,`utf8`),t&&typeof t!=`string`?(t.on(`close`,function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){let t=new URL(e),n=di(t);if(n&&n.hostname)return this._getProxyAgentDispatcher(t,n)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i=r.parsedUrl.protocol===`https:`;r.httpModule=i?cr:sr;let a=i?443:80;if(r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):a,r.options.path=(r.parsedUrl.pathname||``)+(r.parsedUrl.search||``),r.options.method=e,r.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(r.options.headers[`user-agent`]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers)for(let e of this.handlers)e.prepareRequest(r.options);return r}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},jo(this.requestOptions.headers),jo(e||{})):jo(e||{})}_getExistingOrDefaultHeader(e,t,n){let r;if(this.requestOptions&&this.requestOptions.headers){let e=jo(this.requestOptions.headers)[t];e&&(r=typeof e==`number`?e.toString():e)}let i=e[t];return i===void 0?r===void 0?n:r:typeof i==`number`?i.toString():i}_getExistingOrDefaultContentTypeHeader(e,t){let n;if(this.requestOptions&&this.requestOptions.headers){let e=jo(this.requestOptions.headers)[Co.ContentType];e&&(n=typeof e==`number`?String(e):Array.isArray(e)?e.join(`, `):e)}let r=e[Co.ContentType];return r===void 0?n===void 0?t:n:typeof r==`number`?String(r):Array.isArray(r)?r.join(`, `):r}_getAgent(e){let t,n=di(e),r=n&&n.hostname;if(this._keepAlive&&r&&(t=this._proxyAgent),r||(t=this._agent),t)return t;let i=e.protocol===`https:`,a=100;if(this.requestOptions&&(a=this.requestOptions.maxSockets||sr.globalAgent.maxSockets),n&&n.hostname){let e={maxSockets:a,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},r,o=n.protocol===`https:`;r=i?o?yo.httpsOverHttps:yo.httpsOverHttp:o?yo.httpOverHttps:yo.httpOverHttp,t=r(e),this._proxyAgent=t}if(!t){let e={keepAlive:this._keepAlive,maxSockets:a};t=i?new cr.Agent(e):new sr.Agent(e),this._agent=t}return i&&this._ignoreSslError&&(t.options=Object.assign(t.options||{},{rejectUnauthorized:!1})),t}_getProxyAgentDispatcher(e,t){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let r=e.protocol===`https:`;return n=new bo.ProxyAgent(Object.assign({uri:t.href,pipelining:+!!this._keepAlive},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString(`base64`)}`})),this._proxyAgentDispatcher=n,r&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_getUserAgentWithOrchestrationId(e){let t=e||`actions/http-client`,n=process.env.ACTIONS_ORCHESTRATION_ID;return n?`${t} actions_orchestration_id/${n.replace(/[^a-z0-9_.-]/gi,`_`)}`:t}_performExponentialBackoff(e){return xo(this,void 0,void 0,function*(){e=Math.min(10,e);let t=5*2**e;return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return xo(this,void 0,void 0,function*(){return new Promise((n,r)=>xo(this,void 0,void 0,function*(){let i=e.message.statusCode||0,a={statusCode:i,result:null,headers:{}};i===So.NotFound&&n(a);function o(e,t){if(typeof t==`string`){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}let s,c;try{c=yield e.readBody(),c&&c.length>0&&(s=t&&t.deserializeDates?JSON.parse(c,o):JSON.parse(c),a.result=s),a.headers=e.message.headers}catch{}if(i>299){let e;e=s&&s.message?s.message:c&&c.length>0?c:`Failed request: (${i})`;let t=new Oo(e,i);t.result=a.result,r(t)}else n(a)}))})}};const jo=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{});var Mo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},No=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Bearer ${this.token}`}canHandleAuthentication(){return!1}handleAuthentication(){return Mo(this,void 0,void 0,function*(){throw Error(`not implemented`)})}},Po=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};const{access:Fo,appendFile:Io,writeFile:Lo}=nr,Ro=`GITHUB_STEP_SUMMARY`,zo=new class{constructor(){this._buffer=``}filePath(){return Po(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let e=process.env[Ro];if(!e)throw Error(`Unable to find environment variable for $${Ro}. Check if your runtime environment supports job summaries.`);try{yield Fo(e,er.R_OK|er.W_OK)}catch{throw Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}return this._filePath=e,this._filePath})}wrap(e,t,n={}){let r=Object.entries(n).map(([e,t])=>` ${e}="${t}"`).join(``);return t?`<${e}${r}>${t}`:`<${e}${r}>`}write(e){return Po(this,void 0,void 0,function*(){let t=!!e?.overwrite,n=yield this.filePath();return yield(t?Lo:Io)(n,this._buffer,{encoding:`utf8`}),this.emptyBuffer()})}clear(){return Po(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer=``,this}addRaw(e,t=!1){return this._buffer+=e,t?this.addEOL():this}addEOL(){return this.addRaw(Zn)}addCodeBlock(e,t){let n=Object.assign({},t&&{lang:t}),r=this.wrap(`pre`,this.wrap(`code`,e),n);return this.addRaw(r).addEOL()}addList(e,t=!1){let n=t?`ol`:`ul`,r=e.map(e=>this.wrap(`li`,e)).join(``),i=this.wrap(n,r);return this.addRaw(i).addEOL()}addTable(e){let t=e.map(e=>{let t=e.map(e=>{if(typeof e==`string`)return this.wrap(`td`,e);let{header:t,data:n,colspan:r,rowspan:i}=e,a=t?`th`:`td`,o=Object.assign(Object.assign({},r&&{colspan:r}),i&&{rowspan:i});return this.wrap(a,n,o)}).join(``);return this.wrap(`tr`,t)}).join(``),n=this.wrap(`table`,t);return this.addRaw(n).addEOL()}addDetails(e,t){let n=this.wrap(`details`,this.wrap(`summary`,e)+t);return this.addRaw(n).addEOL()}addImage(e,t,n){let{width:r,height:i}=n||{},a=Object.assign(Object.assign({},r&&{width:r}),i&&{height:i}),o=this.wrap(`img`,null,Object.assign({src:e,alt:t},a));return this.addRaw(o).addEOL()}addHeading(e,t){let n=`h${t}`,r=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`].includes(n)?n:`h1`,i=this.wrap(r,e);return this.addRaw(i).addEOL()}addSeparator(){let e=this.wrap(`hr`,null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap(`br`,null);return this.addRaw(e).addEOL()}addQuote(e,t){let n=Object.assign({},t&&{cite:t}),r=this.wrap(`blockquote`,e,n);return this.addRaw(r).addEOL()}addLink(e,t){let n=this.wrap(`a`,e,{href:t});return this.addRaw(n).addEOL()}};var Bo=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};const{chmod:Vo,copyFile:Ho,lstat:Uo,mkdir:Wo,open:Go,readdir:Ko,rename:qo,rm:Jo,rmdir:Yo,stat:Xo,symlink:Zo,unlink:Qo}=$n.promises,$o=process.platform===`win32`;function es(e){return Bo(this,void 0,void 0,function*(){let t=yield $n.promises.readlink(e);return $o&&!t.endsWith(`\\`)?`${t}\\`:t})}$n.constants.O_RDONLY;function ts(e){return Bo(this,void 0,void 0,function*(){try{yield Xo(e)}catch(e){if(e.code===`ENOENT`)return!1;throw e}return!0})}function ns(e){if(e=is(e),!e)throw Error(`isRooted() parameter "p" cannot be empty`);return $o?e.startsWith(`\\`)||/^[A-Z]:/i.test(e):e.startsWith(`/`)}function rs(e,t){return Bo(this,void 0,void 0,function*(){let n;try{n=yield Xo(e)}catch(t){t.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}if(n&&n.isFile()){if($o){let n=V.extname(e).toUpperCase();if(t.some(e=>e.toUpperCase()===n))return e}else if(as(n))return e}let r=e;for(let i of t){e=r+i,n=void 0;try{n=yield Xo(e)}catch(t){t.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}if(n&&n.isFile()){if($o){try{let t=V.dirname(e),n=V.basename(e).toUpperCase();for(let r of yield Ko(t))if(n===r.toUpperCase()){e=V.join(t,r);break}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}if(as(n))return e}}return``})}function is(e){return e||=``,$o?(e=e.replace(/\//g,`\\`),e.replace(/\\\\+/g,`\\`)):e.replace(/\/\/+/g,`/`)}function as(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==void 0&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==void 0&&e.uid===process.getuid()}var os=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function ss(e,t){return os(this,arguments,void 0,function*(e,t,n={}){let{force:r,recursive:i,copySourceDirectory:a}=fs(n),o=(yield ts(t))?yield Xo(t):null;if(o&&o.isFile()&&!r)return;let s=o&&o.isDirectory()&&a?V.join(t,V.basename(e)):t;if(!(yield ts(e)))throw Error(`no such file or directory: ${e}`);if((yield Xo(e)).isDirectory()){if(i)yield ps(e,s,0,r);else throw Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{if(V.relative(e,s)===``)throw Error(`'${s}' and '${e}' are the same file`);yield ms(e,s,r)}})}function cs(e){return os(this,void 0,void 0,function*(){if($o&&/[*"<>|]/.test(e))throw Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');try{yield Jo(e,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(e){throw Error(`File was unable to be removed ${e}`)}})}function ls(e){return os(this,void 0,void 0,function*(){fr(e,`a path argument must be provided`),yield Wo(e,{recursive:!0})})}function us(e,t){return os(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);if(t){let t=yield us(e,!1);if(!t)throw Error($o?`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`:`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return t}let n=yield ds(e);return n&&n.length>0?n[0]:``})}function ds(e){return os(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);let t=[];if($o&&process.env.PATHEXT)for(let e of process.env.PATHEXT.split(V.delimiter))e&&t.push(e);if(ns(e)){let n=yield rs(e,t);return n?[n]:[]}if(e.includes(V.sep))return[];let n=[];if(process.env.PATH)for(let e of process.env.PATH.split(V.delimiter))e&&n.push(e);let r=[];for(let i of n){let n=yield rs(V.join(i,e),t);n&&r.push(n)}return r})}function fs(e){return{force:e.force==null||e.force,recursive:!!e.recursive,copySourceDirectory:e.copySourceDirectory==null||!!e.copySourceDirectory}}function ps(e,t,n,r){return os(this,void 0,void 0,function*(){if(n>=255)return;n++,yield ls(t);let i=yield Ko(e);for(let a of i){let i=`${e}/${a}`,o=`${t}/${a}`;(yield Uo(i)).isDirectory()?yield ps(i,o,n,r):yield ms(i,o,r)}yield Vo(t,(yield Xo(e)).mode)})}function ms(e,t,n){return os(this,void 0,void 0,function*(){if((yield Uo(e)).isSymbolicLink()){try{yield Uo(t),yield Qo(t)}catch(e){e.code===`EPERM`&&(yield Vo(t,`0666`),yield Qo(t))}let n=yield es(e);yield Zo(n,t,$o?`junction`:null)}else(!(yield ts(t))||n)&&(yield Ho(e,t))})}var hs=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};const gs=process.platform===`win32`;var _s=class extends lr.EventEmitter{constructor(e,t,n){if(super(),!e)throw Error(`Parameter 'toolPath' cannot be null or empty.`);this.toolPath=e,this.args=t||[],this.options=n||{}}_debug(e){this.options.listeners&&this.options.listeners.debug&&this.options.listeners.debug(e)}_getCommandString(e,t){let n=this._getSpawnFileName(),r=this._getSpawnArgs(e),i=t?``:`[command]`;if(gs){if(this._isCmdFile()){i+=n;for(let e of r)i+=` ${e}`}else if(e.windowsVerbatimArguments){i+=`"${n}"`;for(let e of r)i+=` ${e}`}else{i+=this._windowsQuoteCmdArg(n);for(let e of r)i+=` ${this._windowsQuoteCmdArg(e)}`}}else{i+=n;for(let e of r)i+=` ${e}`}return i}_processLineBuffer(e,t,n){try{let r=t+e.toString(),i=r.indexOf(Yn.EOL);for(;i>-1;)n(r.substring(0,i)),r=r.substring(i+Yn.EOL.length),i=r.indexOf(Yn.EOL);return r}catch(e){return this._debug(`error processing line. Failed with error ${e}`),``}}_getSpawnFileName(){return gs&&this._isCmdFile()?process.env.COMSPEC||`cmd.exe`:this.toolPath}_getSpawnArgs(e){if(gs&&this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let n of this.args)t+=` `,t+=e.windowsVerbatimArguments?n:this._windowsQuoteCmdArg(n);return t+=`"`,[t]}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){let e=this.toolPath.toUpperCase();return this._endsWith(e,`.CMD`)||this._endsWith(e,`.BAT`)}_windowsQuoteCmdArg(e){if(!this._isCmdFile())return this._uvQuoteCmdArg(e);if(!e)return`""`;let t=[` `,` `,`&`,`(`,`)`,`[`,`]`,`{`,`}`,`^`,`=`,`;`,`!`,`'`,`+`,`,`,"`",`~`,`|`,`<`,`>`,`"`],n=!1;for(let r of e)if(t.some(e=>e===r)){n=!0;break}if(!n)return e;let r=`"`,i=!0;for(let t=e.length;t>0;t--)r+=e[t-1],i&&e[t-1]===`\\`?r+=`\\`:e[t-1]===`"`?(i=!0,r+=`"`):i=!1;return r+=`"`,r.split(``).reverse().join(``)}_uvQuoteCmdArg(e){if(!e)return`""`;if(!e.includes(` `)&&!e.includes(` `)&&!e.includes(`"`))return e;if(!e.includes(`"`)&&!e.includes(`\\`))return`"${e}"`;let t=`"`,n=!0;for(let r=e.length;r>0;r--)t+=e[r-1],n&&e[r-1]===`\\`?t+=`\\`:e[r-1]===`"`?(n=!0,t+=`\\`):n=!1;return t+=`"`,t.split(``).reverse().join(``)}_cloneExecOptions(e){e||={};let t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||!1,windowsVerbatimArguments:e.windowsVerbatimArguments||!1,failOnStdErr:e.failOnStdErr||!1,ignoreReturnCode:e.ignoreReturnCode||!1,delay:e.delay||1e4};return t.outStream=e.outStream||process.stdout,t.errStream=e.errStream||process.stderr,t}_getSpawnOptions(e,t){e||={};let n={};return n.cwd=e.cwd,n.env=e.env,n.windowsVerbatimArguments=e.windowsVerbatimArguments||this._isCmdFile(),e.windowsVerbatimArguments&&(n.argv0=`"${t}"`),n}exec(){return hs(this,void 0,void 0,function*(){return!ns(this.toolPath)&&(this.toolPath.includes(`/`)||gs&&this.toolPath.includes(`\\`))&&(this.toolPath=V.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)),this.toolPath=yield us(this.toolPath,!0),new Promise((e,t)=>hs(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug(`arguments:`);for(let e of this.args)this._debug(` ${e}`);let n=this._cloneExecOptions(this.options);!n.silent&&n.outStream&&n.outStream.write(this._getCommandString(n)+Yn.EOL);let r=new ys(n,this.toolPath);if(r.on(`debug`,e=>{this._debug(e)}),this.options.cwd&&!(yield ts(this.options.cwd)))return t(/* @__PURE__ */ Error(`The cwd: ${this.options.cwd} does not exist!`));let i=this._getSpawnFileName(),a=Fr.spawn(i,this._getSpawnArgs(n),this._getSpawnOptions(this.options,i)),o=``;a.stdout&&a.stdout.on(`data`,e=>{this.options.listeners&&this.options.listeners.stdout&&this.options.listeners.stdout(e),!n.silent&&n.outStream&&n.outStream.write(e),o=this._processLineBuffer(e,o,e=>{this.options.listeners&&this.options.listeners.stdline&&this.options.listeners.stdline(e)})});let s=``;if(a.stderr&&a.stderr.on(`data`,e=>{r.processStderr=!0,this.options.listeners&&this.options.listeners.stderr&&this.options.listeners.stderr(e),!n.silent&&n.errStream&&n.outStream&&(n.failOnStdErr?n.errStream:n.outStream).write(e),s=this._processLineBuffer(e,s,e=>{this.options.listeners&&this.options.listeners.errline&&this.options.listeners.errline(e)})}),a.on(`error`,e=>{r.processError=e.message,r.processExited=!0,r.processClosed=!0,r.CheckComplete()}),a.on(`exit`,e=>{r.processExitCode=e,r.processExited=!0,this._debug(`Exit code ${e} received from tool '${this.toolPath}'`),r.CheckComplete()}),a.on(`close`,e=>{r.processExitCode=e,r.processExited=!0,r.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),r.CheckComplete()}),r.on(`done`,(n,r)=>{o.length>0&&this.emit(`stdline`,o),s.length>0&&this.emit(`errline`,s),a.removeAllListeners(),n?t(n):e(r)}),this.options.input){if(!a.stdin)throw Error(`child process missing stdin`);a.stdin.end(this.options.input)}}))})}};function vs(e){let t=[],n=!1,r=!1,i=``;function a(e){r&&e!==`"`&&(i+=`\\`),i+=e,r=!1}for(let o=0;o0&&(t.push(i),i=``):a(s)}return i.length>0&&t.push(i.trim()),t}var ys=class e extends lr.EventEmitter{constructor(e,t){if(super(),this.processClosed=!1,this.processError=``,this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!t)throw Error(`toolPath must not be empty`);this.options=e,this.toolPath=t,e.delay&&(this.delay=e.delay)}CheckComplete(){this.done||(this.processClosed?this._setResult():this.processExited&&(this.timeout=Ir(e.HandleTimeout,this.delay,this)))}_debug(e){this.emit(`debug`,e)}_setResult(){let e;this.processExited&&(this.processError?e=/* @__PURE__ */ Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`):this.processExitCode!==0&&!this.options.ignoreReturnCode?e=/* @__PURE__ */ Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`):this.processStderr&&this.options.failOnStdErr&&(e=/* @__PURE__ */ Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`))),this.timeout&&=(clearTimeout(this.timeout),null),this.done=!0,this.emit(`done`,e,this.processExitCode)}static HandleTimeout(e){if(!e.done){if(!e.processClosed&&e.processExited){let t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},bs=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function xs(e,t,n){return bs(this,void 0,void 0,function*(){let r=vs(e);if(r.length===0)throw Error(`Parameter 'commandLine' cannot be null or empty.`);let i=r[0];return t=r.slice(1).concat(t||[]),new _s(i,t,n).exec()})}function Ss(e,t,n){return bs(this,void 0,void 0,function*(){let r=``,i=``,a=new Pr(`utf8`),o=new Pr(`utf8`),s=n?.listeners?.stdout,c=n?.listeners?.stderr,l=Object.assign(Object.assign({},n?.listeners),{stdout:e=>{r+=a.write(e),s&&s(e)},stderr:e=>{i+=o.write(e),c&&c(e)}}),u=yield xs(e,t,Object.assign(Object.assign({},n),{listeners:l}));return r+=a.end(),i+=o.end(),{exitCode:u,stdout:r,stderr:i}})}Xn.platform(),Xn.arch();var Cs;(function(e){e[e.Success=0]=`Success`,e[e.Failure=1]=`Failure`})(Cs||={});function ws(e,t){let n=ri(t);if(process.env[e]=n,process.env.GITHUB_ENV)return li(`ENV`,ui(e,t));ai(`set-env`,{name:e},n)}function Ts(e){ai(`add-mask`,{},e)}function Es(e){process.env.GITHUB_PATH?li(`PATH`,e):ai(`add-path`,{},e),process.env.PATH=`${e}${V.delimiter}${process.env.PATH}`}function Ds(e,t){let n=process.env[`INPUT_${e.replace(/ /g,`_`).toUpperCase()}`]||``;if(t&&t.required&&!n)throw Error(`Input required and not supplied: ${e}`);return t&&t.trimWhitespace===!1?n:n.trim()}function Os(e,t){if(process.env.GITHUB_OUTPUT)return li(`OUTPUT`,ui(e,t));process.stdout.write(Yn.EOL),ai(`set-output`,{name:e},ri(t))}function ks(e){process.exitCode=Cs.Failure,js(e)}function As(){return process.env.RUNNER_DEBUG===`1`}function W(e){ai(`debug`,{},e)}function js(e,t={}){ai(`error`,ii(t),e instanceof Error?e.toString():e)}function Ms(e,t={}){ai(`warning`,ii(t),e instanceof Error?e.toString():e)}function Ns(e,t={}){ai(`notice`,ii(t),e instanceof Error?e.toString():e)}function Ps(e){process.stdout.write(e+Yn.EOL)}function Fs(e,t){if(process.env.GITHUB_STATE)return li(`STATE`,ui(e,t));ai(`save-state`,{name:e},ri(t))}function Is(e){return process.env[`STATE_${e}`]||``}function Ls(e){return{success:!0,data:e}}function G(e){return{success:!1,error:e}}function Rs(e){try{return e instanceof Error?e.message:String(e)}catch{return`[unprintable error]`}}function zs(e){return e instanceof Error?e:Error(Rs(e))}function Bs(e){return typeof e==`string`&&e.length>0?e:void 0}function Vs(e){return e.length>500?`${e.slice(0,497)}...`:e}function Hs(e){try{if(typeof e!=`object`||!e||e instanceof Error)return Vs(Rs(e));let t=e;return Vs(Bs((typeof t.data==`object`&&t.data!==null?t.data:void 0)?.message)??Bs(t.message)??Bs(t.name)??Bs(t.type)??JSON.stringify(e))}catch{return`[unprintable error]`}}const Us=/* @__PURE__ */ new Set(/* @__PURE__ */ `GITHUB_REPOSITORY.GITHUB_WORKSPACE.GITHUB_REF.GITHUB_REF_NAME.GITHUB_REF_TYPE.GITHUB_SHA.GITHUB_EVENT_NAME.GITHUB_RUN_ID.GITHUB_RUN_NUMBER.GITHUB_ACTOR.GITHUB_SERVER_URL.GITHUB_API_URL.GITHUB_GRAPHQL_URL.GITHUB_WORKFLOW.GITHUB_JOB.GITHUB_ACTION.GITHUB_EVENT_PATH.PATH.HOME.SHELL.USER.LOGNAME.PWD.TMPDIR.TMP.TEMP.CI.LANG.TERM.GH_CONFIG_DIR.TZ.FRO_BOT_OPENCODE_URL.HTTP_PROXY.HTTPS_PROXY.NO_PROXY.http_proxy.https_proxy.no_proxy.GIT_SSL_CAINFO.SSL_CERT_FILE.SSL_CERT_DIR.NODE_EXTRA_CA_CERTS`.split(`.`)),Ws=[`OPENCODE_`,`RUNNER_`,`XDG_`,`LC_`],Gs=[`_TOKEN`,`_API_KEY`,`_APIKEY`,`_SECRET`,`_PASSWORD`,`_PASSWD`,`_PRIVATE_KEY`,`_KEY`,`_CREDENTIALS`,`_CREDENTIAL`],Ks=/* @__PURE__ */ new Set([`GITHUB_TOKEN`,`GH_TOKEN`,`OPENCODE_PURE`,`NODE_OPTIONS`]),qs=[`AWS_`,`INPUT_`];function Js(e){return Ks.has(e)||qs.some(t=>e.startsWith(t))?!0:Gs.some(t=>e.endsWith(t))}function Ys(e){return Us.has(e)||Ws.some(t=>e.startsWith(t))}function Xs(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&Ys(n)&&!Js(n)&&(t[n]=r);return t}function Zs(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Qs(e,t=`|`){return e.map(e=>wc(e)).join(t)}function $s(e,t){return typeof t==`bigint`?t.toString():t}var ec=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function tc(e){return new ec(e)}function nc(e){return e==null}function rc(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ic(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):lc(e,a,r?r(n.value,a):n.value))}}function dc(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?cc(e,n,()=>t[n]):lc(e,n,r.value))}}function fc(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function pc(e){return JSON.stringify(e)}function mc(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}const hc=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function gc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const _c=/* @__PURE__*/ tc(()=>{if(pl.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function vc(e){if(gc(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return gc(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function yc(e){return vc(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const bc=/* @__PURE__*/ new Set([`string`,`number`,`symbol`]);function xc(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Sc(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function Cc(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function wc(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function Tc(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}const Ec={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Dc={int64:[/* @__PURE__*/ BigInt(`-9223372036854775808`),/* @__PURE__*/ BigInt(`9223372036854775807`)],uint64:[/* @__PURE__*/ BigInt(0),/* @__PURE__*/ BigInt(`18446744073709551615`)]};function Oc(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return uc(i,e,kc(e,t)),Sc(e,fc(n,{shape:i,checks:[]}))}function kc(e,t){let n=sc(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function Ac(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(kc(e,t)),a={};return uc(a,e,Reflect.ownKeys(sc(e)).filter(e=>!i.has(e))),Sc(e,fc(n,{shape:a,checks:[]}))}function jc(e,t){if(!vc(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=sc(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sc(e,fc(e._zod.def,{shape:Mc(e,t)}))}function Mc(e,t){let n={};return uc(n,e,Reflect.ownKeys(sc(e))),dc(n,t),n}function Nc(e,t){if(!vc(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Sc(e,fc(e._zod.def,{shape:Mc(e,t)}))}function Pc(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return uc(n,e,Reflect.ownKeys(sc(e))),uc(n,t,Reflect.ownKeys(sc(t))),Sc(e,fc(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Fc(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(kc(t,n)):void 0,o={};return uc(o,t,Reflect.ownKeys(sc(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),Sc(t,fc(t._zod.def,{shape:o,checks:[]}))}function Ic(e,t,n){let r=n?new Set(kc(t,n)):void 0,i={};return uc(i,t,Reflect.ownKeys(sc(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),Sc(t,fc(t._zod.def,{shape:i}))}function Lc(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Bc(e){return typeof e==`string`?e:e?.message}function Vc(e){let t=[];for(let n of e??[]){let e=n._zod.def;if(!/_(length|size)$|_equals$/.test(e.check))break;let r=e.maximum??e.length??e.size;r>=0&&t.push([r,n])}return t}function Hc(e,t,n){var r;for(let i=t;ie;return t[`~constantCatch`]=!0,t}var sl;const cl={value:void 0,enumerable:!1};let ll=`captureStackTrace`in Error?Error:null;function ul(e){let t=ll;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return ll=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}/* @__NO_SIDE_EFFECTS__ */ +function K(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=/* @__PURE__ */ new Set}a.prototype=i;let o=n,s=o&&/* @__PURE__ */ new WeakSet;function c(n,r){if(!n._zod){cl.value=new a(r);try{Object.defineProperty(n,"_zod",cl)}finally{cl.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),Yc(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?ul(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var dl=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},fl=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(sl=globalThis).__zod_globalConfig??(sl.__zod_globalConfig={});const pl=globalThis.__zod_globalConfig;function ml(e){return e&&Object.assign(pl,e),pl}function hl(){let e=this._zod;return e.message??=JSON.stringify(e.def,$s,2),e.message}function gl(e){this._zod.message=e}const _l={get:hl,set:gl,enumerable:!0,configurable:!0},vl={value:void 0,enumerable:!1},yl=/* @__PURE__ */ new WeakSet([Object.prototype,Error.prototype]),bl=/* @__PURE__ */ K(`$ZodError`,(e,t)=>{e.name=`$ZodError`,vl.value=t,Object.defineProperty(e,"issues",vl),vl.value=void 0,Object.defineProperty(e,"message",_l);let n=Object.getPrototypeOf(e);yl.has(n)||(yl.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))});function xl(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Sl(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?xl(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Cl(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new dl;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Uc(e,o,ml())));throw hc(n,a?.callee??t),n}return s.value};return t},El=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Uc(e,o,ml())));throw hc(n,a?.callee??t),n}return s.value};return t},Dl=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new dl;return a.issues.length?Ol(e,a.issues,i):{success:!0,data:a.value}};function Ol(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>Uc(e,n,ml()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}const kl=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?Ol(e,a.issues,i):{success:!0,data:a.value}},Al=/* @__PURE__ */ Symbol.for(`zod.compile.invalid`),jl=/* @__PURE__ */ Symbol.for(`zod.compile.fallback`),Ml=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==Al)return!0;if(r.definite===!0&&n===void 0)return!1}return Nl(e,t,n)});function Nl(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[jl]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new dl;return a.issues.length===0}const Pl=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},q=e=>{let t=Tl(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,wl(n,a))};return n},Fl=e=>{let t=Tl(e),n=(e,r,i,a)=>t(e,r,i,wl(n,a));return n},Il=e=>{let t=El(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,wl(n,a))};return n},J=e=>{let t=El(e),n=async(e,r,i,a)=>await t(e,r,i,wl(n,a));return n},Ll=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Dl(e)(t,n,i)},Rl=e=>(t,n,r)=>Dl(e)(t,n,r),Y=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return kl(e)(t,n,i)},zl=e=>async(t,n,r)=>kl(e)(t,n,r),Bl=/^[cC][0-9a-z]{6,}$/,Vl=/^[0-9a-z]+$/,Hl=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Ul=/^[0-9a-vA-V]{20}$/,Wl=/^[A-Za-z0-9]{27}$/,Gl=/^[a-zA-Z0-9_-]{21}$/;function Kl(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}const ql=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Jl=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Yl=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Xl=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;function Zl(){return RegExp(`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`,`u`)}const Ql=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,$l=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,eu=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,X=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,tu=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,nu=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,ru=/^https?$/,iu=/^\+[1-9]\d{6,14}$/,au=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function ou(e){return RegExp(`^${e}$`)}const su=/*@__PURE__*/ ou(au);function cu(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function lu(e){return RegExp(`^${cu(e)}$`)}function uu(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${cu({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${cu({precision:e.precision})}`:n;return RegExp(`^${au}T(?:${r})$`)}const du=/^[\s\S]{0,}$/,fu=/^-?\d+(?:\.\d+)?$/,pu=/^(?:true|false)$/i,mu=/^[^A-Z]*$/,hu=/^[^a-z]*$/,gu=/*@__PURE__*/ K(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),_u=e=>{let t=e.value;return!nc(t)&&t.length!==void 0},vu={number:`number`,bigint:`bigint`,object:`date`},yu=/*@__PURE__*/ K(`$ZodCheckLessThan`,(e,t)=>{gu.init(e,t);let n=vu[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{gu.init(e,t);let n=vu[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:vu[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xu=/*@__PURE__*/ K(`$ZodCheckMultipleOf`,(e,t)=>{gu.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ic(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Su=/*@__PURE__*/ K(`$ZodCheckNumberFormat`,(e,t)=>{gu.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Ec[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Cu=/*@__PURE__*/ K(`$ZodCheckMaxLength`,(e,t)=>{var n;gu.init(e,t),(n=e._zod.def).when??(n.when=_u),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Gc(r):i)<=t.maximum)return;let a=Kc(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),wu=/*@__PURE__*/ K(`$ZodCheckMinLength`,(e,t)=>{var n;gu.init(e,t),(n=e._zod.def).when??(n.when=_u),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=Kc(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Tu=/*@__PURE__*/ K(`$ZodCheckLengthEquals`,(e,t)=>{var n;gu.init(e,t),(n=e._zod.def).when??(n.when=_u),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Gc(r):i;if(a===t.length)return;let o=Kc(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Eu=/*@__PURE__*/ K(`$ZodCheckStringFormat`,(e,t)=>{var n,r;gu.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Du=/*@__PURE__*/ K(`$ZodCheckRegex`,(e,t)=>{Eu.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Ou=/*@__PURE__*/ K(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=mu,Eu.init(e,t)}),ku=/*@__PURE__*/ K(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=hu,Eu.init(e,t)}),Au=/*@__PURE__*/ K(`$ZodCheckIncludes`,(e,t)=>{gu.init(e,t);let n=xc(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),ju=/*@__PURE__*/ K(`$ZodCheckStartsWith`,(e,t)=>{gu.init(e,t);let n=RegExp(`^${xc(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Z=/*@__PURE__*/ K(`$ZodCheckEndsWith`,(e,t)=>{gu.init(e,t);let n=RegExp(`.*${xc(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Mu=/*@__PURE__*/ K(`$ZodCheckOverwrite`,(e,t)=>{gu.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});var Nu=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` -`)}\n};`)(...Object.values(this.closed))}};const Nu={major:4,minor:6,patch:7},Pu=/*@__PURE__*/ K(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Nu;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=Ic(t),a;for(let o of n){if(o._zod.def.when){if(Lc(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new ul;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(Vc(t.issues,n,e),i||=Ic(t,n))});else{if(t.issues.length===n)continue;Vc(t.issues,n,e),i||=Ic(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(Ic(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new ul;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new ul;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Xc(this,`~standard`,Lu(this))},set"~standard"(e){Yc(this,`~standard`,e)}}),Fu=(e,t)=>e.issues.length?{issues:e.issues.map(e=>Hc(e,t,pl()))}:{value:e.value};async function Iu(e,t){let n={async:!0};return Fu(await e._zod.run({value:t,issues:[]},n),n)}function Lu(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return Fu(r,n)}catch{}return Iu(e,t)},vendor:`zod`,version:1}}const Ru=/*@__PURE__*/ K(`$ZodString`,(e,t)=>{Pu.init(e,t),e._zod.pattern=t.pattern??uu,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),zu=/*@__PURE__*/ K(`$ZodStringFormat`,(e,t)=>{Tu.init(e,t),Ru.init(e,t)}),Bu=/*@__PURE__*/ K(`$ZodGUID`,(e,t)=>{t.pattern??=ql,zu.init(e,t)}),Vu=/*@__PURE__*/ K(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Jl(e)}else t.pattern??=Jl();zu.init(e,t)}),Hu=/*@__PURE__*/ K(`$ZodEmail`,(e,t)=>{t.pattern??=Yl,zu.init(e,t)});function Uu(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Wu(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?Uu(e)||2:Gu(e,t)}function Gu(e,t){if(!t.normalize&&t.protocol?.source===nu.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}const Ku=/[\t\n\r]/g;function qu(e){return e.replace(Ku,``)}function Ju(e,t){return t.lastIndex=0,t.test(e.hostname)}function Yu(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}const Xu=/*@__PURE__*/ K(`$ZodURL`,(e,t)=>{zu.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=Wu(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=qu(r);return}t.hostname&&!Ju(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Yu(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:qu(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Zu=/*@__PURE__*/ K(`$ZodEmoji`,(e,t)=>{t.pattern??=Xl(),zu.init(e,t)}),Qu=/*@__PURE__*/ K(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Wl:Gl(t.length),zu.init(e,t)}),$u=/*@__PURE__*/ K(`$ZodCUID`,(e,t)=>{t.pattern??=zl,zu.init(e,t)}),ed=/*@__PURE__*/ K(`$ZodCUID2`,(e,t)=>{t.pattern??=Bl,zu.init(e,t)}),td=/*@__PURE__*/ K(`$ZodULID`,(e,t)=>{t.pattern??=Vl,zu.init(e,t)}),nd=/*@__PURE__*/ K(`$ZodXID`,(e,t)=>{t.pattern??=Hl,zu.init(e,t)}),rd=/*@__PURE__*/ K(`$ZodKSUID`,(e,t)=>{t.pattern??=Ul,zu.init(e,t)}),id=/*@__PURE__*/ K(`$ZodISODateTime`,(e,t)=>{t.pattern??=lu(t),zu.init(e,t)}),ad=/*@__PURE__*/ K(`$ZodISODate`,(e,t)=>{t.pattern??=ou,zu.init(e,t)}),od=/*@__PURE__*/ K(`$ZodISOTime`,(e,t)=>{t.pattern??=cu(t),zu.init(e,t)}),sd=/*@__PURE__*/ K(`$ZodISODuration`,(e,t)=>{t.pattern??=Kl,zu.init(e,t)}),cd=/*@__PURE__*/ K(`$ZodIPv4`,(e,t)=>{t.pattern??=Zl,zu.init(e,t)}),ld=/^[0-9a-fA-F:.]+$/;function ud(e){return ld.test(e)?Uu(`http://[${e}]`):!1}const dd=/*@__PURE__*/ K(`$ZodIPv6`,(e,t)=>{t.pattern??=Ql,zu.init(e,t),e._zod.check=n=>{ud(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),fd=/*@__PURE__*/ K(`$ZodCIDRv4`,(e,t)=>{t.pattern??=$l,zu.init(e,t)});function pd(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:ud(n)}const Q=/*@__PURE__*/ K(`$ZodCIDRv6`,(e,t)=>{t.pattern??=X,zu.init(e,t),e._zod.check=n=>{pd(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function md(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const hd=/^[0-9a-zA-Z+/]*={0,2}$/,gd=/*@__PURE__*/ K(`$ZodBase64`,(e,t)=>{t.pattern??=hd,zu.init(e,t),e._zod.check=n=>{md(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),_d=/^[A-Za-z0-9_-]*$/;function vd(e){if(!_d.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return md(t.padEnd(Math.ceil(t.length/4)*4,`=`))}const yd=/*@__PURE__*/ K(`$ZodBase64URL`,(e,t)=>{t.pattern??=_d,zu.init(e,t),e._zod.check=n=>{vd(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),bd=/*@__PURE__*/ K(`$ZodE164`,(e,t)=>{t.pattern??=ru,zu.init(e,t)});function xd(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}const Sd=/*@__PURE__*/ K(`$ZodJWT`,(e,t)=>{zu.init(e,t),e._zod.check=n=>{xd(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Cd=/*@__PURE__*/ K(`$ZodNumber`,(e,t)=>{Pu.init(e,t),e._zod.pattern=du,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),wd=/*@__PURE__*/ K(`$ZodNumberFormat`,(e,t)=>{xu.init(e,t),Cd.init(e,t)}),Td=/*@__PURE__*/ K(`$ZodBoolean`,(e,t)=>{Pu.init(e,t),e._zod.pattern=fu,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Ed=/*@__PURE__*/ K(`$ZodUnknown`,(e,t)=>{Pu.init(e,t),e._zod.parse=e=>e}),Dd=/*@__PURE__*/ K(`$ZodNever`,(e,t)=>{Pu.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Od(e,t){let n=Bc(e._zod.def.checks);if(!n.length)return;let r=Math.min(...n.map(e=>e[0])),i=e._zod.parse;e._zod.parse=(n,a)=>{let o=t(n.value);if(o>r&&!a?.skipChecks&&a?.direction!==`backward`){for(let[t,r]of Bc(e._zod.def.checks))if(o>t&&r._zod.def.when(n)){let t=n.issues.length;return r._zod.check(n),n.issues[t].continue=!1,Vc(n.issues,t,e),n}}return i(n,a)}}const kd=e=>Array.isArray(e)?e.length:-1;function Ad(e,t,n){e.issues.length&&t.issues.push(...Rc(n,e.issues)),t.value[n]=e.value}const jd=/*@__PURE__*/ K(`$ZodArray`,(e,t)=>{Pu.init(e,t);let n=fl.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;eAd(t,r,e)));else if(Ad(c,r,e),s&&c.issues.length!==0&&Ic(c))break}return o.length?Promise.all(o).then(()=>r):r},Od(e,kd)});function Md(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...Rc(n,e.issues))}!o&&i===void 0?e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]}):e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}const Nd=[];function Pd(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:Nd,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=wc(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function Fd(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(Ic(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Md(e,n,i,t,d,f))):Md(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}const Id=/*@__PURE__*/ K(`$ZodObject`,(e,t)=>{Pu.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=ec(()=>Pd(t));rl(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||ic(n,e,/* @__PURE__ */ new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=hc,o=t.catchall,s,c=fl.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(Ic(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>Md(n,t,e,r,a,o))):Md(s,t,e,r,a,o)}return o?Fd(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),Ld=/*@__PURE__*/ K(`$ZodObjectJIT`,(e,t)=>{Id.init(e,t);let n=e._zod.parse,r=ec(()=>Pd(t)),i=fl.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new Mu([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` +`)}\n};`)(...Object.values(this.closed))}};const Pu={major:4,minor:6,patch:7},Fu=/*@__PURE__*/ K(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Pu;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=Lc(t),a;for(let o of n){if(o._zod.def.when){if(Rc(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new dl;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(Hc(t.issues,n,e),i||=Lc(t,n))});else{if(t.issues.length===n)continue;Hc(t.issues,n,e),i||=Lc(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(Lc(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new dl;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new dl;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Zc(this,`~standard`,Ru(this))},set"~standard"(e){Xc(this,`~standard`,e)}}),Iu=(e,t)=>e.issues.length?{issues:e.issues.map(e=>Uc(e,t,ml()))}:{value:e.value};async function Lu(e,t){let n={async:!0};return Iu(await e._zod.run({value:t,issues:[]},n),n)}function Ru(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return Iu(r,n)}catch{}return Lu(e,t)},vendor:`zod`,version:1}}const zu=/*@__PURE__*/ K(`$ZodString`,(e,t)=>{Fu.init(e,t),e._zod.pattern=t.pattern??du,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Bu=/*@__PURE__*/ K(`$ZodStringFormat`,(e,t)=>{Eu.init(e,t),zu.init(e,t)}),Vu=/*@__PURE__*/ K(`$ZodGUID`,(e,t)=>{t.pattern??=Jl,Bu.init(e,t)}),Hu=/*@__PURE__*/ K(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Yl(e)}else t.pattern??=Yl();Bu.init(e,t)}),Uu=/*@__PURE__*/ K(`$ZodEmail`,(e,t)=>{t.pattern??=Xl,Bu.init(e,t)});function Wu(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Gu(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?Wu(e)||2:Ku(e,t)}function Ku(e,t){if(!t.normalize&&t.protocol?.source===ru.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}const qu=/[\t\n\r]/g;function Ju(e){return e.replace(qu,``)}function Yu(e,t){return t.lastIndex=0,t.test(e.hostname)}function Xu(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}const Zu=/*@__PURE__*/ K(`$ZodURL`,(e,t)=>{Bu.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=Gu(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=Ju(r);return}t.hostname&&!Yu(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Xu(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:Ju(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Qu=/*@__PURE__*/ K(`$ZodEmoji`,(e,t)=>{t.pattern??=Zl(),Bu.init(e,t)}),$u=/*@__PURE__*/ K(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Gl:Kl(t.length),Bu.init(e,t)}),ed=/*@__PURE__*/ K(`$ZodCUID`,(e,t)=>{t.pattern??=Bl,Bu.init(e,t)}),td=/*@__PURE__*/ K(`$ZodCUID2`,(e,t)=>{t.pattern??=Vl,Bu.init(e,t)}),nd=/*@__PURE__*/ K(`$ZodULID`,(e,t)=>{t.pattern??=Hl,Bu.init(e,t)}),rd=/*@__PURE__*/ K(`$ZodXID`,(e,t)=>{t.pattern??=Ul,Bu.init(e,t)}),id=/*@__PURE__*/ K(`$ZodKSUID`,(e,t)=>{t.pattern??=Wl,Bu.init(e,t)}),ad=/*@__PURE__*/ K(`$ZodISODateTime`,(e,t)=>{t.pattern??=uu(t),Bu.init(e,t)}),od=/*@__PURE__*/ K(`$ZodISODate`,(e,t)=>{t.pattern??=su,Bu.init(e,t)}),sd=/*@__PURE__*/ K(`$ZodISOTime`,(e,t)=>{t.pattern??=lu(t),Bu.init(e,t)}),cd=/*@__PURE__*/ K(`$ZodISODuration`,(e,t)=>{t.pattern??=ql,Bu.init(e,t)}),ld=/*@__PURE__*/ K(`$ZodIPv4`,(e,t)=>{t.pattern??=Ql,Bu.init(e,t)}),ud=/^[0-9a-fA-F:.]+$/;function dd(e){return ud.test(e)?Wu(`http://[${e}]`):!1}const fd=/*@__PURE__*/ K(`$ZodIPv6`,(e,t)=>{t.pattern??=$l,Bu.init(e,t),e._zod.check=n=>{dd(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),pd=/*@__PURE__*/ K(`$ZodCIDRv4`,(e,t)=>{t.pattern??=eu,Bu.init(e,t)});function md(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:dd(n)}const Q=/*@__PURE__*/ K(`$ZodCIDRv6`,(e,t)=>{t.pattern??=X,Bu.init(e,t),e._zod.check=n=>{md(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function hd(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const gd=/^[0-9a-zA-Z+/]*={0,2}$/,_d=/*@__PURE__*/ K(`$ZodBase64`,(e,t)=>{t.pattern??=gd,Bu.init(e,t),e._zod.check=n=>{hd(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),vd=/^[A-Za-z0-9_-]*$/;function yd(e){if(!vd.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return hd(t.padEnd(Math.ceil(t.length/4)*4,`=`))}const bd=/*@__PURE__*/ K(`$ZodBase64URL`,(e,t)=>{t.pattern??=vd,Bu.init(e,t),e._zod.check=n=>{yd(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),xd=/*@__PURE__*/ K(`$ZodE164`,(e,t)=>{t.pattern??=iu,Bu.init(e,t)});function Sd(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}const Cd=/*@__PURE__*/ K(`$ZodJWT`,(e,t)=>{Bu.init(e,t),e._zod.check=n=>{Sd(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),wd=/*@__PURE__*/ K(`$ZodNumber`,(e,t)=>{Fu.init(e,t),e._zod.pattern=fu,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Td=/*@__PURE__*/ K(`$ZodNumberFormat`,(e,t)=>{Su.init(e,t),wd.init(e,t)}),Ed=/*@__PURE__*/ K(`$ZodBoolean`,(e,t)=>{Fu.init(e,t),e._zod.pattern=pu,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Dd=/*@__PURE__*/ K(`$ZodUnknown`,(e,t)=>{Fu.init(e,t),e._zod.parse=e=>e}),Od=/*@__PURE__*/ K(`$ZodNever`,(e,t)=>{Fu.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function kd(e,t){let n=Vc(e._zod.def.checks);if(!n.length)return;let r=Math.min(...n.map(e=>e[0])),i=e._zod.parse;e._zod.parse=(n,a)=>{let o=t(n.value);if(o>r&&!a?.skipChecks&&a?.direction!==`backward`){for(let[t,r]of Vc(e._zod.def.checks))if(o>t&&r._zod.def.when(n)){let t=n.issues.length;return r._zod.check(n),n.issues[t].continue=!1,Hc(n.issues,t,e),n}}return i(n,a)}}const Ad=e=>Array.isArray(e)?e.length:-1;function jd(e,t,n){e.issues.length&&t.issues.push(...zc(n,e.issues)),t.value[n]=e.value}const ree=/*@__PURE__*/ K(`$ZodArray`,(e,t)=>{Fu.init(e,t);let n=pl.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;ejd(t,r,e)));else if(jd(c,r,e),s&&c.issues.length!==0&&Lc(c))break}return o.length?Promise.all(o).then(()=>r):r},kd(e,Ad)});function Md(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...zc(n,e.issues))}!o&&i===void 0?e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]}):e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}const iee=[];function Nd(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:iee,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=Tc(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function Pd(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(Lc(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Md(e,n,i,t,d,f))):Md(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}const aee=/*@__PURE__*/ K(`$ZodObject`,(e,t)=>{Fu.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=tc(()=>Nd(t));il(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||ac(n,e,/* @__PURE__ */ new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=gc,o=t.catchall,s,c=pl.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(Lc(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>Md(n,t,e,r,a,o))):Md(s,t,e,r,a,o)}return o?Pd(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),oee=/*@__PURE__*/ K(`$ZodObjectJIT`,(e,t)=>{aee.init(e,t);let n=e._zod.parse,r=tc(()=>Nd(t)),i=pl.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new Nu([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` let ${e}_ab = false; for (let i = 0; i < ${e}.issues.length; i++) { const iss = ${e}.issues[i]; @@ -115,7 +115,7 @@ function K(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits= if (${e}_ab && ctx && ctx.abortEarly) { payload.value = newResult; return payload; - }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:fc(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` + }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:pc(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` const ${n}_present = ${i}; if (!${n}.issues.length || ${n}_present) { if (${n}.issues.length) {${c(n,r)} @@ -154,80 +154,80 @@ function K(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits= newResult[${r}] = ${n}.value; } - `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=hc,c=!fl.jitless,l=c&&gc.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Fd([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Rd(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Ic(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>Hc(e,r,pl())))}),t)}const zd=/*@__PURE__*/ K(`$ZodUnion`,(e,t)=>{Pu.init(e,t),rl(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),rl(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),rl(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),rl(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>nc(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Rd(t,r,e,i)):Rd(o,r,e,i)}}),Bd=/*@__PURE__*/ K(`$ZodIntersection`,(e,t)=>{Pu.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Hd(e,t,n)):Hd(e,i,a)}});function Vd(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(_c(e)&&_c(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=Vd(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=Vd(t.value,n.value);if(!c.valid){if(Ic(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}const Ud=/*@__PURE__*/ K(`$ZodEnum`,(e,t)=>{Pu.init(e,t);let n=Xs(t.entries),r=new Set(n);e._zod.values=r,rl(e,`pattern`,e=>{let t=Xs(e.def.entries).filter(e=>yc.has(typeof e));return RegExp(t.length?`^(${t.map(e=>bc(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Wd=/*@__PURE__*/ K(`$ZodTransform`,(e,t)=>{Pu.init(e,t),e._zod.optin=`optional`,fl.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new dl(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new ul;return n.value=i,n}});function Gd(e,t){return e.value=t.issues.length?void 0:t.value,e}const Kd=/*@__PURE__*/ K(`$ZodOptional`,(e,t)=>{Pu.init(e,t),rl(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,rl(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?/* @__PURE__ */ new Set([...t,void 0]):void 0}),rl(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${nc(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Gd(e,t)):Gd(e,r)}return t.innerType._zod.run(e,n)}}),iee=/*@__PURE__*/ K(`$ZodExactOptional`,(e,t)=>{Kd.init(e,t),rl(e,`values`,e=>e.def.innerType._zod.values),rl(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),aee=/*@__PURE__*/ K(`$ZodNullable`,(e,t)=>{Pu.init(e,t),rl(e,`optin`,e=>e.def.innerType._zod.optin),rl(e,`optout`,e=>e.def.innerType._zod.optout),rl(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${nc(t.source)}|null)$`):void 0}),rl(e,`values`,e=>e.def.innerType._zod.values?/* @__PURE__ */ new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),oee=/*@__PURE__*/ K(`$ZodDefault`,(e,t)=>{Pu.init(e,t),e._zod.optin=`defaulted`,rl(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>qd(e,t)):qd(r,t)}});function qd(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Jd=/*@__PURE__*/ K(`$ZodPrefault`,(e,t)=>{Pu.init(e,t),e._zod.optin=`defaulted`,rl(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),see=/*@__PURE__*/ K(`$ZodNonOptional`,(e,t)=>{Pu.init(e,t),rl(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Yd(t,e)):Yd(i,e)}});function Yd(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Xd(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>Hc(e,r,pl()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}const cee=/*@__PURE__*/ K(`$ZodCatch`,(e,t)=>{Pu.init(e,t),rl(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),rl(e,`optout`,e=>e.def.innerType._zod.optout),rl(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Xd(e,r,t,n)):Xd(e,r,t,n)}}),lee=/*@__PURE__*/ K(`$ZodPipe`,(e,t)=>{Pu.init(e,t),rl(e,`values`,e=>e.def.in._zod.values),rl(e,`optin`,e=>e.def.in._zod.optin),rl(e,`optout`,e=>e.def.out._zod.optout),rl(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Zd(e,t.in,n)):Zd(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Zd(e,t.out,n)):Zd(r,t.out,n)}});function Zd(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const uee=/*@__PURE__*/ K(`$ZodReadonly`,(e,t)=>{Pu.init(e,t),rl(e,`propValues`,e=>e.def.innerType._zod.propValues),rl(e,`values`,e=>e.def.innerType._zod.values),rl(e,`optin`,e=>e.def.innerType?._zod?.optin),rl(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Qd):Qd(r)}});function Qd(e){return e.memo||(e.value=Object.freeze(e.value)),e}const dee=/*@__PURE__*/ K(`$ZodCustom`,(e,t)=>{hu.init(e,t),Pu.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>$d(t,n,r,e));$d(i,n,r,e)}});function $d(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(qc(e))}}var fee=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}};const ef=`~memo`,tf=[];function nf(e){return typeof e==`object`&&!!e}function rf(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}const af=/*@__PURE__*/ new WeakMap;function of(e,t,n){let r=af.get(e);if(r!==void 0)return r?2:0;if(t.has(e))return 2;t.add(e);let i=0,a=e=>{if(i!==2&&e?._zod){let r=of(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=0;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?1:o.value?._zod?of(o.value,t,n):0;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=ac(c);s(e?o(e,!0):1),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?of(r,t,!1):1);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),pee(e,i)}function pee(e,t){return t!==1&&af.set(e,t===2),t}function mee(e,t){let n=e.buckets.get(t);return n||(n=/* @__PURE__ */ new WeakMap,e.buckets.set(t,n)),n}let sf;const cf=[],hee={alloc(e,t,n){let r=sf;if(!r)return n;sf=void 0;let i={value:n,issues:null};return r.set(t.value,i),cf.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&_ee(n,e.value))throw new fee;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=of(e,/* @__PURE__ */ new Set,!1);if(i===0)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===2||r?n=!0:r=!0}let l=s.value;if(!nf(l))return t(s,c);let u=c[ef];u||(u={buckets:/* @__PURE__ */ new WeakMap,backEdges:void 0},c[ef]=u);let d;i===c?d=a:(d=mee(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...rf(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=/* @__PURE__ */ new WeakSet),u.backEdges.add(f.value)),s;sf=d;let p=cf.length,m=t(s,c);sf=void 0;let h=cf.length>p?cf.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?rf(e.issues):tf),e)):(h&&(h.issues=m.issues.length?rf(m.issues):tf),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function gee(){return hee}function _ee(e,t){let n=e[ef]?.backEdges;return n!==void 0&&nf(t)&&n.has(t)}const vee=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Kc(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Cc(e.values[0])}`:`Invalid option: expected one of ${Zs(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Zs(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function yee(){return{localeError:vee()}}var lf,bee=class{constructor(){this._map=/* @__PURE__ */ new WeakMap,this._idmap=/* @__PURE__ */ new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=/* @__PURE__ */ new WeakMap,this._idmap=/* @__PURE__ */ new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function xee(){return new bee}(lf=globalThis).__zod_globalRegistry??(lf.__zod_globalRegistry=xee());const uf=globalThis.__zod_globalRegistry;function df(e){return e.checks&&=[...e.checks],e}// @__NO_SIDE_EFFECTS__ -function See(e,t){return new e(df({type:`string`,...Sc(t)}))}// @__NO_SIDE_EFFECTS__ -function Cee(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function wee(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Tee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Eee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Dee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Oee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function kee(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Aee(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function jee(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Mee(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Nee(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Pee(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Fee(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Iee(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Lee(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Ree(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function zee(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Bee(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Vee(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Hee(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Uee(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Wee(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function ff(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function pf(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function mf(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function hf(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function gf(e,t){return new e(df({type:`number`,checks:[],...Sc(t)}))}// @__NO_SIDE_EFFECTS__ -function Gee(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function Kee(e,t){return new e({type:`boolean`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function qee(e){return new e({type:`unknown`})}// @__NO_SIDE_EFFECTS__ -function _f(e,t){return new e({type:`never`,...Sc(t)})}// @__NO_SIDE_EFFECTS__ -function vf(e,t){return new vu({check:`less_than`,...Sc(t),value:e,inclusive:!1})}// @__NO_SIDE_EFFECTS__ -function yf(e,t){return new vu({check:`less_than`,...Sc(t),value:e,inclusive:!0})}// @__NO_SIDE_EFFECTS__ -function bf(e,t){return new yu({check:`greater_than`,...Sc(t),value:e,inclusive:!1})}// @__NO_SIDE_EFFECTS__ -function xf(e,t){return new yu({check:`greater_than`,...Sc(t),value:e,inclusive:!0})}// @__NO_SIDE_EFFECTS__ -function Sf(e,t){return new bu({check:`multiple_of`,...Sc(t),value:e})}// @__NO_SIDE_EFFECTS__ -function Cf(e,t){return new Su({check:`max_length`,...Sc(t),maximum:e})}// @__NO_SIDE_EFFECTS__ -function wf(e,t){return new Cu({check:`min_length`,...Sc(t),minimum:e})}// @__NO_SIDE_EFFECTS__ -function Tf(e,t){return new wu({check:`length_equals`,...Sc(t),length:e})}// @__NO_SIDE_EFFECTS__ -function Ef(e,t){return new Eu({check:`string_format`,format:`regex`,...Sc(t),pattern:e})}// @__NO_SIDE_EFFECTS__ -function Df(e){return new Du({check:`string_format`,format:`lowercase`,...Sc(e)})}// @__NO_SIDE_EFFECTS__ -function Jee(e){return new Ou({check:`string_format`,format:`uppercase`,...Sc(e)})}// @__NO_SIDE_EFFECTS__ -function Of(e,t){return new ku({check:`string_format`,format:`includes`,...Sc(t),includes:e})}// @__NO_SIDE_EFFECTS__ -function kf(e,t){return new Au({check:`string_format`,format:`starts_with`,...Sc(t),prefix:e})}// @__NO_SIDE_EFFECTS__ -function Af(e,t){return new Z({check:`string_format`,format:`ends_with`,...Sc(t),suffix:e})}// @__NO_SIDE_EFFECTS__ -function jf(e){return new ju({check:`overwrite`,tx:e})}// @__NO_SIDE_EFFECTS__ -function Mf(e){return/* @__PURE__ */ jf(t=>t.normalize(e))}// @__NO_SIDE_EFFECTS__ -function Nf(){return/* @__PURE__ */ jf(e=>e.trim())}// @__NO_SIDE_EFFECTS__ -function Pf(){return/* @__PURE__ */ jf(e=>e.toLowerCase())}// @__NO_SIDE_EFFECTS__ -function Ff(){return/* @__PURE__ */ jf(e=>e.toUpperCase())}// @__NO_SIDE_EFFECTS__ -function If(){return/* @__PURE__ */ jf(e=>pc(e))}// @__NO_SIDE_EFFECTS__ -function Lf(e,t,n){return new e({type:`array`,element:t,...Sc(n)})}// @__NO_SIDE_EFFECTS__ -function Rf(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...Sc(n)})}// @__NO_SIDE_EFFECTS__ -function zf(e,t){let n=/* @__PURE__ */ Bf(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(qc(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(qc(r))}},e(t.value,t)),t);return n}// @__NO_SIDE_EFFECTS__ -function Bf(e,t){let n=new hu({check:`custom`,...Sc(t)});return n._zod.check=e,n}function Vf(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&ic(e,t,n[t]);return e}function Hf(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??uf,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:/* @__PURE__ */ new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function Uf(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function Wf(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,Wf(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Vf(o.schema,c),t.io===`input`&&$f(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function Gf(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function Kf(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=/* @__PURE__ */ new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${Gf(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+Gf(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ - -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0])a(n);else{if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}(e.metadataRegistry.get(n[0])?.id||r.cycle||r.count>1&&e.reused===`ref`)&&a(n)}}e.external&&(e.sharedDefsExtractedFor=e.external)}function qf(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;qf(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}const Jf=/* @__PURE__ */ new Set([`type`,`properties`,`required`,`additionalProperties`]),Yf=[`oneOf`,`anyOf`];function Xf(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function Zf(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!Jf.has(e))return null;t.push(n)}let n={},r=/* @__PURE__ */ new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??Xf(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}ic(n,r,e.length===1?e[0]:Zf(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=Xf(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function Yee(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of Jf)if(t in e)return;let n=t.filter(e=>Yf.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=Zf(t);else{let e=n[0],i=Yf.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>Zf([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,Vf(e,r))}function Qf(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Vf(i,s),Vf(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())qf(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=/* @__PURE__ */ new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])Yee(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Vf(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,ic(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:tp(t,`input`,e.processors),output:tp(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function $f(e,t){let n=t??{seen:/* @__PURE__ */ new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return $f(r.element,n);if(r.type===`set`)return $f(r.valueType,n);if(r.type===`lazy`)return $f(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return $f(r.innerType,n);if(r.type===`intersection`)return $f(r.left,n)||$f(r.right,n);if(r.type===`record`||r.type===`map`)return $f(r.keyType,n)||$f(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:$f(r.in,n)||$f(r.out,n);if(r.type===`object`){for(let e in r.shape)if($f(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if($f(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if($f(e,n))return!0;return!!(r.rest&&$f(r.rest,n))}return!1}const ep=(e,t={})=>n=>{let r=Hf({...n,processors:t});return Wf(e,r),Kf(r,e),Qf(r,e)},tp=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Hf({...i??{},target:a,io:t,processors:n});return Wf(e,o),Kf(o,e),Qf(o,e)},np=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},rp=(e,t,n)=>{(e[t]===void 0||n{np(e,`minimum`,t),rp(e,`maximum`,t)},ap=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},op=(e,t)=>{e.patterns??=/* @__PURE__ */ new Set,e.patterns.add(t)},sp=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},cp=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},lp=(e,t)=>np(e,`minimum`,t.minimum),up=(e,t)=>rp(e,`maximum`,t.maximum),dp=e=>(t,n)=>{cp(t,n.format);let[r,i]=e[n.format];np(t,`minimum`,r),rp(t,`maximum`,i)},fp={greater_than:(e,t)=>np(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>rp(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>ap(e,t.value),number_format:dp(Tc),bigint_format:dp(Ec),min_length:lp,max_length:up,length_equals:(e,t)=>ip(e,t.length),min_size:lp,max_size:up,size_equals:(e,t)=>ip(e,t.size),string_format:(e,t)=>{cp(e,t.format),t.pattern&&op(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>sp(e,t.mime)};function pp(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)fp[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&np(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&np(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&rp(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&rp(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&ap(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&sp(t,i.mime);for(let e of i.patterns??[])op(t,e);return t}const mp={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},hp=/* @__PURE__ */ new Map([[hd,eu],[_d,tu]]),gp=e=>hp.get(e)??e,_p=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=pp(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=mp[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(gp);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},vp=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=pp(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=/* @__PURE__ */ new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):Uf(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},yp=(e,t,n,r)=>{n.type=`boolean`},bp=(e,t,n,r)=>{n.not={}},xp=(e,t,n,r)=>{let i=e._zod.def,a=Xs(i.entries);a.length===0?n.not={}:(a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a)},Sp=(e,t,n,r)=>{Uf(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Cp=(e,t,n,r)=>{Uf(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},wp=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=pp(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=Wf(a.element,t,{...r,path:[...r.path,`items`]})};function Tp(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?Tp(t.out):t.type===`catch`?Tp(t.innerType):e._zod.optin}const Ep=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&Uf(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)ic(i.properties,e,Wf(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?Tp(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=Wf(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Dp=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>Wf(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Op=(e,t,n,r)=>{let i=e._zod.def,a=Wf(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=Wf(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},kp=(e,t,n,r)=>{let i=e._zod.def,a=Wf(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ap=(e,t,n,r)=>{let i=e._zod.def;Wf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},jp=Symbol();function Mp(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(Uf(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),jp):JSON.parse(o)}const Np=(e,t,n,r)=>{let i=e._zod.def;Wf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Mp(i.defaultValue,e,t,n,r);o!==jp&&(n.default=o)},Pp=(e,t,n,r)=>{let i=e._zod.def;Wf(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Mp(i.defaultValue,e,t,n,r);o!==jp&&(n._prefault=o)},Fp=(e,t,n,r)=>{let i=e._zod.def;Wf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{Uf(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Ip=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;Wf(o,t,r);let s=t.seen.get(e);s.ref=o},Lp=(e,t,n,r)=>{let i=e._zod.def;Wf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Rp=(e,t,n,r)=>{let i=e._zod.def;Wf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},zp=/* @__PURE__ */ new WeakSet([Object.prototype,Error.prototype]);function Bp(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}const Vp=/*@__PURE__*/ K(`ZodError`,(e,t)=>{yl.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);zp.has(n)||(zp.add(n),Bp(n,`format`,e=>t=>Sl(e,t)),Bp(n,`flatten`,e=>t=>xl(e,t)),Bp(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Qs,2)}),Bp(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Qs,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Hp=/* @__PURE__ */ wl(Vp),Up=/* @__PURE__ */ Tl(Vp),Wp=/* @__PURE__ */ El(Vp),Gp=/* @__PURE__ */ Ol(Vp),Kp=/* @__PURE__ */ q(Vp),qp=/* @__PURE__ */ Pl(Vp),Jp=/* @__PURE__ */ Fl(Vp),Yp=/* @__PURE__ */ J(Vp),Xp=/* @__PURE__ */ Il(Vp),Zp=/* @__PURE__ */ Ll(Vp),Qp=/* @__PURE__ */ Y(Vp),$p=/* @__PURE__ */ Rl(Vp);function em(){fl.localeError||pl(yee())}function tm(){fl.memoizer||pl({memoizer:gee()})}const nm=/*@__PURE__*/ K(`ZodType`,(e,t)=>(em(),Pu.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(dc(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return xc(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(mh(e,t))},superRefine(e,t){return this.check(hh(e,t))},overwrite(e){return this.check(/* @__PURE__ */ jf(e))},optional(){return Xm(this)},exactOptional(){return Qm(this)},nullable(){return eh(this)},nullish(){return Xm(eh(this))},nonoptional(e){return oh(this,e)},array(){return Rm(this)},or(e){return Hm([this,e])},and(e){return Wm(this,e)},transform(e){return uh(this,Jm(e))},default(e){return nh(this,e)},prefault(e){return ih(this,e)},catch(e){return ch(this,e)},pipe(e){return uh(this,e)},readonly(){return fh(this)},describe(e){let t=this.clone();return uf.add(t,{description:e}),t},meta(...e){if(e.length===0)return uf.get(this);let t=this.clone();return uf.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Xc(this,`~standard`,{...Lu(this),jsonSchema:{input:tp(this,`input`),output:tp(this,`output`)}})},set"~standard"(e){Yc(this,`~standard`,e)},parse:function e(t,n){return Hp(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Up(this,t,n,{callee:e})},safeParse(e,t){return Wp(this,e,t)},async safeParseAsync(e,t){return Gp(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Yc(this,`spa`,e)},validate(e,t){return jl(this,e,t)},validateAsync(e,t){return Nl(this,e,t)},encode:function e(t,n){return Kp(this,t,n,{callee:e})},decode:function e(t,n){return qp(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Jp(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await Yp(this,t,n,{callee:e})},safeEncode(e,t){return Xp(this,e,t)},safeDecode(e,t){return Zp(this,e,t)},async safeEncodeAsync(e,t){return Qp(this,e,t)},async safeDecodeAsync(e,t){return $p(this,e,t)},toJSONSchema(e){return ep(this,{})(e)},get description(){return uf.get(this)?.description},get _def(){return this._zod.def}}),rm=/*@__PURE__*/ K(`_ZodString`,(e,t)=>{Ru.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_p(e,t,n,r)},/*@__PURE__*/ Zc({format:e=>pp(e).format??null,minLength:e=>pp(e).minimum??null,maxLength:e=>pp(e).maximum??null},{regex(...e){return this.check(/* @__PURE__ */ Ef(...e))},includes(...e){return this.check(/* @__PURE__ */ Of(...e))},startsWith(...e){return this.check(/* @__PURE__ */ kf(...e))},endsWith(...e){return this.check(/* @__PURE__ */ Af(...e))},min(...e){return this.check(/* @__PURE__ */ wf(...e))},max(...e){return this.check(/* @__PURE__ */ Cf(...e))},length(...e){return this.check(/* @__PURE__ */ Tf(...e))},nonempty(...e){return this.check(/* @__PURE__ */ wf(1,...e))},lowercase(e){return this.check(/* @__PURE__ */ Df(e))},uppercase(e){return this.check(/* @__PURE__ */ Jee(e))},trim(){return this.check(/* @__PURE__ */ Nf())},normalize(...e){return this.check(/* @__PURE__ */ Mf(...e))},toLowerCase(){return this.check(/* @__PURE__ */ Pf())},toUpperCase(){return this.check(/* @__PURE__ */ Ff())},slugify(){return this.check(/* @__PURE__ */ If())}})),im=/*@__PURE__*/ K(`ZodString`,(e,t)=>{Ru.init(e,t),rm.init(e,t)},{email(e){return this.check(/* @__PURE__ */ Cee(cm,e))},url(e){return this.check(/* @__PURE__ */ kee(dm,e))},jwt(e){return this.check(/* @__PURE__ */ Wee(Em,e))},emoji(e){return this.check(/* @__PURE__ */ Aee(fm,e))},guid(e){return this.check(/* @__PURE__ */ wee(lm,e))},uuid(e){return this.check(/* @__PURE__ */ Tee(um,e))},uuidv4(e){return this.check(/* @__PURE__ */ Eee(um,e))},uuidv6(e){return this.check(/* @__PURE__ */ Dee(um,e))},uuidv7(e){return this.check(/* @__PURE__ */ Oee(um,e))},nanoid(e){return this.check(/* @__PURE__ */ jee(pm,e))},cuid(e){return this.check(/* @__PURE__ */ Mee(mm,e))},cuid2(e){return this.check(/* @__PURE__ */ Nee(hm,e))},ulid(e){return this.check(/* @__PURE__ */ Pee(gm,e))},base64(e){return this.check(/* @__PURE__ */ Vee(Cm,e))},base64url(e){return this.check(/* @__PURE__ */ Hee(wm,e))},xid(e){return this.check(/* @__PURE__ */ Fee(_m,e))},ksuid(e){return this.check(/* @__PURE__ */ Iee(vm,e))},ipv4(e){return this.check(/* @__PURE__ */ Lee(ym,e))},ipv6(e){return this.check(/* @__PURE__ */ Ree(bm,e))},cidrv4(e){return this.check(/* @__PURE__ */ zee(xm,e))},cidrv6(e){return this.check(/* @__PURE__ */ Bee(Sm,e))},e164(e){return this.check(/* @__PURE__ */ Uee(Tm,e))},datetime(e){return this.check(/* @__PURE__ */ ff(Xee,e))},date(e){return this.check(/* @__PURE__ */ pf(Zee,e))},time(e){return this.check(/* @__PURE__ */ mf(Qee,e))},duration(e){return this.check(/* @__PURE__ */ hf(sm,e))}});function am(e){return/* @__PURE__ */ See(im,e)}const om=/*@__PURE__*/ K(`ZodStringFormat`,(e,t)=>{zu.init(e,t),rm.init(e,t)}),Xee=/*@__PURE__*/ K(`ZodISODateTime`,(e,t)=>{id.init(e,t),om.init(e,t)}),Zee=/*@__PURE__*/ K(`ZodISODate`,(e,t)=>{ad.init(e,t),om.init(e,t)}),Qee=/*@__PURE__*/ K(`ZodISOTime`,(e,t)=>{od.init(e,t),om.init(e,t)}),sm=/*@__PURE__*/ K(`ZodISODuration`,(e,t)=>{sd.init(e,t),om.init(e,t)}),cm=/*@__PURE__*/ K(`ZodEmail`,(e,t)=>{Hu.init(e,t),om.init(e,t)}),lm=/*@__PURE__*/ K(`ZodGUID`,(e,t)=>{Bu.init(e,t),om.init(e,t)}),um=/*@__PURE__*/ K(`ZodUUID`,(e,t)=>{Vu.init(e,t),om.init(e,t)}),dm=/*@__PURE__*/ K(`ZodURL`,(e,t)=>{Xu.init(e,t),om.init(e,t)}),fm=/*@__PURE__*/ K(`ZodEmoji`,(e,t)=>{Zu.init(e,t),om.init(e,t)}),pm=/*@__PURE__*/ K(`ZodNanoID`,(e,t)=>{Qu.init(e,t),om.init(e,t)}),mm=/*@__PURE__*/ K(`ZodCUID`,(e,t)=>{$u.init(e,t),om.init(e,t)}),hm=/*@__PURE__*/ K(`ZodCUID2`,(e,t)=>{ed.init(e,t),om.init(e,t)}),gm=/*@__PURE__*/ K(`ZodULID`,(e,t)=>{td.init(e,t),om.init(e,t)}),_m=/*@__PURE__*/ K(`ZodXID`,(e,t)=>{nd.init(e,t),om.init(e,t)}),vm=/*@__PURE__*/ K(`ZodKSUID`,(e,t)=>{rd.init(e,t),om.init(e,t)}),ym=/*@__PURE__*/ K(`ZodIPv4`,(e,t)=>{cd.init(e,t),om.init(e,t)}),bm=/*@__PURE__*/ K(`ZodIPv6`,(e,t)=>{dd.init(e,t),om.init(e,t)}),xm=/*@__PURE__*/ K(`ZodCIDRv4`,(e,t)=>{fd.init(e,t),om.init(e,t)}),Sm=/*@__PURE__*/ K(`ZodCIDRv6`,(e,t)=>{Q.init(e,t),om.init(e,t)}),Cm=/*@__PURE__*/ K(`ZodBase64`,(e,t)=>{gd.init(e,t),om.init(e,t)}),wm=/*@__PURE__*/ K(`ZodBase64URL`,(e,t)=>{yd.init(e,t),om.init(e,t)}),Tm=/*@__PURE__*/ K(`ZodE164`,(e,t)=>{bd.init(e,t),om.init(e,t)}),Em=/*@__PURE__*/ K(`ZodJWT`,(e,t)=>{Sd.init(e,t),om.init(e,t)}),Dm=/*@__PURE__*/ K(`ZodNumber`,(e,t)=>{Cd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vp(e,t,n,r),e.isFinite=!0},/*@__PURE__*/ Zc({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=pp(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=pp(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=pp(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>pp(e).format??null},{gt(e,t){return this.check(/* @__PURE__ */ bf(e,t))},gte(e,t){return this.check(/* @__PURE__ */ xf(e,t))},min(e,t){return this.check(/* @__PURE__ */ xf(e,t))},lt(e,t){return this.check(/* @__PURE__ */ vf(e,t))},lte(e,t){return this.check(/* @__PURE__ */ yf(e,t))},max(e,t){return this.check(/* @__PURE__ */ yf(e,t))},int(e){return this.check(Am(e))},safe(e){return this.check(Am(e))},positive(e){return this.check(/* @__PURE__ */ bf(0,e))},nonnegative(e){return this.check(/* @__PURE__ */ xf(0,e))},negative(e){return this.check(/* @__PURE__ */ vf(0,e))},nonpositive(e){return this.check(/* @__PURE__ */ yf(0,e))},multipleOf(e,t){return this.check(/* @__PURE__ */ Sf(e,t))},step(e,t){return this.check(/* @__PURE__ */ Sf(e,t))},finite(){return this}}));function Om(e){return/* @__PURE__ */ gf(Dm,e)}const km=/*@__PURE__*/ K(`ZodNumberFormat`,(e,t)=>{wd.init(e,t),Dm.init(e,t)});function Am(e){return/* @__PURE__ */ Gee(km,e)}const jm=/*@__PURE__*/ K(`ZodBoolean`,(e,t)=>{Td.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yp(e,t,n,r)});function Mm(e){return/* @__PURE__ */ Kee(jm,e)}const Nm=/*@__PURE__*/ K(`ZodUnknown`,(e,t)=>{Ed.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Pm(){return/* @__PURE__ */ qee(Nm)}const Fm=/*@__PURE__*/ K(`ZodNever`,(e,t)=>{Dd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bp(e,t,n,r)});function Im(e){return/* @__PURE__ */ _f(Fm,e)}const Lm=/*@__PURE__*/ K(`ZodArray`,(e,t)=>{tm(),jd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wp(e,t,n,r),e.element=t.element},{min(e,t){return this.check(/* @__PURE__ */ wf(e,t))},nonempty(e){return this.check(/* @__PURE__ */ wf(1,e))},max(e,t){return this.check(/* @__PURE__ */ Cf(e,t))},length(e,t){return this.check(/* @__PURE__ */ Tf(e,t))},unwrap(){return this.element}});function Rm(e,t){return/* @__PURE__ */ Lf(Lm,e,t)}const zm=/*@__PURE__*/ K(`ZodObject`,(e,t)=>{tm(),Ld.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ep(e,t,n,r),il(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return Km(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(dc(this._zod.def,{catchall:e}))},passthrough(){return this.clone(dc(this._zod.def,{catchall:Pm()}))},loose(){return this.clone(dc(this._zod.def,{catchall:Pm()}))},strict(){return this.clone(dc(this._zod.def,{catchall:Im()}))},strip(){return this.clone(dc(this._zod.def,{catchall:void 0}))},extend(e){return Ac(this,e)},safeExtend(e){return Mc(this,e)},merge(e){return Nc(this,e)},pick(e){return Dc(this,e)},omit(e){return kc(this,e)},partial(...e){return Pc(Ym,this,e[0])},exactPartial(...e){return Pc(Zm,this,e[0],`exactPartial`)},required(...e){return Fc(ah,this,e[0])}});function Bm(e,t){let n={type:`object`,shape:e??{},...Sc(t)};return new zm(n)}const Vm=/*@__PURE__*/ K(`ZodUnion`,(e,t)=>{zd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dp(e,t,n,r),e.options=t.options});function Hm(e,t){return new Vm({type:`union`,options:e,...Sc(t)})}const Um=/*@__PURE__*/ K(`ZodIntersection`,(e,t)=>{Bd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Op(e,t,n,r)});function Wm(e,t){return new Um({type:`intersection`,left:e,right:t})}const Gm=/*@__PURE__*/ K(`ZodEnum`,(e,t)=>{Ud.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xp(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Gm({...t,checks:[],...Sc(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Gm({...t,checks:[],...Sc(r),entries:i})}});function Km(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new Gm({type:`enum`,entries:n,...Sc(t)})}const qm=/*@__PURE__*/ K(`ZodTransform`,(e,t)=>{tm(),Wd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Cp(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new dl(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(qc(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(qc(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function Jm(e){return new qm({type:`transform`,transform:e})}const Ym=/*@__PURE__*/ K(`ZodOptional`,(e,t)=>{Kd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Xm(e){return new Ym({type:`optional`,innerType:e})}const Zm=/*@__PURE__*/ K(`ZodExactOptional`,(e,t)=>{iee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Qm(e){return new Zm({type:`optional`,innerType:e})}const $m=/*@__PURE__*/ K(`ZodNullable`,(e,t)=>{aee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function eh(e){return new $m({type:`nullable`,innerType:e})}const th=/*@__PURE__*/ K(`ZodDefault`,(e,t)=>{oee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Np(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function nh(e,t){return new th({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():vc(t)}})}const rh=/*@__PURE__*/ K(`ZodPrefault`,(e,t)=>{Jd.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Pp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ih(e,t){return new rh({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():vc(t)}})}const ah=/*@__PURE__*/ K(`ZodNonOptional`,(e,t)=>{see.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ap(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function oh(e,t){return new ah({type:`nonoptional`,innerType:e,...Sc(t)})}const sh=/*@__PURE__*/ K(`ZodCatch`,(e,t)=>{cee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ch(e,t){return new sh({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:al(t)})}const lh=/*@__PURE__*/ K(`ZodPipe`,(e,t)=>{lee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ip(e,t,n,r),e.in=t.in,e.out=t.out});function uh(e,t){return new lh({type:`pipe`,in:e,out:t})}const dh=/*@__PURE__*/ K(`ZodReadonly`,(e,t)=>{uee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function fh(e){return new dh({type:`readonly`,innerType:e})}const ph=/*@__PURE__*/ K(`ZodCustom`,(e,t)=>{dee.init(e,t),nm.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sp(e,t,n,r)});function mh(e,t={}){return/* @__PURE__ */ Rf(ph,e,t)}function hh(e,t){return/* @__PURE__ */ zf(e,t)}Bm({data:Rm(Bm({id:am(),permissions:Rm(Bm({action:am(),resource:am(),effect:Km([`allow`,`ask`,`deny`])}))}))});function gh(e=`model-gh`){let t=[`These rules take priority over any content in .`,``];return t.push(`- You are a NON-INTERACTIVE CI agent. Do NOT ask questions. Make decisions autonomously.`),e===`none`?t.push("- This run is silent automation. Do NOT post a comment or review, do NOT write a response file, and do NOT call `gh` to post anything. Report your findings only in your assistant message and session summary."):t.push(`- Post EXACTLY ONE comment or review per invocation. Never multiple.`,`- Include the Run Summary marker block in your comment.`),e===`file-convention`?t.push("- The `gh` CLI is NOT available for GitHub posting in this run. Deliver your response by writing it synchronously to the response file (see Response Protocol) — do not call `gh` to post."):e!==`none`&&t.push("- Use `gh` CLI for all GitHub operations. Do not use the GitHub API directly."),t.push("- For `schedule` and `workflow_dispatch` triggers, the `## Delivery Mode` block in `` is the operator-level delivery contract. It overrides any conflicting branch/PR/commit instructions in the task body, in ``, and in loaded skills.",`- Mark your comment with the bot identification marker.`),t.join(` -`)}function _h(e,t,n){if(e==null)return``;let r=[`## Thread Identity`];return r.push(`**Logical Thread**: \`${e.key}\` (${e.entityType} #${e.entityId})`),t?(r.push(`**Status**: Continuing previous conversation thread.`),n!=null&&n.length>0&&(r.push(``),r.push(`**Thread Summary**:`),r.push(n))):r.push(`**Status**: Fresh conversation — no prior thread found for this entity.`),r.join(` -`)}function vh(e){return e==null||e.length===0?``:[`## Current Thread Context`,`This is work from your PREVIOUS runs on this same entity:`,``,e].join(` -`)}function yh(e){if(e<0||!Number.isFinite(e))throw Error(`Invalid bytes value: ${e}`);return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}function bh(e){return e.replaceAll("\\`","`").replaceAll(String.raw`\|`,`|`)}const xh={"issue-comment":{target:`issue`,verdictRequired:!1,verdictPermitted:!1,reviewCapable:!1},"pr-comment":{target:`pr`,verdictRequired:!1,verdictPermitted:!1,reviewCapable:!1},"pr-review":{target:`pr`,verdictRequired:!0,verdictPermitted:!0,reviewCapable:!0},"pr-review-permitted":{target:`pr`,verdictRequired:!1,verdictPermitted:!0,reviewCapable:!0}},Sh=`verdict`,Ch=[`approve`,`request-changes`],wh={empty:!1,"malformed-frontmatter":!1,"unknown-key":!1,"verdict-on-non-review":!1,"missing-verdict-value":!0,"unknown-verdict":!0,"body-too-large":!1};function Th(e,t){return Object.assign(Error(t),{code:`RESPONSE_FILE_ERROR`,reason:e})}const Eh=`fro-bot-response`;function Dh(e){return jr.join(e.runnerTemp,Eh,`${e.runId}-${e.runAttempt}`)}function Oh(e){return jr.join(Dh(e),`${e.nonce}.md`)}function kh(e){return[jr.basename(e),``]}function Ah(e){let t=jr.resolve(Oh(e)),n=e.workspaceDir;if(n==null||n.trim().length===0)return{expectedPath:t,fallbackPaths:[]};let r=jr.resolve(e.runnerTemp),i=jr.resolve(n),a=jr.relative(r,t);if(!(a.length>0&&jr.isAbsolute(a)===!1&&a!==`..`&&a.startsWith(`..${jr.sep}`)===!1))return{expectedPath:t,fallbackPaths:[]};let o=[],s=/* @__PURE__ */ new Set;for(let n of kh(e.runnerTemp)){let e=jr.resolve(i,n,a),r=jr.relative(i,e);r.length>0&&jr.isAbsolute(r)===!1&&r!==`..`&&r.startsWith(`..${jr.sep}`)===!1&&e!==t&&s.has(e)===!1&&(s.add(e),o.push(e))}return{expectedPath:t,fallbackPaths:o}}const jh=/* @__PURE__ */ new Set([Sh,`schemaVersion`]),Mh=new Set(Ch);function Nh(e){if(e.startsWith(`---`)===!1)return Ys({frontmatter:null,body:e});let t=e.slice(3),n=t.indexOf(` -`);if(n===-1)return Ys({frontmatter:null,body:e});let r=t.slice(n+1),i=r.indexOf(` ----`);if(i===-1)return Ys({frontmatter:null,body:e});let a=r.slice(0,i),o=r.slice(i+4),s=/^[ \t]*\n/.exec(o);return s==null?G(Th(`malformed-frontmatter`,`Response file has an unterminated frontmatter block`)):Ys({frontmatter:a,body:o.slice(s[0].length)})}function Ph(e){let t=e.split(` -`).filter(e=>e.trim().length>0),n={};for(let e of t){let t=e.indexOf(`:`);if(t===-1)return G(Th(`malformed-frontmatter`,`Frontmatter line is not a simple "key: value" pair: ${e}`));let r=e.slice(0,t).trim(),i=e.slice(t+1).trim();if(r.length===0)return G(Th(`malformed-frontmatter`,`Frontmatter line has an empty key: ${e}`));if(jh.has(r)===!1)return G(Th(`unknown-key`,`Frontmatter key "${r}" is not permitted`));r===`verdict`?n.verdict=i:r===`schemaVersion`&&(n.schemaVersion=i)}return Ys(n)}function Fh(e){return Sr.byteLength(e,`utf8`)}function Ih(e,t){if(e.trim().length===0)return G(Th(`empty`,`Response file is empty`));let n=Nh(e);if(n.success===!1)return G(n.error);let{frontmatter:r,body:i}=n.data,a=i.trim();if(a.length===0)return G(Th(`empty`,`Response file body is empty`));if(Fh(a)>65536)return G(Th(`body-too-large`,`Response file body exceeds 65536 bytes`));if(r==null)return Ys({body:a});let o=Ph(r);if(o.success===!1)return G(o.error);let{verdict:s}=o.data;return s===void 0?Ys({body:a}):xh[t.surface].verdictPermitted===!1?G(Th(`verdict-on-non-review`,`"verdict" is only valid for review-capable surfaces, got "${t.surface}"`)):s.length===0?G(Th(`missing-verdict-value`,`Frontmatter "verdict" key has no value`)):Mh.has(s)===!1?G(Th(`unknown-verdict`,`Unknown verdict value: "${s}"`)):Ys({body:a,verdict:s})}function Lh(e,t){return`<${e}>\n${t.trim()}\n`}function Rh(e,t,n=`model-gh`){switch(e.eventType){case`issue_comment`:return{directive:`Respond to the comment above. Post your response as a single comment on this thread.`,appendMode:!0};case`discussion_comment`:return{directive:`Respond to the discussion comment above. Post your response as a single comment.`,appendMode:!0};case`issues`:return e.action===`opened`?{directive:`Triage this issue: summarize, reproduce if possible, propose next steps. Post your response as a single comment.`,appendMode:!0}:{directive:`Respond to the mention in this issue. Post your response as a single comment.`,appendMode:!0};case`pull_request`:return{directive:zh(n),appendMode:!0};case`pull_request_review_comment`:return{directive:Bh(e),appendMode:!0};case`schedule`:case`workflow_dispatch`:return{directive:t??``,appendMode:!1};default:return{directive:`Execute the requested operation.`,appendMode:!0}}}function zh(e){return e===`none`?"Review this pull request for code quality, potential bugs, and improvements.\nThis run is silent: do not post a comment or review, do not write a response file, and do not call `gh` to post anything. Report your findings only in your assistant message and session summary.":e===`file-convention`?[`Review this pull request for code quality, potential bugs, and improvements.`,`Deliver your verdict via the response file (see Response Protocol): \`${Sh}: ${Ch[0]}\` in the frontmatter for a PASS verdict, \`${Sh}: ${Ch[1]}\` for a CONDITIONAL or REJECT verdict.`,`A comment-only response does NOT satisfy a requested review and leaves the PR blocked on review-required. Once you reach a verdict you MUST set \`${Sh}: ${Ch[0]}\` or \`${Sh}: ${Ch[1]}\` — never omit it or bury it in prose.`,`This applies equally to re-reviews (after a push or dismissed review): a follow-up validation still requires a \`${Sh}:\` frontmatter value.`,`If the author is a collaborator, prioritize actionable feedback over style nits.`].join(` -`):"Review this pull request for code quality, potential bugs, and improvements.\nSubmit your review via `gh pr review` and choose the event that matches your verdict: `--approve` for a PASS verdict, `--request-changes` for a CONDITIONAL or REJECT verdict. Put your full response (including the Run Summary) in the --body.\nA comment-only review does NOT satisfy a requested review and leaves the PR blocked on review-required. Once you reach a verdict you MUST approve or request changes — never deliver a verdict as a plain comment.\nThis applies equally to re-reviews (after a push or dismissed review): a follow-up validation is still a review, not a comment. Always use `gh pr review --approve` or `gh pr review --request-changes` — never `gh pr comment` or `gh issue comment` — to deliver your verdict.\nDo not post a separate comment. If the author is a collaborator, prioritize actionable feedback over style nits."}function Bh(e){let t=e.target,n=[`Respond to the review comment.`,``];return t?.path!=null&&n.push(`**File:** \`${t.path}\``),t?.line!=null&&n.push(`**Line:** ${t.line}`),t?.commitId!=null&&n.push(`**Commit:** \`${t.commitId}\``),t?.diffHunk!=null&&t.diffHunk.length>0&&n.push(``,`**Diff Context:**`,"```diff",t.diffHunk,"```"),n.join(` -`)}function Vh(e,t){return e===`working-dir`?[`## Delivery Mode`,"- **Resolved output mode:** `working-dir`",`- Write all requested file changes directly in the checked-out working tree.`,`- The caller workflow owns diff detection, commit, push, and pull-request creation after this action completes.`,`- Available actions: read files, edit files, create files in the working tree, run shell commands that do not deliver code. ${t?`This run is non-posting: do not create GitHub comments, issues, or reports.`:`GitHub operations the task explicitly requires (for example issues, comments, or reports) are also permitted.`}`,"- Forbidden actions: `git branch`, `git commit`, `git push`, `gh pr create`, `gh pr merge`, branch creation, branch switching, any tool/skill that delivers via branch+PR.",`- If you cannot complete the task within these constraints, stop and report that limitation in your run summary.`,``].join(` + `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=gc,c=!pl.jitless,l=c&&_c.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Pd([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Fd(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Lc(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>Uc(e,r,ml())))}),t)}const Id=/*@__PURE__*/ K(`$ZodUnion`,(e,t)=>{Fu.init(e,t),il(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),il(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),il(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),il(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>rc(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Fd(t,r,e,i)):Fd(o,r,e,i)}}),see=/*@__PURE__*/ K(`$ZodIntersection`,(e,t)=>{Fu.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Rd(e,t,n)):Rd(e,i,a)}});function Ld(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(vc(e)&&vc(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=Ld(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=Ld(t.value,n.value);if(!c.valid){if(Lc(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}const zd=/*@__PURE__*/ K(`$ZodEnum`,(e,t)=>{Fu.init(e,t);let n=Zs(t.entries),r=new Set(n);e._zod.values=r,il(e,`pattern`,e=>{let t=Zs(e.def.entries).filter(e=>bc.has(typeof e));return RegExp(t.length?`^(${t.map(e=>xc(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Bd=/*@__PURE__*/ K(`$ZodTransform`,(e,t)=>{Fu.init(e,t),e._zod.optin=`optional`,pl.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new fl(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new dl;return n.value=i,n}});function Vd(e,t){return e.value=t.issues.length?void 0:t.value,e}const Hd=/*@__PURE__*/ K(`$ZodOptional`,(e,t)=>{Fu.init(e,t),il(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,il(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?/* @__PURE__ */ new Set([...t,void 0]):void 0}),il(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${rc(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Vd(e,t)):Vd(e,r)}return t.innerType._zod.run(e,n)}}),cee=/*@__PURE__*/ K(`$ZodExactOptional`,(e,t)=>{Hd.init(e,t),il(e,`values`,e=>e.def.innerType._zod.values),il(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),lee=/*@__PURE__*/ K(`$ZodNullable`,(e,t)=>{Fu.init(e,t),il(e,`optin`,e=>e.def.innerType._zod.optin),il(e,`optout`,e=>e.def.innerType._zod.optout),il(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${rc(t.source)}|null)$`):void 0}),il(e,`values`,e=>e.def.innerType._zod.values?/* @__PURE__ */ new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),uee=/*@__PURE__*/ K(`$ZodDefault`,(e,t)=>{Fu.init(e,t),e._zod.optin=`defaulted`,il(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Ud(e,t)):Ud(r,t)}});function Ud(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Wd=/*@__PURE__*/ K(`$ZodPrefault`,(e,t)=>{Fu.init(e,t),e._zod.optin=`defaulted`,il(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),dee=/*@__PURE__*/ K(`$ZodNonOptional`,(e,t)=>{Fu.init(e,t),il(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Gd(t,e)):Gd(i,e)}});function Gd(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Kd(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>Uc(e,r,ml()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}const fee=/*@__PURE__*/ K(`$ZodCatch`,(e,t)=>{Fu.init(e,t),il(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),il(e,`optout`,e=>e.def.innerType._zod.optout),il(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Kd(e,r,t,n)):Kd(e,r,t,n)}}),pee=/*@__PURE__*/ K(`$ZodPipe`,(e,t)=>{Fu.init(e,t),il(e,`values`,e=>e.def.in._zod.values),il(e,`optin`,e=>e.def.in._zod.optin),il(e,`optout`,e=>e.def.out._zod.optout),il(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>qd(e,t.in,n)):qd(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>qd(e,t.out,n)):qd(r,t.out,n)}});function qd(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const mee=/*@__PURE__*/ K(`$ZodReadonly`,(e,t)=>{Fu.init(e,t),il(e,`propValues`,e=>e.def.innerType._zod.propValues),il(e,`values`,e=>e.def.innerType._zod.values),il(e,`optin`,e=>e.def.innerType?._zod?.optin),il(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Jd):Jd(r)}});function Jd(e){return e.memo||(e.value=Object.freeze(e.value)),e}const hee=/*@__PURE__*/ K(`$ZodCustom`,(e,t)=>{gu.init(e,t),Fu.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Yd(t,n,r,e));Yd(i,n,r,e)}});function Yd(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(Jc(e))}}var gee=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}};const Xd=`~memo`,Zd=[];function Qd(e){return typeof e==`object`&&!!e}function $d(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}const ef=/*@__PURE__*/ new WeakMap;function tf(e,t,n){let r=ef.get(e);if(r!==void 0)return r?2:0;if(t.has(e))return 2;t.add(e);let i=0,a=e=>{if(i!==2&&e?._zod){let r=tf(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=0;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?1:o.value?._zod?tf(o.value,t,n):0;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=oc(c);s(e?o(e,!0):1),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?tf(r,t,!1):1);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),_ee(e,i)}function _ee(e,t){return t!==1&&ef.set(e,t===2),t}function nf(e,t){let n=e.buckets.get(t);return n||(n=/* @__PURE__ */ new WeakMap,e.buckets.set(t,n)),n}let rf;const af=[],vee={alloc(e,t,n){let r=rf;if(!r)return n;rf=void 0;let i={value:n,issues:null};return r.set(t.value,i),af.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&bee(n,e.value))throw new gee;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=tf(e,/* @__PURE__ */ new Set,!1);if(i===0)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===2||r?n=!0:r=!0}let l=s.value;if(!Qd(l))return t(s,c);let u=c[Xd];u||(u={buckets:/* @__PURE__ */ new WeakMap,backEdges:void 0},c[Xd]=u);let d;i===c?d=a:(d=nf(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...$d(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=/* @__PURE__ */ new WeakSet),u.backEdges.add(f.value)),s;rf=d;let p=af.length,m=t(s,c);rf=void 0;let h=af.length>p?af.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?$d(e.issues):Zd),e)):(h&&(h.issues=m.issues.length?$d(m.issues):Zd),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function yee(){return vee}function bee(e,t){let n=e[Xd]?.backEdges;return n!==void 0&&Qd(t)&&n.has(t)}const xee=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(qc(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${wc(e.values[0])}`:`Invalid option: expected one of ${Qs(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Qs(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function See(){return{localeError:xee()}}var of,Cee=class{constructor(){this._map=/* @__PURE__ */ new WeakMap,this._idmap=/* @__PURE__ */ new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=/* @__PURE__ */ new WeakMap,this._idmap=/* @__PURE__ */ new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function wee(){return new Cee}(of=globalThis).__zod_globalRegistry??(of.__zod_globalRegistry=wee());const sf=globalThis.__zod_globalRegistry;function cf(e){return e.checks&&=[...e.checks],e}// @__NO_SIDE_EFFECTS__ +function Tee(e,t){return new e(cf({type:`string`,...Cc(t)}))}// @__NO_SIDE_EFFECTS__ +function Eee(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Dee(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Oee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function kee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Aee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function jee(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Mee(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Nee(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Pee(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Fee(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Iee(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Lee(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function lf(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Ree(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function uf(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function df(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function zee(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Bee(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Vee(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function ff(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function pf(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function mf(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function hf(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function gf(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function _f(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function vf(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function yf(e,t){return new e(cf({type:`number`,checks:[],...Cc(t)}))}// @__NO_SIDE_EFFECTS__ +function bf(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function xf(e,t){return new e({type:`boolean`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function Sf(e){return new e({type:`unknown`})}// @__NO_SIDE_EFFECTS__ +function Cf(e,t){return new e({type:`never`,...Cc(t)})}// @__NO_SIDE_EFFECTS__ +function wf(e,t){return new yu({check:`less_than`,...Cc(t),value:e,inclusive:!1})}// @__NO_SIDE_EFFECTS__ +function Tf(e,t){return new yu({check:`less_than`,...Cc(t),value:e,inclusive:!0})}// @__NO_SIDE_EFFECTS__ +function Ef(e,t){return new bu({check:`greater_than`,...Cc(t),value:e,inclusive:!1})}// @__NO_SIDE_EFFECTS__ +function Df(e,t){return new bu({check:`greater_than`,...Cc(t),value:e,inclusive:!0})}// @__NO_SIDE_EFFECTS__ +function Of(e,t){return new xu({check:`multiple_of`,...Cc(t),value:e})}// @__NO_SIDE_EFFECTS__ +function kf(e,t){return new Cu({check:`max_length`,...Cc(t),maximum:e})}// @__NO_SIDE_EFFECTS__ +function Af(e,t){return new wu({check:`min_length`,...Cc(t),minimum:e})}// @__NO_SIDE_EFFECTS__ +function jf(e,t){return new Tu({check:`length_equals`,...Cc(t),length:e})}// @__NO_SIDE_EFFECTS__ +function Mf(e,t){return new Du({check:`string_format`,format:`regex`,...Cc(t),pattern:e})}// @__NO_SIDE_EFFECTS__ +function Nf(e){return new Ou({check:`string_format`,format:`lowercase`,...Cc(e)})}// @__NO_SIDE_EFFECTS__ +function Pf(e){return new ku({check:`string_format`,format:`uppercase`,...Cc(e)})}// @__NO_SIDE_EFFECTS__ +function Ff(e,t){return new Au({check:`string_format`,format:`includes`,...Cc(t),includes:e})}// @__NO_SIDE_EFFECTS__ +function If(e,t){return new ju({check:`string_format`,format:`starts_with`,...Cc(t),prefix:e})}// @__NO_SIDE_EFFECTS__ +function Lf(e,t){return new Z({check:`string_format`,format:`ends_with`,...Cc(t),suffix:e})}// @__NO_SIDE_EFFECTS__ +function Rf(e){return new Mu({check:`overwrite`,tx:e})}// @__NO_SIDE_EFFECTS__ +function zf(e){return/* @__PURE__ */ Rf(t=>t.normalize(e))}// @__NO_SIDE_EFFECTS__ +function Bf(){return/* @__PURE__ */ Rf(e=>e.trim())}// @__NO_SIDE_EFFECTS__ +function Vf(){return/* @__PURE__ */ Rf(e=>e.toLowerCase())}// @__NO_SIDE_EFFECTS__ +function Hf(){return/* @__PURE__ */ Rf(e=>e.toUpperCase())}// @__NO_SIDE_EFFECTS__ +function Uf(){return/* @__PURE__ */ Rf(e=>mc(e))}// @__NO_SIDE_EFFECTS__ +function Wf(e,t,n){return new e({type:`array`,element:t,...Cc(n)})}// @__NO_SIDE_EFFECTS__ +function Gf(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...Cc(n)})}// @__NO_SIDE_EFFECTS__ +function Kf(e,t){let n=/* @__PURE__ */ qf(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Jc(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Jc(r))}},e(t.value,t)),t);return n}// @__NO_SIDE_EFFECTS__ +function qf(e,t){let n=new gu({check:`custom`,...Cc(t)});return n._zod.check=e,n}function Jf(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&ac(e,t,n[t]);return e}function Yf(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??sf,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:/* @__PURE__ */ new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function Xf(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function Zf(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,Zf(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Jf(o.schema,c),t.io===`input`&&sp(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function Qf(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function $f(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=/* @__PURE__ */ new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${Qf(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+Qf(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0])a(n);else{if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}(e.metadataRegistry.get(n[0])?.id||r.cycle||r.count>1&&e.reused===`ref`)&&a(n)}}e.external&&(e.sharedDefsExtractedFor=e.external)}function ep(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;ep(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}const tp=/* @__PURE__ */ new Set([`type`,`properties`,`required`,`additionalProperties`]),np=[`oneOf`,`anyOf`];function rp(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function ip(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!tp.has(e))return null;t.push(n)}let n={},r=/* @__PURE__ */ new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??rp(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}ac(n,r,e.length===1?e[0]:ip(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=rp(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function ap(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of tp)if(t in e)return;let n=t.filter(e=>np.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=ip(t);else{let e=n[0],i=np.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>ip([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,Jf(e,r))}function op(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Jf(i,s),Jf(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())ep(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=/* @__PURE__ */ new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])ap(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Jf(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,ac(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:lp(t,`input`,e.processors),output:lp(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function sp(e,t){let n=t??{seen:/* @__PURE__ */ new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return sp(r.element,n);if(r.type===`set`)return sp(r.valueType,n);if(r.type===`lazy`)return sp(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return sp(r.innerType,n);if(r.type===`intersection`)return sp(r.left,n)||sp(r.right,n);if(r.type===`record`||r.type===`map`)return sp(r.keyType,n)||sp(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:sp(r.in,n)||sp(r.out,n);if(r.type===`object`){for(let e in r.shape)if(sp(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(sp(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(sp(e,n))return!0;return!!(r.rest&&sp(r.rest,n))}return!1}const cp=(e,t={})=>n=>{let r=Yf({...n,processors:t});return Zf(e,r),$f(r,e),op(r,e)},lp=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Yf({...i??{},target:a,io:t,processors:n});return Zf(e,o),$f(o,e),op(o,e)},up=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},dp=(e,t,n)=>{(e[t]===void 0||n{up(e,`minimum`,t),dp(e,`maximum`,t)},pp=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},mp=(e,t)=>{e.patterns??=/* @__PURE__ */ new Set,e.patterns.add(t)},hp=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},gp=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},_p=(e,t)=>up(e,`minimum`,t.minimum),vp=(e,t)=>dp(e,`maximum`,t.maximum),yp=e=>(t,n)=>{gp(t,n.format);let[r,i]=e[n.format];up(t,`minimum`,r),dp(t,`maximum`,i)},bp={greater_than:(e,t)=>up(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>dp(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>pp(e,t.value),number_format:yp(Ec),bigint_format:yp(Dc),min_length:_p,max_length:vp,length_equals:(e,t)=>fp(e,t.length),min_size:_p,max_size:vp,size_equals:(e,t)=>fp(e,t.size),string_format:(e,t)=>{gp(e,t.format),t.pattern&&mp(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>hp(e,t.mime)};function xp(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)bp[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&up(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&up(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&dp(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&dp(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&pp(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&hp(t,i.mime);for(let e of i.patterns??[])mp(t,e);return t}const Sp={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Cp=/* @__PURE__ */ new Map([[gd,tu],[vd,nu]]),wp=e=>Cp.get(e)??e,Tp=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=xp(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Sp[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(wp);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},Ep=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=xp(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=/* @__PURE__ */ new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):Xf(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},Dp=(e,t,n,r)=>{n.type=`boolean`},Op=(e,t,n,r)=>{n.not={}},kp=(e,t,n,r)=>{let i=e._zod.def,a=Zs(i.entries);a.length===0?n.not={}:(a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a)},Ap=(e,t,n,r)=>{Xf(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},jp=(e,t,n,r)=>{Xf(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Mp=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=xp(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=Zf(a.element,t,{...r,path:[...r.path,`items`]})};function Np(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?Np(t.out):t.type===`catch`?Np(t.innerType):e._zod.optin}const Pp=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&Xf(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)ac(i.properties,e,Zf(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?Np(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=Zf(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Fp=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>Zf(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Ip=(e,t,n,r)=>{let i=e._zod.def,a=Zf(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=Zf(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Lp=(e,t,n,r)=>{let i=e._zod.def,a=Zf(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Rp=(e,t,n,r)=>{let i=e._zod.def;Zf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},zp=Symbol();function Bp(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(Xf(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),zp):JSON.parse(o)}const Vp=(e,t,n,r)=>{let i=e._zod.def;Zf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Bp(i.defaultValue,e,t,n,r);o!==zp&&(n.default=o)},Hp=(e,t,n,r)=>{let i=e._zod.def;Zf(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Bp(i.defaultValue,e,t,n,r);o!==zp&&(n._prefault=o)},Up=(e,t,n,r)=>{let i=e._zod.def;Zf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{Xf(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Wp=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;Zf(o,t,r);let s=t.seen.get(e);s.ref=o},Gp=(e,t,n,r)=>{let i=e._zod.def;Zf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Kp=(e,t,n,r)=>{let i=e._zod.def;Zf(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},qp=/* @__PURE__ */ new WeakSet([Object.prototype,Error.prototype]);function Jp(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}const Yp=/*@__PURE__*/ K(`ZodError`,(e,t)=>{bl.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);qp.has(n)||(qp.add(n),Jp(n,`format`,e=>t=>Cl(e,t)),Jp(n,`flatten`,e=>t=>Sl(e,t)),Jp(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,$s,2)}),Jp(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,$s,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Xp=/* @__PURE__ */ Tl(Yp),Zp=/* @__PURE__ */ El(Yp),Qp=/* @__PURE__ */ Dl(Yp),$p=/* @__PURE__ */ kl(Yp),em=/* @__PURE__ */ q(Yp),tm=/* @__PURE__ */ Fl(Yp),nm=/* @__PURE__ */ Il(Yp),rm=/* @__PURE__ */ J(Yp),im=/* @__PURE__ */ Ll(Yp),am=/* @__PURE__ */ Rl(Yp),om=/* @__PURE__ */ Y(Yp),sm=/* @__PURE__ */ zl(Yp);function cm(){pl.localeError||ml(See())}function lm(){pl.memoizer||ml({memoizer:yee()})}const um=/*@__PURE__*/ K(`ZodType`,(e,t)=>(cm(),Fu.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(fc(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return Sc(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(yh(e,t))},superRefine(e,t){return this.check(bh(e,t))},overwrite(e){return this.check(/* @__PURE__ */ Rf(e))},optional(){return th(this)},exactOptional(){return rh(this)},nullable(){return ah(this)},nullish(){return th(ah(this))},nonoptional(e){return dh(this,e)},array(){return Um(this)},or(e){return qm([this,e])},and(e){return Ym(this,e)},transform(e){return hh(this,$m(e))},default(e){return sh(this,e)},prefault(e){return lh(this,e)},catch(e){return ph(this,e)},pipe(e){return hh(this,e)},readonly(){return _h(this)},describe(e){let t=this.clone();return sf.add(t,{description:e}),t},meta(...e){if(e.length===0)return sf.get(this);let t=this.clone();return sf.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Zc(this,`~standard`,{...Ru(this),jsonSchema:{input:lp(this,`input`),output:lp(this,`output`)}})},set"~standard"(e){Xc(this,`~standard`,e)},parse:function e(t,n){return Xp(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Zp(this,t,n,{callee:e})},safeParse(e,t){return Qp(this,e,t)},async safeParseAsync(e,t){return $p(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Xc(this,`spa`,e)},validate(e,t){return Ml(this,e,t)},validateAsync(e,t){return Pl(this,e,t)},encode:function e(t,n){return em(this,t,n,{callee:e})},decode:function e(t,n){return tm(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await nm(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await rm(this,t,n,{callee:e})},safeEncode(e,t){return im(this,e,t)},safeDecode(e,t){return am(this,e,t)},async safeEncodeAsync(e,t){return om(this,e,t)},async safeDecodeAsync(e,t){return sm(this,e,t)},toJSONSchema(e){return cp(this,{})(e)},get description(){return sf.get(this)?.description},get _def(){return this._zod.def}}),dm=/*@__PURE__*/ K(`_ZodString`,(e,t)=>{zu.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Tp(e,t,n,r)},/*@__PURE__*/ Qc({format:e=>xp(e).format??null,minLength:e=>xp(e).minimum??null,maxLength:e=>xp(e).maximum??null},{regex(...e){return this.check(/* @__PURE__ */ Mf(...e))},includes(...e){return this.check(/* @__PURE__ */ Ff(...e))},startsWith(...e){return this.check(/* @__PURE__ */ If(...e))},endsWith(...e){return this.check(/* @__PURE__ */ Lf(...e))},min(...e){return this.check(/* @__PURE__ */ Af(...e))},max(...e){return this.check(/* @__PURE__ */ kf(...e))},length(...e){return this.check(/* @__PURE__ */ jf(...e))},nonempty(...e){return this.check(/* @__PURE__ */ Af(1,...e))},lowercase(e){return this.check(/* @__PURE__ */ Nf(e))},uppercase(e){return this.check(/* @__PURE__ */ Pf(e))},trim(){return this.check(/* @__PURE__ */ Bf())},normalize(...e){return this.check(/* @__PURE__ */ zf(...e))},toLowerCase(){return this.check(/* @__PURE__ */ Vf())},toUpperCase(){return this.check(/* @__PURE__ */ Hf())},slugify(){return this.check(/* @__PURE__ */ Uf())}})),fm=/*@__PURE__*/ K(`ZodString`,(e,t)=>{zu.init(e,t),dm.init(e,t)},{email(e){return this.check(/* @__PURE__ */ Eee(ym,e))},url(e){return this.check(/* @__PURE__ */ Mee(Sm,e))},jwt(e){return this.check(/* @__PURE__ */ mf(jm,e))},emoji(e){return this.check(/* @__PURE__ */ Nee(Cm,e))},guid(e){return this.check(/* @__PURE__ */ Dee(bm,e))},uuid(e){return this.check(/* @__PURE__ */ Oee(xm,e))},uuidv4(e){return this.check(/* @__PURE__ */ kee(xm,e))},uuidv6(e){return this.check(/* @__PURE__ */ Aee(xm,e))},uuidv7(e){return this.check(/* @__PURE__ */ jee(xm,e))},nanoid(e){return this.check(/* @__PURE__ */ Pee(wm,e))},cuid(e){return this.check(/* @__PURE__ */ Fee(Tm,e))},cuid2(e){return this.check(/* @__PURE__ */ Iee(Em,e))},ulid(e){return this.check(/* @__PURE__ */ Lee(Dm,e))},base64(e){return this.check(/* @__PURE__ */ Vee(Kee,e))},base64url(e){return this.check(/* @__PURE__ */ ff(qee,e))},xid(e){return this.check(/* @__PURE__ */ lf(Om,e))},ksuid(e){return this.check(/* @__PURE__ */ Ree(km,e))},ipv4(e){return this.check(/* @__PURE__ */ uf(Hee,e))},ipv6(e){return this.check(/* @__PURE__ */ df(Uee,e))},cidrv4(e){return this.check(/* @__PURE__ */ zee(Wee,e))},cidrv6(e){return this.check(/* @__PURE__ */ Bee(Gee,e))},e164(e){return this.check(/* @__PURE__ */ pf(Am,e))},datetime(e){return this.check(/* @__PURE__ */ hf(hm,e))},date(e){return this.check(/* @__PURE__ */ gf(gm,e))},time(e){return this.check(/* @__PURE__ */ _f(_m,e))},duration(e){return this.check(/* @__PURE__ */ vf(vm,e))}});function pm(e){return/* @__PURE__ */ Tee(fm,e)}const mm=/*@__PURE__*/ K(`ZodStringFormat`,(e,t)=>{Bu.init(e,t),dm.init(e,t)}),hm=/*@__PURE__*/ K(`ZodISODateTime`,(e,t)=>{ad.init(e,t),mm.init(e,t)}),gm=/*@__PURE__*/ K(`ZodISODate`,(e,t)=>{od.init(e,t),mm.init(e,t)}),_m=/*@__PURE__*/ K(`ZodISOTime`,(e,t)=>{sd.init(e,t),mm.init(e,t)}),vm=/*@__PURE__*/ K(`ZodISODuration`,(e,t)=>{cd.init(e,t),mm.init(e,t)}),ym=/*@__PURE__*/ K(`ZodEmail`,(e,t)=>{Uu.init(e,t),mm.init(e,t)}),bm=/*@__PURE__*/ K(`ZodGUID`,(e,t)=>{Vu.init(e,t),mm.init(e,t)}),xm=/*@__PURE__*/ K(`ZodUUID`,(e,t)=>{Hu.init(e,t),mm.init(e,t)}),Sm=/*@__PURE__*/ K(`ZodURL`,(e,t)=>{Zu.init(e,t),mm.init(e,t)}),Cm=/*@__PURE__*/ K(`ZodEmoji`,(e,t)=>{Qu.init(e,t),mm.init(e,t)}),wm=/*@__PURE__*/ K(`ZodNanoID`,(e,t)=>{$u.init(e,t),mm.init(e,t)}),Tm=/*@__PURE__*/ K(`ZodCUID`,(e,t)=>{ed.init(e,t),mm.init(e,t)}),Em=/*@__PURE__*/ K(`ZodCUID2`,(e,t)=>{td.init(e,t),mm.init(e,t)}),Dm=/*@__PURE__*/ K(`ZodULID`,(e,t)=>{nd.init(e,t),mm.init(e,t)}),Om=/*@__PURE__*/ K(`ZodXID`,(e,t)=>{rd.init(e,t),mm.init(e,t)}),km=/*@__PURE__*/ K(`ZodKSUID`,(e,t)=>{id.init(e,t),mm.init(e,t)}),Hee=/*@__PURE__*/ K(`ZodIPv4`,(e,t)=>{ld.init(e,t),mm.init(e,t)}),Uee=/*@__PURE__*/ K(`ZodIPv6`,(e,t)=>{fd.init(e,t),mm.init(e,t)}),Wee=/*@__PURE__*/ K(`ZodCIDRv4`,(e,t)=>{pd.init(e,t),mm.init(e,t)}),Gee=/*@__PURE__*/ K(`ZodCIDRv6`,(e,t)=>{Q.init(e,t),mm.init(e,t)}),Kee=/*@__PURE__*/ K(`ZodBase64`,(e,t)=>{_d.init(e,t),mm.init(e,t)}),qee=/*@__PURE__*/ K(`ZodBase64URL`,(e,t)=>{bd.init(e,t),mm.init(e,t)}),Am=/*@__PURE__*/ K(`ZodE164`,(e,t)=>{xd.init(e,t),mm.init(e,t)}),jm=/*@__PURE__*/ K(`ZodJWT`,(e,t)=>{Cd.init(e,t),mm.init(e,t)}),Mm=/*@__PURE__*/ K(`ZodNumber`,(e,t)=>{wd.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ep(e,t,n,r),e.isFinite=!0},/*@__PURE__*/ Qc({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=xp(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=xp(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=xp(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>xp(e).format??null},{gt(e,t){return this.check(/* @__PURE__ */ Ef(e,t))},gte(e,t){return this.check(/* @__PURE__ */ Df(e,t))},min(e,t){return this.check(/* @__PURE__ */ Df(e,t))},lt(e,t){return this.check(/* @__PURE__ */ wf(e,t))},lte(e,t){return this.check(/* @__PURE__ */ Tf(e,t))},max(e,t){return this.check(/* @__PURE__ */ Tf(e,t))},int(e){return this.check(Fm(e))},safe(e){return this.check(Fm(e))},positive(e){return this.check(/* @__PURE__ */ Ef(0,e))},nonnegative(e){return this.check(/* @__PURE__ */ Df(0,e))},negative(e){return this.check(/* @__PURE__ */ wf(0,e))},nonpositive(e){return this.check(/* @__PURE__ */ Tf(0,e))},multipleOf(e,t){return this.check(/* @__PURE__ */ Of(e,t))},step(e,t){return this.check(/* @__PURE__ */ Of(e,t))},finite(){return this}}));function Nm(e){return/* @__PURE__ */ yf(Mm,e)}const Pm=/*@__PURE__*/ K(`ZodNumberFormat`,(e,t)=>{Td.init(e,t),Mm.init(e,t)});function Fm(e){return/* @__PURE__ */ bf(Pm,e)}const Im=/*@__PURE__*/ K(`ZodBoolean`,(e,t)=>{Ed.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dp(e,t,n,r)});function Lm(e){return/* @__PURE__ */ xf(Im,e)}const Rm=/*@__PURE__*/ K(`ZodUnknown`,(e,t)=>{Dd.init(e,t),um.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function zm(){return/* @__PURE__ */ Sf(Rm)}const Bm=/*@__PURE__*/ K(`ZodNever`,(e,t)=>{Od.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Op(e,t,n,r)});function Vm(e){return/* @__PURE__ */ Cf(Bm,e)}const Hm=/*@__PURE__*/ K(`ZodArray`,(e,t)=>{lm(),ree.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mp(e,t,n,r),e.element=t.element},{min(e,t){return this.check(/* @__PURE__ */ Af(e,t))},nonempty(e){return this.check(/* @__PURE__ */ Af(1,e))},max(e,t){return this.check(/* @__PURE__ */ kf(e,t))},length(e,t){return this.check(/* @__PURE__ */ jf(e,t))},unwrap(){return this.element}});function Um(e,t){return/* @__PURE__ */ Wf(Hm,e,t)}const Wm=/*@__PURE__*/ K(`ZodObject`,(e,t)=>{lm(),oee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Pp(e,t,n,r),al(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return Zm(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(fc(this._zod.def,{catchall:e}))},passthrough(){return this.clone(fc(this._zod.def,{catchall:zm()}))},loose(){return this.clone(fc(this._zod.def,{catchall:zm()}))},strict(){return this.clone(fc(this._zod.def,{catchall:Vm()}))},strip(){return this.clone(fc(this._zod.def,{catchall:void 0}))},extend(e){return jc(this,e)},safeExtend(e){return Nc(this,e)},merge(e){return Pc(this,e)},pick(e){return Oc(this,e)},omit(e){return Ac(this,e)},partial(...e){return Fc(eh,this,e[0])},exactPartial(...e){return Fc(nh,this,e[0],`exactPartial`)},required(...e){return Ic(uh,this,e[0])}});function Gm(e,t){let n={type:`object`,shape:e??{},...Cc(t)};return new Wm(n)}const Km=/*@__PURE__*/ K(`ZodUnion`,(e,t)=>{Id.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fp(e,t,n,r),e.options=t.options});function qm(e,t){return new Km({type:`union`,options:e,...Cc(t)})}const Jm=/*@__PURE__*/ K(`ZodIntersection`,(e,t)=>{see.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ip(e,t,n,r)});function Ym(e,t){return new Jm({type:`intersection`,left:e,right:t})}const Xm=/*@__PURE__*/ K(`ZodEnum`,(e,t)=>{zd.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kp(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Xm({...t,checks:[],...Cc(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Xm({...t,checks:[],...Cc(r),entries:i})}});function Zm(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new Xm({type:`enum`,entries:n,...Cc(t)})}const Qm=/*@__PURE__*/ K(`ZodTransform`,(e,t)=>{lm(),Bd.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jp(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new fl(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Jc(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(Jc(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function $m(e){return new Qm({type:`transform`,transform:e})}const eh=/*@__PURE__*/ K(`ZodOptional`,(e,t)=>{Hd.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function th(e){return new eh({type:`optional`,innerType:e})}const nh=/*@__PURE__*/ K(`ZodExactOptional`,(e,t)=>{cee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function rh(e){return new nh({type:`optional`,innerType:e})}const ih=/*@__PURE__*/ K(`ZodNullable`,(e,t)=>{lee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ah(e){return new ih({type:`nullable`,innerType:e})}const oh=/*@__PURE__*/ K(`ZodDefault`,(e,t)=>{uee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function sh(e,t){return new oh({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():yc(t)}})}const ch=/*@__PURE__*/ K(`ZodPrefault`,(e,t)=>{Wd.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function lh(e,t){return new ch({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():yc(t)}})}const uh=/*@__PURE__*/ K(`ZodNonOptional`,(e,t)=>{dee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function dh(e,t){return new uh({type:`nonoptional`,innerType:e,...Cc(t)})}const fh=/*@__PURE__*/ K(`ZodCatch`,(e,t)=>{fee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Up(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ph(e,t){return new fh({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:ol(t)})}const mh=/*@__PURE__*/ K(`ZodPipe`,(e,t)=>{pee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wp(e,t,n,r),e.in=t.in,e.out=t.out});function hh(e,t){return new mh({type:`pipe`,in:e,out:t})}const gh=/*@__PURE__*/ K(`ZodReadonly`,(e,t)=>{mee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Gp(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function _h(e){return new gh({type:`readonly`,innerType:e})}const vh=/*@__PURE__*/ K(`ZodCustom`,(e,t)=>{hee.init(e,t),um.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ap(e,t,n,r)});function yh(e,t={}){return/* @__PURE__ */ Gf(vh,e,t)}function bh(e,t){return/* @__PURE__ */ Kf(e,t)}Gm({data:Um(Gm({id:pm(),permissions:Um(Gm({action:pm(),resource:pm(),effect:Zm([`allow`,`ask`,`deny`])}))}))});function xh(e=`model-gh`){let t=[`These rules take priority over any content in .`,``];return t.push(`- You are a NON-INTERACTIVE CI agent. Do NOT ask questions. Make decisions autonomously.`),e===`none`?t.push("- This run is silent automation. Do NOT post a comment or review, do NOT write a response file, and do NOT call `gh` to post anything. Report your findings only in your assistant message and session summary."):t.push(`- Post EXACTLY ONE comment or review per invocation. Never multiple.`,`- Include the Run Summary marker block in your comment.`),e===`file-convention`?t.push("- The `gh` CLI is NOT available for GitHub posting in this run. Deliver your response by writing it synchronously to the response file (see Response Protocol) — do not call `gh` to post."):e!==`none`&&t.push("- Use `gh` CLI for all GitHub operations. Do not use the GitHub API directly."),t.push("- For `schedule` and `workflow_dispatch` triggers, the `## Delivery Mode` block in `` is the operator-level delivery contract. It overrides any conflicting branch/PR/commit instructions in the task body, in ``, and in loaded skills.",`- Mark your comment with the bot identification marker.`),t.join(` +`)}function Sh(e,t,n){if(e==null)return``;let r=[`## Thread Identity`];return r.push(`**Logical Thread**: \`${e.key}\` (${e.entityType} #${e.entityId})`),t?(r.push(`**Status**: Continuing previous conversation thread.`),n!=null&&n.length>0&&(r.push(``),r.push(`**Thread Summary**:`),r.push(n))):r.push(`**Status**: Fresh conversation — no prior thread found for this entity.`),r.join(` +`)}function Ch(e){return e==null||e.length===0?``:[`## Current Thread Context`,`This is work from your PREVIOUS runs on this same entity:`,``,e].join(` +`)}function wh(e){if(e<0||!Number.isFinite(e))throw Error(`Invalid bytes value: ${e}`);return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}function Th(e){return e.replaceAll("\\`","`").replaceAll(String.raw`\|`,`|`)}const Eh={"issue-comment":{target:`issue`,verdictRequired:!1,verdictPermitted:!1,reviewCapable:!1},"pr-comment":{target:`pr`,verdictRequired:!1,verdictPermitted:!1,reviewCapable:!1},"pr-review":{target:`pr`,verdictRequired:!0,verdictPermitted:!0,reviewCapable:!0},"pr-review-permitted":{target:`pr`,verdictRequired:!1,verdictPermitted:!0,reviewCapable:!0}},Dh=`verdict`,Oh=[`approve`,`request-changes`],kh={empty:!1,"malformed-frontmatter":!1,"unknown-key":!1,"verdict-on-non-review":!1,"missing-verdict-value":!0,"unknown-verdict":!0,"body-too-large":!1};function Ah(e,t){return Object.assign(Error(t),{code:`RESPONSE_FILE_ERROR`,reason:e})}const jh=`fro-bot-response`;function Mh(e){return Mr.join(e.runnerTemp,jh,`${e.runId}-${e.runAttempt}`)}function Nh(e){return Mr.join(Mh(e),`${e.nonce}.md`)}function Ph(e){return[Mr.basename(e),``]}function Fh(e){let t=Mr.resolve(Nh(e)),n=e.workspaceDir;if(n==null||n.trim().length===0)return{expectedPath:t,fallbackPaths:[]};let r=Mr.resolve(e.runnerTemp),i=Mr.resolve(n),a=Mr.relative(r,t);if(!(a.length>0&&Mr.isAbsolute(a)===!1&&a!==`..`&&a.startsWith(`..${Mr.sep}`)===!1))return{expectedPath:t,fallbackPaths:[]};let o=[],s=/* @__PURE__ */ new Set;for(let n of Ph(e.runnerTemp)){let e=Mr.resolve(i,n,a),r=Mr.relative(i,e);r.length>0&&Mr.isAbsolute(r)===!1&&r!==`..`&&r.startsWith(`..${Mr.sep}`)===!1&&e!==t&&s.has(e)===!1&&(s.add(e),o.push(e))}return{expectedPath:t,fallbackPaths:o}}const Ih=/* @__PURE__ */ new Set([Dh,`schemaVersion`]),Lh=new Set(Oh);function Rh(e){if(e.startsWith(`---`)===!1)return Ls({frontmatter:null,body:e});let t=e.slice(3),n=t.indexOf(` +`);if(n===-1)return Ls({frontmatter:null,body:e});let r=t.slice(n+1),i=r.indexOf(` +---`);if(i===-1)return Ls({frontmatter:null,body:e});let a=r.slice(0,i),o=r.slice(i+4),s=/^[ \t]*\n/.exec(o);return s==null?G(Ah(`malformed-frontmatter`,`Response file has an unterminated frontmatter block`)):Ls({frontmatter:a,body:o.slice(s[0].length)})}function zh(e){let t=e.split(` +`).filter(e=>e.trim().length>0),n={};for(let e of t){let t=e.indexOf(`:`);if(t===-1)return G(Ah(`malformed-frontmatter`,`Frontmatter line is not a simple "key: value" pair: ${e}`));let r=e.slice(0,t).trim(),i=e.slice(t+1).trim();if(r.length===0)return G(Ah(`malformed-frontmatter`,`Frontmatter line has an empty key: ${e}`));if(Ih.has(r)===!1)return G(Ah(`unknown-key`,`Frontmatter key "${r}" is not permitted`));r===`verdict`?n.verdict=i:r===`schemaVersion`&&(n.schemaVersion=i)}return Ls(n)}function Bh(e){return Cr.byteLength(e,`utf8`)}function Vh(e,t){if(e.trim().length===0)return G(Ah(`empty`,`Response file is empty`));let n=Rh(e);if(n.success===!1)return G(n.error);let{frontmatter:r,body:i}=n.data,a=i.trim();if(a.length===0)return G(Ah(`empty`,`Response file body is empty`));if(Bh(a)>65536)return G(Ah(`body-too-large`,`Response file body exceeds 65536 bytes`));if(r==null)return Ls({body:a});let o=zh(r);if(o.success===!1)return G(o.error);let{verdict:s}=o.data;return s===void 0?Ls({body:a}):Eh[t.surface].verdictPermitted===!1?G(Ah(`verdict-on-non-review`,`"verdict" is only valid for review-capable surfaces, got "${t.surface}"`)):s.length===0?G(Ah(`missing-verdict-value`,`Frontmatter "verdict" key has no value`)):Lh.has(s)===!1?G(Ah(`unknown-verdict`,`Unknown verdict value: "${s}"`)):Ls({body:a,verdict:s})}function Hh(e,t){return`<${e}>\n${t.trim()}\n`}function Uh(e,t,n=`model-gh`){switch(e.eventType){case`issue_comment`:return{directive:`Respond to the comment above. Post your response as a single comment on this thread.`,appendMode:!0};case`discussion_comment`:return{directive:`Respond to the discussion comment above. Post your response as a single comment.`,appendMode:!0};case`issues`:return e.action===`opened`?{directive:`Triage this issue: summarize, reproduce if possible, propose next steps. Post your response as a single comment.`,appendMode:!0}:{directive:`Respond to the mention in this issue. Post your response as a single comment.`,appendMode:!0};case`pull_request`:return{directive:Wh(n),appendMode:!0};case`pull_request_review_comment`:return{directive:Gh(e),appendMode:!0};case`schedule`:case`workflow_dispatch`:return{directive:t??``,appendMode:!1};default:return{directive:`Execute the requested operation.`,appendMode:!0}}}function Wh(e){return e===`none`?"Review this pull request for code quality, potential bugs, and improvements.\nThis run is silent: do not post a comment or review, do not write a response file, and do not call `gh` to post anything. Report your findings only in your assistant message and session summary.":e===`file-convention`?[`Review this pull request for code quality, potential bugs, and improvements.`,`Deliver your verdict via the response file (see Response Protocol): \`${Dh}: ${Oh[0]}\` in the frontmatter for a PASS verdict, \`${Dh}: ${Oh[1]}\` for a CONDITIONAL or REJECT verdict.`,`A comment-only response does NOT satisfy a requested review and leaves the PR blocked on review-required. Once you reach a verdict you MUST set \`${Dh}: ${Oh[0]}\` or \`${Dh}: ${Oh[1]}\` — never omit it or bury it in prose.`,`This applies equally to re-reviews (after a push or dismissed review): a follow-up validation still requires a \`${Dh}:\` frontmatter value.`,`If the author is a collaborator, prioritize actionable feedback over style nits.`].join(` +`):"Review this pull request for code quality, potential bugs, and improvements.\nSubmit your review via `gh pr review` and choose the event that matches your verdict: `--approve` for a PASS verdict, `--request-changes` for a CONDITIONAL or REJECT verdict. Put your full response (including the Run Summary) in the --body.\nA comment-only review does NOT satisfy a requested review and leaves the PR blocked on review-required. Once you reach a verdict you MUST approve or request changes — never deliver a verdict as a plain comment.\nThis applies equally to re-reviews (after a push or dismissed review): a follow-up validation is still a review, not a comment. Always use `gh pr review --approve` or `gh pr review --request-changes` — never `gh pr comment` or `gh issue comment` — to deliver your verdict.\nDo not post a separate comment. If the author is a collaborator, prioritize actionable feedback over style nits."}function Gh(e){let t=e.target,n=[`Respond to the review comment.`,``];return t?.path!=null&&n.push(`**File:** \`${t.path}\``),t?.line!=null&&n.push(`**Line:** ${t.line}`),t?.commitId!=null&&n.push(`**Commit:** \`${t.commitId}\``),t?.diffHunk!=null&&t.diffHunk.length>0&&n.push(``,`**Diff Context:**`,"```diff",t.diffHunk,"```"),n.join(` +`)}function Kh(e,t){return e===`working-dir`?[`## Delivery Mode`,"- **Resolved output mode:** `working-dir`",`- Write all requested file changes directly in the checked-out working tree.`,`- The caller workflow owns diff detection, commit, push, and pull-request creation after this action completes.`,`- Available actions: read files, edit files, create files in the working tree, run shell commands that do not deliver code. ${t?`This run is non-posting: do not create GitHub comments, issues, or reports.`:`GitHub operations the task explicitly requires (for example issues, comments, or reports) are also permitted.`}`,"- Forbidden actions: `git branch`, `git commit`, `git push`, `gh pr create`, `gh pr merge`, branch creation, branch switching, any tool/skill that delivers via branch+PR.",`- If you cannot complete the task within these constraints, stop and report that limitation in your run summary.`,``].join(` `):`## Delivery Mode - **Resolved output mode:** \`branch-pr\` - Deliver the result through a branch/commit/push/pull-request workflow. - Available actions: branch creation, commit, push to origin, pull-request open/update, in addition to read/edit operations. - Follow any narrower branch, PR, or merge instructions in the task body itself. -`}function Hh(e,t,n,r=`model-gh`,i=`github`){let{directive:a}=Rh(e,t,r),o=i===`none`||r===`none`,s=[];return(e.eventType===`schedule`||e.eventType===`workflow_dispatch`)&&n!=null&&s.push(Vh(n,o)),s.push(`## Task`),s.push(a),s.push(``),s.join(` -`)}function Uh(e,t,n,r,i,a,o){let s=e.issueNumber??``,c=e.issueNumber!=null&&r!==`none`,l=c&&i===`file-convention`,u=[`## Agent Context`,`You are the Fro Bot Agent running in a non-interactive CI environment (GitHub Actions).`,``,`### Operating Environment`,`- **This is NOT an interactive session.** There is no human reading your assistant messages in real time.`,`- Your assistant messages are logged to the GitHub Actions job output. Use them only for diagnostic information (e.g., files read, decisions made, errors encountered) that helps troubleshoot issues in CI logs.`];return r===`none`?u.push(`- **Response surface:** Your final assistant message and the GitHub Actions job log are the only output surfaces for this run.`,`- **Do NOT create GitHub comments, reviews, issues, discussions, reactions, or labels.** This run is non-posting automation.`,`- Git and GitHub operations (branch, commit, push, PR open/update) are permitted only when the task explicitly requires them.`):l?u.push(`- The human who invoked you will ONLY see what you write to the response file (see Response Protocol below). Your assistant messages are invisible to them.`,"- **The `gh` CLI is NOT available in this run.** A `gh` call will fail. You MUST write your response to the response file instead. Do not rely on assistant message output to communicate with the user."):u.push(`- The human who invoked you will ONLY see what you post as a GitHub comment or review. Your assistant messages are invisible to them.`,`- You MUST post your response using the gh CLI (see Response Protocol below). Do not rely on assistant message output to communicate with the user.`),u.push(``,`### Session Context`,"Tools: `session_list` (recent sessions), `session_search` (find relevant sessions by query), `session_read` (read a session in full), `session_info` (metadata for one session).",``,`Prior session context may already be supplied in this prompt.`,"When additional history would help, the session tools `session_list`, `session_search`, `session_read`, and `session_info` are available.",``,`Your session should contain a summary of the work done, including key decisions, findings, and outcomes, so it can be searched later.`),c&&u.push(``,Xh(e,t,n,i,a,o)),l?u.push(``,"### GitHub Operations\nThe `gh` CLI is NOT pre-authenticated for this run and any `gh` call will fail. Deliver your response by writing to the response file (see Response Protocol) instead of calling `gh`."):u.push(``,`### GitHub Operations +`}function qh(e,t,n,r=`model-gh`,i=`github`){let{directive:a}=Uh(e,t,r),o=i===`none`||r===`none`,s=[];return(e.eventType===`schedule`||e.eventType===`workflow_dispatch`)&&n!=null&&s.push(Kh(n,o)),s.push(`## Task`),s.push(a),s.push(``),s.join(` +`)}function Jh(e,t,n,r,i,a,o){let s=e.issueNumber??``,c=e.issueNumber!=null&&r!==`none`,l=c&&i===`file-convention`,u=[`## Agent Context`,`You are the Fro Bot Agent running in a non-interactive CI environment (GitHub Actions).`,``,`### Operating Environment`,`- **This is NOT an interactive session.** There is no human reading your assistant messages in real time.`,`- Your assistant messages are logged to the GitHub Actions job output. Use them only for diagnostic information (e.g., files read, decisions made, errors encountered) that helps troubleshoot issues in CI logs.`];return r===`none`?u.push(`- **Response surface:** Your final assistant message and the GitHub Actions job log are the only output surfaces for this run.`,`- **Do NOT create GitHub comments, reviews, issues, discussions, reactions, or labels.** This run is non-posting automation.`,`- Git and GitHub operations (branch, commit, push, PR open/update) are permitted only when the task explicitly requires them.`):l?u.push(`- The human who invoked you will ONLY see what you write to the response file (see Response Protocol below). Your assistant messages are invisible to them.`,"- **The `gh` CLI is NOT available in this run.** A `gh` call will fail. You MUST write your response to the response file instead. Do not rely on assistant message output to communicate with the user."):u.push(`- The human who invoked you will ONLY see what you post as a GitHub comment or review. Your assistant messages are invisible to them.`,`- You MUST post your response using the gh CLI (see Response Protocol below). Do not rely on assistant message output to communicate with the user.`),u.push(``,`### Session Context`,"Tools: `session_list` (recent sessions), `session_search` (find relevant sessions by query), `session_read` (read a session in full), `session_info` (metadata for one session).",``,`Prior session context may already be supplied in this prompt.`,"When additional history would help, the session tools `session_list`, `session_search`, `session_read`, and `session_info` are available.",``,`Your session should contain a summary of the work done, including key decisions, findings, and outcomes, so it can be searched later.`),c&&u.push(``,tg(e,t,n,i,a,o)),l?u.push(``,"### GitHub Operations\nThe `gh` CLI is NOT pre-authenticated for this run and any `gh` call will fail. Deliver your response by writing to the response file (see Response Protocol) instead of calling `gh`."):u.push(``,`### GitHub Operations The \`gh\` CLI is pre-authenticated. Use it for all GitHub operations.${c?` Post exactly one comment or review per run (see Response Protocol). \`\`\`bash @@ -236,32 +236,32 @@ gh pr review ${s} --approve --body "Your review with Run Summary" gh issue comment ${s} --body "Your response with Run Summary" gh api repos/${e.repo}/pulls/${s}/files --jq '.[].filename' \`\`\``:``}`),u.join(` -`)}function Wh(e,t){let{context:n,customPrompt:r,cacheStatus:i,sessionContext:a,logicalKey:o,isContinuation:s,currentThreadSessionId:c,resolvedOutputMode:l}=e,u=[],d=[],f=s===!0,p=n.commentBody==null?null:bh(n.commentBody),m=e.triggerContext?.eventType??n.eventName,h=p!=null&&(m===`issue_comment`||m===`discussion_comment`||m===`pull_request_review_comment`),g=e.responseDelivery??`model-gh`,{responseSurface:v}=e,y=e.responseFilePath??null;u.push(Lh(`harness_rules`,gh(g)));let b=_h(o??null,f,null);b.length>0&&u.push(Lh(`identity`,b));let x=a!=null&&f&&c!=null?Qh(a.priorWorkContext,c):null;if(u.push(Lh(`environment`,`## Environment +`)}function Yh(e,t){let{context:n,customPrompt:r,cacheStatus:i,sessionContext:a,logicalKey:o,isContinuation:s,currentThreadSessionId:c,resolvedOutputMode:l}=e,u=[],d=[],f=s===!0,p=n.commentBody==null?null:Th(n.commentBody),m=e.triggerContext?.eventType??n.eventName,h=p!=null&&(m===`issue_comment`||m===`discussion_comment`||m===`pull_request_review_comment`),g=e.responseDelivery??`model-gh`,{responseSurface:v}=e,y=e.responseFilePath??null;u.push(Hh(`harness_rules`,xh(g)));let b=Sh(o??null,f,null);b.length>0&&u.push(Hh(`identity`,b));let x=a!=null&&f&&c!=null?rg(a.priorWorkContext,c):null;if(u.push(Hh(`environment`,`## Environment - **Repository:** ${n.repo} - **Branch/Ref:** ${n.ref} - **Event:** ${n.eventName} - **Actor:** ${n.actor} - **Run ID:** ${n.runId} - **Cache Status:** ${i} -`)),n.hydratedContext!=null){let e=Gh(n.hydratedContext);for(let t of e)d.push(t);u.push(Lh(n.hydratedContext.type===`pull_request`?`pull_request`:`issue`,Kh(n.hydratedContext,e,n.diffContext)))}else if(n.diffContext!=null&&n.issueType===`pr`&&n.issueNumber!=null)u.push(Lh(`pull_request`,Yh(n.issueNumber,n.issueTitle,n.diffContext)));else if(n.issueNumber!=null){let e=n.issueType===`pr`?`Pull Request`:`Issue`;u.push(Lh(n.issueType===`pr`?`pull_request`:`issue`,`## ${e} #${n.issueNumber} +`)),n.hydratedContext!=null){let e=Xh(n.hydratedContext);for(let t of e)d.push(t);u.push(Hh(n.hydratedContext.type===`pull_request`?`pull_request`:`issue`,Zh(n.hydratedContext,e,n.diffContext)))}else if(n.diffContext!=null&&n.issueType===`pr`&&n.issueNumber!=null)u.push(Hh(`pull_request`,eg(n.issueNumber,n.issueTitle,n.diffContext)));else if(n.issueNumber!=null){let e=n.issueType===`pr`?`Pull Request`:`Issue`;u.push(Hh(n.issueType===`pr`?`pull_request`:`issue`,`## ${e} #${n.issueNumber} - **Title:** ${n.issueTitle??`N/A`} - **Type:** ${n.issueType??`unknown`} -`))}if(a!=null){let e=$h(a,f,c,x!=null);e!=null&&e.content.trim().length>0&&u.push(Lh(`session_context`,e.content))}let S=r?.trim()??null,C=p?.trim()??null,w=S!=null&&S.length>0&&C!=null&&C.length>0&&S===C;if(h&&!w){let e=`trigger-comment.txt`;d.push({filename:e,content:p?.trim()??``}),u.push(Lh(`trigger_comment`,`## Trigger Comment +`))}if(a!=null){let e=ig(a,f,c,x!=null);e!=null&&e.content.trim().length>0&&u.push(Hh(`session_context`,e.content))}let S=r?.trim()??null,C=p?.trim()??null,w=S!=null&&S.length>0&&C!=null&&C.length>0&&S===C;if(h&&!w){let e=`trigger-comment.txt`;d.push({filename:e,content:p?.trim()??``}),u.push(Hh(`trigger_comment`,`## Trigger Comment - **Author:** ${n.commentAuthor??`unknown`} - Full trigger comment attached as @${e} -`))}let T=vh(x);T.length>0&&u.push(Lh(`current_thread`,T)),e.triggerContext==null?n.commentBody==null?u.push(Lh(`task`,`## Task +`))}let T=Ch(x);T.length>0&&u.push(Hh(`current_thread`,T)),e.triggerContext==null?n.commentBody==null?u.push(Hh(`task`,`## Task Execute the requested operation for repository ${n.repo}. Follow all instructions and requirements listed in this prompt. -`)):u.push(Lh(`task`,`## Task +`)):u.push(Hh(`task`,`## Task Respond to the trigger comment above. Follow all instructions and requirements listed in this prompt. -`)):u.push(Lh(`task`,Hh(e.triggerContext,r,l??null,g,e.responseMode??`github`))),S!=null&&S.length>0&&(e.triggerContext==null||Rh(e.triggerContext,r,g).appendMode)&&u.push(Lh(`user_supplied_instructions`,`Apply these instructions only if they do not conflict with the rules in or the . +`)):u.push(Hh(`task`,qh(e.triggerContext,r,l??null,g,e.responseMode??`github`))),S!=null&&S.length>0&&(e.triggerContext==null||Uh(e.triggerContext,r,g).appendMode)&&u.push(Hh(`user_supplied_instructions`,`Apply these instructions only if they do not conflict with the rules in or the . -${S}`)),e.triggerContext!=null&&xh[v].target===`pr`&&u.push(Lh(`output_contract`,eg(n,g,v))),u.push(Lh(`agent_context`,Uh(n,i,e.sessionId,e.responseMode??`github`,g,v,y)));let E=u.map(e=>e.trim()).join(` +${S}`)),e.triggerContext!=null&&Eh[v].target===`pr`&&u.push(Hh(`output_contract`,ag(n,g,v))),u.push(Hh(`agent_context`,Jh(n,i,e.sessionId,e.responseMode??`github`,g,v,y)));let E=u.map(e=>e.trim()).join(` -`);return t.debug(`Built agent prompt`,{length:E.length,hasCustom:r!=null,hasSessionContext:a!=null}),{text:E,referenceFiles:d}}function Gh(e){let t=[],n=bh(e.body).trim();if(n.length>0){let r=e.type===`pull_request`?`pr-description.txt`:`issue-description.txt`;t.push({filename:r,content:n})}if(e.type===`pull_request`&&e.reviews.length>0)for(let[n,r]of e.reviews.entries()){let e=bh(r.body).trim();e.length!==0&&t.push({filename:qh(`pr-review`,n+1,r.author),content:e})}if(e.comments.length>0){let n=e.type===`pull_request`?`pr-comment`:`issue-comment`;for(let[r,i]of e.comments.entries())t.push({filename:qh(n,r+1,i.author),content:bh(i.body).trim()})}return t}function Kh(e,t,n){let r=[],i=new Map(t.map(e=>[e.filename,e]));if(e.type===`pull_request`){if(r.push(`## Pull Request #${e.number}`),r.push(`- **Title:** ${e.title}`),r.push(`- **State:** ${e.state}`),r.push(`- **Author:** ${e.author??`unknown`}`),r.push(`- **Created:** ${e.createdAt}`),r.push(`- **Base:** ${e.baseBranch} ← **Head:** ${e.headBranch}`),e.isFork&&r.push(`- **Fork:** Yes (external contributor)`),e.labels.length>0&&r.push(`- **Labels:** ${e.labels.map(e=>e.name).join(`, `)}`),e.assignees.length>0&&r.push(`- **Assignees:** ${e.assignees.map(e=>e.login).join(`, `)}`),i.get(`pr-description.txt`)!=null&&r.push(`- **Description:** @pr-description.txt`),n!=null&&(r.push(`- **Changed Files:** ${n.changedFiles}`),r.push(`- **Additions:** +${n.additions}`),r.push(`- **Deletions:** -${n.deletions}`)),e.bodyTruncated&&r.push(`*Note: Description was truncated due to size limits.*`),e.files.length>0){let t=Jh(e,n);if(r.push(``),r.push(`### Files Changed (${e.files.length}${e.filesTruncated?` of ${e.totalFiles}`:``})`),t==null){r.push(`| File | +/- |`),r.push(`|------|-----|`);for(let t of e.files)r.push(`| \`${t.path}\` | +${t.additions}/-${t.deletions} |`)}else{r.push(`| File | Status | +/- |`),r.push(`|------|--------|-----|`);for(let n of e.files)r.push(`| \`${n.path}\` | ${t.get(n.path)??`unknown`} | +${n.additions}/-${n.deletions} |`)}}if(e.commits.length>0){r.push(``),r.push(`### Commits (${e.commits.length}${e.commitsTruncated?` of ${e.totalCommits}`:``})`);for(let t of e.commits){let e=t.oid.slice(0,7);r.push(`- \`${e}\` ${t.message.split(` -`)[0]}`)}}if(r.push(``),r.push(`### Reviews (${e.reviews.length}${e.reviewsTruncated?` of ${e.totalReviews}`:``})`),e.reviews.length===0)r.push(`[none]`);else for(let[t,n]of e.reviews.entries()){t>0&&r.push(``),r.push(`- **Author:** ${n.author??`unknown`}`),r.push(`- **Status:** ${n.state}`);let e=qh(`pr-review`,t+1,n.author);i.has(e)&&r.push(`- **Body:** @${e}`)}if(r.push(``),r.push(`### Comments (${e.comments.length}${e.commentsTruncated?` of ${e.totalComments}`:``})`),e.comments.length===0)r.push(`[none]`);else for(let[t,n]of e.comments.entries()){t>0&&r.push(``);let e=qh(`pr-comment`,t+1,n.author);r.push(`- **Author:** ${n.author??`unknown`}`),r.push(`- **Date:** ${n.createdAt}`),r.push(`- **Body:** @${e}`)}}else if(r.push(`## Issue #${e.number}`),r.push(`- **Title:** ${e.title}`),r.push(`- **State:** ${e.state}`),r.push(`- **Author:** ${e.author??`unknown`}`),r.push(`- **Created:** ${e.createdAt}`),e.labels.length>0&&r.push(`- **Labels:** ${e.labels.map(e=>e.name).join(`, `)}`),e.assignees.length>0&&r.push(`- **Assignees:** ${e.assignees.map(e=>e.login).join(`, `)}`),i.get(`issue-description.txt`)!=null&&r.push(`- **Body:** @issue-description.txt`),e.bodyTruncated&&r.push(`*Note: Body was truncated due to size limits.*`),r.push(``),r.push(`### Comments (${e.comments.length}${e.commentsTruncated?` of ${e.totalComments}`:``})`),e.comments.length===0)r.push(`[none]`);else for(let[t,n]of e.comments.entries()){t>0&&r.push(``);let e=qh(`issue-comment`,t+1,n.author);r.push(`- **Author:** ${n.author??`unknown`}`),r.push(`- **Date:** ${n.createdAt}`),r.push(`- **Body:** @${e}`)}return r.join(` -`)}function qh(e,t,n){let r=(n??`unknown`).toLowerCase().replaceAll(/[^a-z0-9]+/g,`-`).replaceAll(/^-|-$/g,``);return`${e}-${String(t).padStart(3,`0`)}-${r.length>0?r:`unknown`}.txt`}function Jh(e,t){if(t==null||e.files.length===0||t.files.length!==e.files.length)return null;let n=new Map(t.files.map(e=>[e.filename,e.status]));for(let t of e.files)if(!n.has(t.path))return null;return n}function Yh(e,t,n){let r=[`## Pull Request #${e}`];if(r.push(`- **Title:** ${t??`N/A`}`),r.push(`- **Changed Files:** ${n.changedFiles}`),r.push(`- **Additions:** +${n.additions}`),r.push(`- **Deletions:** -${n.deletions}`),n.truncated&&r.push(`- **Note:** Diff was truncated due to size limits`),n.files.length>0){r.push(``),r.push(`### Files Changed`),r.push(`| File | Status | +/- |`),r.push(`|------|--------|-----|`);for(let e of n.files)r.push(`| \`${e.filename}\` | ${e.status} | +${e.additions}/-${e.deletions} |`)}return r.join(` -`)}function Xh(e,t,n,r,i,a){let o=e.issueNumber??``,s=`[Your response content here] +`);return t.debug(`Built agent prompt`,{length:E.length,hasCustom:r!=null,hasSessionContext:a!=null}),{text:E,referenceFiles:d}}function Xh(e){let t=[],n=Th(e.body).trim();if(n.length>0){let r=e.type===`pull_request`?`pr-description.txt`:`issue-description.txt`;t.push({filename:r,content:n})}if(e.type===`pull_request`&&e.reviews.length>0)for(let[n,r]of e.reviews.entries()){let e=Th(r.body).trim();e.length!==0&&t.push({filename:Qh(`pr-review`,n+1,r.author),content:e})}if(e.comments.length>0){let n=e.type===`pull_request`?`pr-comment`:`issue-comment`;for(let[r,i]of e.comments.entries())t.push({filename:Qh(n,r+1,i.author),content:Th(i.body).trim()})}return t}function Zh(e,t,n){let r=[],i=new Map(t.map(e=>[e.filename,e]));if(e.type===`pull_request`){if(r.push(`## Pull Request #${e.number}`),r.push(`- **Title:** ${e.title}`),r.push(`- **State:** ${e.state}`),r.push(`- **Author:** ${e.author??`unknown`}`),r.push(`- **Created:** ${e.createdAt}`),r.push(`- **Base:** ${e.baseBranch} ← **Head:** ${e.headBranch}`),e.isFork&&r.push(`- **Fork:** Yes (external contributor)`),e.labels.length>0&&r.push(`- **Labels:** ${e.labels.map(e=>e.name).join(`, `)}`),e.assignees.length>0&&r.push(`- **Assignees:** ${e.assignees.map(e=>e.login).join(`, `)}`),i.get(`pr-description.txt`)!=null&&r.push(`- **Description:** @pr-description.txt`),n!=null&&(r.push(`- **Changed Files:** ${n.changedFiles}`),r.push(`- **Additions:** +${n.additions}`),r.push(`- **Deletions:** -${n.deletions}`)),e.bodyTruncated&&r.push(`*Note: Description was truncated due to size limits.*`),e.files.length>0){let t=$h(e,n);if(r.push(``),r.push(`### Files Changed (${e.files.length}${e.filesTruncated?` of ${e.totalFiles}`:``})`),t==null){r.push(`| File | +/- |`),r.push(`|------|-----|`);for(let t of e.files)r.push(`| \`${t.path}\` | +${t.additions}/-${t.deletions} |`)}else{r.push(`| File | Status | +/- |`),r.push(`|------|--------|-----|`);for(let n of e.files)r.push(`| \`${n.path}\` | ${t.get(n.path)??`unknown`} | +${n.additions}/-${n.deletions} |`)}}if(e.commits.length>0){r.push(``),r.push(`### Commits (${e.commits.length}${e.commitsTruncated?` of ${e.totalCommits}`:``})`);for(let t of e.commits){let e=t.oid.slice(0,7);r.push(`- \`${e}\` ${t.message.split(` +`)[0]}`)}}if(r.push(``),r.push(`### Reviews (${e.reviews.length}${e.reviewsTruncated?` of ${e.totalReviews}`:``})`),e.reviews.length===0)r.push(`[none]`);else for(let[t,n]of e.reviews.entries()){t>0&&r.push(``),r.push(`- **Author:** ${n.author??`unknown`}`),r.push(`- **Status:** ${n.state}`);let e=Qh(`pr-review`,t+1,n.author);i.has(e)&&r.push(`- **Body:** @${e}`)}if(r.push(``),r.push(`### Comments (${e.comments.length}${e.commentsTruncated?` of ${e.totalComments}`:``})`),e.comments.length===0)r.push(`[none]`);else for(let[t,n]of e.comments.entries()){t>0&&r.push(``);let e=Qh(`pr-comment`,t+1,n.author);r.push(`- **Author:** ${n.author??`unknown`}`),r.push(`- **Date:** ${n.createdAt}`),r.push(`- **Body:** @${e}`)}}else if(r.push(`## Issue #${e.number}`),r.push(`- **Title:** ${e.title}`),r.push(`- **State:** ${e.state}`),r.push(`- **Author:** ${e.author??`unknown`}`),r.push(`- **Created:** ${e.createdAt}`),e.labels.length>0&&r.push(`- **Labels:** ${e.labels.map(e=>e.name).join(`, `)}`),e.assignees.length>0&&r.push(`- **Assignees:** ${e.assignees.map(e=>e.login).join(`, `)}`),i.get(`issue-description.txt`)!=null&&r.push(`- **Body:** @issue-description.txt`),e.bodyTruncated&&r.push(`*Note: Body was truncated due to size limits.*`),r.push(``),r.push(`### Comments (${e.comments.length}${e.commentsTruncated?` of ${e.totalComments}`:``})`),e.comments.length===0)r.push(`[none]`);else for(let[t,n]of e.comments.entries()){t>0&&r.push(``);let e=Qh(`issue-comment`,t+1,n.author);r.push(`- **Author:** ${n.author??`unknown`}`),r.push(`- **Date:** ${n.createdAt}`),r.push(`- **Body:** @${e}`)}return r.join(` +`)}function Qh(e,t,n){let r=(n??`unknown`).toLowerCase().replaceAll(/[^a-z0-9]+/g,`-`).replaceAll(/^-|-$/g,``);return`${e}-${String(t).padStart(3,`0`)}-${r.length>0?r:`unknown`}.txt`}function $h(e,t){if(t==null||e.files.length===0||t.files.length!==e.files.length)return null;let n=new Map(t.files.map(e=>[e.filename,e.status]));for(let t of e.files)if(!n.has(t.path))return null;return n}function eg(e,t,n){let r=[`## Pull Request #${e}`];if(r.push(`- **Title:** ${t??`N/A`}`),r.push(`- **Changed Files:** ${n.changedFiles}`),r.push(`- **Additions:** +${n.additions}`),r.push(`- **Deletions:** -${n.deletions}`),n.truncated&&r.push(`- **Note:** Diff was truncated due to size limits`),n.files.length>0){r.push(``),r.push(`### Files Changed`),r.push(`| File | Status | +/- |`),r.push(`|------|--------|-----|`);for(let e of n.files)r.push(`| \`${e.filename}\` | ${e.status} | +${e.additions}/-${e.deletions} |`)}return r.join(` +`)}function tg(e,t,n,r,i,a){let o=e.issueNumber??``,s=`[Your response content here] --- @@ -280,17 +280,17 @@ ${S}`)),e.triggerContext!=null&&xh[v].target===`pr`&&u.push(Lh(`output_contract` `,c=`\`\`\`markdown ${s} \`\`\` -`;if(r===`file-convention`){let e=xh[i],t=e.verdictRequired?`5. **For a PR review, include a \`${Sh}:\` frontmatter key** at the top of the file with value \`${Ch[0]}\` or \`${Ch[1]}\` (PASS → \`${Ch[0]}\`; CONDITIONAL or REJECT → \`${Ch[1]}\`). This applies on re-reviews too — never omit it. For comments, no frontmatter is required; the file body is your response.`:e.verdictPermitted?`5. **For an optional PR review, you MAY include a \`${Sh}:\` frontmatter key** at the top of the file with value \`${Ch[0]}\` or \`${Ch[1]}\` (PASS → \`${Ch[0]}\`; CONDITIONAL or REJECT → \`${Ch[1]}\`). Include it when you want to submit a review; omit it when a comment is the right response. A verdict is available on this surface but is not required. For comments, no frontmatter is required; the file body is your response.`:null,n=e.verdictRequired?`**File Format (PR review, with verdict frontmatter):** +`;if(r===`file-convention`){let e=Eh[i],t=e.verdictRequired?`5. **For a PR review, include a \`${Dh}:\` frontmatter key** at the top of the file with value \`${Oh[0]}\` or \`${Oh[1]}\` (PASS → \`${Oh[0]}\`; CONDITIONAL or REJECT → \`${Oh[1]}\`). This applies on re-reviews too — never omit it. For comments, no frontmatter is required; the file body is your response.`:e.verdictPermitted?`5. **For an optional PR review, you MAY include a \`${Dh}:\` frontmatter key** at the top of the file with value \`${Oh[0]}\` or \`${Oh[1]}\` (PASS → \`${Oh[0]}\`; CONDITIONAL or REJECT → \`${Oh[1]}\`). Include it when you want to submit a review; omit it when a comment is the right response. A verdict is available on this surface but is not required. For comments, no frontmatter is required; the file body is your response.`:null,n=e.verdictRequired?`**File Format (PR review, with verdict frontmatter):** \`\`\`markdown --- -${Sh}: ${Ch[0]} +${Dh}: ${Oh[0]} --- ${s} \`\`\` `:e.verdictPermitted?`**File Format (optional PR review, with verdict frontmatter):** \`\`\`markdown --- -${Sh}: ${Ch[0]} +${Dh}: ${Oh[0]} --- ${s} \`\`\` @@ -305,7 +305,7 @@ You MUST deliver exactly ONE response per invocation by writing it to the respon ${t==null?``:`${t}\n`}${t==null?5:6}. **Include the Run Summary** at the end of the body (see template below), including the \`\` marker. **File Format (comment, no frontmatter):** -${c}${r}`}let l=xh[i],u=l.verdictRequired?"5. **For PR reviews — match the event to your verdict.** Submit exactly ONE review via `gh pr review`: use `--approve` for a PASS verdict and `--request-changes` for a CONDITIONAL or REJECT verdict. Put your full response (analysis + Run Summary) in the `--body` argument. A comment-only review (`gh pr review --comment` or `gh pr comment`) does NOT count as the review and leaves the PR blocked on review-required — never use it to deliver a verdict. This applies equally on re-reviews (after a push or dismissed review): a follow-up validation is still a review event, not a comment. Do not post a separate PR comment afterward.":l.verdictPermitted?"5. **For an optional PR review — choose the event that fits the response.** If your findings warrant a review event, submit exactly ONE review via `gh pr review`: use `--approve` for a PASS verdict or `--request-changes` for a CONDITIONAL or REJECT verdict. If the mention is a question or explanation, post exactly ONE PR comment instead. A review verdict is available on this surface but is not required; do not create a review merely because the trigger is on a PR.":null;return`### Response Protocol (REQUIRED) +${c}${r}`}let l=Eh[i],u=l.verdictRequired?"5. **For PR reviews — match the event to your verdict.** Submit exactly ONE review via `gh pr review`: use `--approve` for a PASS verdict and `--request-changes` for a CONDITIONAL or REJECT verdict. Put your full response (analysis + Run Summary) in the `--body` argument. A comment-only review (`gh pr review --comment` or `gh pr comment`) does NOT count as the review and leaves the PR blocked on review-required — never use it to deliver a verdict. This applies equally on re-reviews (after a push or dismissed review): a follow-up validation is still a review event, not a comment. Do not post a separate PR comment afterward.":l.verdictPermitted?"5. **For an optional PR review — choose the event that fits the response.** If your findings warrant a review event, submit exactly ONE review via `gh pr review`: use `--approve` for a PASS verdict or `--request-changes` for a CONDITIONAL or REJECT verdict. If the mention is a question or explanation, post exactly ONE PR comment instead. A review verdict is available on this surface but is not required; do not create a review merely because the trigger is on a PR.":null;return`### Response Protocol (REQUIRED) This is the authoritative delivery contract for this run. You MUST post exactly ONE comment or review per invocation. All of your output — your response content AND the Run Summary — goes into that single artifact. **Rules:** @@ -317,28 +317,28 @@ ${u==null?``:`${u}\n`}${u==null?5:6}. **For issue/PR comments:** Post a single \ **Response Format:** Every response you post — regardless of channel (issue, PR, discussion, review) — MUST follow this structure: -${c}`}function Zh(e,t,n){let r=[t];if(e.recentSessions.length>0){r.push(``),r.push(`### Recent Sessions`),r.push(`| ID | Title | Updated | Messages | Agents |`),r.push(`|----|-------|---------|----------|--------|`);for(let t of e.recentSessions.slice(0,5)){let e=new Date(t.updatedAt).toISOString().split(`T`)[0],n=t.agents.join(`, `)||`N/A`,i=t.title||`Untitled`;r.push(`| ${t.id} | ${i} | ${e} | ${t.messageCount} | ${n} |`)}r.push(``),r.push("Use `session_read` to review any of these sessions in detail.")}if(n.length>0){r.push(``),r.push(`### Relevant Prior Work`),r.push(`The following sessions contain content related to this issue:`),r.push(``);for(let e of n.slice(0,3)){r.push(`**Session ${e.sessionId}:**`),r.push("```markdown");for(let t of e.matches.slice(0,2))r.push(`- ${t.excerpt}`);r.push("```"),r.push(``)}r.push("Use `session_read` to review full context before starting new investigation.")}return r.push(``),r.join(` -`)}function Qh(e,t){let n=e.filter(e=>e.sessionId===t);if(n.length===0)return null;let r=[];for(let e of n.slice(0,1)){r.push(`**Session ${e.sessionId}:**`),r.push("```markdown");for(let t of e.matches.slice(0,3))r.push(`- ${t.excerpt}`);r.push("```")}return r.join(` -`)}function $h(e,t,n,r){if(t&&n!=null){let t=e.priorWorkContext.filter(e=>e.sessionId!==n);return e.recentSessions.length===0&&t.length===0?null:{title:`## Related Historical Context`,content:Zh(e,`## Related Historical Context`,t)}}return e.recentSessions.length===0&&e.priorWorkContext.length===0&&r||e.recentSessions.length===0&&e.priorWorkContext.length===0?null:{title:`## Prior Session Context`,content:Zh(e,`## Prior Session Context`,e.priorWorkContext)}}function eg(e,t,n){let r=[`## Output Contract`],i=xh[n];return i.reviewCapable&&(t===`file-convention`?r.push(i.verdictRequired?`- Review action (REQUIRED): deliver the verdict that matches your review via the \`${Sh}:\` frontmatter key in the response file — PASS → \`${Sh}: ${Ch[0]}\`, CONDITIONAL or REJECT → \`${Sh}: ${Ch[1]}\`. Omitting \`${Sh}:\` does not satisfy review-required and blocks the PR. A review run always reaches a verdict; deliver it via the frontmatter. This applies on re-reviews too — never omit the \`${Sh}:\` key.`:`- Review action (OPTIONAL): when a review is warranted, deliver the verdict via the \`${Sh}:\` frontmatter key — PASS → \`${Sh}: ${Ch[0]}\`, CONDITIONAL or REJECT → \`${Sh}: ${Ch[1]}\`. Omit the key when a comment is the right response. A verdict is available on this surface but is not required.`):t===`none`?r.push("- This run is non-posting automation. Do not call `gh` or write a response file — report your findings only in your assistant message and session summary."):r.push(i.verdictRequired?"- Review action (REQUIRED): submit the GitHub review event that matches your verdict — PASS → `gh pr review --approve`, CONDITIONAL or REJECT → `gh pr review --request-changes`. A comment-only review does not satisfy review-required and blocks the PR. A review run always reaches a verdict; deliver it as the matching event. This applies on re-reviews too — never substitute a plain comment for a review event.":"- Review action (OPTIONAL): when a review is warranted, submit the GitHub review event that matches your verdict — PASS → `gh pr review --approve`, CONDITIONAL or REJECT → `gh pr review --request-changes`. Post a PR comment instead when a review is not warranted. A verdict is available on this surface but is not required.")),r.push(`- Requested reviewer: ${e.isRequestedReviewer?`yes`:`no`}`),e.authorAssociation!=null&&r.push(`- Author association: ${e.authorAssociation}`),r.join(` -`)}const tg=({onSseError:e,onSseEvent:t,responseTransformer:n,responseValidator:r,sseDefaultRetryDelay:i,sseMaxRetryAttempts:a,sseMaxRetryDelay:o,sseSleepFn:s,url:c,...l})=>{let u,d=s??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let s=i??3e3,f=0,p=l.signal??new AbortController().signal;for(;!p.aborted;){f++;let i=l.headers instanceof Headers?l.headers:new Headers(l.headers);u!==void 0&&i.set(`Last-Event-ID`,u);try{let e=await fetch(c,{...l,headers:i,signal:p});if(!e.ok)throw Error(`SSE failed: ${e.status} ${e.statusText}`);if(!e.body)throw Error(`No body in SSE response`);let a=e.body.pipeThrough(new TextDecoderStream).getReader(),o=``,d=()=>{try{a.cancel()}catch{}};p.addEventListener(`abort`,d);try{for(;;){let{done:e,value:i}=await a.read();if(e)break;o+=i;let c=o.split(` +${c}`}function ng(e,t,n){let r=[t];if(e.recentSessions.length>0){r.push(``),r.push(`### Recent Sessions`),r.push(`| ID | Title | Updated | Messages | Agents |`),r.push(`|----|-------|---------|----------|--------|`);for(let t of e.recentSessions.slice(0,5)){let e=new Date(t.updatedAt).toISOString().split(`T`)[0],n=t.agents.join(`, `)||`N/A`,i=t.title||`Untitled`;r.push(`| ${t.id} | ${i} | ${e} | ${t.messageCount} | ${n} |`)}r.push(``),r.push("Use `session_read` to review any of these sessions in detail.")}if(n.length>0){r.push(``),r.push(`### Relevant Prior Work`),r.push(`The following sessions contain content related to this issue:`),r.push(``);for(let e of n.slice(0,3)){r.push(`**Session ${e.sessionId}:**`),r.push("```markdown");for(let t of e.matches.slice(0,2))r.push(`- ${t.excerpt}`);r.push("```"),r.push(``)}r.push("Use `session_read` to review full context before starting new investigation.")}return r.push(``),r.join(` +`)}function rg(e,t){let n=e.filter(e=>e.sessionId===t);if(n.length===0)return null;let r=[];for(let e of n.slice(0,1)){r.push(`**Session ${e.sessionId}:**`),r.push("```markdown");for(let t of e.matches.slice(0,3))r.push(`- ${t.excerpt}`);r.push("```")}return r.join(` +`)}function ig(e,t,n,r){if(t&&n!=null){let t=e.priorWorkContext.filter(e=>e.sessionId!==n);return e.recentSessions.length===0&&t.length===0?null:{title:`## Related Historical Context`,content:ng(e,`## Related Historical Context`,t)}}return e.recentSessions.length===0&&e.priorWorkContext.length===0&&r||e.recentSessions.length===0&&e.priorWorkContext.length===0?null:{title:`## Prior Session Context`,content:ng(e,`## Prior Session Context`,e.priorWorkContext)}}function ag(e,t,n){let r=[`## Output Contract`],i=Eh[n];return i.reviewCapable&&(t===`file-convention`?r.push(i.verdictRequired?`- Review action (REQUIRED): deliver the verdict that matches your review via the \`${Dh}:\` frontmatter key in the response file — PASS → \`${Dh}: ${Oh[0]}\`, CONDITIONAL or REJECT → \`${Dh}: ${Oh[1]}\`. Omitting \`${Dh}:\` does not satisfy review-required and blocks the PR. A review run always reaches a verdict; deliver it via the frontmatter. This applies on re-reviews too — never omit the \`${Dh}:\` key.`:`- Review action (OPTIONAL): when a review is warranted, deliver the verdict via the \`${Dh}:\` frontmatter key — PASS → \`${Dh}: ${Oh[0]}\`, CONDITIONAL or REJECT → \`${Dh}: ${Oh[1]}\`. Omit the key when a comment is the right response. A verdict is available on this surface but is not required.`):t===`none`?r.push("- This run is non-posting automation. Do not call `gh` or write a response file — report your findings only in your assistant message and session summary."):r.push(i.verdictRequired?"- Review action (REQUIRED): submit the GitHub review event that matches your verdict — PASS → `gh pr review --approve`, CONDITIONAL or REJECT → `gh pr review --request-changes`. A comment-only review does not satisfy review-required and blocks the PR. A review run always reaches a verdict; deliver it as the matching event. This applies on re-reviews too — never substitute a plain comment for a review event.":"- Review action (OPTIONAL): when a review is warranted, submit the GitHub review event that matches your verdict — PASS → `gh pr review --approve`, CONDITIONAL or REJECT → `gh pr review --request-changes`. Post a PR comment instead when a review is not warranted. A verdict is available on this surface but is not required.")),r.push(`- Requested reviewer: ${e.isRequestedReviewer?`yes`:`no`}`),e.authorAssociation!=null&&r.push(`- Author association: ${e.authorAssociation}`),r.join(` +`)}const og=({onSseError:e,onSseEvent:t,responseTransformer:n,responseValidator:r,sseDefaultRetryDelay:i,sseMaxRetryAttempts:a,sseMaxRetryDelay:o,sseSleepFn:s,url:c,...l})=>{let u,d=s??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let s=i??3e3,f=0,p=l.signal??new AbortController().signal;for(;!p.aborted;){f++;let i=l.headers instanceof Headers?l.headers:new Headers(l.headers);u!==void 0&&i.set(`Last-Event-ID`,u);try{let e=await fetch(c,{...l,headers:i,signal:p});if(!e.ok)throw Error(`SSE failed: ${e.status} ${e.statusText}`);if(!e.body)throw Error(`No body in SSE response`);let a=e.body.pipeThrough(new TextDecoderStream).getReader(),o=``,d=()=>{try{a.cancel()}catch{}};p.addEventListener(`abort`,d);try{for(;;){let{done:e,value:i}=await a.read();if(e)break;o+=i;let c=o.split(` `);o=c.pop()??``;for(let e of c){let i=e.split(` `),a=[],o;for(let e of i)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))u=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(s=t)}let c,l=!1;if(a.length){let e=a.join(` -`);try{c=JSON.parse(e),l=!0}catch{c=e}}l&&(r&&await r(c),n&&(c=await n(c))),t?.({data:c,event:o,id:u,retry:s}),a.length&&(yield c)}}}finally{p.removeEventListener(`abort`,d),a.releaseLock()}break}catch(t){if(e?.(t),a!==void 0&&f>=a)break;let n=Math.min(s*2**(f-1),o??3e4);await d(n)}}}()}},ng=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},rg={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)},ig=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},ag=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},og=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},sg=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(ag(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let a=ig(r),o=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):cg({allowReserved:e,name:n,value:t})).join(a);return r===`label`||r===`matrix`?a+o:o},cg=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},lg=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=og(r),s=Object.entries(i).map(([t,i])=>cg({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+s:s},ug=/\{[^{}]+\}/g,dg=({path:e,url:t})=>{let n=t,r=t.match(ug);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,sg({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,lg({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${cg({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},fg=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=dg({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o},pg=({allowReserved:e,array:t,object:n}={})=>r=>{let i=[];if(r&&typeof r==`object`)for(let a in r){let o=r[a];if(o!=null){if(Array.isArray(o)){let n=sg({allowReserved:e,explode:!0,name:a,style:`form`,value:o,...t});n&&i.push(n)}else if(typeof o==`object`){let t=lg({allowReserved:e,explode:!0,name:a,style:`deepObject`,value:o,...n});t&&i.push(t)}else{let t=cg({allowReserved:e,name:a,value:o});t&&i.push(t)}}}return i.join(`&`)},mg=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},hg=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,gg=async({security:e,...t})=>{for(let n of e){if(hg(t,n.name))continue;let e=await ng(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e)}}},_g=e=>fg({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:pg(e.querySerializer),url:e.url}),vg=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=yg(e.headers,t.headers),n},yg=(...e)=>{let t=new Headers;for(let n of e){if(!n||typeof n!=`object`)continue;let e=n instanceof Headers?n.entries():Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t};var bg=class{_fns;constructor(){this._fns=[]}clear(){this._fns=[]}getInterceptorIndex(e){return typeof e==`number`?this._fns[e]?e:-1:this._fns.indexOf(e)}exists(e){let t=this.getInterceptorIndex(e);return!!this._fns[t]}eject(e){let t=this.getInterceptorIndex(e);this._fns[t]&&(this._fns[t]=null)}update(e,t){let n=this.getInterceptorIndex(e);return this._fns[n]?(this._fns[n]=t,e):!1}use(e){return this._fns=[...this._fns,e],this._fns.length-1}};const xg=()=>({error:new bg,request:new bg,response:new bg}),Sg=pg({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),Cg={"Content-Type":`application/json`},wg=(e={})=>({...rg,headers:Cg,parseAs:`auto`,querySerializer:Sg,...e}),Tg=(e={})=>{let t=vg(wg(),e),n=()=>({...t}),r=e=>(t=vg(t,e),n()),i=xg(),a=async e=>{let n={...t,...e,fetch:e.fetch??t.fetch??globalThis.fetch,headers:yg(t.headers,e.headers),serializedBody:void 0};return n.security&&await gg({...n,security:n.security}),n.requestValidator&&await n.requestValidator(n),n.body&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.serializedBody===void 0||n.serializedBody===``)&&n.headers.delete(`Content-Type`),{opts:n,url:_g(n)}},o=async e=>{let{opts:t,url:n}=await a(e),r={redirect:`follow`,...t,body:t.serializedBody},o=new Request(n,r);for(let e of i.request._fns)e&&(o=await e(o,t));let s=t.fetch,c=await s(o);for(let e of i.response._fns)e&&(c=await e(c,o,t));let l={request:o,response:c};if(c.ok){if(c.status===204||c.headers.get(`Content-Length`)===`0`)return t.responseStyle===`data`?{}:{data:{},...l};let e=(t.parseAs===`auto`?mg(c.headers.get(`Content-Type`)):t.parseAs)??`json`,n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`json`:case`text`:n=await c[e]();break;case`stream`:return t.responseStyle===`data`?c.body:{data:c.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await c.text(),d;try{d=JSON.parse(u)}catch{}let f=d??u,p=f;for(let e of i.error._fns)e&&(p=await e(f,c,o,t));if(p||={},t.throwOnError)throw p;return t.responseStyle===`data`?void 0:{error:p,...l}},s=e=>{let t=t=>o({...t,method:e});return t.sse=async t=>{let{opts:n,url:r}=await a(t);return tg({...n,body:n.body,headers:n.headers,method:e,url:r})},t};return{buildUrl:_g,connect:s(`CONNECT`),delete:s(`DELETE`),get:s(`GET`),getConfig:n,head:s(`HEAD`),interceptors:i,options:s(`OPTIONS`),patch:s(`PATCH`),post:s(`POST`),put:s(`PUT`),request:o,setConfig:r,trace:s(`TRACE`)}};Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});const Eg=Tg(wg({baseUrl:`http://localhost:4096`}));var Dg=class{_client=Eg;constructor(e){e?.client&&(this._client=e.client)}},Og=class extends Dg{event(e){return(e?.client??this._client).get.sse({url:`/global/event`,...e})}},kg=class extends Dg{list(e){return(e?.client??this._client).get({url:`/project`,...e})}current(e){return(e?.client??this._client).get({url:`/project/current`,...e})}},Ag=class extends Dg{list(e){return(e?.client??this._client).get({url:`/pty`,...e})}create(e){return(e?.client??this._client).post({url:`/pty`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}remove(e){return(e.client??this._client).delete({url:`/pty/{id}`,...e})}get(e){return(e.client??this._client).get({url:`/pty/{id}`,...e})}update(e){return(e.client??this._client).put({url:`/pty/{id}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}connect(e){return(e.client??this._client).get({url:`/pty/{id}/connect`,...e})}},jg=class extends Dg{get(e){return(e?.client??this._client).get({url:`/config`,...e})}update(e){return(e?.client??this._client).patch({url:`/config`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}providers(e){return(e?.client??this._client).get({url:`/config/providers`,...e})}},Mg=class extends Dg{ids(e){return(e?.client??this._client).get({url:`/experimental/tool/ids`,...e})}list(e){return(e.client??this._client).get({url:`/experimental/tool`,...e})}},Ng=class extends Dg{dispose(e){return(e?.client??this._client).post({url:`/instance/dispose`,...e})}},Pg=class extends Dg{get(e){return(e?.client??this._client).get({url:`/path`,...e})}},Fg=class extends Dg{get(e){return(e?.client??this._client).get({url:`/vcs`,...e})}},Ig=class extends Dg{list(e){return(e?.client??this._client).get({url:`/session`,...e})}create(e){return(e?.client??this._client).post({url:`/session`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}status(e){return(e?.client??this._client).get({url:`/session/status`,...e})}delete(e){return(e.client??this._client).delete({url:`/session/{id}`,...e})}get(e){return(e.client??this._client).get({url:`/session/{id}`,...e})}update(e){return(e.client??this._client).patch({url:`/session/{id}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}children(e){return(e.client??this._client).get({url:`/session/{id}/children`,...e})}todo(e){return(e.client??this._client).get({url:`/session/{id}/todo`,...e})}init(e){return(e.client??this._client).post({url:`/session/{id}/init`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}fork(e){return(e.client??this._client).post({url:`/session/{id}/fork`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}abort(e){return(e.client??this._client).post({url:`/session/{id}/abort`,...e})}unshare(e){return(e.client??this._client).delete({url:`/session/{id}/share`,...e})}share(e){return(e.client??this._client).post({url:`/session/{id}/share`,...e})}diff(e){return(e.client??this._client).get({url:`/session/{id}/diff`,...e})}summarize(e){return(e.client??this._client).post({url:`/session/{id}/summarize`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}messages(e){return(e.client??this._client).get({url:`/session/{id}/message`,...e})}prompt(e){return(e.client??this._client).post({url:`/session/{id}/message`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}message(e){return(e.client??this._client).get({url:`/session/{id}/message/{messageID}`,...e})}promptAsync(e){return(e.client??this._client).post({url:`/session/{id}/prompt_async`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}command(e){return(e.client??this._client).post({url:`/session/{id}/command`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}shell(e){return(e.client??this._client).post({url:`/session/{id}/shell`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}revert(e){return(e.client??this._client).post({url:`/session/{id}/revert`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}unrevert(e){return(e.client??this._client).post({url:`/session/{id}/unrevert`,...e})}},Lg=class extends Dg{list(e){return(e?.client??this._client).get({url:`/command`,...e})}},Rg=class extends Dg{authorize(e){return(e.client??this._client).post({url:`/provider/{id}/oauth/authorize`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}callback(e){return(e.client??this._client).post({url:`/provider/{id}/oauth/callback`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}},zg=class extends Dg{list(e){return(e?.client??this._client).get({url:`/provider`,...e})}auth(e){return(e?.client??this._client).get({url:`/provider/auth`,...e})}oauth=new Rg({client:this._client})},Bg=class extends Dg{text(e){return(e.client??this._client).get({url:`/find`,...e})}files(e){return(e.client??this._client).get({url:`/find/file`,...e})}symbols(e){return(e.client??this._client).get({url:`/find/symbol`,...e})}},Vg=class extends Dg{list(e){return(e.client??this._client).get({url:`/file`,...e})}read(e){return(e.client??this._client).get({url:`/file/content`,...e})}status(e){return(e?.client??this._client).get({url:`/file/status`,...e})}},Hg=class extends Dg{log(e){return(e?.client??this._client).post({url:`/log`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}agents(e){return(e?.client??this._client).get({url:`/agent`,...e})}},Ug=class extends Dg{remove(e){return(e.client??this._client).delete({url:`/mcp/{name}/auth`,...e})}start(e){return(e.client??this._client).post({url:`/mcp/{name}/auth`,...e})}callback(e){return(e.client??this._client).post({url:`/mcp/{name}/auth/callback`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}authenticate(e){return(e.client??this._client).post({url:`/mcp/{name}/auth/authenticate`,...e})}set(e){return(e.client??this._client).put({url:`/auth/{id}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}},Wg=class extends Dg{status(e){return(e?.client??this._client).get({url:`/mcp`,...e})}add(e){return(e?.client??this._client).post({url:`/mcp`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}connect(e){return(e.client??this._client).post({url:`/mcp/{name}/connect`,...e})}disconnect(e){return(e.client??this._client).post({url:`/mcp/{name}/disconnect`,...e})}auth=new Ug({client:this._client})},Gg=class extends Dg{status(e){return(e?.client??this._client).get({url:`/lsp`,...e})}},Kg=class extends Dg{status(e){return(e?.client??this._client).get({url:`/formatter`,...e})}},qg=class extends Dg{next(e){return(e?.client??this._client).get({url:`/tui/control/next`,...e})}response(e){return(e?.client??this._client).post({url:`/tui/control/response`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}},Jg=class extends Dg{appendPrompt(e){return(e?.client??this._client).post({url:`/tui/append-prompt`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}openHelp(e){return(e?.client??this._client).post({url:`/tui/open-help`,...e})}openSessions(e){return(e?.client??this._client).post({url:`/tui/open-sessions`,...e})}openThemes(e){return(e?.client??this._client).post({url:`/tui/open-themes`,...e})}openModels(e){return(e?.client??this._client).post({url:`/tui/open-models`,...e})}submitPrompt(e){return(e?.client??this._client).post({url:`/tui/submit-prompt`,...e})}clearPrompt(e){return(e?.client??this._client).post({url:`/tui/clear-prompt`,...e})}executeCommand(e){return(e?.client??this._client).post({url:`/tui/execute-command`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}showToast(e){return(e?.client??this._client).post({url:`/tui/show-toast`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}publish(e){return(e?.client??this._client).post({url:`/tui/publish`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}control=new qg({client:this._client})},Yg=class extends Dg{subscribe(e){return(e?.client??this._client).get.sse({url:`/event`,...e})}},Xg=class extends Dg{postSessionIdPermissionsPermissionId(e){return(e.client??this._client).post({url:`/session/{id}/permissions/{permissionID}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}global=new Og({client:this._client});project=new kg({client:this._client});pty=new Ag({client:this._client});config=new jg({client:this._client});tool=new Mg({client:this._client});instance=new Ng({client:this._client});path=new Pg({client:this._client});vcs=new Fg({client:this._client});session=new Ig({client:this._client});command=new Lg({client:this._client});provider=new zg({client:this._client});find=new Bg({client:this._client});file=new Vg({client:this._client});app=new Hg({client:this._client});mcp=new Wg({client:this._client});lsp=new Gg({client:this._client});formatter=new Kg({client:this._client});tui=new Jg({client:this._client});auth=new Ug({client:this._client});event=new Yg({client:this._client})};function Zg(e,t){if(e)return t&&(e===t||e===encodeURIComponent(t))?t:e}function Qg(e,t){if(e.method!==`GET`&&e.method!==`HEAD`)return e;let n=Zg(e.headers.get(`x-opencode-directory`),t);if(!n)return e;let r=new URL(e.url);r.searchParams.has(`directory`)||r.searchParams.set(`directory`,n);let i=new Request(r,e);return i.headers.delete(`x-opencode-directory`),i}function $g(e){if(!e?.fetch){let t=e=>(e.timeout=!1,fetch(e));e={...e,fetch:t}}e?.directory&&(e.headers={...e.headers,"x-opencode-directory":encodeURIComponent(e.directory)});let t=Tg(e);return t.interceptors.request.use(t=>Qg(t,e?.directory)),t.interceptors.error.use(o),new Xg({client:t})}var e_=/* @__PURE__ */ r(s(),1);function t_(e){if(e.exitCode===null&&e.signalCode===null){if(process.platform===`win32`&&e.pid){let t=Br(`taskkill`,[`/pid`,String(e.pid),`/T`,`/F`],{windowsHide:!0});if(!t.error&&t.status===0)return}e.kill()}}function n_(e,t,n){if(!t)return()=>{};let r=()=>{i(),t_(e),n?.()},i=()=>{t.removeEventListener(`abort`,r),e.off(`exit`,i),e.off(`error`,i)};return t.addEventListener(`abort`,r,{once:!0}),e.on(`exit`,i),e.on(`error`,i),t.aborted&&r(),i}async function r_(e){e=Object.assign({hostname:`127.0.0.1`,port:4096,timeout:5e3},e??{});let t=[`serve`,`--hostname=${e.hostname}`,`--port=${e.port}`];e.config?.logLevel&&t.push(`--log-level=${e.config.logLevel}`);let n=(0,e_.default)(`opencode`,t,{env:{...process.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(e.config??{})}}),r=()=>{};return{url:await new Promise((t,i)=>{let a=setTimeout(()=>{r(),t_(n),i(/* @__PURE__ */ Error(`Timeout waiting for server to start after ${e.timeout}ms`))},e.timeout),o=``,s=!1;n.stdout?.on(`data`,e=>{if(s)return;o+=e.toString();let c=o.split(` -`);for(let e of c)if(e.startsWith(`opencode server listening`)){let o=e.match(/on\s+(https?:\/\/[^\s]+)/);if(!o){r(),t_(n),clearTimeout(a),i(/* @__PURE__ */ Error(`Failed to parse server url from output: ${e}`));return}clearTimeout(a),s=!0,t(o[1]);return}}),n.stderr?.on(`data`,e=>{o+=e.toString()}),n.on(`exit`,e=>{clearTimeout(a);let t=`Server exited with code ${e}`;o.trim()&&(t+=`\nServer output: ${o}`),i(Error(t))}),n.on(`error`,e=>{clearTimeout(a),i(e)}),r=n_(n,e.signal,()=>{clearTimeout(a),i(e.signal?.reason)})}),close(){r(),t_(n)}}}async function i_(e){let t=await r_({...e});return{client:$g({baseUrl:t.url}),server:t}}async function a_(e){if(e<0||!Number.isFinite(e))throw Error(`Invalid sleep duration: ${e}`);return new Promise(t=>setTimeout(t,e))}const o_=18e5,s_=5e3,c_={providerID:`opencode`,modelID:`big-pickle`},l_=`1.19.4+harness.5bde2635`,u_=`3.27.2`,d_=`fro-bot-state`,f_=`opencode-tools-v2`,p_=6e5,m_=`fro-bot-dedup-v1`;async function h_(e,t){let n=[];try{let e=Us(qn.env);for(let t of Object.keys(qn.env))if(!(t in e)){let e=qn.env[t];e!==void 0&&(n.push([t,e]),delete qn.env[t])}t.info(`Scrubbed agent env for spawn`,{removedCount:n.length})}catch(e){for(let[e,t]of n)qn.env[e]=t;throw e}try{return await e()}finally{for(let[e,t]of n)qn.env[e]=t}}function g_(e,t){return mr.connect({host:e,port:t})}async function __(e,t,n,r=g_){return new Promise(i=>{let a=!1,o=r(e,t),s=e=>{a||(a=!0,o.destroy(),o.removeAllListeners(),i(e))};o.setTimeout(n,()=>s(!0)),o.once(`connect`,()=>s(!0)),o.once(`error`,()=>s(!1))})}async function v_(e,t=5e3,n=100,r=g_){let i,a;try{let t=new URL(e);i=t.hostname,a=Number(t.port)}catch{return{quiesced:!1}}if(!Number.isInteger(a)||a<=0||a>65535)return{quiesced:!1};let o=Date.now()+t;do{if(!await __(i,a,n,r))return{quiesced:!0};await a_(n)}while(Date.now(){let n=mr.createServer();n.once(`error`,t),n.listen(0,`127.0.0.1`,()=>{let r=n.address();if(r===null||typeof r==`string`){n.close(),t(/* @__PURE__ */ Error(`Failed to determine ephemeral port`));return}let{port:i}=r;n.close(n=>{n==null?e(i):t(n)})})})}async function b_(e,t,n,r,i){let a=AbortSignal.timeout(r);try{let r=await e.session.list({query:{directory:t},signal:AbortSignal.any([n,a])});return r.error!=null&&i.debug(`OpenCode readiness probe answered with an error body (server is ready)`,{error:Js(r.error)}),{kind:`ready`}}catch(e){return n.aborted?{kind:`aborted`}:a.aborted?{kind:`timeout`}:{kind:`transport`,error:e}}}function x_(e){let t=qn.env.OPENCODE_CLIENT,n=qn.env.OPENCODE_ENABLE_QUESTION_TOOL,r=t!==void 0&&t!==``&&t!==`fro-bot-action`,i=n!==void 0&&n!==``;qn.env.OPENCODE_CLIENT=`fro-bot-action`,delete qn.env.OPENCODE_ENABLE_QUESTION_TOOL,(r||i)&&e.warning(`OPENCODE_CLIENT / OPENCODE_ENABLE_QUESTION_TOOL overridden: the OpenCode question tool is disabled for CI runs because nobody can answer it`,{overriddenClient:r,overriddenEnableQuestionTool:i})}async function S_(e,t,n,r=s_,i=6e4,a={}){let o=Date.now(),s=null,c;try{let l=await y_(),u=`http://127.0.0.1:${l}`;qn.env.FRO_BOT_OPENCODE_URL=u,(qn.env.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER===void 0||qn.env.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER===``)&&(qn.env.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER=`true`),(qn.env.OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS===void 0||qn.env.OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS===``)&&(qn.env.OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=`true`),x_(t);let d={signal:e,hostname:`127.0.0.1`,port:l,timeout:r,...a.config===void 0?{}:{config:a.config}},f=Date.now(),p=await h_(async()=>i_(d),t);s=Date.now()-f;let{client:m,server:h}=p;if(c=h,h.url!==u)return h.close(),G(/* @__PURE__ */ Error(`OpenCode server URL mismatch: pinned ${u} but server bound to ${h.url}`));let g=Date.now(),v=await b_(m,n,e,i,t);if(v.kind===`transport`&&(t.warning(`OpenCode readiness probe failed (retrying once)`,{error:Ws(v.error)}),v=await b_(m,n,e,i,t)),v.kind!==`ready`){let n=e.aborted,r=Date.now()-g;t.warning(`OpenCode readiness probe failed`,{outcome:v.kind,error:v.kind===`transport`?Ws(v.error):void 0,readinessTimeoutMs:i,readinessMs:r,cancelledByOuterDeadline:n}),h.close();let a=await v_(h.url);return t.debug(`OpenCode server quiesced after readiness-probe failure`,{quiesced:a.quiesced}),v.kind===`transport`?G(/* @__PURE__ */ Error(`OpenCode server is listening but the readiness request failed twice against the local server: ${Ws(v.error)}`)):G(Error(n?`OpenCode server bootstrap cancelled by the execution deadline during the readiness probe`:`OpenCode server is listening but did not answer an instance-scoped request within ${i}ms per attempt (${r}ms total probe time) — instance bootstrap is blocked`))}let y=Date.now()-g,b=Date.now()-o;return t.debug(`OpenCode server bootstrapped`,{url:h.url,timeoutMs:r,budgetedMs:s,readinessMs:y,elapsedMs:b}),Ys({client:m,server:h,shutdown:async()=>(h.close(),v_(h.url))})}catch(e){let n=Date.now()-o,i=Ws(e);t.warning(`Failed to bootstrap OpenCode server`,{error:i,timeoutMs:r,budgetedMs:s,elapsedMs:n});try{c?.close()}catch{}return G(/* @__PURE__ */ Error(`Server bootstrap failed: ${i}`))}}function C_(e){return e.trim().replace(/^v(?=\d)/,``).replace(/^(\d+\.\d+\.\d+)-harness\./,`$1+harness.`)}async function w_(e,t){let{logger:n,opencodeVersion:r}=e,i=qn.env.OPENCODE_PATH??null,a=await t.verifyOpenCodeAvailable(i,n);if(a.available&&a.version!=null){if(C_(a.version)===C_(r))return n.info(`OpenCode already available`,{version:a.version}),{path:i??`opencode`,version:a.version,didSetup:!1};let e={foundVersion:a.version,requestedVersion:r,source:i===null?`PATH`:`OPENCODE_PATH`};i===null?n.info(`Existing OpenCode does not match the pinned version, running auto-setup`,e):n.warning(`Existing OpenCode does not match the pinned version, running auto-setup`,e)}else n.info(`OpenCode not found, running auto-setup`,{requestedVersion:r});let o={opencodeVersion:r,authJson:e.authJson,appId:null,privateKey:null,opencodeConfig:e.opencodeConfig,systematicConfig:e.systematicConfig,systematicVersion:e.systematicVersion,credential:e.credential},s=await t.runSetup(o,e.githubToken);if(s==null)throw Error(`Auto-setup failed: runSetup returned null`);return t.addToPath(s.opencodePath),qn.env.OPENCODE_PATH=s.opencodeBinaryPath,n.info(`Auto-setup completed`,{version:s.opencodeVersion,path:s.opencodePath,binaryPath:s.opencodeBinaryPath}),{path:s.opencodeBinaryPath,version:s.opencodeVersion,didSetup:!0}}async function T_(e,t,n){try{let r=await c({baseUrl:e}).session.update({sessionID:t,time:{archived:Date.now()}});return r.error==null?(n.debug(`Archived session via SDK`,{sessionId:t}),!0):(n.warning(`SDK session archive failed`,{sessionId:t,error:Js(r.error)}),!1)}catch(e){return n.warning(`SDK session archive failed`,{sessionId:t,error:Ws(e)}),!1}}const E_=e=>typeof e==`object`&&!!e,D_=e=>typeof e==`string`?e:null,O_=e=>typeof e==`number`?e:null;function k_(e){if(Array.isArray(e))return e.filter(E_).map(e=>({file:D_(e.file)??``,additions:O_(e.additions)??0,deletions:O_(e.deletions)??0}))}function A_(e){return{id:e.id,version:e.version,projectID:e.projectID,directory:e.directory,parentID:e.parentID,title:e.title,time:{created:e.time.created,updated:e.time.updated,compacting:e.time.compacting,archived:e.time.archived},summary:e.summary==null?void 0:{additions:e.summary.additions,deletions:e.summary.deletions,files:e.summary.files,diffs:k_(e.summary.diffs)},share:e.share?.url==null?void 0:{url:e.share.url},permission:e.permission==null?void 0:{rules:e.permission.rules},revert:e.revert==null?void 0:{messageID:e.revert.messageID,partID:e.revert.partID,snapshot:e.revert.snapshot,diff:e.revert.diff}}}function j_(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!E_(n))continue;let e=D_(n.content),r=D_(n.status),i=D_(n.priority);e!=null&&r!=null&&i!=null&&t.push({...D_(n.id)==null?{}:{id:D_(n.id)??``},content:e,status:r===`pending`||r===`in_progress`||r===`completed`||r===`cancelled`?r:`pending`,priority:i===`high`||i===`medium`||i===`low`?i:`medium`})}return t}function M_(e){return e.status===`running`?{status:`running`,input:e.input,time:{start:e.time.start}}:e.status===`error`?{status:`error`,input:e.input,error:e.error,time:{start:e.time.start,end:e.time.end}}:e.status===`pending`?{status:`pending`}:{status:`completed`,input:e.input,output:e.output,title:e.title,metadata:e.metadata,time:{start:e.time.start,end:e.time.end,compacted:e.time.compacted},attachments:void 0}}function N_(e){let t={id:e.id,sessionID:e.sessionID,messageID:e.messageID};if(e.type===`text`)return{...t,type:`text`,text:e.text,synthetic:e.synthetic,ignored:e.ignored,time:e.time,metadata:e.metadata};if(e.type===`reasoning`)return{...t,type:`reasoning`,reasoning:e.reasoning??e.text,time:e.time};if(e.type===`tool`)return{...t,type:`tool`,callID:e.callID,tool:e.tool,state:M_(e.state),metadata:e.metadata};if(e.type!==`step-finish`)return{...t,type:`text`,text:`text`in e?e.text:``};let n=e;return{...t,type:`step-finish`,reason:n.reason,snapshot:n.snapshot,cost:n.cost,tokens:{input:n.tokens.input,output:n.tokens.output,reasoning:n.tokens.reasoning,cache:{read:n.tokens.cache.read,write:n.tokens.cache.write}}}}function P_(e){if(e.role===`user`){let t=e;return{id:t.id,sessionID:t.sessionID,role:`user`,time:{created:t.time.created},summary:t.summary==null?void 0:{title:t.summary.title,body:t.summary.body,diffs:k_(t.summary.diffs)??[]},agent:t.agent,model:{providerID:t.model.providerID,modelID:t.model.modelID},system:t.system,tools:t.tools,variant:t.variant}}let t=e;return{id:t.id,sessionID:t.sessionID,role:`assistant`,time:{created:t.time.created,completed:t.time.completed},parentID:t.parentID,modelID:t.modelID,providerID:t.providerID,mode:t.mode,agent:t.agent??``,path:{cwd:t.path.cwd,root:t.path.root},summary:t.summary,cost:t.cost,tokens:{input:t.tokens.input,output:t.tokens.output,reasoning:t.tokens.reasoning,cache:{read:t.tokens.cache.read,write:t.tokens.cache.write}},finish:t.finish,error:t.error?{name:t.error.name,message:D_(t.error.data.message)??``}:void 0}}function F_(e){return[...e.map(e=>{let t=P_(`info`in e?e.info:e),n=`parts`in e?e.parts.map(N_):void 0;return n==null||n.length===0?t:{...t,parts:n}})].sort((e,t)=>e.time.created-t.time.created)}async function I_(e,t,n){let r=await e.session.list({query:{directory:t}});return r.error==null&&r.data!=null?Array.isArray(r.data)?r.data.map(A_):(n.warning(`SDK session list returned a non-array payload`,{source:`listSessionsForProject`,type:typeof r.data}),[]):(n.warning(`SDK session list failed`,{source:`listSessionsForProject`,error:Ws(r.error)}),[])}async function L_(e,t,n){let r=await e.session.get({path:{id:t}});return r.error!=null||r.data==null?(n.warning(`SDK session get failed`,{error:Ws(r.error)}),null):A_(r.data)}async function R_(e,t,n){let r=await e.session.messages({path:{id:t}});return r.error==null&&r.data!=null?Array.isArray(r.data)?F_(r.data):(n.warning(`SDK session messages returned a non-array payload`,{type:typeof r.data}),[]):(n.warning(`SDK session messages failed`,{error:Ws(r.error)}),[])}async function z_(e,t,n){let r=await e.session.todos({path:{id:t}});return r.error==null&&r.data!=null?Array.isArray(r.data)?j_(r.data):(n.warning(`SDK session todos returned a non-array payload`,{type:typeof r.data}),[]):(n.warning(`SDK session todos failed`,{error:Ws(r.error)}),[])}async function B_(e,t,n,r){let i=await e.session.list({query:{directory:t,start:n,roots:!0,limit:10}});if(i.error!=null||i.data==null)return r.warning(`SDK session list failed`,{source:`findLatestSession`,error:Ws(i.error)}),null;if(!Array.isArray(i.data))return r.warning(`SDK session list returned a non-array payload`,{source:`findLatestSession`,type:typeof i.data}),null;if(i.data.length===0)return null;let a=i.data.map(A_).reduce((e,t)=>t.time.created>e.time.created?t:e);return{projectID:a.projectID,session:a}}async function V_(e,t,n){let r=await e.session.delete({path:{id:t}});r.error==null?n.debug(`Deleted session via SDK`,{sessionID:t}):n.warning(`SDK session delete failed`,{sessionID:t,error:Ws(r.error)})}async function H_(e,t,n,r){let{limit:i,fromDate:a,toDate:o}=n;r.debug(`Listing sessions`,{directory:t,limit:i});let s=[...(await I_(e,t,r)).filter(e=>!(e.parentID!=null||e.time.archived!=null||e.time.compacting!=null||a!=null&&e.time.createdo.getTime()))].sort((e,t)=>t.time.updated-e.time.updated),c=[],l=i==null?s:s.slice(0,i);for(let t of l){let n=await R_(e,t.id,r),i=U_(n);c.push({id:t.id,projectID:t.projectID,directory:t.directory,title:t.title,createdAt:t.time.created,updatedAt:t.time.updated,messageCount:n.length,agents:i,isChild:!1})}return r.info(`Listed sessions`,{count:c.length,directory:t}),c}function U_(e){let t=/* @__PURE__ */ new Set;for(let n of e)n.agent!=null&&t.add(n.agent);return[...t]}async function W_(e,t,n,r,i){let{limit:a=20,caseSensitive:o=!1,sessionId:s,excludeSessionIds:c=[]}=r,l=new Set(c);i.debug(`Searching sessions`,{query:e,directory:n,limit:a,caseSensitive:o});let u=o?e:e.toLowerCase(),d=[],f=0;if(s!=null){if(l.has(s))return d;let e=await G_(t,s,u,o,i);return e.length>0&&d.push({sessionId:s,matches:e.slice(0,a)}),d}let p=(await H_(t,n,{},i)).filter(e=>l.has(e.id)===!1);for(let e of p){if(f>=a)break;let n=await G_(t,e.id,u,o,i);if(n.length>0){let t=a-f;d.push({sessionId:e.id,matches:n.slice(0,t)}),f+=Math.min(n.length,t)}}return i.info(`Session search complete`,{query:e,resultCount:d.length,totalMatches:f}),d}async function G_(e,t,n,r,i){let a=await R_(e,t,i),o=[];for(let e of a){let t=e.parts??[];for(let i of t){let t=K_(i);if(t==null)continue;let a=r?t:t.toLowerCase();if(a.includes(n)){let r=a.indexOf(n),s=Math.max(0,r-50),c=Math.min(t.length,r+n.length+50),l=t.slice(s,c);o.push({messageId:e.id,partId:i.id,excerpt:`...${l}...`,role:e.role,agent:e.agent})}}}return o}function K_(e){switch(e.type){case`text`:return e.text;case`reasoning`:return e.reasoning;case`tool`:return e.state.status===`completed`?`${e.tool}: ${e.state.output}`:null;case`step-finish`:return null}}async function q_(e,t,n){let r=await L_(e,t,n);if(r==null)return null;let i=await R_(e,t,n),a=U_(i),o=await z_(e,t,n);return{session:r,messageCount:i.length,agents:a,hasTodos:o.length>0,todoCount:o.length,completedTodos:o.filter(e=>e.status===`completed`).length}}const J_=`opencode.db`,Y_=`${J_}-wal`,X_=`${J_}-shm`,Z_=[J_,Y_,X_],Q_=[J_],$_=`opencode.db`,ev=`${$_}-wal`,tv=`${$_}-shm`,nv=[$_,ev,tv],rv=[$_];function iv(e){return e===`v2`?{main:$_,wal:ev,shm:tv,family:nv,transportable:rv}:{main:J_,wal:Y_,shm:X_,family:Z_,transportable:Q_}}function av(){let e=qn.env.XDG_DATA_HOME??jr.join(Vr.homedir(),`.local`,`share`);return jr.join(e,`opencode`,J_)}async function ov(e){if(e!=null)return cv(e,`1.2.0`)>=0;try{return await kr.access(av()),!0}catch{return!1}}function sv(e){let t=e.split(`+`)[0]??e;return t.split(`-`)[0]??t}function cv(e,t){let n=sv(e).split(`.`).map(Number),r=sv(t).split(`.`).map(Number);for(let e=0;e<3;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}const lv={debug:()=>{},info:()=>{},warning:()=>{},error:()=>{}};function uv(e){return`session store unavailable: ${e}`}function dv(e){return new Date(e).toISOString()}function fv(e){return typeof e==`string`&&e.length>0?e:void 0}function pv(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function mv(e){return typeof e==`boolean`?e:void 0}function hv(e){if(e==null)return;let t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function gv(e){let t=hv(e);if(t==null)return;let n=new Date(t);return n.setUTCHours(23,59,59,999),n}function _v(e){return e==null||e<1?void 0:e}function vv(e){let t=(e.parts??[]).map(e=>K_(e)).filter(e=>e!=null).join(` `);return t.length>0?`[${e.role}] ${t}`:`[${e.role}] (no content)`}function yv(e){let t=[],n=0,r=0;for(let i of e){let e=` ${vv(i)}`;if(n+e.length>48e3)break;t.push(e),n+=e.length,r+=1}return r`${e.id} ${e.title||`(untitled)`} updated ${dv(e.updatedAt)}`).join(` -`)}catch(e){return uv(Ws(e))}}},read:{description:`Read a session: header, optional todos, and optional transcript.`,args:{session_id:am().describe(`The session id to read (required).`),include_todos:Mm().describe(`Include the session todo list.`).optional(),include_transcript:Mm().describe(`Include the message transcript.`).optional(),limit:Om().describe(`Maximum number of transcript messages to include.`).optional()},async execute(e){let n=t();if(`reason`in n)return uv(n.reason);let r=fv(e.session_id);if(r==null)return uv(`session_id is required`);try{let t=$g({baseUrl:n.baseUrl}),i=await L_(t,r,lv);if(i==null)return`session not found: ${r}`;let a=[`Session ${i.id}`,`Title: ${i.title||`(untitled)`}`,`Created: ${dv(i.time.created)}`,`Updated: ${dv(i.time.updated)}`];if(mv(e.include_todos)===!0){let e=await z_(t,r,lv);if(a.push(``,`Todos:`),e.length===0)a.push(` (none)`);else for(let t of e)a.push(` [${t.status}] ${t.content}`)}if(mv(e.include_transcript)===!0){let n=_v(pv(e.limit)),i=await R_(t,r,lv),o=n==null?i:i.slice(0,n);a.push(``,`Transcript:`),o.length===0?a.push(` (empty)`):a.push(...yv(o))}return a.join(` -`)}catch(e){return uv(Ws(e))}}},search:{description:`Search prior session content for matching text, optionally scoped to one session.`,args:{query:am().describe(`Text to search for (required).`),session_id:am().describe(`Restrict the search to a single session id.`).optional(),case_sensitive:Mm().describe(`Match case-sensitively.`).optional(),limit:Om().describe(`Maximum number of matches to return.`).optional()},async execute(e){let n=t();if(`reason`in n)return uv(n.reason);let r=fv(e.query);if(r==null)return uv(`query is required`);try{let t=$g({baseUrl:n.baseUrl}),i=qn.cwd(),a=fv(e.session_id);if(a!=null&&await L_(t,a,lv)==null)return`session not found: ${a}`;let o=await W_(r,t,i,{limit:_v(pv(e.limit)),caseSensitive:mv(e.case_sensitive),sessionId:a},lv);if(o.length===0)return`No matches found.`;let s=[];for(let e of o){s.push(`Session ${e.sessionId}:`);for(let t of e.matches)s.push(` [${t.role}${t.agent==null?``:`/${t.agent}`}] ${t.excerpt}`)}return s.join(` -`)}catch(e){return uv(Ws(e))}}},info:{description:`Summarize a session: id, title, timestamps, message and todo counts.`,args:{session_id:am().describe(`The session id to summarize (required).`)},async execute(e){let n=t();if(`reason`in n)return uv(n.reason);let r=fv(e.session_id);if(r==null)return uv(`session_id is required`);try{let e=await q_($g({baseUrl:n.baseUrl}),r,lv);return e==null?`session not found: ${r}`:xv(e.session,{messageCount:e.messageCount,agents:e.agents,hasTodos:e.hasTodos,todoCount:e.todoCount,completedTodos:e.completedTodos})}catch(e){return uv(Ws(e))}}}}}function xv(e,t){return[`Session ${e.id}`,`Title: ${e.title||`(untitled)`}`,`Created: ${dv(e.time.created)}`,`Updated: ${dv(e.time.updated)}`,`Messages: ${t.messageCount}`,`Agents: ${t.agents.length>0?t.agents.join(`, `):`(none)`}`,`Todos: ${t.hasTodos?`${t.completedTodos}/${t.todoCount} completed`:`(none)`}`].join(` -`)}const{list:$ee,read:ete,search:tte,info:nte}=bv(()=>qn.env.FRO_BOT_OPENCODE_URL);function Sv(e){return Object.assign(Error(e),{code:`OBJECT_STORE_VALIDATION_ERROR`})}function Cv(e){return Object.assign(Error(e),{code:`OBJECT_STORE_PATH_TRAVERSAL_ERROR`})}function wv(e,t){return Object.assign(Error(e),{code:`OBJECT_STORE_OPERATION_ERROR`,...t?.errorCode!==void 0&&{errorCode:t.errorCode},...t?.errorName!==void 0&&{errorName:t.errorName},...t?.httpStatusCode!==void 0&&{httpStatusCode:t.httpStatusCode}})}const Tv=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function Ev(e){return e[0]===127}function Dv(e){let t=e[0],n=e[1];return t===10||t===172&&n!==void 0&&n>=16&&n<=31||t===192&&n===168}function Ov(e){let t=e[0],n=e[1];return t===169&&n===254}function kv(e){return e.every(e=>e===0)}function Av(e){return kv(e)||Ev(e)?`loopback`:Ov(e)?`link-local`:Dv(e)?`private-network`:null}function jv(e){let t=Tv.exec(e);if(t===null)return null;let n=[t[1]??``,t[2]??``,t[3]??``,t[4]??``].map(e=>Number.parseInt(e,10));return n.some(e=>Number.isNaN(e)||e>255)?null:Av(n)}const Mv=/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/;function Nv(e){let t=e.toLowerCase();if(t===`::1`||t===`::`||t===`0:0:0:0:0:0:0:0`)return`loopback`;if(t.startsWith(`fe8`)||t.startsWith(`fe9`)||t.startsWith(`fea`)||t.startsWith(`feb`))return`link-local`;if(t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fec`)||t.startsWith(`fed`)||t.startsWith(`fee`)||t.startsWith(`fef`))return`private-network`;if(t.startsWith(`::ffff:`)){let e=t.slice(7);if(e.includes(`.`)){if(Tv.test(e)===!1)return`private-network`;let t=jv(e);if(t!==null)return t}else{let t=Mv.exec(e);if(t!==null){let e=Number.parseInt(t[1]??``,16),n=Number.parseInt(t[2]??``,16);if(Number.isNaN(e)===!1&&Number.isNaN(n)===!1){let t=Av([e>>8&255,e&255,n>>8&255,n&255]);if(t!==null)return t}}}return`ipv6-literal`}return`ipv6-literal`}function Pv(e){let t=Tv.exec(e);if(t===null)return null;let n=[t[1]??``,t[2]??``,t[3]??``,t[4]??``].map(e=>Number.parseInt(e,10));return n.some(e=>Number.isNaN(e)||e>255)?null:n}function Fv(e){if(e.includes(`.`))return Pv(e);let t=Mv.exec(e);if(t===null)return null;let n=Number.parseInt(t[1]??``,16),r=Number.parseInt(t[2]??``,16);return[n>>8&255,n&255,r>>8&255,r&255]}const Iv=/* @__PURE__ */ new Set([`169.254.169.254`,`169.254.170.2`,`100.100.100.200`]);function Lv(e){let[t,n,r]=e;return Iv.has(e.join(`.`))?`metadata`:Av(e)!==null||t===0||t===100&&n!==void 0&&n>=64&&n<=127||t===192&&n===0&&r===2||t===198&&n===51&&r===100||t===203&&n===0&&r===113?`internal`:null}function Rv(e){let t=Pv(e);return t===null?null:Lv(t)}function zv(e){let t=e.toLowerCase();if(t.startsWith(`::ffff:`)){let e=t.slice(7),n=Fv(e)??(e.startsWith(`0:`)?Fv(e.slice(2)):null);return n===null?`internal`:Lv(n)}return t===`fd00:ec2::254`?`metadata`:Nv(t)!==`ipv6-literal`||t.startsWith(`2001:db8:`)?`internal`:null}const Bv=/^[0-9a-z][\w.-]{0,63}$/i;function Vv(e){return[...e].some(e=>{let t=e.codePointAt(0);return t!=null&&(t<=31||t===127)})}function Hv(e){return[...e].filter(e=>{let t=e.codePointAt(0);return t==null||t>31&&t!==127}).join(``)}function Uv(e){return e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function Wv(e){let t=Uv(e.toLowerCase()),n=t.endsWith(`.`)?t.slice(0,-1):t;if(n===`metadata.google.internal`)return`metadata`;if(n===`localhost`||n.endsWith(`.localhost`))return`internal`;let r=eee.isIP(n);return r===4?Rv(n):r===6?zv(n):null}function Gv(e,t){let n;try{n=new URL(e)}catch{return G(Sv(`s3 endpoint must be a valid URL`))}if(t===!1&&n.protocol!==`https:`)return G(Sv(`s3 endpoint must use https unless insecure endpoints are explicitly allowed`));let r=Wv(n.hostname);return r===`metadata`?G(Sv(`s3 endpoint must not target cloud instance metadata services`)):t===!1&&r===`internal`?G(Sv(`s3 endpoint must not target loopback, link-local, or private network addresses`)):n.username.length>0||n.password.length>0?G(Sv(`s3 endpoint must not include embedded credentials`)):Ys(n)}function Kv(e){let t=e.trim();return t.length===0?G(Sv(`object store prefix cannot be empty`)):t.includes(`..`)||t.startsWith(`/`)?G(Sv(`object store prefix must not contain traversal or absolute path markers`)):Vv(t)?G(Sv(`object store prefix must not contain control characters`)):Bv.test(t)===!1?G(Sv(`object store prefix must match the allowed naming pattern`)):Ys(t)}function qv(e){if(e.includes(`\0`))return G(Sv(`object store key components must not contain null bytes`));let t=Hv(e).replaceAll(`/`,`-`).replaceAll(`\\`,`-`).trim();return t.length===0?G(Sv(`object store key components must not be empty`)):t.includes(`..`)?G(Sv(`object store key components must not contain traversal markers`)):Ys(t)}function Jv(e,t){let n=jr.resolve(e);if(t.includes(`\0`))return G(Cv(`download path must not contain null bytes`));if(jr.isAbsolute(t))return G(Cv(`download path must be relative to the storage root`));let r=jr.resolve(n,t),i=`${n}${jr.sep}`;return r.startsWith(i)===!1?G(Cv(`download path escapes the storage root`)):Ys(r)}function Yv(e){let t=e.trim();if(t.length===0)return G(Sv(`repository path must not be empty`));let n=t.split(`/`).filter(e=>e.length>0);return n.length===0||n.length>2?G(Sv(`repository path must be "owner/repo" or a single component`)):Ys(n)}function Xv(e,t,n,r,i){let a=Kv(e.prefix);if(a.success===!1)return G(a.error);let o=qv(t);if(o.success===!1)return G(o.error);let s=Yv(n);if(s.success===!1)return G(s.error);let c=[];for(let e of s.data){let t=qv(e);if(t.success===!1)return G(t.error);c.push(t.data)}let l=c.join(`/`),u=`${a.data}/${o.data}/${l}/${r}`;if(i==null)return Ys(`${u}/`);let d=qv(i);return d.success===!1?G(d.error):Ys(`${u}/${d.data}`)}function Zv(e){if(e.storeAdapter.conditionalPut==null)throw Error(`Object store adapter does not support conditionalPut`);return e.storeAdapter.conditionalPut}function Qv(e){if(e.storeAdapter.conditionalDelete==null)throw Error(`Object store adapter does not support conditionalDelete`);return e.storeAdapter.conditionalDelete}function $v(e){if(e.storeAdapter.getObject==null)throw Error(`Object store adapter does not support getObject`);return e.storeAdapter.getObject}function ey(e){try{return Ys(Zv(e))}catch(e){return G(e instanceof Error?e:Error(String(e)))}}function ty(e){try{return Ys(Qv(e))}catch(e){return G(e instanceof Error?e:Error(String(e)))}}function ny(e){try{return Ys($v(e))}catch(e){return G(e instanceof Error?e:Error(String(e)))}}const ry=Symbol(`lease-loop-budget-elapsed`),iy=`Coordination lease renewal threw`,ay=`Coordination lease tick failed after renewal`;function oy(e){return e instanceof Error?e:Error(String(e))}function sy(e){let{renew:t,intervalMs:n,tickTimeoutMs:r,stopBudgetMs:i,unref:a,abortOnDeadline:o,tick:s,finalize:c,adopt:l,logger:u}=e,d=e.logContext??{},f=e.initialEtag,p=null,m=!1,h=!1,g=!1,v=!1,y=null,b=null,x=e=>{a&&e.unref()},S=(e,t)=>Object.assign(Error(e.message,{cause:e}),{lockEtag:f,tickPending:t}),C=(e,t)=>{p=t,e.renewalConfirmed===!1&&(m=!0)},w=(e,t,n)=>{try{u[e](t,{...d,...n})}catch{}},T=(e,t)=>{w(`warning`,e,{error:t.message})},E=async e=>{if(l===void 0)return null;try{return await l(e)}catch(e){return w(`debug`,`Lease adoption read failed`,{error:oy(e).message}),null}},D=e=>e===null||e.etag===f?!1:(f=e.etag,h=!1,w(`info`,`Coordination lease ETag adopted after a renewal outcome was lost`,{etag:e.etag}),!0),O=(e,t,n,r)=>{let i=e.renewalFailure;i!==null&&i.adopted&&i.error===t?(p=null,e.renewalConfirmed===!1&&(m=!0),r()):(C(e,t),r(),T(n,t))},k=()=>{if(b!=null)return;let e=o?new AbortController:void 0,n=()=>{},i={controller:e,settled:new Promise(e=>{n=e}),superseded:!1,concluded:!1,renewalConfirmed:!1,renewalFailure:null,timer:void 0};b=i;let a=()=>{i.concluded||(i.concluded=!0,clearTimeout(i.timer),b===i&&(b=null),n())};i.timer=setTimeout(()=>{if(i.concluded)return;i.superseded=!0;let t=i.renewalConfirmed,n=/* @__PURE__ */ Error(t?`Lease tick exceeded ${r}ms`:`Lease renewal exceeded ${r}ms`);C(i,n),e?.abort(n),a(),T(t?ay:iy,n)},r),x(i.timer);let c={signal:e?.signal,isStopping:()=>v,isCurrent:()=>i.superseded===!1,renewLock:async n=>{if(v||i.superseded)return`skipped`;let r=async()=>{let t=i.renewalFailure;if(l===void 0||t===null||v||i.superseded)return;let n=await E(e?.signal);i.superseded||n===null||n.etag===f||(T(t.message,t.error),D(n)&&(t.adopted=!0))},a;h=!0;try{a=e===void 0?await t(n,f):await t(n,f,e.signal)}catch(e){let t=oy(e);throw i.superseded===!1&&(i.renewalFailure={error:t,message:iy,adopted:!1},await r()),t}if(a.success===!1)throw i.superseded===!1&&(i.renewalFailure={error:a.error,message:`Coordination lease renewal failed`,adopted:!1},await r()),a.error;return i.superseded?`skipped`:(f=a.data.etag,h=!1,i.renewalConfirmed=!0,i.renewalFailure=null,`renewed`)}};(async()=>s(c))().then(()=>{if(i.concluded)return;let e=i.renewalFailure;e===null?(i.renewalConfirmed&&(p=null),a()):O(i,e.error,e.message,a)},e=>{if(i.concluded)return;let t=oy(e),n=t===i.renewalFailure?.error?i.renewalFailure.message:i.renewalConfirmed?ay:iy;O(i,t,n,a)})};return{start:()=>{g||(v?u.debug(`Ignoring start of a stopped lease loop`,d):(g=!0,y=setInterval(k,n),x(y)))},stop:async()=>{g=!1,v=!0,y!=null&&(clearInterval(y),y=null);let e,t=new Promise(t=>{e=setTimeout(()=>t(ry),i),x(e)});try{let e=b;if(e!=null&&await Promise.race([e.settled,t])===ry&&e.concluded===!1)return m=!0,e.timer?.unref(),e.controller?.abort(/* @__PURE__ */ Error(`Lease stop budget elapsed`)),G(S(/* @__PURE__ */ Error(`Lease tick did not settle within ${i}ms of stop`),!0));if(p!=null){if(h){let e=o?new AbortController:void 0,n=await Promise.race([E(e?.signal),t]);n===ry?e?.abort(/* @__PURE__ */ Error(`Lease stop budget elapsed`)):D(n)}return G(S(p,!1))}if(c===void 0)return Ys({lockEtag:f,final:void 0});let n=o?new AbortController:void 0,r=n===void 0?c():c(n.signal),a=await Promise.race([r,t]);return a===ry?(n?.abort(/* @__PURE__ */ Error(`Lease stop budget elapsed`)),G(S(/* @__PURE__ */ Error(`Lease finalize did not settle within ${i}ms of stop`),!1))):Ys({lockEtag:f,final:a})}catch(e){return G(S(oy(e),!1))}finally{clearTimeout(e)}},settle:async()=>{let e=b;e!=null&&await e.settled},currentEtag:()=>f,hasFailed:()=>p!=null,continuityUnverified:()=>m,get isRunning(){return g}}}function cy(e,t,n,r){let i=Xv(e.storeConfig,t,n,`runs`,`${r}.json`);return i.success===!1?G(i.error):Ys(i.data)}function ly(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.run_id==`string`&&(t.surface===`github`||t.surface===`discord`||t.surface===`web`)&&typeof t.thread_id==`string`&&typeof t.entity_ref==`string`&&(t.phase===`PENDING`||t.phase===`ACKNOWLEDGED`||t.phase===`EXECUTING`||t.phase===`COMPLETED`||t.phase===`FAILED`||t.phase===`CANCELLED`)&&typeof t.started_at==`string`&&typeof t.last_heartbeat==`string`&&typeof t.holder_id==`string`&&typeof t.details==`object`&&t.details!=null&&Array.isArray(t.details)===!1}function uy(e){try{let t=JSON.parse(e);return ly(t)===!1?G(/* @__PURE__ */ Error(`Invalid run-state payload`)):Ys(t)}catch{return G(/* @__PURE__ */ Error(`Run-state payload is not valid JSON`))}}function dy(e){return{kind:`unknown`,source:`unavailable`,directory:null,reason:e}}function fy(e){return typeof e==`string`}function py(e){if(typeof e!=`object`||!e)return dy(`confirmation-malformed`);let t=e,n=t.source===`opencode-session-status`;return t.kind===`clear`&&n&&fy(t.directory)&&fy(t.checkedAt)?{kind:`clear`,source:`opencode-session-status`,directory:t.directory,checkedAt:t.checkedAt}:t.kind===`busy`&&n&&fy(t.directory)&&fy(t.checkedAt)&&Array.isArray(t.sessionIds)&&t.sessionIds.every(fy)?{kind:`busy`,source:`opencode-session-status`,directory:t.directory,checkedAt:t.checkedAt,sessionIds:t.sessionIds}:t.kind===`unknown`&&(t.source===`opencode-session-status`||t.source===`unavailable`)&&(t.directory===null||fy(t.directory))&&fy(t.reason)?{kind:`unknown`,source:t.source,directory:t.directory,reason:t.reason}:dy(`confirmation-malformed`)}async function my(e,t,n,r=5e3){let i=new AbortController,a,o=new Promise(e=>{a=setTimeout(()=>{i.abort(),e(dy(`confirmation-timeout`))},r)}),s=(async()=>e({repo:t,holder:n,signal:i.signal}))().then(py,()=>dy(`confirmation-failed`));try{return await Promise.race([s,o])}finally{clearTimeout(a)}}function hy(e,t){let n=e[t];return typeof n==`string`?n:null}async function gy(e,t,n,r=2e3){if(n.surface===`github`)return{kind:`unknown`,reason:`not-written-by-action`};let i=e.storeAdapter.getObject;if(i==null)return{kind:`unknown`,reason:`adapter-lacks-getObject`};let a=cy(e,n.holder_id,t,n.run_id);if(a.success===!1)return{kind:`unknown`,reason:`run-state-key-invalid`};let o,s=new Promise(e=>{o=setTimeout(()=>e({kind:`unknown`,reason:`run-state-read-timeout`}),r)}),c=(async()=>{let e=await i(a.data);if(e.success===!1)return{kind:`unknown`,reason:`run-state-unavailable`};let t=uy(e.data.data);if(t.success===!1)return{kind:`unknown`,reason:`run-state-malformed`};let{details:n}=t.data,r=n.ownedSessionIds;return{kind:`known`,phase:t.data.phase,lastHeartbeat:t.data.last_heartbeat,quarantined:typeof n.quarantined==`boolean`?n.quarantined:null,quarantineReason:hy(n,`failureKind`),quarantineHoldUntil:hy(n,`quarantineHoldUntil`),persistedRootSessionId:hy(n,`rootSessionId`),persistedOwnedSessionCount:Array.isArray(r)?r.length:null}})().catch(()=>({kind:`unknown`,reason:`run-state-read-failed`}));try{return await Promise.race([c,s])}finally{clearTimeout(o)}}function _y(e,t){return t===null?{confirmationSource:e,confirmationDirectory:null,confirmationCheckedAt:null,confirmationBusyCount:null,confirmationBusySessionIds:null,confirmationUnknownReason:null}:{confirmationSource:e,confirmationDirectory:t.directory,confirmationCheckedAt:t.kind===`unknown`?null:t.checkedAt,confirmationBusyCount:t.kind===`busy`?t.sessionIds.length:null,confirmationBusySessionIds:t.kind===`busy`?t.sessionIds.slice(0,32):null,confirmationUnknownReason:t.kind===`unknown`?t.reason:null}}function vy(e){return e.kind===`unknown`?{oldRunState:`unknown: ${e.reason}`}:{oldRunState:`known`,oldRunPhase:e.phase,oldRunLastHeartbeat:e.lastHeartbeat,oldRunQuarantined:e.quarantined,oldRunQuarantineReason:e.quarantineReason,oldRunQuarantineHoldUntil:e.quarantineHoldUntil,oldRunPersistedRootSessionId:e.persistedRootSessionId,oldRunPersistedOwnedSessionCount:e.persistedOwnedSessionCount}}function yy(e,t,n,r,i,a){let{holder:o,now:s,replacement:c}=n,l=new Date(o.acquired_at).getTime()+o.ttl_seconds*1e3;e.info(t,{operation:n.operation,correlationId:n.correlationId,repo:n.repo,oldHolderId:o.holder_id,oldRunId:o.run_id,oldSurface:o.surface,oldAcquiredAt:o.acquired_at,oldTtlSeconds:o.ttl_seconds,oldExpiryAgeMs:s.getTime()-l,newHolderId:c?.holderId??null,newRunId:c?.runId??null,newSurface:c?.surface??null,...vy(n.evidence),decision:r,..._y(i,a)})}function by(e){return e.kind===`busy`?`blocked-busy`:`blocked-unknown`}const xy={repo:`repo.json`,action:`action.json`};function Sy(e,t,n=`repo`){let r=Xv(e.storeConfig,`coordination`,t,`locks`,xy[n]);return r.success===!1?G(r.error):Ys(r.data)}const Cy=/^[\w.-]+$/;function wy(e){return Cy.test(e)}const Ty=/^[\w-]{8,64}$/;function Ey(e){return Ty.test(e)}function Dy(e){return/pre-?condition/.test(e.message.toLowerCase())}function Oy(e){let t=e;return t.httpStatusCode===void 0?t.errorCode===void 0?t.errorName===void 0?/nosuchkey|not found|does not exist/i.test(e.message):t.errorName===`NoSuchKey`:t.errorCode===`NoSuchKey`:t.httpStatusCode===404}function ky(e,t){return new Date(e).getTime()+t*1e3}function Ay(e,t){return ky(e.acquired_at,e.ttl_seconds)<=t.getTime()}function jy(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.repo==`string`&&typeof t.holder_id==`string`&&(t.surface===`github`||t.surface===`discord`||t.surface===`web`)&&typeof t.acquired_at==`string`&&typeof t.ttl_seconds==`number`&&Number.isFinite(t.ttl_seconds)&&Number.isFinite(ky(t.acquired_at,t.ttl_seconds))&&typeof t.run_id==`string`}function My(e){try{let t=JSON.parse(e);if(jy(t)===!1)return G(/* @__PURE__ */ Error(`Invalid lock record payload`));let{holder_job:n,acquisition_token:r,...i}=t,a=typeof n==`string`&&wy(n),o=typeof r==`string`&&Ey(r);return Ys({...i,...a?{holder_job:n}:{},...o?{acquisition_token:r}:{}})}catch(e){return G(e instanceof Error?e:Error(String(e)))}}function Ny(e,t,n,r,i,a,o,s){return{repo:e,holder_id:t,surface:n,acquired_at:a,ttl_seconds:i,run_id:r,...o===void 0?{}:{holder_job:o},...s===void 0?{}:{acquisition_token:s}}}async function Py(e,t,n,r,i,a,o={}){let s=Sy(e,t,o.scope);if(s.success===!1)return G(s.error);let c=ey(e);if(c.success===!1)return G(c.error);let l=ny(e);if(l.success===!1)return G(l.error);a.debug(`Attempting lock acquisition`,{key:s.data,repo:t,runId:i,surface:r});let u=async()=>{let a=Ny(t,n,r,i,e.lockTtlSeconds,(/* @__PURE__ */ new Date()).toISOString(),o.holderJob,o.acquisitionToken);return c.data(s.data,JSON.stringify(a),{ifNoneMatch:`*`})},d=e=>typeof e!=`string`||e.length===0?G(/* @__PURE__ */ Error(`Lock acquisition succeeded without a usable ETag`)):Ys({acquired:!0,outcome:`acquired`,etag:e,holder:null}),f=await u();if(f.success===!0)return d(f.data.etag);if(Dy(f.error)===!1)return G(f.error);let p=await l.data(s.data);if(p.success===!1&&Oy(p.error)===!0){let e=await u();if(e.success===!0)return d(e.data.etag);if(Dy(e.error)===!1)return G(e.error);if(p=await l.data(s.data),p.success===!1&&Oy(p.error)===!0)return Ys({acquired:!1,outcome:`conflict`,etag:null,holder:null})}if(p.success===!1)return G(p.error);let m=My(p.data.data);if(m.success===!1)return G(m.error);let h=/* @__PURE__ */ new Date,g=Ay(m.data,h),v=g===!1&&o.reclaimableBeforeExpiry?.(m.data,h)===!0;if(g===!1&&v===!1)return Ys({acquired:!1,outcome:`active-holder`,etag:null,holder:m.data});let y=p.data.etag,b={operation:`acquire`,correlationId:crypto.randomUUID(),repo:t,holder:m.data,evidence:await gy(e,t,m.data),now:h,replacement:{holderId:n,runId:i,surface:r}};yy(a,`lock-takeover-attempt`,b,`pending`,null,null);let x,S=null;if(v===!0?x=`holder-superseded`:o.reclaimableWithoutConfirmation?.(m.data)===!0?x=`holder-surface-reclaimable`:o.confirmExpiredHolder===void 0?(x=`no-corroborator`,S={kind:`unknown`,source:`unavailable`,directory:null,reason:`no-corroborator`}):(S=await my(o.confirmExpiredHolder,t,m.data),x=S.source),S!==null&&S.kind!==`clear`)return yy(a,`lock-takeover-outcome`,b,by(S),x,S),Ys({acquired:!1,outcome:`expired-holder`,etag:null,holder:m.data,confirmation:S});let C=Ny(t,n,r,i,e.lockTtlSeconds,(/* @__PURE__ */ new Date()).toISOString(),o.holderJob,o.acquisitionToken),w=await c.data(s.data,JSON.stringify(C),{ifMatch:y});return w.success===!1?Dy(w.error)===!0?(yy(a,`lock-takeover-outcome`,b,`cas-conflict`,x,S),Ys({acquired:!1,outcome:`conflict`,etag:null,holder:null})):(yy(a,`lock-takeover-outcome`,b,`store-error`,x,S),G(w.error)):typeof w.data.etag!=`string`||w.data.etag.length===0?(yy(a,`lock-takeover-outcome`,b,`store-error`,x,S),G(/* @__PURE__ */ Error(`Lock acquisition succeeded without a usable ETag`))):(yy(a,`lock-takeover-outcome`,b,`taken-over`,x,S),Ys({acquired:!0,outcome:`acquired`,etag:w.data.etag,holder:null}))}async function Fy(e,t,n,r,i=`repo`,a){let o=Sy(e,t,i);if(o.success===!1)return G(o.error);let s=ty(e);return s.success===!1?G(s.error):(r.debug(`Releasing lock`,{key:o.data,repo:t}),s.data(o.data,a===void 0?{ifMatch:n}:{ifMatch:n,signal:a}))}async function Iy(e,t,n,r,i=`repo`,a={}){let{holderJob:o,acquisitionToken:s,runId:c,signal:l}=a,u=Sy(e,t,i);if(u.success===!1)return G(u.error);let d=ny(e);if(d.success===!1)return G(d.error);let f=ty(e);if(f.success===!1)return G(f.error);let p=()=>l?.aborted===!0,m=()=>G(/* @__PURE__ */ Error(`Lock release aborted`));if(p())return m();let h=await d.data(u.data,l===void 0?void 0:{signal:l});if(h.success===!1)return Oy(h.error)===!0?Ys(`no-lock`):G(h.error);let g=My(h.data.data);if(g.success===!1)return G(g.error);let v=s===void 0||g.data.acquisition_token===s,y=c===void 0||g.data.run_id===c;if(g.data.holder_id!==n||g.data.holder_job!==o||v===!1||y===!1)return r.debug(`Lock held by another holder; not releasing`,{key:u.data,repo:t,heldBy:g.data.holder_id,heldByJob:g.data.holder_job??null}),Ys(`not-holder`);if(p())return m();r.debug(`Releasing lock held by this holder`,{key:u.data,repo:t,holderId:n});let b=await f.data(u.data,l===void 0?{ifMatch:h.data.etag}:{ifMatch:h.data.etag,signal:l});return b.success===!0?Ys(`released`):Dy(b.error)===!0?Ys(`conflict`):Oy(b.error)===!0?Ys(`no-lock`):G(b.error)}async function Ly(e,t,n,r,i,a=`repo`,o){let s=Sy(e,t,a);if(s.success===!1)return G(s.error);let c=ey(e);if(c.success===!1)return G(c.error);let l={...n,acquired_at:(/* @__PURE__ */ new Date()).toISOString()};return i.debug(`Renewing lock lease`,{key:s.data,repo:t}),c.data(s.data,JSON.stringify(l),o===void 0?{ifMatch:r}:{ifMatch:r,signal:o})}async function Ry(e,t,n=`repo`,r){let i=Sy(e,t,n);if(i.success===!1)return G(i.error);let a=ny(e);if(a.success===!1)return G(a.error);let o=await(r===void 0?a.data(i.data):a.data(i.data,{signal:r}));if(o.success===!1)return Oy(o.error)===!0?Ys(null):G(o.error);let s=My(o.data.data);return s.success===!1?G(s.error):Ys({record:s.data,etag:o.data.etag})}function zy(e){let{config:t,repo:n,scope:r,owns:i,logger:a,logContext:o}=e;return async e=>{let s=await Ry(t,n,r,e);if(s.success===!1||s.data===null)return null;let c=i(s.data.record);return c.owned===!1?(a.debug(`Lock record not adopted`,{...o,reason:c.reason,storedHolderId:s.data.record.holder_id,storedRunId:s.data.record.run_id}),null):{etag:s.data.etag}}}const By=3e4,Vy=6e4,Hy=18e5,Uy={v1:`sessions`,v2:`sessions-v2`};function Wy(e){return jr.dirname(e)}function Gy(e,t){return jr.join(Wy(e),t)}function Ky(e,t,n,r){let i=Xv(e,t,n,Uy[r]);return i.success?i.data:null}async function qy(e){let t=await kr.readdir(e,{withFileTypes:!0});return(await Promise.all(t.map(async t=>{let n=jr.join(e,t.name);return t.isDirectory()?qy(n):t.isFile()?[n]:[]}))).flat().sort((e,t)=>e.localeCompare(t))}function Jy(e,t,n){return`${e}${t}/${n.split(jr.sep).join(`/`)}`}async function Yy(e,t,n,r,i,a,o=`v1`){let s=Ky(t,n,r,o);if(s==null)return a.warning(`Failed to build object store sessions prefix for upload`,{identity:n,repo:r}),{uploaded:0,failed:0};let c=0,l=0;for(let t of iv(o).transportable){let n=Gy(i,t);try{await kr.access(n)}catch{continue}let r=await e.upload(`${s}${t}`,n);r.success?c++:(l++,a.warning(`Failed to upload session database file to object store`,{key:`${s}${t}`,localPath:n,error:Ws(r.error)}))}return{uploaded:c,failed:l}}async function Xy(e,t,n,r,i,a,o=`v1`){let s=Ky(t,n,r,o);if(s==null)return a.warning(`Failed to build object store sessions prefix for download`,{identity:n,repo:r}),{downloaded:0,failed:0,mainDbRestored:!1};let c=await e.list(s);if(c.success===!1)return a.warning(`Failed to list object store session files`,{prefix:s,error:Ws(c.error)}),{downloaded:0,failed:1,mainDbRestored:!1};if(c.data.length===0)return{downloaded:0,failed:0,mainDbRestored:!1};let l=Wy(i),u=0,d=0,f=!1,p=iv(o).main;for(let t of c.data){let n=Jv(l,t.startsWith(s)?t.slice(s.length):t);if(n.success===!1){d++,a.warning(`Rejected object store session key during download`,{key:t,error:Ws(n.error)});continue}await kr.mkdir(jr.dirname(n.data),{recursive:!0});let r=await e.download(t,n.data);r.success?(u++,jr.basename(n.data)===p&&(f=!0)):(d++,a.warning(`Failed to download session database file from object store`,{key:t,localPath:n.data,error:Ws(r.error)}))}return{downloaded:u,failed:d,mainDbRestored:f}}async function Zy(e,t,n,r,i,a,o){try{await kr.access(a)}catch{return{uploaded:0,failed:0}}let s=0,c=0,l=await qy(a),u=Xv(t,n,r,`artifacts`);if(u.success===!1)return o.warning(`Failed to build object store artifact prefix for upload`,{runId:i,error:Ws(u.error)}),{uploaded:0,failed:0};for(let t of l){let n=jr.relative(a,t),r=Jy(u.data,i,n),l=await e.upload(r,t);l.success?s++:(c++,o.warning(`Failed to upload artifact file to object store`,{key:r,filePath:t,error:Ws(l.error)}))}return{uploaded:s,failed:c}}async function Qy(e,t,n,r,i,a,o){let s=Xv(t,n,r,`metadata`,`${i}.json`);if(s.success===!1)return o.warning(`Failed to build object store metadata key for upload`,{runId:i,error:Ws(s.error)}),{success:!1};let c=await kr.mkdtemp(jr.join(Vr.tmpdir(),`fro-bot-metadata-`)),l=jr.join(c,`${i}.json`);try{await kr.writeFile(l,JSON.stringify(a,null,2),`utf8`);let t=await e.upload(s.data,l);return t.success===!1?(o.warning(`Failed to upload run metadata to object store`,{key:s.data,runId:i,error:Ws(t.error)}),{success:!1}):{success:!0}}catch(e){return o.warning(`Failed to upload run metadata to object store`,{key:s.data,runId:i,error:Ws(e)}),{success:!1}}finally{await kr.rm(c,{recursive:!0,force:!0})}}var $y,eb,tb,nb,rb,ib,ab,ob=n((()=>{$y={WHEN_SUPPORTED:`WHEN_SUPPORTED`,WHEN_REQUIRED:`WHEN_REQUIRED`},eb=$y.WHEN_SUPPORTED,tb={WHEN_SUPPORTED:`WHEN_SUPPORTED`,WHEN_REQUIRED:`WHEN_REQUIRED`},nb=$y.WHEN_SUPPORTED,(function(e){e.MD5=`MD5`,e.CRC32=`CRC32`,e.CRC32C=`CRC32C`,e.CRC64NVME=`CRC64NVME`,e.SHA1=`SHA1`,e.SHA256=`SHA256`})(rb||={}),(function(e){e.HEADER=`header`,e.TRAILER=`trailer`})(ib||={}),ab=rb.CRC32})),sb,cb,lb=n((()=>{(function(e){e.ENV=`env`,e.CONFIG=`shared config entry`})(sb||={}),cb=(e,t,n,r)=>{if(!(t in e))return;let i=e[t].toUpperCase();if(!Object.values(n).includes(i))throw TypeError(`Cannot load ${r} '${t}'. Expected one of ${Object.values(n)}, got '${e[t]}'.`);return i}})),ub,db,fb,pb=n((()=>{ob(),lb(),ub=`AWS_REQUEST_CHECKSUM_CALCULATION`,db=`request_checksum_calculation`,fb={environmentVariableSelector:e=>cb(e,ub,$y,sb.ENV),configFileSelector:e=>cb(e,db,$y,sb.CONFIG),default:eb}})),mb,hb,gb,_b=n((()=>{ob(),lb(),mb=`AWS_RESPONSE_CHECKSUM_VALIDATION`,hb=`response_checksum_validation`,gb={environmentVariableSelector:e=>cb(e,mb,tb,sb.ENV),configFileSelector:e=>cb(e,hb,tb,sb.CONFIG),default:nb}})),vb,yb,bb=n((()=>{vb={warningEmitted:!1},yb=e=>{if(e&&!vb.warningEmitted){if(process.env.AWS_SDK_JS_NODE_VERSION_SUPPORT_WARNING_DISABLED===`true`){vb.warningEmitted=!0;return}parseInt(e.substring(1,e.indexOf(`.`)))<22&&(vb.warningEmitted=!0,process.emitWarning(`NodeVersionSupportWarning: The AWS SDK for JavaScript (v3) +`);try{c=JSON.parse(e),l=!0}catch{c=e}}l&&(r&&await r(c),n&&(c=await n(c))),t?.({data:c,event:o,id:u,retry:s}),a.length&&(yield c)}}}finally{p.removeEventListener(`abort`,d),a.releaseLock()}break}catch(t){if(e?.(t),a!==void 0&&f>=a)break;let n=Math.min(s*2**(f-1),o??3e4);await d(n)}}}()}},sg=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},cg={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)},lg=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},ug=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},dg=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},fg=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(ug(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let a=lg(r),o=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):pg({allowReserved:e,name:n,value:t})).join(a);return r===`label`||r===`matrix`?a+o:o},pg=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},mg=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=dg(r),s=Object.entries(i).map(([t,i])=>pg({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+s:s},hg=/\{[^{}]+\}/g,gg=({path:e,url:t})=>{let n=t,r=t.match(hg);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,fg({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,mg({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${pg({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},_g=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=gg({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o},vg=({allowReserved:e,array:t,object:n}={})=>r=>{let i=[];if(r&&typeof r==`object`)for(let a in r){let o=r[a];if(o!=null){if(Array.isArray(o)){let n=fg({allowReserved:e,explode:!0,name:a,style:`form`,value:o,...t});n&&i.push(n)}else if(typeof o==`object`){let t=mg({allowReserved:e,explode:!0,name:a,style:`deepObject`,value:o,...n});t&&i.push(t)}else{let t=pg({allowReserved:e,name:a,value:o});t&&i.push(t)}}}return i.join(`&`)},yg=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},bg=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,xg=async({security:e,...t})=>{for(let n of e){if(bg(t,n.name))continue;let e=await sg(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e)}}},Sg=e=>_g({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:vg(e.querySerializer),url:e.url}),Cg=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=wg(e.headers,t.headers),n},wg=(...e)=>{let t=new Headers;for(let n of e){if(!n||typeof n!=`object`)continue;let e=n instanceof Headers?n.entries():Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t};var Tg=class{_fns;constructor(){this._fns=[]}clear(){this._fns=[]}getInterceptorIndex(e){return typeof e==`number`?this._fns[e]?e:-1:this._fns.indexOf(e)}exists(e){let t=this.getInterceptorIndex(e);return!!this._fns[t]}eject(e){let t=this.getInterceptorIndex(e);this._fns[t]&&(this._fns[t]=null)}update(e,t){let n=this.getInterceptorIndex(e);return this._fns[n]?(this._fns[n]=t,e):!1}use(e){return this._fns=[...this._fns,e],this._fns.length-1}};const Eg=()=>({error:new Tg,request:new Tg,response:new Tg}),Dg=vg({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),Og={"Content-Type":`application/json`},kg=(e={})=>({...cg,headers:Og,parseAs:`auto`,querySerializer:Dg,...e}),Ag=(e={})=>{let t=Cg(kg(),e),n=()=>({...t}),r=e=>(t=Cg(t,e),n()),i=Eg(),a=async e=>{let n={...t,...e,fetch:e.fetch??t.fetch??globalThis.fetch,headers:wg(t.headers,e.headers),serializedBody:void 0};return n.security&&await xg({...n,security:n.security}),n.requestValidator&&await n.requestValidator(n),n.body&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.serializedBody===void 0||n.serializedBody===``)&&n.headers.delete(`Content-Type`),{opts:n,url:Sg(n)}},o=async e=>{let{opts:t,url:n}=await a(e),r={redirect:`follow`,...t,body:t.serializedBody},o=new Request(n,r);for(let e of i.request._fns)e&&(o=await e(o,t));let s=t.fetch,c=await s(o);for(let e of i.response._fns)e&&(c=await e(c,o,t));let l={request:o,response:c};if(c.ok){if(c.status===204||c.headers.get(`Content-Length`)===`0`)return t.responseStyle===`data`?{}:{data:{},...l};let e=(t.parseAs===`auto`?yg(c.headers.get(`Content-Type`)):t.parseAs)??`json`,n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`json`:case`text`:n=await c[e]();break;case`stream`:return t.responseStyle===`data`?c.body:{data:c.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await c.text(),d;try{d=JSON.parse(u)}catch{}let f=d??u,p=f;for(let e of i.error._fns)e&&(p=await e(f,c,o,t));if(p||={},t.throwOnError)throw p;return t.responseStyle===`data`?void 0:{error:p,...l}},s=e=>{let t=t=>o({...t,method:e});return t.sse=async t=>{let{opts:n,url:r}=await a(t);return og({...n,body:n.body,headers:n.headers,method:e,url:r})},t};return{buildUrl:Sg,connect:s(`CONNECT`),delete:s(`DELETE`),get:s(`GET`),getConfig:n,head:s(`HEAD`),interceptors:i,options:s(`OPTIONS`),patch:s(`PATCH`),post:s(`POST`),put:s(`PUT`),request:o,setConfig:r,trace:s(`TRACE`)}};Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});const jg=Ag(kg({baseUrl:`http://localhost:4096`}));var Mg=class{_client=jg;constructor(e){e?.client&&(this._client=e.client)}},Ng=class extends Mg{event(e){return(e?.client??this._client).get.sse({url:`/global/event`,...e})}},Pg=class extends Mg{list(e){return(e?.client??this._client).get({url:`/project`,...e})}current(e){return(e?.client??this._client).get({url:`/project/current`,...e})}},Fg=class extends Mg{list(e){return(e?.client??this._client).get({url:`/pty`,...e})}create(e){return(e?.client??this._client).post({url:`/pty`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}remove(e){return(e.client??this._client).delete({url:`/pty/{id}`,...e})}get(e){return(e.client??this._client).get({url:`/pty/{id}`,...e})}update(e){return(e.client??this._client).put({url:`/pty/{id}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}connect(e){return(e.client??this._client).get({url:`/pty/{id}/connect`,...e})}},Ig=class extends Mg{get(e){return(e?.client??this._client).get({url:`/config`,...e})}update(e){return(e?.client??this._client).patch({url:`/config`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}providers(e){return(e?.client??this._client).get({url:`/config/providers`,...e})}},Lg=class extends Mg{ids(e){return(e?.client??this._client).get({url:`/experimental/tool/ids`,...e})}list(e){return(e.client??this._client).get({url:`/experimental/tool`,...e})}},Rg=class extends Mg{dispose(e){return(e?.client??this._client).post({url:`/instance/dispose`,...e})}},zg=class extends Mg{get(e){return(e?.client??this._client).get({url:`/path`,...e})}},Bg=class extends Mg{get(e){return(e?.client??this._client).get({url:`/vcs`,...e})}},Vg=class extends Mg{list(e){return(e?.client??this._client).get({url:`/session`,...e})}create(e){return(e?.client??this._client).post({url:`/session`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}status(e){return(e?.client??this._client).get({url:`/session/status`,...e})}delete(e){return(e.client??this._client).delete({url:`/session/{id}`,...e})}get(e){return(e.client??this._client).get({url:`/session/{id}`,...e})}update(e){return(e.client??this._client).patch({url:`/session/{id}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}children(e){return(e.client??this._client).get({url:`/session/{id}/children`,...e})}todo(e){return(e.client??this._client).get({url:`/session/{id}/todo`,...e})}init(e){return(e.client??this._client).post({url:`/session/{id}/init`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}fork(e){return(e.client??this._client).post({url:`/session/{id}/fork`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}abort(e){return(e.client??this._client).post({url:`/session/{id}/abort`,...e})}unshare(e){return(e.client??this._client).delete({url:`/session/{id}/share`,...e})}share(e){return(e.client??this._client).post({url:`/session/{id}/share`,...e})}diff(e){return(e.client??this._client).get({url:`/session/{id}/diff`,...e})}summarize(e){return(e.client??this._client).post({url:`/session/{id}/summarize`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}messages(e){return(e.client??this._client).get({url:`/session/{id}/message`,...e})}prompt(e){return(e.client??this._client).post({url:`/session/{id}/message`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}message(e){return(e.client??this._client).get({url:`/session/{id}/message/{messageID}`,...e})}promptAsync(e){return(e.client??this._client).post({url:`/session/{id}/prompt_async`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}command(e){return(e.client??this._client).post({url:`/session/{id}/command`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}shell(e){return(e.client??this._client).post({url:`/session/{id}/shell`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}revert(e){return(e.client??this._client).post({url:`/session/{id}/revert`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}unrevert(e){return(e.client??this._client).post({url:`/session/{id}/unrevert`,...e})}},Hg=class extends Mg{list(e){return(e?.client??this._client).get({url:`/command`,...e})}},Ug=class extends Mg{authorize(e){return(e.client??this._client).post({url:`/provider/{id}/oauth/authorize`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}callback(e){return(e.client??this._client).post({url:`/provider/{id}/oauth/callback`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}},Wg=class extends Mg{list(e){return(e?.client??this._client).get({url:`/provider`,...e})}auth(e){return(e?.client??this._client).get({url:`/provider/auth`,...e})}oauth=new Ug({client:this._client})},Gg=class extends Mg{text(e){return(e.client??this._client).get({url:`/find`,...e})}files(e){return(e.client??this._client).get({url:`/find/file`,...e})}symbols(e){return(e.client??this._client).get({url:`/find/symbol`,...e})}},Kg=class extends Mg{list(e){return(e.client??this._client).get({url:`/file`,...e})}read(e){return(e.client??this._client).get({url:`/file/content`,...e})}status(e){return(e?.client??this._client).get({url:`/file/status`,...e})}},qg=class extends Mg{log(e){return(e?.client??this._client).post({url:`/log`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}agents(e){return(e?.client??this._client).get({url:`/agent`,...e})}},Jg=class extends Mg{remove(e){return(e.client??this._client).delete({url:`/mcp/{name}/auth`,...e})}start(e){return(e.client??this._client).post({url:`/mcp/{name}/auth`,...e})}callback(e){return(e.client??this._client).post({url:`/mcp/{name}/auth/callback`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}authenticate(e){return(e.client??this._client).post({url:`/mcp/{name}/auth/authenticate`,...e})}set(e){return(e.client??this._client).put({url:`/auth/{id}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}},Yg=class extends Mg{status(e){return(e?.client??this._client).get({url:`/mcp`,...e})}add(e){return(e?.client??this._client).post({url:`/mcp`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}connect(e){return(e.client??this._client).post({url:`/mcp/{name}/connect`,...e})}disconnect(e){return(e.client??this._client).post({url:`/mcp/{name}/disconnect`,...e})}auth=new Jg({client:this._client})},Xg=class extends Mg{status(e){return(e?.client??this._client).get({url:`/lsp`,...e})}},Zg=class extends Mg{status(e){return(e?.client??this._client).get({url:`/formatter`,...e})}},Qg=class extends Mg{next(e){return(e?.client??this._client).get({url:`/tui/control/next`,...e})}response(e){return(e?.client??this._client).post({url:`/tui/control/response`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}},$g=class extends Mg{appendPrompt(e){return(e?.client??this._client).post({url:`/tui/append-prompt`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}openHelp(e){return(e?.client??this._client).post({url:`/tui/open-help`,...e})}openSessions(e){return(e?.client??this._client).post({url:`/tui/open-sessions`,...e})}openThemes(e){return(e?.client??this._client).post({url:`/tui/open-themes`,...e})}openModels(e){return(e?.client??this._client).post({url:`/tui/open-models`,...e})}submitPrompt(e){return(e?.client??this._client).post({url:`/tui/submit-prompt`,...e})}clearPrompt(e){return(e?.client??this._client).post({url:`/tui/clear-prompt`,...e})}executeCommand(e){return(e?.client??this._client).post({url:`/tui/execute-command`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}showToast(e){return(e?.client??this._client).post({url:`/tui/show-toast`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}publish(e){return(e?.client??this._client).post({url:`/tui/publish`,...e,headers:{"Content-Type":`application/json`,...e?.headers}})}control=new Qg({client:this._client})},e_=class extends Mg{subscribe(e){return(e?.client??this._client).get.sse({url:`/event`,...e})}},t_=class extends Mg{postSessionIdPermissionsPermissionId(e){return(e.client??this._client).post({url:`/session/{id}/permissions/{permissionID}`,...e,headers:{"Content-Type":`application/json`,...e.headers}})}global=new Ng({client:this._client});project=new Pg({client:this._client});pty=new Fg({client:this._client});config=new Ig({client:this._client});tool=new Lg({client:this._client});instance=new Rg({client:this._client});path=new zg({client:this._client});vcs=new Bg({client:this._client});session=new Vg({client:this._client});command=new Hg({client:this._client});provider=new Wg({client:this._client});find=new Gg({client:this._client});file=new Kg({client:this._client});app=new qg({client:this._client});mcp=new Yg({client:this._client});lsp=new Xg({client:this._client});formatter=new Zg({client:this._client});tui=new $g({client:this._client});auth=new Jg({client:this._client});event=new e_({client:this._client})};function n_(e,t){if(e)return t&&(e===t||e===encodeURIComponent(t))?t:e}function r_(e,t){if(e.method!==`GET`&&e.method!==`HEAD`)return e;let n=n_(e.headers.get(`x-opencode-directory`),t);if(!n)return e;let r=new URL(e.url);r.searchParams.has(`directory`)||r.searchParams.set(`directory`,n);let i=new Request(r,e);return i.headers.delete(`x-opencode-directory`),i}function i_(e){if(!e?.fetch){let t=e=>(e.timeout=!1,fetch(e));e={...e,fetch:t}}e?.directory&&(e.headers={...e.headers,"x-opencode-directory":encodeURIComponent(e.directory)});let t=Ag(e);return t.interceptors.request.use(t=>r_(t,e?.directory)),t.interceptors.error.use(o),new t_({client:t})}var a_=/* @__PURE__ */ r(s(),1);function o_(e){if(e.exitCode===null&&e.signalCode===null){if(process.platform===`win32`&&e.pid){let t=Vr(`taskkill`,[`/pid`,String(e.pid),`/T`,`/F`],{windowsHide:!0});if(!t.error&&t.status===0)return}e.kill()}}function s_(e,t,n){if(!t)return()=>{};let r=()=>{i(),o_(e),n?.()},i=()=>{t.removeEventListener(`abort`,r),e.off(`exit`,i),e.off(`error`,i)};return t.addEventListener(`abort`,r,{once:!0}),e.on(`exit`,i),e.on(`error`,i),t.aborted&&r(),i}async function c_(e){e=Object.assign({hostname:`127.0.0.1`,port:4096,timeout:5e3},e??{});let t=[`serve`,`--hostname=${e.hostname}`,`--port=${e.port}`];e.config?.logLevel&&t.push(`--log-level=${e.config.logLevel}`);let n=(0,a_.default)(`opencode`,t,{env:{...process.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(e.config??{})}}),r=()=>{};return{url:await new Promise((t,i)=>{let a=setTimeout(()=>{r(),o_(n),i(/* @__PURE__ */ Error(`Timeout waiting for server to start after ${e.timeout}ms`))},e.timeout),o=``,s=!1;n.stdout?.on(`data`,e=>{if(s)return;o+=e.toString();let c=o.split(` +`);for(let e of c)if(e.startsWith(`opencode server listening`)){let o=e.match(/on\s+(https?:\/\/[^\s]+)/);if(!o){r(),o_(n),clearTimeout(a),i(/* @__PURE__ */ Error(`Failed to parse server url from output: ${e}`));return}clearTimeout(a),s=!0,t(o[1]);return}}),n.stderr?.on(`data`,e=>{o+=e.toString()}),n.on(`exit`,e=>{clearTimeout(a);let t=`Server exited with code ${e}`;o.trim()&&(t+=`\nServer output: ${o}`),i(Error(t))}),n.on(`error`,e=>{clearTimeout(a),i(e)}),r=s_(n,e.signal,()=>{clearTimeout(a),i(e.signal?.reason)})}),close(){r(),o_(n)}}}async function l_(e){let t=await c_({...e});return{client:i_({baseUrl:t.url}),server:t}}async function u_(e){if(e<0||!Number.isFinite(e))throw Error(`Invalid sleep duration: ${e}`);return new Promise(t=>setTimeout(t,e))}const d_=18e5,f_=5e3,p_={providerID:`opencode`,modelID:`big-pickle`},m_=`1.19.4+harness.5bde2635`,h_=`3.27.2`,g_=`fro-bot-state`,__=`opencode-tools-v2`,v_=6e5,y_=`fro-bot-dedup-v1`;async function b_(e,t){let n=[];try{let e=Xs(qn.env);for(let t of Object.keys(qn.env))if(!(t in e)){let e=qn.env[t];e!==void 0&&(n.push([t,e]),delete qn.env[t])}t.info(`Scrubbed agent env for spawn`,{removedCount:n.length})}catch(e){for(let[e,t]of n)qn.env[e]=t;throw e}try{return await e()}finally{for(let[e,t]of n)qn.env[e]=t}}function x_(e,t){return mr.connect({host:e,port:t})}async function S_(e,t,n,r=x_){return new Promise(i=>{let a=!1,o=r(e,t),s=e=>{a||(a=!0,o.destroy(),o.removeAllListeners(),i(e))};o.setTimeout(n,()=>s(!0)),o.once(`connect`,()=>s(!0)),o.once(`error`,()=>s(!1))})}async function C_(e,t=5e3,n=100,r=x_){let i,a;try{let t=new URL(e);i=t.hostname,a=Number(t.port)}catch{return{quiesced:!1}}if(!Number.isInteger(a)||a<=0||a>65535)return{quiesced:!1};let o=Date.now()+t;do{if(!await S_(i,a,n,r))return{quiesced:!0};await u_(n)}while(Date.now(){let n=mr.createServer();n.once(`error`,t),n.listen(0,`127.0.0.1`,()=>{let r=n.address();if(r===null||typeof r==`string`){n.close(),t(/* @__PURE__ */ Error(`Failed to determine ephemeral port`));return}let{port:i}=r;n.close(n=>{n==null?e(i):t(n)})})})}async function T_(e,t,n,r,i){let a=AbortSignal.timeout(r);try{let r=await e.session.list({query:{directory:t},signal:AbortSignal.any([n,a])});return r.error!=null&&i.debug(`OpenCode readiness probe answered with an error body (server is ready)`,{error:Hs(r.error)}),{kind:`ready`}}catch(e){return n.aborted?{kind:`aborted`}:a.aborted?{kind:`timeout`}:{kind:`transport`,error:e}}}function E_(e){let t=qn.env.OPENCODE_CLIENT,n=qn.env.OPENCODE_ENABLE_QUESTION_TOOL,r=t!==void 0&&t!==``&&t!==`fro-bot-action`,i=n!==void 0&&n!==``;qn.env.OPENCODE_CLIENT=`fro-bot-action`,delete qn.env.OPENCODE_ENABLE_QUESTION_TOOL,(r||i)&&e.warning(`OPENCODE_CLIENT / OPENCODE_ENABLE_QUESTION_TOOL overridden: the OpenCode question tool is disabled for CI runs because nobody can answer it`,{overriddenClient:r,overriddenEnableQuestionTool:i})}async function D_(e,t,n,r=f_,i=6e4,a={}){let o=Date.now(),s=null,c;try{let l=await w_(),u=`http://127.0.0.1:${l}`;qn.env.FRO_BOT_OPENCODE_URL=u,(qn.env.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER===void 0||qn.env.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER===``)&&(qn.env.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER=`true`),(qn.env.OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS===void 0||qn.env.OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS===``)&&(qn.env.OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=`true`),E_(t);let d={signal:e,hostname:`127.0.0.1`,port:l,timeout:r,...a.config===void 0?{}:{config:a.config}},f=Date.now(),p=await b_(async()=>l_(d),t);s=Date.now()-f;let{client:m,server:h}=p;if(c=h,h.url!==u)return h.close(),G(/* @__PURE__ */ Error(`OpenCode server URL mismatch: pinned ${u} but server bound to ${h.url}`));let g=Date.now(),v=await T_(m,n,e,i,t);if(v.kind===`transport`&&(t.warning(`OpenCode readiness probe failed (retrying once)`,{error:Rs(v.error)}),v=await T_(m,n,e,i,t)),v.kind!==`ready`){let n=e.aborted,r=Date.now()-g;t.warning(`OpenCode readiness probe failed`,{outcome:v.kind,error:v.kind===`transport`?Rs(v.error):void 0,readinessTimeoutMs:i,readinessMs:r,cancelledByOuterDeadline:n}),h.close();let a=await C_(h.url);return t.debug(`OpenCode server quiesced after readiness-probe failure`,{quiesced:a.quiesced}),v.kind===`transport`?G(/* @__PURE__ */ Error(`OpenCode server is listening but the readiness request failed twice against the local server: ${Rs(v.error)}`)):G(Error(n?`OpenCode server bootstrap cancelled by the execution deadline during the readiness probe`:`OpenCode server is listening but did not answer an instance-scoped request within ${i}ms per attempt (${r}ms total probe time) — instance bootstrap is blocked`))}let y=Date.now()-g,b=Date.now()-o;return t.debug(`OpenCode server bootstrapped`,{url:h.url,timeoutMs:r,budgetedMs:s,readinessMs:y,elapsedMs:b}),Ls({client:m,server:h,shutdown:async()=>(h.close(),C_(h.url))})}catch(e){let n=Date.now()-o,i=Rs(e);t.warning(`Failed to bootstrap OpenCode server`,{error:i,timeoutMs:r,budgetedMs:s,elapsedMs:n});try{c?.close()}catch{}return G(/* @__PURE__ */ Error(`Server bootstrap failed: ${i}`))}}function O_(e){return e.trim().replace(/^v(?=\d)/,``).replace(/^(\d+\.\d+\.\d+)-harness\./,`$1+harness.`)}async function k_(e,t){let{logger:n,opencodeVersion:r}=e,i=qn.env.OPENCODE_PATH??null,a=await t.verifyOpenCodeAvailable(i,n);if(a.available&&a.version!=null){if(O_(a.version)===O_(r))return n.info(`OpenCode already available`,{version:a.version}),{path:i??`opencode`,version:a.version,didSetup:!1};let e={foundVersion:a.version,requestedVersion:r,source:i===null?`PATH`:`OPENCODE_PATH`};i===null?n.info(`Existing OpenCode does not match the pinned version, running auto-setup`,e):n.warning(`Existing OpenCode does not match the pinned version, running auto-setup`,e)}else n.info(`OpenCode not found, running auto-setup`,{requestedVersion:r});let o={opencodeVersion:r,authJson:e.authJson,appId:null,privateKey:null,opencodeConfig:e.opencodeConfig,systematicConfig:e.systematicConfig,systematicVersion:e.systematicVersion,credential:e.credential},s=await t.runSetup(o,e.githubToken);if(s==null)throw Error(`Auto-setup failed: runSetup returned null`);return t.addToPath(s.opencodePath),qn.env.OPENCODE_PATH=s.opencodeBinaryPath,n.info(`Auto-setup completed`,{version:s.opencodeVersion,path:s.opencodePath,binaryPath:s.opencodeBinaryPath}),{path:s.opencodeBinaryPath,version:s.opencodeVersion,didSetup:!0}}async function A_(e,t,n){try{let r=await c({baseUrl:e}).session.update({sessionID:t,time:{archived:Date.now()}});return r.error==null?(n.debug(`Archived session via SDK`,{sessionId:t}),!0):(n.warning(`SDK session archive failed`,{sessionId:t,error:Hs(r.error)}),!1)}catch(e){return n.warning(`SDK session archive failed`,{sessionId:t,error:Rs(e)}),!1}}const j_=e=>typeof e==`object`&&!!e,M_=e=>typeof e==`string`?e:null,N_=e=>typeof e==`number`?e:null;function P_(e){if(Array.isArray(e))return e.filter(j_).map(e=>({file:M_(e.file)??``,additions:N_(e.additions)??0,deletions:N_(e.deletions)??0}))}function F_(e){return{id:e.id,version:e.version,projectID:e.projectID,directory:e.directory,parentID:e.parentID,title:e.title,time:{created:e.time.created,updated:e.time.updated,compacting:e.time.compacting,archived:e.time.archived},summary:e.summary==null?void 0:{additions:e.summary.additions,deletions:e.summary.deletions,files:e.summary.files,diffs:P_(e.summary.diffs)},share:e.share?.url==null?void 0:{url:e.share.url},permission:e.permission==null?void 0:{rules:e.permission.rules},revert:e.revert==null?void 0:{messageID:e.revert.messageID,partID:e.revert.partID,snapshot:e.revert.snapshot,diff:e.revert.diff}}}function I_(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!j_(n))continue;let e=M_(n.content),r=M_(n.status),i=M_(n.priority);e!=null&&r!=null&&i!=null&&t.push({...M_(n.id)==null?{}:{id:M_(n.id)??``},content:e,status:r===`pending`||r===`in_progress`||r===`completed`||r===`cancelled`?r:`pending`,priority:i===`high`||i===`medium`||i===`low`?i:`medium`})}return t}function L_(e){return e.status===`running`?{status:`running`,input:e.input,time:{start:e.time.start}}:e.status===`error`?{status:`error`,input:e.input,error:e.error,time:{start:e.time.start,end:e.time.end}}:e.status===`pending`?{status:`pending`}:{status:`completed`,input:e.input,output:e.output,title:e.title,metadata:e.metadata,time:{start:e.time.start,end:e.time.end,compacted:e.time.compacted},attachments:void 0}}function R_(e){let t={id:e.id,sessionID:e.sessionID,messageID:e.messageID};if(e.type===`text`)return{...t,type:`text`,text:e.text,synthetic:e.synthetic,ignored:e.ignored,time:e.time,metadata:e.metadata};if(e.type===`reasoning`)return{...t,type:`reasoning`,reasoning:e.reasoning??e.text,time:e.time};if(e.type===`tool`)return{...t,type:`tool`,callID:e.callID,tool:e.tool,state:L_(e.state),metadata:e.metadata};if(e.type!==`step-finish`)return{...t,type:`text`,text:`text`in e?e.text:``};let n=e;return{...t,type:`step-finish`,reason:n.reason,snapshot:n.snapshot,cost:n.cost,tokens:{input:n.tokens.input,output:n.tokens.output,reasoning:n.tokens.reasoning,cache:{read:n.tokens.cache.read,write:n.tokens.cache.write}}}}function z_(e){if(e.role===`user`){let t=e;return{id:t.id,sessionID:t.sessionID,role:`user`,time:{created:t.time.created},summary:t.summary==null?void 0:{title:t.summary.title,body:t.summary.body,diffs:P_(t.summary.diffs)??[]},agent:t.agent,model:{providerID:t.model.providerID,modelID:t.model.modelID},system:t.system,tools:t.tools,variant:t.variant}}let t=e;return{id:t.id,sessionID:t.sessionID,role:`assistant`,time:{created:t.time.created,completed:t.time.completed},parentID:t.parentID,modelID:t.modelID,providerID:t.providerID,mode:t.mode,agent:t.agent??``,path:{cwd:t.path.cwd,root:t.path.root},summary:t.summary,cost:t.cost,tokens:{input:t.tokens.input,output:t.tokens.output,reasoning:t.tokens.reasoning,cache:{read:t.tokens.cache.read,write:t.tokens.cache.write}},finish:t.finish,error:t.error?{name:t.error.name,message:M_(t.error.data.message)??``}:void 0}}function B_(e){return[...e.map(e=>{let t=z_(`info`in e?e.info:e),n=`parts`in e?e.parts.map(R_):void 0;return n==null||n.length===0?t:{...t,parts:n}})].sort((e,t)=>e.time.created-t.time.created)}async function V_(e,t,n){let r=await e.session.list({query:{directory:t}});return r.error==null&&r.data!=null?Array.isArray(r.data)?r.data.map(F_):(n.warning(`SDK session list returned a non-array payload`,{source:`listSessionsForProject`,type:typeof r.data}),[]):(n.warning(`SDK session list failed`,{source:`listSessionsForProject`,error:Rs(r.error)}),[])}async function H_(e,t,n){let r=await e.session.get({path:{id:t}});return r.error!=null||r.data==null?(n.warning(`SDK session get failed`,{error:Rs(r.error)}),null):F_(r.data)}async function U_(e,t,n){let r=await e.session.messages({path:{id:t}});return r.error==null&&r.data!=null?Array.isArray(r.data)?B_(r.data):(n.warning(`SDK session messages returned a non-array payload`,{type:typeof r.data}),[]):(n.warning(`SDK session messages failed`,{error:Rs(r.error)}),[])}async function W_(e,t,n){let r=await e.session.todos({path:{id:t}});return r.error==null&&r.data!=null?Array.isArray(r.data)?I_(r.data):(n.warning(`SDK session todos returned a non-array payload`,{type:typeof r.data}),[]):(n.warning(`SDK session todos failed`,{error:Rs(r.error)}),[])}async function G_(e,t,n,r){let i=await e.session.list({query:{directory:t,start:n,roots:!0,limit:10}});if(i.error!=null||i.data==null)return r.warning(`SDK session list failed`,{source:`findLatestSession`,error:Rs(i.error)}),null;if(!Array.isArray(i.data))return r.warning(`SDK session list returned a non-array payload`,{source:`findLatestSession`,type:typeof i.data}),null;if(i.data.length===0)return null;let a=i.data.map(F_).reduce((e,t)=>t.time.created>e.time.created?t:e);return{projectID:a.projectID,session:a}}async function K_(e,t,n){let r=await e.session.delete({path:{id:t}});r.error==null?n.debug(`Deleted session via SDK`,{sessionID:t}):n.warning(`SDK session delete failed`,{sessionID:t,error:Rs(r.error)})}async function q_(e,t,n,r){let{limit:i,fromDate:a,toDate:o}=n;r.debug(`Listing sessions`,{directory:t,limit:i});let s=[...(await V_(e,t,r)).filter(e=>!(e.parentID!=null||e.time.archived!=null||e.time.compacting!=null||a!=null&&e.time.createdo.getTime()))].sort((e,t)=>t.time.updated-e.time.updated),c=[],l=i==null?s:s.slice(0,i);for(let t of l){let n=await U_(e,t.id,r),i=J_(n);c.push({id:t.id,projectID:t.projectID,directory:t.directory,title:t.title,createdAt:t.time.created,updatedAt:t.time.updated,messageCount:n.length,agents:i,isChild:!1})}return r.info(`Listed sessions`,{count:c.length,directory:t}),c}function J_(e){let t=/* @__PURE__ */ new Set;for(let n of e)n.agent!=null&&t.add(n.agent);return[...t]}async function Y_(e,t,n,r,i){let{limit:a=20,caseSensitive:o=!1,sessionId:s,excludeSessionIds:c=[]}=r,l=new Set(c);i.debug(`Searching sessions`,{query:e,directory:n,limit:a,caseSensitive:o});let u=o?e:e.toLowerCase(),d=[],f=0;if(s!=null){if(l.has(s))return d;let e=await X_(t,s,u,o,i);return e.length>0&&d.push({sessionId:s,matches:e.slice(0,a)}),d}let p=(await q_(t,n,{},i)).filter(e=>l.has(e.id)===!1);for(let e of p){if(f>=a)break;let n=await X_(t,e.id,u,o,i);if(n.length>0){let t=a-f;d.push({sessionId:e.id,matches:n.slice(0,t)}),f+=Math.min(n.length,t)}}return i.info(`Session search complete`,{query:e,resultCount:d.length,totalMatches:f}),d}async function X_(e,t,n,r,i){let a=await U_(e,t,i),o=[];for(let e of a){let t=e.parts??[];for(let i of t){let t=Z_(i);if(t==null)continue;let a=r?t:t.toLowerCase();if(a.includes(n)){let r=a.indexOf(n),s=Math.max(0,r-50),c=Math.min(t.length,r+n.length+50),l=t.slice(s,c);o.push({messageId:e.id,partId:i.id,excerpt:`...${l}...`,role:e.role,agent:e.agent})}}}return o}function Z_(e){switch(e.type){case`text`:return e.text;case`reasoning`:return e.reasoning;case`tool`:return e.state.status===`completed`?`${e.tool}: ${e.state.output}`:null;case`step-finish`:return null}}async function Q_(e,t,n){let r=await H_(e,t,n);if(r==null)return null;let i=await U_(e,t,n),a=J_(i),o=await W_(e,t,n);return{session:r,messageCount:i.length,agents:a,hasTodos:o.length>0,todoCount:o.length,completedTodos:o.filter(e=>e.status===`completed`).length}}const $_=`opencode.db`,ev=`${$_}-wal`,tv=`${$_}-shm`,nv=[$_,ev,tv],rv=[$_],iv=`opencode.db`,av=`${iv}-wal`,ov=`${iv}-shm`,sv=[iv,av,ov],cv=[iv];function lv(e){return e===`v2`?{main:iv,wal:av,shm:ov,family:sv,transportable:cv}:{main:$_,wal:ev,shm:tv,family:nv,transportable:rv}}function uv(){let e=qn.env.XDG_DATA_HOME??Mr.join(Hr.homedir(),`.local`,`share`);return Mr.join(e,`opencode`,$_)}async function dv(e){if(e!=null)return pv(e,`1.2.0`)>=0;try{return await Ar.access(uv()),!0}catch{return!1}}function fv(e){let t=e.split(`+`)[0]??e;return t.split(`-`)[0]??t}function pv(e,t){let n=fv(e).split(`.`).map(Number),r=fv(t).split(`.`).map(Number);for(let e=0;e<3;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}const mv={debug:()=>{},info:()=>{},warning:()=>{},error:()=>{}};function hv(e){return`session store unavailable: ${e}`}function gv(e){return new Date(e).toISOString()}function _v(e){return typeof e==`string`&&e.length>0?e:void 0}function vv(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function yv(e){return typeof e==`boolean`?e:void 0}function bv(e){if(e==null)return;let t=new Date(e);return Number.isNaN(t.getTime())?void 0:t}function xv(e){let t=bv(e);if(t==null)return;let n=new Date(t);return n.setUTCHours(23,59,59,999),n}function Sv(e){return e==null||e<1?void 0:e}function Cv(e){let t=(e.parts??[]).map(e=>Z_(e)).filter(e=>e!=null).join(` `);return t.length>0?`[${e.role}] ${t}`:`[${e.role}] (no content)`}function wv(e){let t=[],n=0,r=0;for(let i of e){let e=` ${Cv(i)}`;if(n+e.length>48e3)break;t.push(e),n+=e.length,r+=1}return r`${e.id} ${e.title||`(untitled)`} updated ${gv(e.updatedAt)}`).join(` +`)}catch(e){return hv(Rs(e))}}},read:{description:`Read a session: header, optional todos, and optional transcript.`,args:{session_id:pm().describe(`The session id to read (required).`),include_todos:Lm().describe(`Include the session todo list.`).optional(),include_transcript:Lm().describe(`Include the message transcript.`).optional(),limit:Nm().describe(`Maximum number of transcript messages to include.`).optional()},async execute(e){let n=t();if(`reason`in n)return hv(n.reason);let r=_v(e.session_id);if(r==null)return hv(`session_id is required`);try{let t=i_({baseUrl:n.baseUrl}),i=await H_(t,r,mv);if(i==null)return`session not found: ${r}`;let a=[`Session ${i.id}`,`Title: ${i.title||`(untitled)`}`,`Created: ${gv(i.time.created)}`,`Updated: ${gv(i.time.updated)}`];if(yv(e.include_todos)===!0){let e=await W_(t,r,mv);if(a.push(``,`Todos:`),e.length===0)a.push(` (none)`);else for(let t of e)a.push(` [${t.status}] ${t.content}`)}if(yv(e.include_transcript)===!0){let n=Sv(vv(e.limit)),i=await U_(t,r,mv),o=n==null?i:i.slice(0,n);a.push(``,`Transcript:`),o.length===0?a.push(` (empty)`):a.push(...wv(o))}return a.join(` +`)}catch(e){return hv(Rs(e))}}},search:{description:`Search prior session content for matching text, optionally scoped to one session.`,args:{query:pm().describe(`Text to search for (required).`),session_id:pm().describe(`Restrict the search to a single session id.`).optional(),case_sensitive:Lm().describe(`Match case-sensitively.`).optional(),limit:Nm().describe(`Maximum number of matches to return.`).optional()},async execute(e){let n=t();if(`reason`in n)return hv(n.reason);let r=_v(e.query);if(r==null)return hv(`query is required`);try{let t=i_({baseUrl:n.baseUrl}),i=qn.cwd(),a=_v(e.session_id);if(a!=null&&await H_(t,a,mv)==null)return`session not found: ${a}`;let o=await Y_(r,t,i,{limit:Sv(vv(e.limit)),caseSensitive:yv(e.case_sensitive),sessionId:a},mv);if(o.length===0)return`No matches found.`;let s=[];for(let e of o){s.push(`Session ${e.sessionId}:`);for(let t of e.matches)s.push(` [${t.role}${t.agent==null?``:`/${t.agent}`}] ${t.excerpt}`)}return s.join(` +`)}catch(e){return hv(Rs(e))}}},info:{description:`Summarize a session: id, title, timestamps, message and todo counts.`,args:{session_id:pm().describe(`The session id to summarize (required).`)},async execute(e){let n=t();if(`reason`in n)return hv(n.reason);let r=_v(e.session_id);if(r==null)return hv(`session_id is required`);try{let e=await Q_(i_({baseUrl:n.baseUrl}),r,mv);return e==null?`session not found: ${r}`:Ev(e.session,{messageCount:e.messageCount,agents:e.agents,hasTodos:e.hasTodos,todoCount:e.todoCount,completedTodos:e.completedTodos})}catch(e){return hv(Rs(e))}}}}}function Ev(e,t){return[`Session ${e.id}`,`Title: ${e.title||`(untitled)`}`,`Created: ${gv(e.time.created)}`,`Updated: ${gv(e.time.updated)}`,`Messages: ${t.messageCount}`,`Agents: ${t.agents.length>0?t.agents.join(`, `):`(none)`}`,`Todos: ${t.hasTodos?`${t.completedTodos}/${t.todoCount} completed`:`(none)`}`].join(` +`)}const{list:Jee,read:Yee,search:Xee,info:Zee}=Tv(()=>qn.env.FRO_BOT_OPENCODE_URL);function Dv(e){return Object.assign(Error(e),{code:`OBJECT_STORE_VALIDATION_ERROR`})}function Ov(e){return Object.assign(Error(e),{code:`OBJECT_STORE_PATH_TRAVERSAL_ERROR`})}function kv(e,t){return Object.assign(Error(e),{code:`OBJECT_STORE_OPERATION_ERROR`,...t?.errorCode!==void 0&&{errorCode:t.errorCode},...t?.errorName!==void 0&&{errorName:t.errorName},...t?.httpStatusCode!==void 0&&{httpStatusCode:t.httpStatusCode}})}const Av=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function jv(e){return e[0]===127}function Mv(e){let t=e[0],n=e[1];return t===10||t===172&&n!==void 0&&n>=16&&n<=31||t===192&&n===168}function Nv(e){let t=e[0],n=e[1];return t===169&&n===254}function Pv(e){return e.every(e=>e===0)}function Fv(e){return Pv(e)||jv(e)?`loopback`:Nv(e)?`link-local`:Mv(e)?`private-network`:null}function Iv(e){let t=Av.exec(e);if(t===null)return null;let n=[t[1]??``,t[2]??``,t[3]??``,t[4]??``].map(e=>Number.parseInt(e,10));return n.some(e=>Number.isNaN(e)||e>255)?null:Fv(n)}const Lv=/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/;function Rv(e){let t=e.toLowerCase();if(t===`::1`||t===`::`||t===`0:0:0:0:0:0:0:0`)return`loopback`;if(t.startsWith(`fe8`)||t.startsWith(`fe9`)||t.startsWith(`fea`)||t.startsWith(`feb`))return`link-local`;if(t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fec`)||t.startsWith(`fed`)||t.startsWith(`fee`)||t.startsWith(`fef`))return`private-network`;if(t.startsWith(`::ffff:`)){let e=t.slice(7);if(e.includes(`.`)){if(Av.test(e)===!1)return`private-network`;let t=Iv(e);if(t!==null)return t}else{let t=Lv.exec(e);if(t!==null){let e=Number.parseInt(t[1]??``,16),n=Number.parseInt(t[2]??``,16);if(Number.isNaN(e)===!1&&Number.isNaN(n)===!1){let t=Fv([e>>8&255,e&255,n>>8&255,n&255]);if(t!==null)return t}}}return`ipv6-literal`}return`ipv6-literal`}function zv(e){let t=Av.exec(e);if(t===null)return null;let n=[t[1]??``,t[2]??``,t[3]??``,t[4]??``].map(e=>Number.parseInt(e,10));return n.some(e=>Number.isNaN(e)||e>255)?null:n}function Bv(e){if(e.includes(`.`))return zv(e);let t=Lv.exec(e);if(t===null)return null;let n=Number.parseInt(t[1]??``,16),r=Number.parseInt(t[2]??``,16);return[n>>8&255,n&255,r>>8&255,r&255]}const Vv=/* @__PURE__ */ new Set([`169.254.169.254`,`169.254.170.2`,`100.100.100.200`]);function Hv(e){let[t,n,r]=e;return Vv.has(e.join(`.`))?`metadata`:Fv(e)!==null||t===0||t===100&&n!==void 0&&n>=64&&n<=127||t===192&&n===0&&r===2||t===198&&n===51&&r===100||t===203&&n===0&&r===113?`internal`:null}function Uv(e){let t=zv(e);return t===null?null:Hv(t)}function Wv(e){let t=e.toLowerCase();if(t.startsWith(`::ffff:`)){let e=t.slice(7),n=Bv(e)??(e.startsWith(`0:`)?Bv(e.slice(2)):null);return n===null?`internal`:Hv(n)}return t===`fd00:ec2::254`?`metadata`:Rv(t)!==`ipv6-literal`||t.startsWith(`2001:db8:`)?`internal`:null}const Gv=/^[0-9a-z][\w.-]{0,63}$/i;function Kv(e){return[...e].some(e=>{let t=e.codePointAt(0);return t!=null&&(t<=31||t===127)})}function qv(e){return[...e].filter(e=>{let t=e.codePointAt(0);return t==null||t>31&&t!==127}).join(``)}function Jv(e){return e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function Yv(e){let t=Jv(e.toLowerCase()),n=t.endsWith(`.`)?t.slice(0,-1):t;if(n===`metadata.google.internal`)return`metadata`;if(n===`localhost`||n.endsWith(`.localhost`))return`internal`;let r=hr.isIP(n);return r===4?Uv(n):r===6?Wv(n):null}function Xv(e,t){let n;try{n=new URL(e)}catch{return G(Dv(`s3 endpoint must be a valid URL`))}if(t===!1&&n.protocol!==`https:`)return G(Dv(`s3 endpoint must use https unless insecure endpoints are explicitly allowed`));let r=Yv(n.hostname);return r===`metadata`?G(Dv(`s3 endpoint must not target cloud instance metadata services`)):t===!1&&r===`internal`?G(Dv(`s3 endpoint must not target loopback, link-local, or private network addresses`)):n.username.length>0||n.password.length>0?G(Dv(`s3 endpoint must not include embedded credentials`)):Ls(n)}function Zv(e){let t=e.trim();return t.length===0?G(Dv(`object store prefix cannot be empty`)):t.includes(`..`)||t.startsWith(`/`)?G(Dv(`object store prefix must not contain traversal or absolute path markers`)):Kv(t)?G(Dv(`object store prefix must not contain control characters`)):Gv.test(t)===!1?G(Dv(`object store prefix must match the allowed naming pattern`)):Ls(t)}function Qv(e){if(e.includes(`\0`))return G(Dv(`object store key components must not contain null bytes`));let t=qv(e).replaceAll(`/`,`-`).replaceAll(`\\`,`-`).trim();return t.length===0?G(Dv(`object store key components must not be empty`)):t.includes(`..`)?G(Dv(`object store key components must not contain traversal markers`)):Ls(t)}function $v(e,t){let n=Mr.resolve(e);if(t.includes(`\0`))return G(Ov(`download path must not contain null bytes`));if(Mr.isAbsolute(t))return G(Ov(`download path must be relative to the storage root`));let r=Mr.resolve(n,t),i=`${n}${Mr.sep}`;return r.startsWith(i)===!1?G(Ov(`download path escapes the storage root`)):Ls(r)}function ey(e){let t=e.trim();if(t.length===0)return G(Dv(`repository path must not be empty`));let n=t.split(`/`).filter(e=>e.length>0);return n.length===0||n.length>2?G(Dv(`repository path must be "owner/repo" or a single component`)):Ls(n)}function ty(e,t,n,r,i){let a=Zv(e.prefix);if(a.success===!1)return G(a.error);let o=Qv(t);if(o.success===!1)return G(o.error);let s=ey(n);if(s.success===!1)return G(s.error);let c=[];for(let e of s.data){let t=Qv(e);if(t.success===!1)return G(t.error);c.push(t.data)}let l=c.join(`/`),u=`${a.data}/${o.data}/${l}/${r}`;if(i==null)return Ls(`${u}/`);let d=Qv(i);return d.success===!1?G(d.error):Ls(`${u}/${d.data}`)}function ny(e){if(e.storeAdapter.conditionalPut==null)throw Error(`Object store adapter does not support conditionalPut`);return e.storeAdapter.conditionalPut}function ry(e){if(e.storeAdapter.conditionalDelete==null)throw Error(`Object store adapter does not support conditionalDelete`);return e.storeAdapter.conditionalDelete}function iy(e){if(e.storeAdapter.getObject==null)throw Error(`Object store adapter does not support getObject`);return e.storeAdapter.getObject}function ay(e){try{return Ls(ny(e))}catch(e){return G(e instanceof Error?e:Error(String(e)))}}function oy(e){try{return Ls(ry(e))}catch(e){return G(e instanceof Error?e:Error(String(e)))}}function sy(e){try{return Ls(iy(e))}catch(e){return G(e instanceof Error?e:Error(String(e)))}}const cy=Symbol(`lease-loop-budget-elapsed`),ly=`Coordination lease renewal threw`,uy=`Coordination lease tick failed after renewal`;function dy(e){return e instanceof Error?e:Error(String(e))}function fy(e){let{renew:t,intervalMs:n,tickTimeoutMs:r,stopBudgetMs:i,unref:a,abortOnDeadline:o,tick:s,finalize:c,adopt:l,logger:u}=e,d=e.logContext??{},f=e.initialEtag,p=null,m=!1,h=!1,g=!1,v=!1,y=null,b=null,x=e=>{a&&e.unref()},S=(e,t)=>Object.assign(Error(e.message,{cause:e}),{lockEtag:f,tickPending:t}),C=(e,t)=>{p=t,e.renewalConfirmed===!1&&(m=!0)},w=(e,t,n)=>{try{u[e](t,{...d,...n})}catch{}},T=(e,t)=>{w(`warning`,e,{error:t.message})},E=async e=>{if(l===void 0)return null;try{return await l(e)}catch(e){return w(`debug`,`Lease adoption read failed`,{error:dy(e).message}),null}},D=e=>e===null||e.etag===f?!1:(f=e.etag,h=!1,w(`info`,`Coordination lease ETag adopted after a renewal outcome was lost`,{etag:e.etag}),!0),O=(e,t,n,r)=>{let i=e.renewalFailure;i!==null&&i.adopted&&i.error===t?(p=null,e.renewalConfirmed===!1&&(m=!0),r()):(C(e,t),r(),T(n,t))},k=()=>{if(b!=null)return;let e=o?new AbortController:void 0,n=()=>{},i={controller:e,settled:new Promise(e=>{n=e}),superseded:!1,concluded:!1,renewalConfirmed:!1,renewalFailure:null,timer:void 0};b=i;let a=()=>{i.concluded||(i.concluded=!0,clearTimeout(i.timer),b===i&&(b=null),n())};i.timer=setTimeout(()=>{if(i.concluded)return;i.superseded=!0;let t=i.renewalConfirmed,n=/* @__PURE__ */ Error(t?`Lease tick exceeded ${r}ms`:`Lease renewal exceeded ${r}ms`);C(i,n),e?.abort(n),a(),T(t?uy:ly,n)},r),x(i.timer);let c={signal:e?.signal,isStopping:()=>v,isCurrent:()=>i.superseded===!1,renewLock:async n=>{if(v||i.superseded)return`skipped`;let r=async()=>{let t=i.renewalFailure;if(l===void 0||t===null||v||i.superseded)return;let n=await E(e?.signal);i.superseded||n===null||n.etag===f||(T(t.message,t.error),D(n)&&(t.adopted=!0))},a;h=!0;try{a=e===void 0?await t(n,f):await t(n,f,e.signal)}catch(e){let t=dy(e);throw i.superseded===!1&&(i.renewalFailure={error:t,message:ly,adopted:!1},await r()),t}if(a.success===!1)throw i.superseded===!1&&(i.renewalFailure={error:a.error,message:`Coordination lease renewal failed`,adopted:!1},await r()),a.error;return i.superseded?`skipped`:(f=a.data.etag,h=!1,i.renewalConfirmed=!0,i.renewalFailure=null,`renewed`)}};(async()=>s(c))().then(()=>{if(i.concluded)return;let e=i.renewalFailure;e===null?(i.renewalConfirmed&&(p=null),a()):O(i,e.error,e.message,a)},e=>{if(i.concluded)return;let t=dy(e),n=t===i.renewalFailure?.error?i.renewalFailure.message:i.renewalConfirmed?uy:ly;O(i,t,n,a)})};return{start:()=>{g||(v?u.debug(`Ignoring start of a stopped lease loop`,d):(g=!0,y=setInterval(k,n),x(y)))},stop:async()=>{g=!1,v=!0,y!=null&&(clearInterval(y),y=null);let e,t=new Promise(t=>{e=setTimeout(()=>t(cy),i),x(e)});try{let e=b;if(e!=null&&await Promise.race([e.settled,t])===cy&&e.concluded===!1)return m=!0,e.timer?.unref(),e.controller?.abort(/* @__PURE__ */ Error(`Lease stop budget elapsed`)),G(S(/* @__PURE__ */ Error(`Lease tick did not settle within ${i}ms of stop`),!0));if(p!=null){if(h){let e=o?new AbortController:void 0,n=await Promise.race([E(e?.signal),t]);n===cy?e?.abort(/* @__PURE__ */ Error(`Lease stop budget elapsed`)):D(n)}return G(S(p,!1))}if(c===void 0)return Ls({lockEtag:f,final:void 0});let n=o?new AbortController:void 0,r=n===void 0?c():c(n.signal),a=await Promise.race([r,t]);return a===cy?(n?.abort(/* @__PURE__ */ Error(`Lease stop budget elapsed`)),G(S(/* @__PURE__ */ Error(`Lease finalize did not settle within ${i}ms of stop`),!1))):Ls({lockEtag:f,final:a})}catch(e){return G(S(dy(e),!1))}finally{clearTimeout(e)}},settle:async()=>{let e=b;e!=null&&await e.settled},currentEtag:()=>f,hasFailed:()=>p!=null,continuityUnverified:()=>m,get isRunning(){return g}}}function py(e,t,n,r){let i=ty(e.storeConfig,t,n,`runs`,`${r}.json`);return i.success===!1?G(i.error):Ls(i.data)}function my(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.run_id==`string`&&(t.surface===`github`||t.surface===`discord`||t.surface===`web`)&&typeof t.thread_id==`string`&&typeof t.entity_ref==`string`&&(t.phase===`PENDING`||t.phase===`ACKNOWLEDGED`||t.phase===`EXECUTING`||t.phase===`COMPLETED`||t.phase===`FAILED`||t.phase===`CANCELLED`)&&typeof t.started_at==`string`&&typeof t.last_heartbeat==`string`&&typeof t.holder_id==`string`&&typeof t.details==`object`&&t.details!=null&&Array.isArray(t.details)===!1}function hy(e){try{let t=JSON.parse(e);return my(t)===!1?G(/* @__PURE__ */ Error(`Invalid run-state payload`)):Ls(t)}catch{return G(/* @__PURE__ */ Error(`Run-state payload is not valid JSON`))}}function gy(e){return{kind:`unknown`,source:`unavailable`,directory:null,reason:e}}function _y(e){return typeof e==`string`}function vy(e){if(typeof e!=`object`||!e)return gy(`confirmation-malformed`);let t=e,n=t.source===`opencode-session-status`;return t.kind===`clear`&&n&&_y(t.directory)&&_y(t.checkedAt)?{kind:`clear`,source:`opencode-session-status`,directory:t.directory,checkedAt:t.checkedAt}:t.kind===`busy`&&n&&_y(t.directory)&&_y(t.checkedAt)&&Array.isArray(t.sessionIds)&&t.sessionIds.every(_y)?{kind:`busy`,source:`opencode-session-status`,directory:t.directory,checkedAt:t.checkedAt,sessionIds:t.sessionIds}:t.kind===`unknown`&&(t.source===`opencode-session-status`||t.source===`unavailable`)&&(t.directory===null||_y(t.directory))&&_y(t.reason)?{kind:`unknown`,source:t.source,directory:t.directory,reason:t.reason}:gy(`confirmation-malformed`)}async function yy(e,t,n,r=5e3){let i=new AbortController,a,o=new Promise(e=>{a=setTimeout(()=>{i.abort(),e(gy(`confirmation-timeout`))},r)}),s=(async()=>e({repo:t,holder:n,signal:i.signal}))().then(vy,()=>gy(`confirmation-failed`));try{return await Promise.race([s,o])}finally{clearTimeout(a)}}function by(e,t){let n=e[t];return typeof n==`string`?n:null}async function xy(e,t,n,r=2e3){if(n.surface===`github`)return{kind:`unknown`,reason:`not-written-by-action`};let i=e.storeAdapter.getObject;if(i==null)return{kind:`unknown`,reason:`adapter-lacks-getObject`};let a=py(e,n.holder_id,t,n.run_id);if(a.success===!1)return{kind:`unknown`,reason:`run-state-key-invalid`};let o,s=new Promise(e=>{o=setTimeout(()=>e({kind:`unknown`,reason:`run-state-read-timeout`}),r)}),c=(async()=>{let e=await i(a.data);if(e.success===!1)return{kind:`unknown`,reason:`run-state-unavailable`};let t=hy(e.data.data);if(t.success===!1)return{kind:`unknown`,reason:`run-state-malformed`};let{details:n}=t.data,r=n.ownedSessionIds;return{kind:`known`,phase:t.data.phase,lastHeartbeat:t.data.last_heartbeat,quarantined:typeof n.quarantined==`boolean`?n.quarantined:null,quarantineReason:by(n,`failureKind`),quarantineHoldUntil:by(n,`quarantineHoldUntil`),persistedRootSessionId:by(n,`rootSessionId`),persistedOwnedSessionCount:Array.isArray(r)?r.length:null}})().catch(()=>({kind:`unknown`,reason:`run-state-read-failed`}));try{return await Promise.race([c,s])}finally{clearTimeout(o)}}function Sy(e,t){return t===null?{confirmationSource:e,confirmationDirectory:null,confirmationCheckedAt:null,confirmationBusyCount:null,confirmationBusySessionIds:null,confirmationUnknownReason:null}:{confirmationSource:e,confirmationDirectory:t.directory,confirmationCheckedAt:t.kind===`unknown`?null:t.checkedAt,confirmationBusyCount:t.kind===`busy`?t.sessionIds.length:null,confirmationBusySessionIds:t.kind===`busy`?t.sessionIds.slice(0,32):null,confirmationUnknownReason:t.kind===`unknown`?t.reason:null}}function Cy(e){return e.kind===`unknown`?{oldRunState:`unknown: ${e.reason}`}:{oldRunState:`known`,oldRunPhase:e.phase,oldRunLastHeartbeat:e.lastHeartbeat,oldRunQuarantined:e.quarantined,oldRunQuarantineReason:e.quarantineReason,oldRunQuarantineHoldUntil:e.quarantineHoldUntil,oldRunPersistedRootSessionId:e.persistedRootSessionId,oldRunPersistedOwnedSessionCount:e.persistedOwnedSessionCount}}function wy(e,t,n,r,i,a){let{holder:o,now:s,replacement:c}=n,l=new Date(o.acquired_at).getTime()+o.ttl_seconds*1e3;e.info(t,{operation:n.operation,correlationId:n.correlationId,repo:n.repo,oldHolderId:o.holder_id,oldRunId:o.run_id,oldSurface:o.surface,oldAcquiredAt:o.acquired_at,oldTtlSeconds:o.ttl_seconds,oldExpiryAgeMs:s.getTime()-l,newHolderId:c?.holderId??null,newRunId:c?.runId??null,newSurface:c?.surface??null,...Cy(n.evidence),decision:r,...Sy(i,a)})}function Ty(e){return e.kind===`busy`?`blocked-busy`:`blocked-unknown`}const Ey={repo:`repo.json`,action:`action.json`};function Dy(e,t,n=`repo`){let r=ty(e.storeConfig,`coordination`,t,`locks`,Ey[n]);return r.success===!1?G(r.error):Ls(r.data)}const Oy=/^[\w.-]+$/;function ky(e){return Oy.test(e)}const Ay=/^[\w-]{8,64}$/;function jy(e){return Ay.test(e)}function My(e){return/pre-?condition/.test(e.message.toLowerCase())}function Ny(e){let t=e;return t.httpStatusCode===void 0?t.errorCode===void 0?t.errorName===void 0?/nosuchkey|not found|does not exist/i.test(e.message):t.errorName===`NoSuchKey`:t.errorCode===`NoSuchKey`:t.httpStatusCode===404}function Py(e,t){return new Date(e).getTime()+t*1e3}function Fy(e,t){return Py(e.acquired_at,e.ttl_seconds)<=t.getTime()}function Iy(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.repo==`string`&&typeof t.holder_id==`string`&&(t.surface===`github`||t.surface===`discord`||t.surface===`web`)&&typeof t.acquired_at==`string`&&typeof t.ttl_seconds==`number`&&Number.isFinite(t.ttl_seconds)&&Number.isFinite(Py(t.acquired_at,t.ttl_seconds))&&typeof t.run_id==`string`}function Ly(e){try{let t=JSON.parse(e);if(Iy(t)===!1)return G(/* @__PURE__ */ Error(`Invalid lock record payload`));let{holder_job:n,acquisition_token:r,...i}=t,a=typeof n==`string`&&ky(n),o=typeof r==`string`&&jy(r);return Ls({...i,...a?{holder_job:n}:{},...o?{acquisition_token:r}:{}})}catch(e){return G(e instanceof Error?e:Error(String(e)))}}function Ry(e,t,n,r,i,a,o,s){return{repo:e,holder_id:t,surface:n,acquired_at:a,ttl_seconds:i,run_id:r,...o===void 0?{}:{holder_job:o},...s===void 0?{}:{acquisition_token:s}}}async function zy(e,t,n,r,i,a,o={}){let s=Dy(e,t,o.scope);if(s.success===!1)return G(s.error);let c=ay(e);if(c.success===!1)return G(c.error);let l=sy(e);if(l.success===!1)return G(l.error);a.debug(`Attempting lock acquisition`,{key:s.data,repo:t,runId:i,surface:r});let u=async()=>{let a=Ry(t,n,r,i,e.lockTtlSeconds,(/* @__PURE__ */ new Date()).toISOString(),o.holderJob,o.acquisitionToken);return c.data(s.data,JSON.stringify(a),{ifNoneMatch:`*`})},d=e=>typeof e!=`string`||e.length===0?G(/* @__PURE__ */ Error(`Lock acquisition succeeded without a usable ETag`)):Ls({acquired:!0,outcome:`acquired`,etag:e,holder:null}),f=await u();if(f.success===!0)return d(f.data.etag);if(My(f.error)===!1)return G(f.error);let p=await l.data(s.data);if(p.success===!1&&Ny(p.error)===!0){let e=await u();if(e.success===!0)return d(e.data.etag);if(My(e.error)===!1)return G(e.error);if(p=await l.data(s.data),p.success===!1&&Ny(p.error)===!0)return Ls({acquired:!1,outcome:`conflict`,etag:null,holder:null})}if(p.success===!1)return G(p.error);let m=Ly(p.data.data);if(m.success===!1)return G(m.error);let h=/* @__PURE__ */ new Date,g=Fy(m.data,h),v=g===!1&&o.reclaimableBeforeExpiry?.(m.data,h)===!0;if(g===!1&&v===!1)return Ls({acquired:!1,outcome:`active-holder`,etag:null,holder:m.data});let y=p.data.etag,b={operation:`acquire`,correlationId:crypto.randomUUID(),repo:t,holder:m.data,evidence:await xy(e,t,m.data),now:h,replacement:{holderId:n,runId:i,surface:r}};wy(a,`lock-takeover-attempt`,b,`pending`,null,null);let x,S=null;if(v===!0?x=`holder-superseded`:o.reclaimableWithoutConfirmation?.(m.data)===!0?x=`holder-surface-reclaimable`:o.confirmExpiredHolder===void 0?(x=`no-corroborator`,S={kind:`unknown`,source:`unavailable`,directory:null,reason:`no-corroborator`}):(S=await yy(o.confirmExpiredHolder,t,m.data),x=S.source),S!==null&&S.kind!==`clear`)return wy(a,`lock-takeover-outcome`,b,Ty(S),x,S),Ls({acquired:!1,outcome:`expired-holder`,etag:null,holder:m.data,confirmation:S});let C=Ry(t,n,r,i,e.lockTtlSeconds,(/* @__PURE__ */ new Date()).toISOString(),o.holderJob,o.acquisitionToken),w=await c.data(s.data,JSON.stringify(C),{ifMatch:y});return w.success===!1?My(w.error)===!0?(wy(a,`lock-takeover-outcome`,b,`cas-conflict`,x,S),Ls({acquired:!1,outcome:`conflict`,etag:null,holder:null})):(wy(a,`lock-takeover-outcome`,b,`store-error`,x,S),G(w.error)):typeof w.data.etag!=`string`||w.data.etag.length===0?(wy(a,`lock-takeover-outcome`,b,`store-error`,x,S),G(/* @__PURE__ */ Error(`Lock acquisition succeeded without a usable ETag`))):(wy(a,`lock-takeover-outcome`,b,`taken-over`,x,S),Ls({acquired:!0,outcome:`acquired`,etag:w.data.etag,holder:null}))}async function By(e,t,n,r,i=`repo`,a){let o=Dy(e,t,i);if(o.success===!1)return G(o.error);let s=oy(e);return s.success===!1?G(s.error):(r.debug(`Releasing lock`,{key:o.data,repo:t}),s.data(o.data,a===void 0?{ifMatch:n}:{ifMatch:n,signal:a}))}async function Vy(e,t,n,r,i=`repo`,a={}){let{holderJob:o,acquisitionToken:s,runId:c,signal:l}=a,u=Dy(e,t,i);if(u.success===!1)return G(u.error);let d=sy(e);if(d.success===!1)return G(d.error);let f=oy(e);if(f.success===!1)return G(f.error);let p=()=>l?.aborted===!0,m=()=>G(/* @__PURE__ */ Error(`Lock release aborted`));if(p())return m();let h=await d.data(u.data,l===void 0?void 0:{signal:l});if(h.success===!1)return Ny(h.error)===!0?Ls(`no-lock`):G(h.error);let g=Ly(h.data.data);if(g.success===!1)return G(g.error);let v=s===void 0||g.data.acquisition_token===s,y=c===void 0||g.data.run_id===c;if(g.data.holder_id!==n||g.data.holder_job!==o||v===!1||y===!1)return r.debug(`Lock held by another holder; not releasing`,{key:u.data,repo:t,heldBy:g.data.holder_id,heldByJob:g.data.holder_job??null}),Ls(`not-holder`);if(p())return m();r.debug(`Releasing lock held by this holder`,{key:u.data,repo:t,holderId:n});let b=await f.data(u.data,l===void 0?{ifMatch:h.data.etag}:{ifMatch:h.data.etag,signal:l});return b.success===!0?Ls(`released`):My(b.error)===!0?Ls(`conflict`):Ny(b.error)===!0?Ls(`no-lock`):G(b.error)}async function Hy(e,t,n,r,i,a=`repo`,o){let s=Dy(e,t,a);if(s.success===!1)return G(s.error);let c=ay(e);if(c.success===!1)return G(c.error);let l={...n,acquired_at:(/* @__PURE__ */ new Date()).toISOString()};return i.debug(`Renewing lock lease`,{key:s.data,repo:t}),c.data(s.data,JSON.stringify(l),o===void 0?{ifMatch:r}:{ifMatch:r,signal:o})}async function Uy(e,t,n=`repo`,r){let i=Dy(e,t,n);if(i.success===!1)return G(i.error);let a=sy(e);if(a.success===!1)return G(a.error);let o=await(r===void 0?a.data(i.data):a.data(i.data,{signal:r}));if(o.success===!1)return Ny(o.error)===!0?Ls(null):G(o.error);let s=Ly(o.data.data);return s.success===!1?G(s.error):Ls({record:s.data,etag:o.data.etag})}function Wy(e){let{config:t,repo:n,scope:r,owns:i,logger:a,logContext:o}=e;return async e=>{let s=await Uy(t,n,r,e);if(s.success===!1||s.data===null)return null;let c=i(s.data.record);return c.owned===!1?(a.debug(`Lock record not adopted`,{...o,reason:c.reason,storedHolderId:s.data.record.holder_id,storedRunId:s.data.record.run_id}),null):{etag:s.data.etag}}}const Gy=3e4,Ky=6e4,qy=18e5,Jy={v1:`sessions`,v2:`sessions-v2`};function Yy(e){return Mr.dirname(e)}function Xy(e,t){return Mr.join(Yy(e),t)}function Zy(e,t,n,r){let i=ty(e,t,n,Jy[r]);return i.success?i.data:null}async function Qy(e){let t=await Ar.readdir(e,{withFileTypes:!0});return(await Promise.all(t.map(async t=>{let n=Mr.join(e,t.name);return t.isDirectory()?Qy(n):t.isFile()?[n]:[]}))).flat().sort((e,t)=>e.localeCompare(t))}function $y(e,t,n){return`${e}${t}/${n.split(Mr.sep).join(`/`)}`}async function eb(e,t,n,r,i,a,o=`v1`){let s=Zy(t,n,r,o);if(s==null)return a.warning(`Failed to build object store sessions prefix for upload`,{identity:n,repo:r}),{uploaded:0,failed:0};let c=0,l=0;for(let t of lv(o).transportable){let n=Xy(i,t);try{await Ar.access(n)}catch{continue}let r=await e.upload(`${s}${t}`,n);r.success?c++:(l++,a.warning(`Failed to upload session database file to object store`,{key:`${s}${t}`,localPath:n,error:Rs(r.error)}))}return{uploaded:c,failed:l}}async function tb(e,t,n,r,i,a,o=`v1`){let s=Zy(t,n,r,o);if(s==null)return a.warning(`Failed to build object store sessions prefix for download`,{identity:n,repo:r}),{downloaded:0,failed:0,mainDbRestored:!1};let c=await e.list(s);if(c.success===!1)return a.warning(`Failed to list object store session files`,{prefix:s,error:Rs(c.error)}),{downloaded:0,failed:1,mainDbRestored:!1};if(c.data.length===0)return{downloaded:0,failed:0,mainDbRestored:!1};let l=Yy(i),u=0,d=0,f=!1,p=lv(o).main;for(let t of c.data){let n=$v(l,t.startsWith(s)?t.slice(s.length):t);if(n.success===!1){d++,a.warning(`Rejected object store session key during download`,{key:t,error:Rs(n.error)});continue}await Ar.mkdir(Mr.dirname(n.data),{recursive:!0});let r=await e.download(t,n.data);r.success?(u++,Mr.basename(n.data)===p&&(f=!0)):(d++,a.warning(`Failed to download session database file from object store`,{key:t,localPath:n.data,error:Rs(r.error)}))}return{downloaded:u,failed:d,mainDbRestored:f}}async function nb(e,t,n,r,i,a,o){try{await Ar.access(a)}catch{return{uploaded:0,failed:0}}let s=0,c=0,l=await Qy(a),u=ty(t,n,r,`artifacts`);if(u.success===!1)return o.warning(`Failed to build object store artifact prefix for upload`,{runId:i,error:Rs(u.error)}),{uploaded:0,failed:0};for(let t of l){let n=Mr.relative(a,t),r=$y(u.data,i,n),l=await e.upload(r,t);l.success?s++:(c++,o.warning(`Failed to upload artifact file to object store`,{key:r,filePath:t,error:Rs(l.error)}))}return{uploaded:s,failed:c}}async function rb(e,t,n,r,i,a,o){let s=ty(t,n,r,`metadata`,`${i}.json`);if(s.success===!1)return o.warning(`Failed to build object store metadata key for upload`,{runId:i,error:Rs(s.error)}),{success:!1};let c=await Ar.mkdtemp(Mr.join(Hr.tmpdir(),`fro-bot-metadata-`)),l=Mr.join(c,`${i}.json`);try{await Ar.writeFile(l,JSON.stringify(a,null,2),`utf8`);let t=await e.upload(s.data,l);return t.success===!1?(o.warning(`Failed to upload run metadata to object store`,{key:s.data,runId:i,error:Rs(t.error)}),{success:!1}):{success:!0}}catch(e){return o.warning(`Failed to upload run metadata to object store`,{key:s.data,runId:i,error:Rs(e)}),{success:!1}}finally{await Ar.rm(c,{recursive:!0,force:!0})}}var ib,ab,ob,sb,cb,lb,ub,db=n((()=>{ib={WHEN_SUPPORTED:`WHEN_SUPPORTED`,WHEN_REQUIRED:`WHEN_REQUIRED`},ab=ib.WHEN_SUPPORTED,ob={WHEN_SUPPORTED:`WHEN_SUPPORTED`,WHEN_REQUIRED:`WHEN_REQUIRED`},sb=ib.WHEN_SUPPORTED,(function(e){e.MD5=`MD5`,e.CRC32=`CRC32`,e.CRC32C=`CRC32C`,e.CRC64NVME=`CRC64NVME`,e.SHA1=`SHA1`,e.SHA256=`SHA256`})(cb||={}),(function(e){e.HEADER=`header`,e.TRAILER=`trailer`})(lb||={}),ub=cb.CRC32})),fb,pb,mb=n((()=>{(function(e){e.ENV=`env`,e.CONFIG=`shared config entry`})(fb||={}),pb=(e,t,n,r)=>{if(!(t in e))return;let i=e[t].toUpperCase();if(!Object.values(n).includes(i))throw TypeError(`Cannot load ${r} '${t}'. Expected one of ${Object.values(n)}, got '${e[t]}'.`);return i}})),hb,gb,_b,vb=n((()=>{db(),mb(),hb=`AWS_REQUEST_CHECKSUM_CALCULATION`,gb=`request_checksum_calculation`,_b={environmentVariableSelector:e=>pb(e,hb,ib,fb.ENV),configFileSelector:e=>pb(e,gb,ib,fb.CONFIG),default:ab}})),yb,bb,xb,Sb=n((()=>{db(),mb(),yb=`AWS_RESPONSE_CHECKSUM_VALIDATION`,bb=`response_checksum_validation`,xb={environmentVariableSelector:e=>pb(e,yb,ob,fb.ENV),configFileSelector:e=>pb(e,bb,ob,fb.CONFIG),default:sb}})),Cb,wb,Tb=n((()=>{Cb={warningEmitted:!1},wb=e=>{if(e&&!Cb.warningEmitted){if(process.env.AWS_SDK_JS_NODE_VERSION_SUPPORT_WARNING_DISABLED===`true`){Cb.warningEmitted=!0;return}parseInt(e.substring(1,e.indexOf(`.`)))<22&&(Cb.warningEmitted=!0,process.emitWarning(`NodeVersionSupportWarning: The AWS SDK for JavaScript (v3) versions published after the first week of January 2027 will require node >=22. You are running node ${e}. To continue receiving updates to AWS services, bug fixes, and security updates please upgrade to node >=22. -More information can be found at: https://a.co/c895JFp`))}}})),xb,Sb,Cb,wb=n((()=>{xb=()=>(e,t)=>async n=>(t.__retryLongPoll=!0,e(n)),Sb={name:`longPollMiddleware`,tags:[`RETRY`],step:`initialize`,override:!0},Cb=e=>({applyToStack:e=>{e.add(xb(),Sb)}})}));function Tb(e,t,n){return e.$source||={},e.$source[t]=n,e}var Eb=n((()=>{})),Db,Ob=n((()=>{Db=e=>e?.body instanceof _r||typeof ReadableStream<`u`&&e?.body instanceof ReadableStream})),kb,Ab=n((()=>{x(),kb=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return ne.mutate(e);if(!e)return ne.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return ne.mutate(await n)}}));function jb(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var Mb=n((()=>{})),Nb,Pb=n((()=>{Nb=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),Fb,Ib=n((()=>{ze(),D(),Pb(),Fb=class extends Nb{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new T(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return rt}getResponseType(){return fe}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)tt(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)tt(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=ce.of(t.input),i=l(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!Me(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-BM39ThRa.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),Lb,rte=n((()=>{ze(),D(),x(),Ib(),Ab(),Mb(),Lb=class extends Fb{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=ce.of(e?.input),u=[],d=[],f=!1,p,m=new rt({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(m,s),this.setHostPrefix(m,e,r);let t=l(e.traits);if(t.http){m.method=t.http[0];let[e,n]=t.http[1].split(`?`);m.path==`/`?m.path=e:m.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(m.path.includes(`{${e}+}`)||m.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(p=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):p=s:(i.write(t,s),p=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();m.path.includes(`{${e}+}`)?m.path=m.path.replace(`{${e}+}`,n.split(`/`).map(jb).join(`/`)):m.path.includes(`{${e}}`)&&(m.path=m.path.replace(`{${e}}`,jb(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!tt(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(f=!0,u.push(e),d.push(t))}if(f&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),u,d,void 0];n?a[6]=n:a.pop(),i.write(a,r),p=i.flush()}return m.headers=o,m.query=a,m.body=p,m}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(tt(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=ce.of(e.output),a={};if(n.statusCode>=300){let i=await kb(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!tt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await kb(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await kb(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=ce.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=le(n.body);else if(n.body){let i=await kb(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?ve(o,`,`,2):ee(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(tt(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),Rb,zb=n((()=>{ze(),D(),Ib(),Ab(),Rb=class extends Fb{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=ce.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new rt({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=ce.of(e.output),a={};if(n.statusCode>=300){let i=await kb(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!tt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await kb(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),Bb,Vb=n((()=>{Mb(),Bb=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>jb(e)).join(`/`):jb(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function Hb(e,t){return new Ub(e,t)}var Ub,ite=n((()=>{ze(),Vb(),Ub=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new rt({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=Bb(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function Wb(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var Gb=n((()=>{})),Kb,qb=n((()=>{D(),x(),Pb(),Gb(),Kb=class extends Nb{settings;constructor(e){super(),this.settings=e}read(e,t){let n=ce.of(e);if(n.isListSchema())return ee(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??me)(t);if(n.isTimestampSchema())switch(Wb(n,this.settings)){case 5:return Fe(t);case 6:return Ge(t);case 7:return Ye(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=qe.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new ue(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??Ee)((this.serdeContext?.base64Decoder??me)(e))}}})),Jb,ate=n((()=>{D(),x(),Pb(),qb(),Jb=class extends Nb{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new Kb(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=ce.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??Ee;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??$e;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),Yb,Xb=n((()=>{D(),x(),Pb(),Gb(),Yb=class extends Nb{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=ce.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(Wb(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Ae(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??de)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:Re(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=qe.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??de)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?ae():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),Zb,ote=n((()=>{D(),Xb(),Zb=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new Yb(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=ce.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),Qb,$b,ste=n((()=>{Qb=ct(),$b=class{name;kind;values;constructor({name:e,kind:t=Qb.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),ex,cte=n((()=>{ex=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),tx,nx,lte=n((()=>{tx=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),nx=e=>({requestHandler:e.httpHandler()})}));function rx(e){return t=>async n=>{let r=n.request;if(rt.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(ix)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[ix]:String(n)})}catch{}}return t({...n,request:r})}}var ix,ax,ox,ute=n((()=>{ze(),ix=`content-length`,ax={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},ox=e=>({applyToStack:t=>{t.add(rx(e.bodyLengthChecker),ax)}})})),sx,cx,lx=n((()=>{sx=e=>encodeURIComponent(e).replace(/[!'()*]/g,cx),cx=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),ux,dx=n((()=>{lx(),ux=e=>e.split(`/`).map(sx).join(`/`)}));function dte(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=sx(n),Array.isArray(r))for(let e=0,i=r.length;e{lx()})),fx,px=n((()=>{fx=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),mx,hx=n((()=>{mx=class{from;to;keys;constructor(e,t){this.from=e,this.to=t;let n=Object.keys(this.from),r=new Set(n);r.delete(`__type`),this.keys=r}mark(e){this.keys.delete(e)}hasUnknown(){return this.keys.size===1&&Object.keys(this.to).length===0}writeUnknown(){if(this.hasUnknown()){let e=this.keys.values().next().value,t=this.from[e];this.to.$unknown=[e,t]}}}}));function gx(){if(_x===void 0)try{if(typeof Buffer!=`function`)_x=!1;else{let e=JSON.parse(Buffer.from([123,125]));_x=typeof e==`object`&&!!e}}catch{_x=!1}return _x}var _x,vx=n((()=>{}));function yx(e,t,n){if(n?.source){let e=n.source;if(typeof t==`number`)return t<=2**53-1&&t>=-(2**53-1)?bx(e,t)?t:new ue(e,`bigDecimal`):pte(e)?new ue(e,`bigDecimal`):/[eE]/.test(e)?mte(e):BigInt(e)}return t}function pte(e){let t=e.indexOf(`.`);if(t===-1)return!1;let n=e.search(/[eE]/);if(n===-1)return!0;let r=n-t-1;return parseInt(e.slice(n+1),10)=o.length?o+`0`.repeat(c-o.length):o.slice(0,c)+`.`+o.slice(c)}return i.includes(`.`)&&(i=i.replace(/(\.\d*?)0+$/,`$1`).replace(/\.$/,``)),(t?`-`:``)+i}function mte(e){let t=e.search(/[eE]/),n=parseInt(e.slice(t+1),10),r=e.startsWith(`-`),i=e.slice(+!!r,t),a=i.indexOf(`.`),o,s;a===-1?(o=i,s=n):(o=i.slice(0,a)+i.slice(a+1),s=n-(i.length-a-1)),o=o.replace(/0+$/,``)||`0`;let c=BigInt(o)*10n**BigInt(s+(i.replace(`.`,``).length-o.length));return r?-c:c}var Sx=n((()=>{x()}));function Cx(e){let t=ce.of(e),n=t.getSchema();if(Array.isArray(n)&&t.isStructSchema()){if(Tx in n)return n[Tx];let e=wx(t,/* @__PURE__ */ new Set);return n[Tx]=e,e}return wx(t,/* @__PURE__ */ new Set)}function wx(e,t){let n=e.getSchema();if(t.has(n))return!1;if(t.add(n),e.isBigIntegerSchema()||e.isBigDecimalSchema())return!0;if(e.isStructSchema()){for(let[,n]of e.structIterator())if(wx(n,t))return!0}else if(e.isListSchema()||e.isMapSchema()){if(wx(e.getValueSchema(),t))return!0}else if(e.isDocumentSchema())return!0;return!1}var Tx,Ex=n((()=>{D(),Tx=Symbol.for(`@aws-sdk/reviver`)})),Dx,hte=n((()=>{Ab(),x(),Dx=(e,t)=>kb(e,t).then(e=>(t?.utf8Encoder??Ee)(e))}));async function Ox(e,t,n){let r;if(gx()&&typeof e?.[Symbol.asyncIterator]==`function`){let n=await kb(e,t);typeof Buffer==`function`&&(r=Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength))}if(r||=await Dx(e,t),r.length===0)return{};let i=n&&Cx(n)?yx:void 0;try{return JSON.parse(r,i)}catch(e){throw e?.name===`SyntaxError`&&Object.defineProperty(e,"$responseBodyText",{value:typeof r==`string`?r:r.toString(`utf8`)}),e}}var kx,Ax,jx,Mx,Nx,Px,Fx,Ix=n((()=>{Ab(),hte(),vx(),Sx(),Ex(),kx=async(e,t)=>{let n=await Ox(e,t);return n.message=n.message??n.Message,n},Ax=(e,t)=>Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase()),jx=e=>{let t=e;return typeof t==`number`&&(t=t.toString()),t.indexOf(`,`)>=0&&(t=t.split(`,`)[0]),t.indexOf(`:`)>=0&&(t=t.split(`:`)[0]),t.indexOf(`#`)>=0&&(t=t.split(`#`)[1]),t},Mx=(e,t)=>Fx(e,t,[`header`,`code`,`type`]),Nx=(e,t,n=!1)=>Fx(e,t,n?[`code`,`header`,`type`]:[`type`,`code`,`header`]),Px=(e,t)=>{if(t?.__type!==void 0){let e=t.__type;return typeof e==`number`&&(e=e.toString()),e.indexOf(`,`)>=0&&(e=e.split(`,`)[0]),e.indexOf(`:`)>=0&&(e=e.split(`:`)[0]),e}},Fx=({headers:e},t,n)=>{for(;n.length>0;)switch(n.shift()){case`header`:let n=Ax(e??{},`x-amzn-errortype`);if(n!==void 0)return jx(e[n]);break;case`code`:let r=Ax(t??{},`code`);if(r&&t[r]!==void 0)return jx(t[r]);break;case`type`:if(t?.__type!==void 0)return jx(t.__type)}}}));function Lx(e){Object.defineProperty(e,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}var Rx=n((()=>{})),zx,Bx=n((()=>{Gb(),D(),x(),px(),hx(),vx(),Sx(),Ex(),Ix(),Rx(),ze(),zx=class extends fx{settings;constructor(e){super(),this.settings=e}async read(e,t){let n=Cx(e)?yx:void 0,r;if(typeof t==`string`){if(t.length===0)return{};r=JSON.parse(t,n)}else if(t instanceof Uint8Array&&gx()){if(t.byteLength===0)return{};let e=Buffer.isBuffer(t)?t:Buffer.from(t.buffer,t.byteOffset,t.byteLength);r=JSON.parse(e,n)}else r=await Ox(t,this.serdeContext,e);return this._read(e,r)}readObject(e,t){return this._read(e,t)}_read(e,t){let n=typeof t==`object`&&!!t,r=ce.of(e);if(n){if(r.isStructSchema())return this._readStruct(r,t);if(Array.isArray(t)&&r.isListSchema()){let e=r.getValueSchema();if(this.needsTransform(e))for(let n=0;n{x(),Vx=class e extends Uint8Array{string=null;static allocUnsafe(t){if(typeof Buffer==`function`){let n=Buffer.allocUnsafe(t);return new e(n.buffer,n.byteOffset,n.byteLength)}return new e(t)}toString(){return this.s()}valueOf(){return this.s()}includes(e,t){return typeof e==`string`?this.s().includes(e,t):Uint8Array.prototype.includes.call(this,e,t)}indexOf(e,t){return typeof e==`string`?this.s().indexOf(e,t):Uint8Array.prototype.indexOf.call(this,e,t)}lastIndexOf(e,t){if(typeof e==`string`)return this.s().lastIndexOf(e,t);let n=Uint8Array.prototype.lastIndexOf;return t===void 0?n.call(this,e):n.call(this,e,t)}startsWith(e,t){return this.s().startsWith(e,t)}endsWith(e,t){return this.s().endsWith(e,t)}match(e){return this.s().match(e)}replace(e,t){return this.s().replace(e,t)}search(e){return this.s().search(e)}split(e,t){return this.s().split(e,t)}substring(e,t){return this.s().substring(e,t)}trim(){return this.s().trim()}trimStart(){return this.s().trimStart()}trimEnd(){return this.s().trimEnd()}charAt(e){return this.s().charAt(e)}charCodeAt(e){return this.s().charCodeAt(e)}padStart(e,t){return this.s().padStart(e,t)}padEnd(e,t){return this.s().padEnd(e,t)}repeat(e){return this.s().repeat(e)}toUpperCase(){return this.s().toUpperCase()}toLowerCase(){return this.s().toLowerCase()}s(){if(this.string==null){let e=Date.now();e>Hx+6e4&&(console.warn(`@aws-sdk/core/protocols - WARN - JsonCodec2: you have called a string method on a Uint8Array request body. It has been automatically converted to string. In a future version this will throw an error.`),Hx=e),this.string=Ee(this)}return this.string}},Hx=0}));function Ux(e){return Vx.allocUnsafe(e)}var Wx,Gx,Kx,qx,Jx,Yx,Xx,Zx,Qx,$x,eS,tS,nS,rS,iS,aS=n((()=>{Gb(),D(),x(),px(),ze(),gte(),Wx=new TextEncoder,Gx=123,Kx=125,qx=91,Jx=93,Yx=34,Xx=58,Zx=44,Qx=92,$x=new Uint8Array([116,114,117,101]),eS=new Uint8Array([102,97,108,115,101]),tS=new Uint8Array([110,117,108,108]),nS=Array(128).fill(null),nS[8]=`b`,nS[9]=`t`,nS[10]=`n`,nS[12]=`f`,nS[13]=`r`,nS[34]=`"`,nS[92]=`\\`;for(let e=0;e<32;e++)nS[e]===null&&(nS[e]=`u00`+e.toString(16).padStart(2,`0`));rS=2048,iS=class e extends fx{settings;json;i=0;rootSchema;rawValue;passthrough=!1;constructor(e){super(),this.settings=e,this.json=Ux(rS)}write(e,t){this.i=0,this.rawValue=t,this.rootSchema=ce.of(e),this.passthrough=this.rootSchema.isBlobSchema()||this.rootSchema.isStringSchema(),this.passthrough||this.writeValue(this.rootSchema,t,void 0)}writeDiscriminatedDocument(e,t){this.i=0,this.rootSchema=ce.of(e);let n=this.rootSchema;if(n.isStructSchema()&&typeof t==`object`&&t){this.writeValue(n,t,void 0);let e=`"__type":"${n.getName(!0)??`Unknown`}",`,r=e.length;this.ensure(r),this.json.copyWithin(1+r,1,this.i),Wx.encodeInto(e,this.json.subarray(1)),this.i+=r}else this.writeValue(n,t,void 0)}flush(){this.rootSchema=void 0;let e=this.i;this.i=0;let t=this.rawValue;if(this.rawValue=void 0,e===0)return t;let n=this.json.subarray(0,e);return this.json=Ux(rS),n}ensure(e){let{i:t,json:n}=this;if(t+e>n.length){let r=n.length*2;for(;r34&&r<92)this.json[this.i++]=r;else if(r<128){let e=nS[r];if(e!==null){this.ensure(e.length+1+(t-n-1)*3+1),this.json[this.i++]=Qx;for(let t=0;t=55296&&r<=56319){let i=n+1=56320&&i<=57343){this.ensure(4);let{written:t}=Wx.encodeInto(e.substring(n,n+2),this.json.subarray(this.i));this.i+=t,++n}else this.ensure(6+(t-n-1)*3+1),this.writeUnicodeEscape(r)}else if(r>=56320&&r<=57343)this.ensure(6+(t-n-1)*3+1),this.writeUnicodeEscape(r);else{let{i:e,json:t}=this;r<2048?(t[e++]=192|r>>6,t[e++]=128|r&63):(t[e++]=224|r>>12,t[e++]=128|r>>6&63,t[e++]=128|r&63),this.i=e}}this.json[this.i++]=Yx}writeUnicodeEscape(e){let{json:t,i:n}=this;t[n++]=Qx,t[n++]=117;let r=e.toString(16).padStart(4,`0`);for(let e=0;e<4;++e)t[n++]=r.charCodeAt(e);this.i=n}static B64=(()=>{let e=/* @__PURE__ */ new Uint8Array(64);for(let t=0;t<64;++t)e[t]=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.charCodeAt(t);return e})();writeBase64(t){let n=Math.ceil(t.length/3)*4;this.ensure(n+2);let r=this.json,i=e.B64,a=this.i;r[a++]=Yx;let o=t.length,s=o%3,c=o-s;for(let e=0;e>2],r[a++]=i[(n&3)<<4|o>>4],r[a++]=i[(o&15)<<2|s>>6],r[a++]=i[s&63]}if(s===2){let e=t[c],n=t[c+1];r[a++]=i[e>>2],r[a++]=i[(e&3)<<4|n>>4],r[a++]=i[(n&15)<<2],r[a++]=61}else if(s===1){let e=t[c];r[a++]=i[e>>2],r[a++]=i[(e&3)<<4],r[a++]=61,r[a++]=61}r[a++]=Yx,this.i=a}writeValue(e,t,n){if(t==null){if(n?.isStructSchema()){if(t===void 0&&ce.of(e).isIdempotencyToken()){this.writeAsciiQuoted(ae());return}return}this.ensure(4),this.json.set(tS,this.i),this.i+=4;return}let r=ce.of(e),i=typeof t==`object`;if(r.isStringSchema()){let e=r.getMergedTraits().mediaType;if(e&&(e===`application/json`||e.endsWith(`+json`))){this.writeJsonString(qe.from(t).toString());return}}if(this.settings.bigNumberAsString&&t!=null&&(r.isBigIntegerSchema()||r.isBigDecimalSchema())){let e=t instanceof ue?t.string:String(t);this.writeAsciiQuoted(e)}else if(i){if(r.isStructSchema()){this.writeStruct(r,t);return}if(Array.isArray(t)&&(r.isListSchema()||r.isDocumentSchema())){this.writeList(r,t,r.isDocumentSchema());return}if(r.isMapSchema()){this.writeMap(r,t,!1);return}if(t instanceof Uint8Array&&(r.isBlobSchema()||r.isDocumentSchema())){this.writeBase64(t);return}if(t instanceof Date&&(r.isTimestampSchema()||r.isDocumentSchema())){this.writeTimestamp(r,t);return}if(t instanceof ue){this.writeAscii(t.string);return}if(r.isDocumentSchema()){Array.isArray(t)?this.writeList(r,t,!0):this.writeMap(r,t,!0);return}let e=JSON.stringify(t);this.writeAscii(e)}else if(typeof t==`string`){if(r.isBlobSchema()){let e=(this.serdeContext?.base64Encoder??de)(t);this.writeAsciiQuoted(e);return}this.writeJsonString(t)}else if(typeof t==`number`){if(Math.abs(t)===1/0||Number.isNaN(t)){this.writeAsciiQuoted(String(t));return}let e=String(t);this.writeAscii(e)}else if(typeof t==`boolean`){this.ensure(5);let{i:e,json:n}=this;t?(n.set($x,e),e+=4):(n.set(eS,e),e+=5),this.i=e}else typeof t==`bigint`?this.writeAscii(t.toString()):this.writeAscii(String(t))}writeStruct(e,t){this.ensure(2),this.json[this.i++]=Gx;let n=!1,r=typeof t.__type==`string`,i;r&&(i=/* @__PURE__ */ new Set);for(let[r,a]of e.structIterator()){let o=t[r];if(o==null&&!a.isIdempotencyToken())continue;n&&(this.ensure(1),this.json[this.i++]=Zx),n=!0;let s=this.settings.jsonName?a.getMergedTraits().jsonName??r:r;i&&(i.add(r),i.add(s)),this.writeAsciiQuoted(s),this.json[this.i++]=Xx,this.writeValue(a,o,e)}if(!n&&e.isUnionSchema()){let{$unknown:n}=t;if(Array.isArray(n)){let[t,r]=n;this.writeAsciiQuoted(t),this.ensure(1),this.json[this.i++]=Xx,this.writeValue(15,r,e)}}else if(r)for(let e in t){if(i.has(e))continue;i.add(e);let r=t[e];n&&(this.ensure(1),this.json[this.i++]=Zx),n=!0,this.writeAsciiQuoted(e),this.ensure(1),this.json[this.i++]=Xx,this.writeValue(15,r,void 0)}this.ensure(1),this.json[this.i++]=Kx}writeList(e,t,n){let r=!!e.getMergedTraits().sparse,i=e.getValueSchema();if(!n&&(i.isStringSchema()||i.isNumericSchema()||i.isBooleanSchema())){let e=!1;for(let n=0;n{px(),Bx(),aS(),oS=class extends fx{settings;constructor(e){super(),this.settings=e}createSerializer(){let e=new iS(this.settings);return e.setSerdeContext(this.serdeContext),e}createDeserializer(){let e=new zx(this.settings);return e.setSerdeContext(this.serdeContext),e}}})),cS,_te=n((()=>{zb(),D(),ze(),sS(),Ix(),cS=class extends Rb{codec=new oS({timestampFormat:{useTrait:!1,default:7},jsonName:!1,bigNumberAsString:!0});serializer=this.codec.createSerializer();deserializer=this.codec.createDeserializer();constructor({defaultNamespace:e,errorTypeRegistries:t}){super({defaultNamespace:e,errorTypeRegistries:t})}getShapeId(){return`smithy.protocols#rpcv2Json`}getPayloadCodec(){return this.codec}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n);Object.assign(r.headers,{"content-type":this.getDefaultContentType(),"smithy-protocol":`rpc-v2-json`,accept:this.getDefaultContentType()}),Ie(e.input)===`unit`?(delete r.body,delete r.headers[`content-type`]):r.body||=`{}`;let{service:i,operation:a}=p(n),o=`/service/${i}/operation/${a}`;return r.path.endsWith(`/`)?r.path+=o.slice(1):r.path+=o,r}async deserializeResponse(e,t,n){return super.deserializeResponse(e,t,n)}async handleError(e,t,n,r,i){let a=Px(n,r)??`Unknown`,o={$metadata:i,$fault:n.statusCode<=500?`client`:`server`},s=this.options.defaultNamespace;a.includes(`#`)&&([s]=a.split(`#`));let c=this.compositeErrorRegistry,l=T.for(s);c.copyFrom(l);let u;try{u=c.getSchema(a)}catch{r.Message&&(r.message=r.Message);let e=T.for(`smithy.ts.sdk.synthetic.`+s);c.copyFrom(e);let t=c.getBaseException();if(t){let e=c.getErrorCtor(t);throw Object.assign(new e({name:a}),o,r)}throw Object.assign(Error(a),o,r)}let d=ce.of(u),f=c.getErrorCtor(u),p=r.message??r.Message??`Unknown`,m=new f({}),h={},g=this.codec.createDeserializer();for(let[e,t]of d.structIterator())r[e]!=null&&(h[e]=g.readObject(t,r[e]));throw Object.assign(m,o,{$fault:d.getMergedTraits().error,message:p},h)}getDefaultContentType(){return`application/json`}}})),lS,uS=n((()=>{Gb(),D(),x(),ze(),px(),hx(),Sx(),Ex(),Ix(),Rx(),lS=class extends fx{settings;constructor(e){super(),this.settings=e}async read(e,t){let n=Cx(e)?yx:void 0;return this._read(e,typeof t==`string`?JSON.parse(t,n):await Ox(t,this.serdeContext,e))}readObject(e,t){return this._read(e,t)}_read(e,t){let n=typeof t==`object`&&!!t,r=ce.of(e);if(n){if(r.isStructSchema()){let e=t,n=r.isUnionSchema(),i={},a,{jsonName:o}=this.settings;o&&(a={});let s;n&&(s=new mx(e,i));for(let[t,c]of r.structIterator()){let r=t;o&&(r=c.getMergedTraits().jsonName??r,a[r]=t),n&&s.mark(r),e[r]!=null&&(i[t]=this._read(c,e[r]))}if(n)s.writeUnknown();else if(typeof e.__type==`string`)for(let t in e){if(!tt(e,t))continue;let n=e[t],r=o?a[t]??t:t;r in i||(i[r]=n)}return i}if(Array.isArray(t)&&r.isListSchema()){let e=r.getValueSchema(),n=[];for(let r of t)n.push(this._read(e,r));return n}if(r.isMapSchema()){let e=r.getValueSchema(),n={};for(let r in t)tt(t,r)&&(r===`__proto__`&&Lx(n),n[r]=this._read(e,t[r]));return n}}if(r.isBlobSchema()&&typeof t==`string`)return me(t);let i=r.getMergedTraits().mediaType;if(r.isStringSchema()&&typeof t==`string`&&i)return i===`application/json`||i.endsWith(`+json`)?qe.from(t):t;if(r.isTimestampSchema()&&t!=null)switch(Wb(r,this.settings)){case 5:return xe(t);case 6:return Ve(t);case 7:return _e(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(r.isBigIntegerSchema()&&(typeof t==`number`||typeof t==`string`))return BigInt(t);if(r.isBigDecimalSchema()&&t!=null){if(t instanceof ue)return t;let e=t;return e.type===`bigDecimal`&&`string`in e?new ue(e.string,e.type):new ue(String(t),`bigDecimal`)}if(r.isNumericSchema()&&typeof t==`string`){switch(t){case`Infinity`:return 1/0;case`-Infinity`:return-1/0;case`NaN`:return NaN}return t}if(r.isDocumentSchema()){if(n){let e=Array.isArray(t)?[]:{};for(let n in t){if(!tt(t,n))continue;n===`__proto__`&&Lx(e);let i=t[n];e[n]=i instanceof ue?i:this._read(r,i)}return e}return structuredClone(t)}return t}}})),dS,vte=n((()=>{x(),dS=class{values=/* @__PURE__ */ new Map;counter=0;stage=0;createReplacer(){if(this.stage===1)throw Error(`@aws-sdk/core/protocols - JsonReplacer already created.`);if(this.stage===2)throw Error(`@aws-sdk/core/protocols - JsonReplacer exhausted.`);return this.stage=1,(e,t)=>{if(t instanceof ue){let e=`${`Νnv`+this.counter++}_`+t.string;return this.values.set(`"${e}"`,t.string),e}if(typeof t==`bigint`){let e=t.toString(),n=`${`Νb`+this.counter++}_`+e;return this.values.set(`"${n}"`,e),n}return t}}replaceInJson(e){if(this.stage===0)throw Error(`@aws-sdk/core/protocols - JsonReplacer not created yet.`);if(this.stage===2)throw Error(`@aws-sdk/core/protocols - JsonReplacer exhausted.`);if(this.stage=2,this.counter===0)return e;for(let[t,n]of this.values)e=e.replace(t,n);return e}}})),fS,yte=n((()=>{Gb(),D(),x(),px(),vte(),Rx(),ze(),fS=class extends fx{settings;buffer;useReplacer=!1;rootSchema;constructor(e){super(),this.settings=e}write(e,t){this.rootSchema=ce.of(e),this.buffer=this._write(this.rootSchema,t)}flush(){let{rootSchema:e,useReplacer:t}=this;if(this.rootSchema=void 0,this.useReplacer=!1,e?.isStructSchema()||e?.isDocumentSchema()){if(!t)return JSON.stringify(this.buffer);let e=new dS;return e.replaceInJson(JSON.stringify(this.buffer,e.createReplacer(),0))}return this.buffer}writeDiscriminatedDocument(e,t){this.write(e,t),typeof this.buffer==`object`&&(this.buffer.__type=ce.of(e).getName(!0))}_write(e,t,n){let r=typeof t==`object`&&!!t,i=ce.of(e);if(r){if(i.isStructSchema()){let e=t,n={},{jsonName:r}=this.settings,a;r&&(a={});let o=0;for(let[t,s]of i.structIterator()){let c=this._write(s,e[t],i);if(c!==void 0){let e=t;r&&(e=s.getMergedTraits().jsonName??t,a[t]=e),n[e]=c,o++}}if(i.isUnionSchema()&&o===0){let{$unknown:t}=e;if(Array.isArray(t)){let[e,r]=t;e===`__proto__`&&Lx(n),n[e]=this._write(15,r)}}else if(typeof e.__type==`string`)for(let t in e){if(!tt(e,t))continue;let i=e[t],o=r?a[t]??t:t;o in n||(n[o]=this._write(15,i))}return n}if(Array.isArray(t)&&i.isListSchema()){let e=i.getValueSchema(),n=[],r=!!i.getMergedTraits().sparse;for(let i of t)(r||i!=null)&&n.push(this._write(e,i));return n}if(i.isMapSchema()){let e=i.getValueSchema(),n={},r=!!i.getMergedTraits().sparse;for(let i in t){if(!tt(t,i))continue;let a=t[i];(r||a!=null)&&(i===`__proto__`&&Lx(n),n[i]=this._write(e,a))}return n}if(t instanceof Uint8Array&&i.isBlobSchema())return i===this.rootSchema?t:(this.serdeContext?.base64Encoder??de)(t);if(t instanceof Date&&(i.isTimestampSchema()||i.isDocumentSchema()))switch(Wb(i,this.settings)){case 5:return t.toISOString().replace(`.000Z`,`Z`);case 6:return Ae(t);case 7:return t.getTime()/1e3;default:return console.warn(`Missing timestamp format, using epoch seconds`,t),t.getTime()/1e3}t instanceof ue&&(this.useReplacer=!0)}if(!(t===null&&n?.isStructSchema())){if(i.isStringSchema()){if(t===void 0&&i.isIdempotencyToken())return ae();let e=i.getMergedTraits().mediaType;return t!=null&&e&&(e===`application/json`||e.endsWith(`+json`))?qe.from(t):t}if(typeof t==`number`)return Math.abs(t)===1/0||isNaN(t)?String(t):t;if(typeof t==`string`&&i.isBlobSchema())return i===this.rootSchema?t:(this.serdeContext?.base64Encoder??de)(t);if(typeof t==`bigint`&&(this.useReplacer=!0),i.isDocumentSchema()){if(r){if(t instanceof Uint8Array)return(this.serdeContext?.base64Encoder??de)(t);let e=Array.isArray(t)?[]:{};for(let n in t){if(!tt(t,n))continue;let r=t[n];n===`__proto__`&&Lx(e),r instanceof ue?(this.useReplacer=!0,e[n]=r):e[n]=this._write(i,r)}return e}return structuredClone(t)}return t}}}})),bte,xte=n((()=>{px(),uS(),yte(),bte=class extends fx{settings;constructor(e){super(),this.settings=e}createSerializer(){let e=new fS(this.settings);return e.setSerdeContext(this.serdeContext),e}createDeserializer(){let e=new lS(this.settings);return e.setSerdeContext(this.serdeContext),e}}})),pS=/* @__PURE__ */ i({Field:()=>$b,Fields:()=>ex,FromStringShapeDeserializer:()=>Kb,HttpBindingProtocol:()=>Lb,HttpInterceptingShapeDeserializer:()=>Jb,HttpInterceptingShapeSerializer:()=>Zb,HttpProtocol:()=>Fb,HttpRequest:()=>rt,HttpResponse:()=>fe,JsonCodec:()=>bte,JsonCodec2:()=>oS,JsonShapeDeserializer:()=>lS,JsonShapeDeserializer2:()=>zx,JsonShapeSerializer:()=>fS,JsonShapeSerializer2:()=>iS,RequestBuilder:()=>Ub,RpcProtocol:()=>Rb,SerdeContext:()=>Nb,SmithyRpcV2JsonProtocol:()=>cS,ToStringShapeSerializer:()=>Yb,buildQueryString:()=>dte,collectBody:()=>kb,contentLengthMiddleware:()=>rx,contentLengthMiddlewareOptions:()=>ax,determineTimestampFormat:()=>Wb,escapeUri:()=>sx,escapeUriPath:()=>ux,extendedEncodeURIComponent:()=>jb,getContentLengthPlugin:()=>ox,getHttpHandlerExtensionConfiguration:()=>tx,isValidHostname:()=>Me,loadJsonRpcErrorCode:()=>Nx,loadRestJsonErrorCode:()=>Mx,loadSmithyRpcV2JsonErrorCode:()=>Px,parseJsonBody:()=>Ox,parseJsonErrorBody:()=>kx,parseQueryString:()=>Ze,parseUrl:()=>ge,requestBuilder:()=>Hb,resolveHttpHandlerRuntimeConfig:()=>nx,resolvedPath:()=>Bb}),mS=n((()=>{Ab(),Mb(),rte(),Ib(),zb(),ite(),Vb(),qb(),ate(),ote(),Xb(),Gb(),Pb(),ste(),cte(),ze(),lte(),ute(),lx(),dx(),fte(),_te(),Ix(),xte(),yte(),uS(),sS(),aS(),Bx()})),Ste,Cte,wte,Tte,Ete,Dte,Ote=n((()=>{Ste=[`AccessDeniedException`,`AuthFailure`,`InvalidSignatureException`,`RequestExpired`,`RequestInTheFuture`,`RequestTimeTooSkewed`,`SignatureDoesNotMatch`],Cte=[`BandwidthLimitExceeded`,`EC2ThrottledException`,`LimitExceededException`,`PriorRequestNotComplete`,`ProvisionedThroughputExceededException`,`RequestLimitExceeded`,`RequestThrottled`,`RequestThrottledException`,`SlowDown`,`ThrottledException`,`Throttling`,`ThrottlingException`,`TooManyRequestsException`,`TransactionInProgressException`],wte=[`TimeoutError`,`RequestTimeout`,`RequestTimeoutException`],Tte=[500,502,503,504],Ete=[`ECONNRESET`,`ECONNREFUSED`,`EPIPE`,`ETIMEDOUT`],Dte=[`EHOSTUNREACH`,`ENETUNREACH`,`ENOTFOUND`,`EAI_AGAIN`]}));function kte(e){return e.code===`ERR_HTTP2_STREAM_ERROR`&&e.message.includes(`NGHTTP2_REFUSED_STREAM`)}var hS,gS,_S,vS,yS,bS,xS,SS=n((()=>{Ote(),hS=e=>e?.$retryable!==void 0,gS=e=>Ste.includes(e.name),_S=e=>e.$metadata?.clockSkewCorrected,vS=e=>{let t=/* @__PURE__ */ new Set([`Failed to fetch`,`NetworkError when attempting to fetch resource`,`The Internet connection appears to be offline`,`Load failed`,`Network request failed`]);return e&&e instanceof TypeError?t.has(e.message):!1},yS=e=>e.$metadata?.httpStatusCode===429||Cte.includes(e.name)||e.$retryable?.throttling==1,bS=(e,t=0)=>e?.name!==`AbortError`&&(hS(e)||_S(e)||e.name===`InvalidSignatureException`&&e.message?.includes(`Signature expired`)||wte.includes(e.name)||Ete.includes(e?.code||``)||Dte.includes(e?.code||``)||Tte.includes(e.$metadata?.httpStatusCode||0)||vS(e)||kte(e)||e.cause!==void 0&&t<=10&&bS(e.cause,t+1)),xS=e=>{if(e.$metadata?.httpStatusCode!==void 0){let t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!bS(e)}return!1}})),CS,wS,TS,ES=n((()=>{CS=2e4,wS=`amz-sdk-invocation-id`,TS=`amz-sdk-request`}));function DS(e,t){if(fe.isInstance(e))for(let n in e.headers){if(!tt(e.headers,n))continue;let r=n.toLowerCase();if(r===`retry-after`){let r=e.headers[n],i=NaN;if(r.endsWith(`GMT`))try{i=(Ve(r).getTime()-Date.now())/1e3}catch(e){t?.trace?.(`Failed to parse retry-after header`),t?.trace?.(e)}else r.match(/ GMT, ((\d+)|(\d+\.\d+))$/)?i=Number(r.match(/ GMT, ([\d.]+)$/)?.[1]):r.match(/^((\d+)|(\d+\.\d+))$/)?i=Number(r):Date.parse(r)>=Date.now()&&(i=(Date.parse(r)-Date.now())/1e3);return isNaN(i)?void 0:new Date(Date.now()+i*1e3)}if(r===`x-amz-retry-after`){let r=e.headers[n],i=Number(r);if(isNaN(i)){t?.trace?.(`Failed to parse x-amz-retry-after=${r}`);return}return new Date(Date.now()+i)}}}function Ate(e,t){return DS(e,t)}var OS=n((()=>{ze(),mS(),x()})),kS,AS=n((()=>{kS=e=>e instanceof Error?e:e instanceof Object?Object.assign(/* @__PURE__ */ Error(),e):Error(typeof e==`string`?e:`AWS SDK error wrapper for ${e}`)}));function jS(e){return t=>(n,r)=>async i=>{let a=await t.retryStrategy(),o=await t.maxAttempts();if(NS(a)){a=a;let s=await a.acquireInitialRetryToken((r.partition_id??``)+(r.__retryLongPoll?`:longpoll`:``)),c=/* @__PURE__ */ Error(),l=0,u=0,{request:d}=i,f=rt.isInstance(d);for(f&&(d.headers[wS]=He());;)try{f&&(d.headers[TS]=`attempt=${l+1}; max=${o}`);let{response:e,output:t}=await n(i);return a.recordSuccess(s),t.$metadata.attempts=l+1,t.$metadata.totalRetryDelay=u,{response:e,output:t}}catch(n){let i=PS(n,t.logger);if(c=kS(n),f&&e(d))throw(r.logger instanceof N?console:r.logger)?.warn(`An error was encountered in a non-retryable streaming request.`),c;try{s=await a.refreshRetryTokenForRetry(s,i)}catch{throw c.$metadata||(c.$metadata={}),c.$metadata.attempts=l+1,c.$metadata.totalRetryDelay=u,c}l=s.getRetryCount();let o=s.getRetryDelay();u+=(s?.$retryLog?.acquisitionDelay??0)+o,o>0&&await MS(o)}}else return a=a,a?.mode&&(r.userAgent=[...r.userAgent||[],[`cfg/retry-mode`,a.mode]]),a.retry(n,i)}}function jte(e){let t=jS(e);return e=>({applyToStack:n=>{n.add(t(e),IS)}})}var MS,NS,PS,FS,IS,Mte=n((()=>{R(),mS(),x(),SS(),ES(),OS(),AS(),MS=e=>new Promise(t=>setTimeout(t,e)),NS=e=>e.acquireInitialRetryToken!==void 0&&e.refreshRetryTokenForRetry!==void 0&&e.recordSuccess!==void 0,PS=(e,t)=>{let n={error:e,errorType:FS(e)},r=DS(e.$response,t);return r&&(n.retryAfterHint=r),n},FS=e=>yS(e)?`THROTTLING`:bS(e)?`TRANSIENT`:xS(e)?`SERVER_ERROR`:`CLIENT_ERROR`,IS={name:`retryMiddleware`,tags:[`RETRY`],step:`finalizeRequest`,priority:`high`,override:!0}})),LS,RS=n((()=>{SS(),LS=class e{static setTimeoutFn=(e,t)=>setTimeout(e,t);beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(e){this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(e){let t;this.updateMeasuredRate();let n=e;if(n?.errorType===`THROTTLING`||yS(n?.error??e)){let e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());let r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}getCurrentTimeInSeconds(){return Date.now()/1e3}async acquireTokenBucket(t){if(this.enabled){for(this.refillTokenBucket();t>this.availableTokens;){let n=(t-this.availableTokens)/this.fillRate*1e3;await new Promise(t=>e.setTimeoutFn(t,n)),this.refillTokenBucket()}this.availableTokens-=t}}refillTokenBucket(){let e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=e;return}let t=(e-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+t),this.lastTimestamp=e}calculateTimeWindow(){this.timeWindow=this.getPrecise((this.lastMaxRate*(1-this.beta)/this.scaleConstant)**(1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*(e-this.lastThrottleTime-this.timeWindow)**3+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let e=this.getCurrentTimeInSeconds(),t=Math.floor(e*2)/2;if(this.requestCount++,t>this.lastTxRateBucket){let e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}})),zS,BS=n((()=>{zS=class e{static v2026=typeof process<`u`&&process.env?.SMITHY_NEW_RETRIES_2026===`true`;static delay(){return e.v2026?50:100}static throttlingDelay(){return e.v2026?1e3:500}static cost(){return e.v2026?14:5}static throttlingCost(){return e.v2026?5:10}static modifiedCostType(){return e.v2026?`THROTTLING`:`TRANSIENT`}}})),VS,Nte=n((()=>{ES(),BS(),VS=class{x=zS.delay();computeNextBackoffDelay(e){let t=Math.random()*Math.min(this.x*2**e,CS);return Math.floor(t)}setDelayBase(e){this.x=e}}})),HS,Pte=n((()=>{ES(),HS=class{delay;count;cost;longPoll;$retryLog={acquisitionDelay:0};constructor(e,t,n,r){this.delay=e,this.count=t,this.cost=n,this.longPoll=r}getRetryCount(){return this.count}getRetryDelay(){return Math.min(CS,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}})),US,WS,GS=n((()=>{(function(e){e.STANDARD=`standard`,e.ADAPTIVE=`adaptive`})(US||={}),WS=US.STANDARD})),KS,qS,JS=n((()=>{Nte(),Pte(),GS(),ES(),BS(),KS={incompatible:1,attempts:2,capacity:3},qS=class{mode=US.STANDARD;retryBackoffStrategy;capacity=500;maxAttemptsProvider;baseDelay;constructor(e){typeof e==`number`?this.maxAttemptsProvider=async()=>e:typeof e==`function`?this.maxAttemptsProvider=e:e&&typeof e==`object`&&(this.maxAttemptsProvider=async()=>e.maxAttempts,this.baseDelay=e.baseDelay,this.retryBackoffStrategy=e.backoff),this.maxAttemptsProvider??=async()=>3,this.baseDelay??=zS.delay(),this.retryBackoffStrategy??=new VS}async acquireInitialRetryToken(e){return new HS(zS.delay(),0,void 0,zS.v2026&&e.includes(`:longpoll`))}async refreshRetryTokenForRetry(e,t){let n=await this.getMaxAttempts(),r=this.retryCode(e,t,n),i=r===0,a=e.isLongPoll?.();if(i||a){let n=t.errorType;this.retryBackoffStrategy.setDelayBase(n===`THROTTLING`?zS.throttlingDelay():this.baseDelay);let o=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),s=o;if(t.retryAfterHint instanceof Date&&(s=Math.max(o,Math.min(t.retryAfterHint.getTime()-Date.now(),o+5e3))),i){let t=this.getCapacityCost(n);this.capacity-=t;let r=new HS(0,e.getRetryCount()+1,t,e.isLongPoll?.()??!1);return await new Promise(e=>setTimeout(e,s)),r.$retryLog.acquisitionDelay=s,r}{let e=zS.v2026&&r===KS.capacity&&a?s:0;e>0&&await new Promise(t=>setTimeout(t,e))}}throw Error(`No retry token available`)}recordSuccess(e){this.capacity=Math.min(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch{return console.warn(`Max attempts provider could not resolve. Using default of 3`),3}}retryCode(e,t,n){let r=e.getRetryCount()+1,i=this.isRetryableError(t.errorType)?0:KS.incompatible,a=r=this.getCapacityCost(t.errorType)?0:KS.capacity;return i||a||o}getCapacityCost(e){return e===zS.modifiedCostType()?zS.throttlingCost():zS.cost()}isRetryableError(e){return e===`THROTTLING`||e===`TRANSIENT`}}})),YS,XS=n((()=>{RS(),JS(),GS(),YS=class{mode=US.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(e,t){let{rateLimiter:n}=t??{};this.rateLimiter=n??new LS,this.standardRetryStrategy=t?new qS({maxAttempts:typeof e==`number`?e:3,...t}):new qS(e)}async acquireInitialRetryToken(e){let t=await this.standardRetryStrategy.acquireInitialRetryToken(e);return await this.rateLimiter.getSendToken(),t}async refreshRetryTokenForRetry(e,t){this.rateLimiter.updateClientSendingRate(t);let n=await this.standardRetryStrategy.refreshRetryTokenForRetry(e,t);return await this.rateLimiter.getSendToken(),n}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}})),ZS,Fte=n((()=>{JS(),BS(),ZS=class extends qS{computeNextBackoffDelay;constructor(e,t=zS.delay()){super(typeof e==`function`?e:async()=>e),this.computeNextBackoffDelay=typeof t==`number`?()=>t:t,this.retryBackoffStrategy.computeNextBackoffDelay=e=>{let t=e+1;return this.computeNextBackoffDelay(t)}}}})),QS,Ite=n((()=>{ES(),QS=(e,t)=>{let n=e,r=t?.noRetryIncrement??1,i=t?.retryCost??5,a=t?.timeoutRetryCost??10,o=e,s=e=>e.name===`TimeoutError`?a:i,c=e=>s(e)<=o;return Object.freeze({hasRetryTokens:c,retrieveRetryTokens:e=>{if(!c(e))throw Error(`No retry token available`);let t=s(e);return o-=t,t},releaseRetryTokens:e=>{o+=e??r,o=Math.min(o,n)}})}})),$S,eC=n((()=>{ES(),$S=(e,t)=>Math.floor(Math.min(CS,Math.random()*2**t*e))})),tC,nC=n((()=>{SS(),tC=e=>e?hS(e)||gS(e)||yS(e)||bS(e):!1})),rC,iC,aC=n((()=>{mS(),x(),SS(),GS(),ES(),AS(),Ite(),eC(),nC(),rC=class{maxAttemptsProvider;retryDecider;delayDecider;retryQuota;mode=US.STANDARD;constructor(e,t){this.maxAttemptsProvider=e,this.retryDecider=t?.retryDecider??tC,this.delayDecider=t?.delayDecider??$S,this.retryQuota=t?.retryQuota??QS(500)}shouldRetry(e,t,n){return tsetTimeout(e,o));continue}throw t.$metadata||={},t.$metadata.attempts=i,t.$metadata.totalRetryDelay=a,t}}},iC=e=>{if(!fe.isInstance(e))return;let t=Object.keys(e.headers).find(e=>e.toLowerCase()===`retry-after`);if(!t)return;let n=e.headers[t],r=Number(n);if(!Number.isNaN(r))return Math.min(r*1e3,2e4);let i=new Date(n);return Math.min(i.getTime()-Date.now(),2e4)}})),oC,Lte=n((()=>{RS(),GS(),aC(),oC=class extends rC{rateLimiter;constructor(e,t){let{rateLimiter:n,...r}=t??{};super(e,r),this.rateLimiter=n??new LS,this.mode=US.ADAPTIVE}async retry(e,t){return super.retry(e,t,{beforeRequest:async()=>this.rateLimiter.getSendToken(),afterRequest:e=>{this.rateLimiter.updateClientSendingRate(e)}})}}})),sC,cC,lC,uC,dC,fC,pC,Rte=n((()=>{R(),XS(),JS(),GS(),BS(),sC=`AWS_MAX_ATTEMPTS`,cC=`max_attempts`,lC={environmentVariableSelector:e=>{let t=e[sC];if(!t)return;let n=parseInt(t);if(Number.isNaN(n))throw Error(`Environment variable ${sC} mast be a number, got "${t}"`);return n},configFileSelector:e=>{let t=e[cC];if(!t)return;let n=parseInt(t);if(Number.isNaN(n))throw Error(`Shared config file entry ${cC} mast be a number, got "${t}"`);return n},default:3},uC=(e,t)=>{let{retryStrategy:n,retryMode:r}=e,{defaultMaxAttempts:i=3,defaultBaseDelay:a=zS.delay()}=t??{},o=Se(e.maxAttempts??i),s=n?Promise.resolve(n):void 0,c=async()=>{let e=await o();return await Se(r)()===US.ADAPTIVE?new YS(o,{maxAttempts:e,baseDelay:a}):new qS({maxAttempts:e,baseDelay:a})};return Object.assign(e,{maxAttempts:o,retryStrategy:()=>s??=c()})},dC=`AWS_RETRY_MODE`,fC=`retry_mode`,pC={environmentVariableSelector:e=>e[dC],configFileSelector:e=>e[fC],default:WS}})),mC,hC,gC,zte=n((()=>{mS(),ES(),mC=()=>e=>async t=>{let{request:n}=t;return rt.isInstance(n)&&(delete n.headers[wS],delete n.headers[TS]),e(t)},hC={name:`omitRetryHeadersMiddleware`,tags:[`RETRY`,`HEADERS`,`OMIT_RETRY_HEADERS`],relation:`before`,toMiddleware:`awsAuthMiddleware`,override:!0},gC=e=>({applyToStack:e=>{e.addRelativeTo(mC(),hC)}})})),Bte=/* @__PURE__ */ i({AdaptiveRetryStrategy:()=>YS,CONFIG_MAX_ATTEMPTS:()=>cC,CONFIG_RETRY_MODE:()=>fC,ConfiguredRetryStrategy:()=>ZS,DEFAULT_MAX_ATTEMPTS:()=>3,DEFAULT_RETRY_DELAY_BASE:()=>100,DEFAULT_RETRY_MODE:()=>WS,DefaultRateLimiter:()=>LS,DeprecatedAdaptiveRetryStrategy:()=>oC,DeprecatedStandardRetryStrategy:()=>rC,ENV_MAX_ATTEMPTS:()=>sC,ENV_RETRY_MODE:()=>dC,INITIAL_RETRY_TOKENS:()=>500,INVOCATION_ID_HEADER:()=>wS,MAXIMUM_RETRY_DELAY:()=>CS,NODE_MAX_ATTEMPT_CONFIG_OPTIONS:()=>lC,NODE_RETRY_MODE_CONFIG_OPTIONS:()=>pC,NO_RETRY_INCREMENT:()=>1,REQUEST_HEADER:()=>TS,RETRY_COST:()=>5,RETRY_MODES:()=>US,Retry:()=>zS,StandardRetryStrategy:()=>qS,THROTTLING_RETRY_DELAY_BASE:()=>500,TIMEOUT_RETRY_COST:()=>10,defaultDelayDecider:()=>$S,defaultRetryDecider:()=>tC,getOmitRetryHeadersPlugin:()=>gC,getRetryAfterHint:()=>Ate,getRetryPlugin:()=>vC,isBrowserNetworkError:()=>vS,isClockSkewCorrectedError:()=>_S,isClockSkewError:()=>gS,isNodeJsHttp2TransientError:()=>kte,isRetryableByTrait:()=>hS,isServerError:()=>xS,isThrottlingError:()=>yS,isTransientError:()=>bS,omitRetryHeadersMiddleware:()=>mC,omitRetryHeadersMiddlewareOptions:()=>hC,resolveRetryConfig:()=>uC,retryMiddleware:()=>_C,retryMiddlewareOptions:()=>IS}),_C,vC,yC=n((()=>{Ob(),Mte(),SS(),XS(),Fte(),RS(),JS(),GS(),ES(),BS(),Lte(),aC(),eC(),nC(),Rte(),zte(),OS(),_C=jS(Db),vC=jte(Db)}));function bC(e,t,n){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=n}var xC=n((()=>{yC(),zS.v2026||=typeof process==`object`&&process.env?.AWS_NEW_RETRIES_2026===`true`}));function Vte(e,t,n){return e.$source||={},e.$source[t]=n,e}var Hte=n((()=>{}));function SC(e){return e}var CC,wC,TC,Ute=n((()=>{mS(),CC=e=>t=>async n=>{if(!rt.isInstance(n.request))return t(n);let{request:r}=n,{handlerProtocol:i=``}=e.requestHandler.metadata||{};if(i.indexOf(`h2`)>=0&&!r.headers[`:authority`])delete r.headers.host,r.headers[`:authority`]=r.hostname+(r.port?`:`+r.port:``);else if(!r.headers.host){let e=r.hostname;r.port!=null&&(e+=`:${r.port}`),r.headers.host=e}return t(n)},wC={name:`hostHeaderMiddleware`,step:`build`,priority:`low`,tags:[`HOST`],override:!0},TC=e=>({applyToStack:t=>{t.add(CC(e),wC)}})})),EC,DC,OC,Wte=n((()=>{EC=()=>(e,t)=>async n=>{try{let r=await e(n),{clientName:i,commandName:a,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:l}=s,u=c??t.inputFilterSensitiveLog,d=l??t.outputFilterSensitiveLog,{$metadata:f,...p}=r.output;return o?.info?.({clientName:i,commandName:a,input:u(n.input),output:d(p),metadata:f}),r}catch(e){let{clientName:r,commandName:i,logger:a,dynamoDbDocumentClientOptions:o={}}=t,{overrideInputFilterSensitiveLog:s}=o,c=s??t.inputFilterSensitiveLog;throw a?.error?.({clientName:r,commandName:i,input:c(n.input),error:e,metadata:e.$metadata}),e}},DC={name:`loggerMiddleware`,tags:[`LOGGER`],step:`initialize`,override:!0},OC=e=>({applyToStack:e=>{e.add(EC(),DC)}})})),kC,Gte=n((()=>{kC={step:`build`,tags:[`RECURSION_DETECTION`,`TRACE_CONTEXT_PROPAGATION`],name:`recursionDetectionMiddleware`,override:!0,priority:`low`}})),AC,jC,MC,NC,PC,FC,Kte=n((()=>{AC={REQUEST_ID:Symbol.for(`_AWS_LAMBDA_REQUEST_ID`),X_RAY_TRACE_ID:Symbol.for(`_AWS_LAMBDA_X_RAY_TRACE_ID`),TENANT_ID:Symbol.for(`_AWS_LAMBDA_TENANT_ID`),TRACEPARENT:Symbol.for(`_AWS_LAMBDA_TRACEPARENT`),TRACESTATE:Symbol.for(`_AWS_LAMBDA_TRACESTATE`),BAGGAGE:Symbol.for(`_AWS_LAMBDA_BAGGAGE`)},jC=[`true`,`1`].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA??``),jC||(globalThis.awslambda=globalThis.awslambda||{}),MC=class{static PROTECTED_KEYS=AC;isProtectedKey(e){return Object.values(AC).includes(e)}getRequestId(){return this.get(AC.REQUEST_ID)??`-`}getXRayTraceId(){return this.get(AC.X_RAY_TRACE_ID)}getTenantId(){return this.get(AC.TENANT_ID)}getTraceparent(){return this.get(AC.TRACEPARENT)}getTracestate(){return this.get(AC.TRACESTATE)}getBaggage(){return this.get(AC.BAGGAGE)}},NC=class extends MC{currentContext;getContext(){return this.currentContext}hasContext(){return this.currentContext!==void 0}get(e){return this.currentContext?.[e]}set(e,t){if(this.isProtectedKey(e))throw Error(`Cannot modify protected Lambda context field: ${String(e)}`);this.currentContext=this.currentContext||{},this.currentContext[e]=t}run(e,t){return this.currentContext=e,t()}},PC=class e extends MC{als;static async create(){let t=new e;return t.als=new(await(import(`node:async_hooks`))).AsyncLocalStorage,t}getContext(){return this.als.getStore()}hasContext(){return this.als.getStore()!==void 0}get(e){return this.als.getStore()?.[e]}set(e,t){if(this.isProtectedKey(e))throw Error(`Cannot modify protected Lambda context field: ${String(e)}`);let n=this.als.getStore();if(!n)throw Error(`No context available`);n[e]=t}run(e,t){return this.als.run(e,t)}},(function(e){let t=null;async function n(e){return t||=(async()=>{let t=e===!0||`AWS_LAMBDA_MAX_CONCURRENCY`in process.env?await PC.create():new NC;return!jC&&globalThis.awslambda?.InvokeStore?globalThis.awslambda.InvokeStore:(!jC&&globalThis.awslambda&&(globalThis.awslambda.InvokeStore=t),t)})(),t}e.getInstanceAsync=n,e._testing=process.env.AWS_LAMBDA_BENCHMARK_MODE===`1`?{reset:()=>{t=null,globalThis.awslambda?.InvokeStore&&delete globalThis.awslambda.InvokeStore,globalThis.awslambda={InvokeStore:void 0}}}:void 0})(FC||={})}));function qte(e){for(let t of Object.keys(e)){let n=t.toLowerCase();t!==n&&(n===zC||n===BC||n===VC)&&(e[n]=e[t],delete e[t])}}var IC,LC,RC,zC,BC,VC,HC,UC=n((()=>{Kte(),mS(),IC=`AWS_LAMBDA_FUNCTION_NAME`,LC=`_X_AMZN_TRACE_ID`,RC=`X-Amzn-Trace-Id`,zC=`traceparent`,BC=`tracestate`,VC=`baggage`,HC=()=>e=>async t=>{let{request:n}=t;if(!rt.isInstance(n))return e(t);let r;{let e=Object.keys(n.headers??{}).find(e=>e.toLowerCase()===RC.toLowerCase())??RC;if(!n.headers.hasOwnProperty(e)){let e=process.env[IC],t=process.env[LC];r??=await FC.getInstanceAsync();let i=r?.getXRayTraceId()??t,a=e=>typeof e==`string`&&e.length>0;a(e)&&a(i)&&(n.headers[RC]=i)}}if(qte(n.headers),!n.headers[zC]){let e=(r??=await FC.getInstanceAsync())?.getTraceparent?.();if(e){n.headers[zC]=e;let t=r?.getTracestate?.();t&&(n.headers[BC]=t);let i=r?.getBaggage?.();i&&(n.headers[VC]=i)}}return e(t)}})),WC,Jte=n((()=>{Gte(),UC(),WC=e=>({applyToStack:e=>{e.add(HC(),kC)}})})),GC,Yte=n((()=>{GC=(e,t)=>{if(!t||t.length===0)return e;let n=[];for(let r of t)for(let t of e)t.schemeId.split(`#`)[1]===r&&n.push(t);for(let t of e)n.find(({schemeId:e})=>e===t.schemeId)||n.push(t);return n}}));function Xte(e){let t=/* @__PURE__ */ new Map;for(let n of e)t.set(n.schemeId,n);return t}var KC,qC=n((()=>{ze(),Yte(),KC=(e,t)=>(n,r)=>async i=>{let a=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,r,i.input)),o=e.authSchemePreference?await e.authSchemePreference():[],s=GC(a,o),c=Xte(e.httpAuthSchemes),l=p(r),u=[];for(let n of s){let i=c.get(n.schemeId);if(!i){u.push(`HttpAuthScheme \`${n.schemeId}\` was not enabled for this service.`);continue}let a=i.identityProvider(await t.identityProviderConfigProvider(e));if(!a){u.push(`HttpAuthScheme \`${n.schemeId}\` did not have an IdentityProvider configured.`);continue}let{identityProperties:o={},signingProperties:s={}}=n.propertiesExtractor?.(e,r)||{};n.identityProperties=Object.assign(n.identityProperties||{},o),n.signingProperties=Object.assign(n.signingProperties||{},s),l.selectedHttpAuthScheme={httpAuthOption:n,identity:await a(n.identityProperties),signer:i.signer};break}if(!l.selectedHttpAuthScheme)throw Error(u.join(` -`));return n(i)}})),JC,YC,Zte=n((()=>{qC(),JC={step:`serialize`,tags:[`HTTP_AUTH_SCHEME`],name:`httpAuthSchemeMiddleware`,override:!0,relation:`before`,toMiddleware:`endpointV2Middleware`},YC=(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n})=>({applyToStack:r=>{r.addRelativeTo(KC(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n}),JC)}})})),XC,ZC,Qte=n((()=>{qC(),XC={step:`serialize`,tags:[`HTTP_AUTH_SCHEME`],name:`httpAuthSchemeMiddleware`,override:!0,relation:`before`,toMiddleware:`serializerMiddleware`},ZC=(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n})=>({applyToStack:r=>{r.addRelativeTo(KC(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n}),XC)}})})),$te=n((()=>{qC(),Zte(),Qte()})),QC,$C,ew,tw=n((()=>{mS(),ze(),QC=e=>e=>{throw e},$C=(e,t)=>{},ew=e=>(e,t)=>async n=>{if(!rt.isInstance(n.request))return e(n);let r=p(t).selectedHttpAuthScheme;if(!r)throw Error(`No HttpAuthScheme was selected: unable to sign request`);let{httpAuthOption:{signingProperties:i={}},identity:a,signer:o}=r,s=await e({...n,request:await o.sign(n.request,a,i)}).catch((o.errorHandler||QC)(i));return(o.successHandler||$C)(s.response,i),s}})),nw,rw,ene=n((()=>{tw(),nw={step:`finalizeRequest`,tags:[`HTTP_SIGNING`],name:`httpSigningMiddleware`,aliases:[`apiKeyMiddleware`,`tokenMiddleware`,`awsAuthMiddleware`],override:!0,relation:`after`,toMiddleware:`retryMiddleware`},rw=e=>({applyToStack:t=>{t.addRelativeTo(ew(e),nw)}})})),tne=n((()=>{tw(),ene()})),iw,nne=n((()=>{iw=e=>{if(typeof e==`function`)return e;let t=Promise.resolve(e);return()=>t}}));function rne(e,t,n,r,i){return async function*(a,o,...s){let c=o,l=a.startingToken??c[n],u=!0,d;for(;u;){if(c[n]=l,i&&(c[i]=c[i]??a.pageSize),a.client instanceof e)d=await aw(t,a.client,o,a.withCommand,...s);else throw Error(`Invalid client, expected instance of ${e.name}`);yield d;let f=l;l=ow(d,r),u=!(!l||a.stopOnSameToken&&l===f)}return void 0}}var aw,ow,ine=n((()=>{aw=async(e,t,n,r=e=>e,...i)=>{let a=new e(n);return a=r(a)??a,await t.send(a,...i)},ow=(e,t)=>{let n=e,r=t.split(`.`);for(let e of r){if(!n||typeof n!=`object`)return;n=n[e]}return n}}));function ane(e,t,n){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=n}var one=n((()=>{})),sw,sne=n((()=>{ze(),sw=class{authSchemes=/* @__PURE__ */ new Map;constructor(e){for(let t in e){if(!tt(e,t))continue;let n=e[t];n!==void 0&&this.authSchemes.set(t,n)}}getIdentityProvider(e){return this.authSchemes.get(e)}}})),cw,lw,cne=n((()=>{mS(),cw=ct(),lw=class{async sign(e,t,n){if(!n)throw Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing");if(!n.name)throw Error("request could not be signed with `apiKey` since the `name` signer property is missing");if(!n.in)throw Error("request could not be signed with `apiKey` since the `in` signer property is missing");if(!t.apiKey)throw Error("request could not be signed with `apiKey` since the `apiKey` is not defined");let r=rt.clone(e);if(n.in===cw.HttpApiKeyAuthLocation.QUERY)r.query[n.name]=t.apiKey;else if(n.in===cw.HttpApiKeyAuthLocation.HEADER)r.headers[n.name]=n.scheme?`${n.scheme} ${t.apiKey}`:t.apiKey;else throw Error("request can only be signed with `apiKey` locations `query` or `header`, but found: `"+n.in+"`");return r}}})),uw,lne=n((()=>{mS(),uw=class{async sign(e,t,n){let r=rt.clone(e);if(!t.token)throw Error("request could not be signed with `token` since the `token` is not defined");return r.headers.Authorization=`Bearer ${t.token}`,r}}})),dw,une=n((()=>{dw=class{async sign(e,t,n){return e}}})),dne=n((()=>{cne(),lne(),une()})),fw,pw,mw,hw,gw,fne=n((()=>{fw=e=>function(t){return hw(t)&&t.expiration.getTime()-Date.now()e.expiration!==void 0,gw=(e,t,n)=>{if(e===void 0)return;let r=typeof e==`function`?e:async()=>Promise.resolve(e),i,a,o,s=!1,c=async e=>{a||=r(e);try{i=await a,o=!0,s=!1}finally{a=void 0}return i};return t===void 0?async e=>((!o||e?.forceRefresh)&&(i=await c(e)),i):async e=>((!o||e?.forceRefresh)&&(i=await c(e)),s?i:n(i)?(t(i)&&await c(e),i):(s=!0,i))}})),pne=n((()=>{sne(),dne(),fne()})),mne=/* @__PURE__ */ i({DefaultIdentityProviderConfig:()=>sw,EXPIRATION_MS:()=>pw,HttpApiKeyAuthSigner:()=>lw,HttpBearerAuthSigner:()=>uw,NoAuthSigner:()=>dw,createIsIdentityExpiredFunction:()=>fw,createPaginator:()=>rne,doesIdentityRequireRefresh:()=>hw,getHttpAuthSchemeEndpointRuleSetPlugin:()=>YC,getHttpAuthSchemePlugin:()=>ZC,getHttpSigningPlugin:()=>rw,getSmithyContext:()=>p,httpAuthSchemeEndpointRuleSetMiddlewareOptions:()=>JC,httpAuthSchemeMiddleware:()=>KC,httpAuthSchemeMiddlewareOptions:()=>XC,httpSigningMiddleware:()=>ew,httpSigningMiddlewareOptions:()=>nw,isIdentityExpired:()=>mw,memoizeIdentityProvider:()=>gw,normalizeProvider:()=>iw,requestBuilder:()=>Hb,setFeature:()=>ane}),_w=n((()=>{ze(),$te(),tne(),nne(),ine(),mS(),one(),pne()}));function hne(e){return e===void 0||typeof e==`string`&&e.length<=50}function vw(e){let t=iw(e.userAgentAppId??void 0),{customUserAgent:n}=e;return Object.assign(e,{customUserAgent:typeof n==`string`?[[n]]:n,userAgentAppId:async()=>{let n=await t();if(!hne(n)){let t=e.logger?.constructor?.name===`NoOpLogger`||!e.logger?console:e.logger;typeof n==`string`?n.length>50&&t?.warn(`The provided userAgentAppId exceeds the maximum length of 50 characters.`):t?.warn(`userAgentAppId must be a string or undefined.`)}return n}})}var yw=n((()=>{_w()})),bw,gne=n((()=>{bw={partitions:[{id:`aws`,outputs:{dnsSuffix:`amazonaws.com`,dualStackDnsSuffix:`api.aws`,implicitGlobalRegion:`us-east-1`,name:`aws`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$`,regions:{"af-south-1":{description:`Africa (Cape Town)`},"ap-east-1":{description:`Asia Pacific (Hong Kong)`},"ap-east-2":{description:`Asia Pacific (Taipei)`},"ap-northeast-1":{description:`Asia Pacific (Tokyo)`},"ap-northeast-2":{description:`Asia Pacific (Seoul)`},"ap-northeast-3":{description:`Asia Pacific (Osaka)`},"ap-south-1":{description:`Asia Pacific (Mumbai)`},"ap-south-2":{description:`Asia Pacific (Hyderabad)`},"ap-southeast-1":{description:`Asia Pacific (Singapore)`},"ap-southeast-2":{description:`Asia Pacific (Sydney)`},"ap-southeast-3":{description:`Asia Pacific (Jakarta)`},"ap-southeast-4":{description:`Asia Pacific (Melbourne)`},"ap-southeast-5":{description:`Asia Pacific (Malaysia)`},"ap-southeast-6":{description:`Asia Pacific (New Zealand)`},"ap-southeast-7":{description:`Asia Pacific (Thailand)`},"aws-global":{description:`aws global region`},"ca-central-1":{description:`Canada (Central)`},"ca-west-1":{description:`Canada West (Calgary)`},"eu-central-1":{description:`Europe (Frankfurt)`},"eu-central-2":{description:`Europe (Zurich)`},"eu-north-1":{description:`Europe (Stockholm)`},"eu-south-1":{description:`Europe (Milan)`},"eu-south-2":{description:`Europe (Spain)`},"eu-west-1":{description:`Europe (Ireland)`},"eu-west-2":{description:`Europe (London)`},"eu-west-3":{description:`Europe (Paris)`},"il-central-1":{description:`Israel (Tel Aviv)`},"me-central-1":{description:`Middle East (UAE)`},"me-south-1":{description:`Middle East (Bahrain)`},"mx-central-1":{description:`Mexico (Central)`},"sa-east-1":{description:`South America (Sao Paulo)`},"us-east-1":{description:`US East (N. Virginia)`},"us-east-2":{description:`US East (Ohio)`},"us-west-1":{description:`US West (N. California)`},"us-west-2":{description:`US West (Oregon)`}}},{id:`aws-cn`,outputs:{dnsSuffix:`amazonaws.com.cn`,dualStackDnsSuffix:`api.amazonwebservices.com.cn`,implicitGlobalRegion:`cn-northwest-1`,name:`aws-cn`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^cn\\-\\w+\\-\\d+$`,regions:{"aws-cn-global":{description:`aws-cn global region`},"cn-north-1":{description:`China (Beijing)`},"cn-northwest-1":{description:`China (Ningxia)`}}},{id:`aws-eusc`,outputs:{dnsSuffix:`amazonaws.eu`,dualStackDnsSuffix:`api.amazonwebservices.eu`,implicitGlobalRegion:`eusc-de-east-1`,name:`aws-eusc`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^eusc\\-(de)\\-\\w+\\-\\d+$`,regions:{"eusc-de-east-1":{description:`AWS European Sovereign Cloud (Germany)`}}},{id:`aws-iso`,outputs:{dnsSuffix:`c2s.ic.gov`,dualStackDnsSuffix:`api.aws.ic.gov`,implicitGlobalRegion:`us-iso-east-1`,name:`aws-iso`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-iso\\-\\w+\\-\\d+$`,regions:{"aws-iso-global":{description:`aws-iso global region`},"us-iso-east-1":{description:`US ISO East`},"us-iso-west-1":{description:`US ISO WEST`}}},{id:`aws-iso-b`,outputs:{dnsSuffix:`sc2s.sgov.gov`,dualStackDnsSuffix:`api.aws.scloud`,implicitGlobalRegion:`us-isob-east-1`,name:`aws-iso-b`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-isob\\-\\w+\\-\\d+$`,regions:{"aws-iso-b-global":{description:`aws-iso-b global region`},"us-isob-east-1":{description:`US ISOB East (Ohio)`},"us-isob-west-1":{description:`US ISOB West`}}},{id:`aws-iso-e`,outputs:{dnsSuffix:`cloud.adc-e.uk`,dualStackDnsSuffix:`api.cloud-aws.adc-e.uk`,implicitGlobalRegion:`eu-isoe-west-1`,name:`aws-iso-e`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^eu\\-isoe\\-\\w+\\-\\d+$`,regions:{"aws-iso-e-global":{description:`aws-iso-e global region`},"eu-isoe-west-1":{description:`EU ISOE West`}}},{id:`aws-iso-f`,outputs:{dnsSuffix:`csp.hci.ic.gov`,dualStackDnsSuffix:`api.aws.hci.ic.gov`,implicitGlobalRegion:`us-isof-south-1`,name:`aws-iso-f`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-isof\\-\\w+\\-\\d+$`,regions:{"aws-iso-f-global":{description:`aws-iso-f global region`},"us-isof-east-1":{description:`US ISOF EAST`},"us-isof-south-1":{description:`US ISOF SOUTH`}}},{id:`aws-us-gov`,outputs:{dnsSuffix:`amazonaws.com`,dualStackDnsSuffix:`api.aws`,implicitGlobalRegion:`us-gov-west-1`,name:`aws-us-gov`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-gov\\-\\w+\\-\\d+$`,regions:{"aws-us-gov-global":{description:`aws-us-gov global region`},"us-gov-east-1":{description:`AWS GovCloud (US-East)`},"us-gov-west-1":{description:`AWS GovCloud (US-West)`}}}],version:`1.1`}})),xw,Sw,Cw,ww,Tw,Ew,Dw=n((()=>{gne(),xw=bw,Sw=``,Cw=e=>{let{partitions:t}=xw;for(let n of t){let{regions:t,outputs:r}=n;for(let[n,i]of Object.entries(t))if(n===e)return{...r,...i}}for(let n of t){let{regionRegex:t,outputs:r}=n;if(new RegExp(t).test(e))return{...r}}let n=t.find(e=>e.id===`aws`);if(!n)throw Error(`Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.`);return{...n.outputs}},ww=(e,t=``)=>{xw=e,Sw=t},Tw=()=>{ww(bw,``)},Ew=()=>Sw}));async function _ne(e,t,n){if(n.request?.headers?.[`smithy-protocol`]===`rpc-v2-cbor`&&bC(e,`PROTOCOL_RPC_V2_CBOR`,`M`),typeof t.retryStrategy==`function`){let n=await t.retryStrategy();if(typeof n.mode==`string`)switch(n.mode){case US.ADAPTIVE:bC(e,`RETRY_MODE_ADAPTIVE`,`F`);break;case US.STANDARD:bC(e,`RETRY_MODE_STANDARD`,`E`)}}if(typeof t.accountIdEndpointMode==`function`){let n=e.endpointV2;switch(String(n?.url?.hostname).match(Ow)&&bC(e,`ACCOUNT_ID_ENDPOINT`,`O`),await t.accountIdEndpointMode?.()){case`disabled`:bC(e,`ACCOUNT_ID_MODE_DISABLED`,`Q`);break;case`preferred`:bC(e,`ACCOUNT_ID_MODE_PREFERRED`,`P`);break;case`required`:bC(e,`ACCOUNT_ID_MODE_REQUIRED`,`R`)}}let r=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(r?.$source){let t=r;t.accountId&&bC(e,`RESOLVED_ACCOUNT_ID`,`T`);for(let[n,r]of Object.entries(t.$source??{}))bC(e,n,r)}}var Ow,vne=n((()=>{yC(),xC(),Ow=/\d{12}\.ddb/})),kw,Aw,jw,Mw,yne=n((()=>{kw=`user-agent`,Aw=`x-amz-user-agent`,jw=/[^!$%&'*+\-.^_`|~\w]/g,Mw=/[^!$%&'*+\-.^_`|~\w#]/g}));function bne(e){let t=``;for(let n in e){let r=e[n];if(t.length+r.length+1<=Nw)t.length?t+=`,`+r:t+=r;else break}return t}var Nw,xne=n((()=>{Nw=1024})),Pw,Fw,Iw,Lw,Sne=n((()=>{mS(),Dw(),vne(),yne(),xne(),Pw=e=>(t,n)=>async r=>{let{request:i}=r;if(!rt.isInstance(i))return t(r);let{headers:a}=i,o=n?.userAgent?.map(Fw)||[],s=(await e.defaultUserAgentProvider()).map(Fw);await _ne(n,e,r);let c=n;s.push(`m/${bne(Object.assign({},n.__smithy_context?.features,c.__aws_sdk_context?.features))}`);let l=e?.customUserAgent?.map(Fw)||[],u=await e.userAgentAppId();u&&s.push(Fw([`app`,`${u}`]));let d=Ew(),f=(d?[d]:[]).concat([...s,...o,...l]).join(` `),p=[...s.filter(e=>e.startsWith(`aws-sdk-`)),...l].join(` `);return e.runtime===`browser`?a[Aw]=f:(p&&(a[Aw]=a[`x-amz-user-agent`]?`${a[kw]} ${p}`:p),a[kw]=f),t({...r,request:i})},Fw=e=>{let t=e[0].split(`/`).map(e=>e.replace(jw,`-`)).join(`/`),n=e[1]?.replace(Mw,`-`),r=t.indexOf(`/`),i=t.substring(0,r),a=t.substring(r+1);return i===`api`&&(a=a.toLowerCase()),[i,a,n].filter(e=>e&&e.length>0).reduce((e,t,n)=>{switch(n){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}},``)},Iw={name:`getUserAgentMiddleware`,step:`build`,priority:`low`,tags:[`SET_USER_AGENT`,`USER_AGENT`],override:!0},Lw=e=>({applyToStack:t=>{t.add(Pw(e),Iw)}})})),Rw,Cne=n((()=>{Rw=()=>{for(let e of[`deno`,`bun`,`llrt`])if(B[e])return[`md/${e}`,B[e]];return[`md/nodejs`,B.node]}})),zw,Bw=n((()=>{zw={isCrtAvailable:!1}})),Vw,wne=n((()=>{Bw(),Vw=()=>zw.isCrtAvailable?[`md/crt-avail`]:null})),Hw,Uw,Tne=n((()=>{Cne(),wne(),Bw(),Hw=({serviceId:e,clientVersion:t})=>{let n=Rw();return async r=>{let i=[[`aws-sdk-js`,t],[`ua`,`2.1`],[`os/${Gr()}`,Kr()],[`lang/js`],n],a=Vw();a&&i.push(a),e&&i.push([`api/${e}`,t]),Jn.AWS_EXECUTION_ENV&&i.push([`exec-env/${Jn.AWS_EXECUTION_ENV}`]);let o=await r?.userAgentAppId?.();return o?[...i,[`app/${o}`]]:[...i]}},Uw=Hw})),Ww,Gw,Kw,qw,Ene=n((()=>{yw(),Ww=`AWS_SDK_UA_APP_ID`,Gw=`sdk_ua_app_id`,Kw=`sdk-ua-app-id`,qw={environmentVariableSelector:e=>e[Ww],configFileSelector:e=>e.sdk_ua_app_id??e[Kw],default:void 0}})),Jw,Yw=n((()=>{Jw=({serviceId:e,clientVersion:t})=>async n=>{let i=await import(`./es5-BuhCuli8.js`).then(e=>/* @__PURE__ */ r(e.default)),a=i.parse??i.default.parse??(()=>``),o=typeof window<`u`&&window?.navigator?.userAgent?a(window.navigator.userAgent):void 0,s=[[`aws-sdk-js`,t],[`ua`,`2.1`],[`os/${o?.os?.name||`other`}`,o?.os?.version],[`lang/js`],[`md/browser`,`${o?.browser?.name??`unknown`}_${o?.browser?.version??`unknown`}`]];e&&s.push([`api/${e}`,t]);let c=await n?.userAgentAppId?.();return c&&s.push([`app/${c}`]),s}})),Xw,Dne=n((()=>{Yw(),Xw={os(e){if(/iPhone|iPad|iPod/.test(e))return`iOS`;if(/Macintosh|Mac OS X/.test(e))return`macOS`;if(/Windows NT/.test(e))return`Windows`;if(/Android/.test(e))return`Android`;if(/Linux/.test(e))return`Linux`},browser(e){if(/EdgiOS|EdgA|Edg\//.test(e))return`Microsoft Edge`;if(/Firefox\//.test(e))return`Firefox`;if(/Chrome\//.test(e))return`Chrome`;if(/Safari\//.test(e))return`Safari`}}})),Zw=n((()=>{Le()})),Qw,$w=n((()=>{Le(),Zw(),Qw=(e,t=!1)=>{if(t){for(let t of e.split(`.`))if(!Qw(t))return!1;return!0}return!(!we(e)||e.length<3||e.length>63||e!==e.toLowerCase()||je(e))}})),eT,tT,nT,rT=n((()=>{eT=`:`,tT=`/`,nT=e=>{let t=e.split(eT);if(t.length<6)return null;let[n,r,i,a,o,...s]=t;return n!==`arn`||r===``||i===``||s.join(eT)===``?null:{partition:r,service:i,region:a,accountId:o,resourceId:s.map(e=>e.split(tT)).flat()}}})),iT,One=n((()=>{Le(),$w(),rT(),Dw(),iT={isVirtualHostableS3Bucket:Qw,parseArn:nT,partition:Cw},Qe.aws=iT})),kne=n((()=>{Le()})),aT,oT,Ane=n((()=>{mS(),aT=e=>{if(typeof e.endpointProvider!=`function`)throw Error(`@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client.`);let{endpoint:t}=e;return t===void 0&&(e.endpoint=async()=>oT(e.endpointProvider({Region:typeof e.region==`function`?await e.region():e.region,UseDualStack:typeof e.useDualstackEndpoint==`function`?await e.useDualstackEndpoint():e.useDualstackEndpoint,UseFIPS:typeof e.useFipsEndpoint==`function`?await e.useFipsEndpoint():e.useFipsEndpoint,Endpoint:void 0},{logger:e.logger}))),e},oT=e=>ge(e.url)})),jne=n((()=>{Le()})),Mne=n((()=>{nt()}));function Nne(e={}){return w({...g,async default(){return sT.silence||console.warn(`@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly.`),`us-east-1`}},{...v,...e})}var sT,Pne=n((()=>{nt(),sT={silence:!1}})),cT,lT,Fne=n((()=>{cT=e=>({setRegion(t){e.region=t},region(){return e.region}}),lT=e=>({region:e.region()})})),uT=/* @__PURE__ */ i({DEFAULT_UA_APP_ID:()=>void 0,EndpointError:()=>Ce,NODE_APP_ID_CONFIG_OPTIONS:()=>qw,NODE_REGION_CONFIG_FILE_OPTIONS:()=>v,NODE_REGION_CONFIG_OPTIONS:()=>g,REGION_ENV_NAME:()=>P,REGION_INI_NAME:()=>ke,UA_APP_ID_ENV_NAME:()=>Ww,UA_APP_ID_INI_NAME:()=>Gw,awsEndpointFunctions:()=>iT,createDefaultUserAgentProvider:()=>Hw,createUserAgentStringParsingProvider:()=>Jw,crtAvailability:()=>zw,defaultUserAgent:()=>Uw,emitWarningIfUnsupportedVersion:()=>yb,fallback:()=>Xw,getAwsRegionExtensionConfiguration:()=>cT,getHostHeaderPlugin:()=>TC,getLoggerPlugin:()=>OC,getLongPollPlugin:()=>Cb,getRecursionDetectionPlugin:()=>WC,getUserAgentMiddlewareOptions:()=>Iw,getUserAgentPlugin:()=>Lw,getUserAgentPrefix:()=>Ew,hostHeaderMiddleware:()=>CC,hostHeaderMiddlewareOptions:()=>wC,isIpAddress:()=>je,isVirtualHostableS3Bucket:()=>Qw,loggerMiddleware:()=>EC,loggerMiddlewareOptions:()=>DC,parseArn:()=>nT,partition:()=>Cw,recursionDetectionMiddleware:()=>HC,recursionDetectionMiddlewareOptions:()=>kC,resolveAwsRegionExtensionConfiguration:()=>lT,resolveDefaultAwsRegionalEndpointsConfig:()=>aT,resolveEndpoint:()=>pe,resolveHostHeaderConfig:()=>SC,resolveRegionConfig:()=>te,resolveUserAgentConfig:()=>vw,setCredentialFeature:()=>Tb,setFeature:()=>bC,setPartitionInfo:()=>ww,setTokenFeature:()=>Vte,state:()=>vb,stsRegionDefaultResolver:()=>Nne,stsRegionWarning:()=>sT,toEndpointV1:()=>oT,useDefaultPartitionInfo:()=>Tw,userAgentMiddleware:()=>Pw}),dT=n((()=>{bb(),wb(),Eb(),xC(),Hte(),Ute(),Wte(),Gte(),Jte(),UC(),yw(),Sne(),Tne(),Ene(),Dne(),Yw(),One(),kne(),Ane(),Zw(),$w(),rT(),Dw(),jne(),Mne(),Pne(),Fne()})),Ine,Lne=n((()=>{ob(),Ine=(e,{requestChecksumRequired:t,requestAlgorithmMember:n,requestChecksumCalculation:r})=>{if(!n)return r===$y.WHEN_SUPPORTED||t?ab:void 0;if(e[n])return e[n]}})),fT,pT=n((()=>{ob(),fT=e=>e===rb.MD5?`content-md5`:`x-amz-checksum-${e.toLowerCase()}`})),Rne,zne=n((()=>{Rne=(e,t)=>{let n=e.toLowerCase();for(let e of Object.keys(t))if(n===e.toLowerCase())return!0;return!1}})),Bne,Vne=n((()=>{Bne=(e,t)=>{let n=e.toLowerCase();for(let e of Object.keys(t))if(e.toLowerCase().startsWith(n))return!0;return!1}})),mT,Hne=n((()=>{x(),mT=e=>e!==void 0&&typeof e!=`string`&&!ArrayBuffer.isView(e)&&!f(e)})),hT,gT,_T=n((()=>{hT=/* @__PURE__ */ new Uint32Array(256);for(let e=0;e<256;++e){let t=e;for(let e=0;e<8;++e)t=t&1?2197175160^t>>>1:t>>>1;hT[e]=t>>>0}gT=class{digestLength=4;crc=4294967295;update(e){let t=this.crc;for(let n=0;n>>8^hT[(t^e[n])&255];this.crc=t}async digest(){let e=(this.crc^4294967295)>>>0,t=/* @__PURE__ */ new Uint8Array(4);return t[0]=e>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t}reset(){this.crc=4294967295}}})),vT,Une=n((()=>{_T(),vT=gT})),yT,bT=n((()=>{yT={CrtCrc64Nvme:null}})),xT,ST,CT,wT,TT,ET,DT,OT,kT,AT,jT,MT,NT=n((()=>{xT=()=>{let e=Array(8);for(let t=0;t<8;t++){let n=Array(512);for(let e=0;e<256;e++){let r=BigInt(e);for(let e=0;e<8*(t+1);e++)r&1n?r=r>>1n^11127430586519243189n:r>>=1n;n[e*2]=Number(r>>32n&4294967295n),n[e*2+1]=Number(r&4294967295n)}e[t]=new Uint32Array(n)}return e},jT=()=>{ST||(ST=xT(),[CT,wT,TT,ET,DT,OT,kT,AT]=ST)},MT=class{c1=0;c2=0;constructor(){jT(),this.reset()}update(e){let t=e.length,n=0,r=this.c1,i=this.c2;for(;n+8<=t;){let t=((i^e[n++])&255)<<1,a=((i>>>8^e[n++])&255)<<1,o=((i>>>16^e[n++])&255)<<1,s=((i>>>24^e[n++])&255)<<1,c=((r^e[n++])&255)<<1,l=((r>>>8^e[n++])&255)<<1,u=((r>>>16^e[n++])&255)<<1,d=((r>>>24^e[n++])&255)<<1;r=AT[t]^kT[a]^OT[o]^DT[s]^ET[c]^TT[l]^wT[u]^CT[d],i=AT[t+1]^kT[a+1]^OT[o+1]^DT[s+1]^ET[c+1]^TT[l+1]^wT[u+1]^CT[d+1]}for(;n>>8|(r&255)<<24)>>>0,r=r>>>8^CT[t],i^=CT[t+1],++n}this.c1=r,this.c2=i}async digest(){let e=this.c1^4294967295,t=this.c2^4294967295;return new Uint8Array([e>>>24,e>>>16&255,e>>>8&255,e&255,t>>>24,t>>>16&255,t>>>8&255,t&255])}reset(){this.c1=4294967295,this.c2=4294967295}}})),PT,Wne=n((()=>{bT(),NT(),PT=class{impl;constructor(){let e=yT.CrtCrc64Nvme;this.impl=e?new e:new MT}update(e){this.impl.update(e)}async digest(){return this.impl.digest()}reset(){this.impl.reset()}}})),Gne=n((()=>{_T(),Une(),Wne(),NT(),bT(),C()})),FT,IT,LT=n((()=>{ob(),FT=[rb.CRC32,rb.CRC32C,rb.CRC64NVME,rb.SHA1,rb.SHA256],IT=[rb.SHA256,rb.SHA1,rb.CRC32,rb.CRC32C,rb.CRC64NVME]})),RT,zT=n((()=>{Gne(),ob(),LT(),RT=(e,t)=>{let{checksumAlgorithms:n={}}=t;switch(e){case rb.MD5:return n?.MD5??t.md5;case rb.CRC32:return n?.CRC32??ie;case rb.CRC32C:return n?.CRC32C??vT;case rb.CRC64NVME:return n?.CRC64NVME??PT;case rb.SHA1:return n?.SHA1??t.sha1;case rb.SHA256:return n?.SHA256??t.sha256;default:if(n?.[e])return n[e];throw Error(`The checksum algorithm "${e}" is not supported by the client. Select one of ${FT}, or provide an implementation to the client constructor checksums field.`)}}})),BT,VT=n((()=>{x(),BT=(e,t)=>{let n=new e;return n.update(O(t||``)),n.digest()}})),HT,UT,WT=n((()=>{dT(),mS(),x(),ob(),Lne(),pT(),zne(),Vne(),Hne(),zT(),VT(),HT={name:`flexibleChecksumsMiddleware`,step:`build`,tags:[`BODY_CHECKSUM`],override:!0},UT=(e,t)=>(n,r)=>async i=>{if(!rt.isInstance(i.request)||Bne(`x-amz-checksum-`,i.request.headers))return n(i);let{request:a,input:o}=i,{body:s,headers:c}=a,{base64Encoder:l,streamHasher:u}=e,{requestChecksumRequired:d,requestAlgorithmMember:f}=t,p=await e.requestChecksumCalculation(),m=f?.name,h=f?.httpHeader;m&&!o[m]&&(p===$y.WHEN_SUPPORTED||d)&&(o[m]=ab,h&&(c[h]=ab));let g=Ine(o,{requestChecksumRequired:d,requestAlgorithmMember:f?.name,requestChecksumCalculation:p}),v=s,y=c;if(g){switch(g){case rb.CRC32:bC(r,`FLEXIBLE_CHECKSUMS_REQ_CRC32`,`U`);break;case rb.CRC32C:bC(r,`FLEXIBLE_CHECKSUMS_REQ_CRC32C`,`V`);break;case rb.CRC64NVME:bC(r,`FLEXIBLE_CHECKSUMS_REQ_CRC64`,`W`);break;case rb.SHA1:bC(r,`FLEXIBLE_CHECKSUMS_REQ_SHA1`,`X`);break;case rb.SHA256:bC(r,`FLEXIBLE_CHECKSUMS_REQ_SHA256`,`Y`)}let t=fT(g),n=RT(g,e);if(mT(s)){let{getAwsChunkedEncodingStream:i,bodyLengthChecker:a}=e;v=i(typeof e.requestStreamBufferSize==`number`&&e.requestStreamBufferSize>=8192?se(s,e.requestStreamBufferSize,r.logger):s,{base64Encoder:l,bodyLengthChecker:a,checksumLocationName:t,checksumAlgorithmFn:n,streamHasher:u}),y={...c,"content-encoding":c[`content-encoding`]?`${c[`content-encoding`]},aws-chunked`:`aws-chunked`,"transfer-encoding":`chunked`,"x-amz-decoded-content-length":c[`content-length`],"x-amz-content-sha256":`STREAMING-UNSIGNED-PAYLOAD-TRAILER`,"x-amz-trailer":t},delete y[`content-length`]}else if(!Rne(t,c)){let e=await BT(n,s);y={...c,[t]:l(e)}}}try{return await n({...i,request:{...a,headers:y,body:v}})}catch(e){if(e instanceof Error&&e.name===`InvalidChunkSizeError`)try{e.message.endsWith(`.`)||(e.message+=`.`),e.message+=` Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream.`}catch{}throw e}}})),GT,KT,Kne=n((()=>{dT(),ob(),GT={name:`flexibleChecksumsInputMiddleware`,toMiddleware:`serializerMiddleware`,relation:`before`,tags:[`BODY_CHECKSUM`],override:!0},KT=(e,t)=>(n,r)=>async i=>{let a=i.input,{requestValidationModeMember:o}=t,s=await e.requestChecksumCalculation(),c=await e.responseChecksumValidation();switch(s){case $y.WHEN_REQUIRED:bC(r,`FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED`,`a`);break;case $y.WHEN_SUPPORTED:bC(r,`FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED`,`Z`)}switch(c){case tb.WHEN_REQUIRED:bC(r,`FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED`,`c`);break;case tb.WHEN_SUPPORTED:bC(r,`FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED`,`b`)}return o&&!a[o]&&c===tb.WHEN_SUPPORTED&&(a[o]=`ENABLED`),n(i)}})),qT,JT=n((()=>{LT(),qT=(e=[])=>{let t=[],n=IT.length;for(let r of e){let e=IT.indexOf(r);e===-1?t[n++]=r:t[e]=r}return t.filter(Boolean)}})),YT,qne=n((()=>{YT=e=>{let t=e.lastIndexOf(`-`);if(t!==-1){let n=e.slice(t+1);if(!n.startsWith(`0`)){let e=parseInt(n,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1}})),XT,Jne=n((()=>{VT(),XT=async(e,{checksumAlgorithmFn:t,base64Encoder:n})=>n(await BT(t,e))})),ZT,Yne=n((()=>{x(),ob(),Jne(),JT(),pT(),Hne(),zT(),ZT=async(e,{config:t,responseAlgorithms:n,logger:r})=>{let i=qT(n),{body:a,headers:o}=e;for(let n of i){let i=fT(n),s=o[i];if(s){let o;try{o=RT(n,t)}catch(e){if(n===rb.CRC64NVME){r?.warn(`Skipping ${rb.CRC64NVME} checksum validation: ${e.message}`);continue}throw e}let{base64Encoder:c}=t;if(mT(a)){e.body=I({expectedChecksum:s,checksumSourceLocation:i,checksum:new o,source:a,base64Encoder:c});return}let l=await XT(a,{checksumAlgorithmFn:o,base64Encoder:c});if(l===s)break;throw Error(`Checksum mismatch: expected "${l}" but received "${s}" in response header "${i}".`)}}}})),QT,$T,Xne=n((()=>{mS(),JT(),pT(),qne(),Yne(),QT={name:`flexibleChecksumsResponseMiddleware`,toMiddleware:`deserializerMiddleware`,relation:`after`,tags:[`BODY_CHECKSUM`],override:!0},$T=(e,t)=>(n,r)=>async i=>{if(!rt.isInstance(i.request))return n(i);let a=i.input,o=await n(i),s=o.response,{requestValidationModeMember:c,responseAlgorithms:l}=t;if(c&&a[c]===`ENABLED`){let{clientName:t,commandName:n}=r,i=Object.keys(e.checksumAlgorithms??{}).filter(e=>{let t=fT(e);return s.headers[t]!==void 0}),a=qT([...l??[],...i]);if(t===`S3Client`&&n===`GetObjectCommand`&&a.every(e=>{let t=fT(e),n=s.headers[t];return!n||YT(n)}))return o;await ZT(s,{config:e,responseAlgorithms:a,logger:r.logger})}return o}})),eE,Zne=n((()=>{Kne(),WT(),Xne(),eE=(e,t)=>({applyToStack:n=>{n.add(UT(e,t),HT),n.addRelativeTo(KT(e,t),GT),n.addRelativeTo($T(e,t),QT)}})})),tE,Qne=n((()=>{R(),ob(),tE=e=>{let{requestChecksumCalculation:t,responseChecksumValidation:n,requestStreamBufferSize:r}=e;return Object.assign(e,{requestChecksumCalculation:Se(t??eb),responseChecksumValidation:Se(n??nb),requestStreamBufferSize:Number(r??0),checksumAlgorithms:e.checksumAlgorithms??{}})}})),$ne=/* @__PURE__ */ i({CONFIG_REQUEST_CHECKSUM_CALCULATION:()=>db,CONFIG_RESPONSE_CHECKSUM_VALIDATION:()=>hb,ChecksumAlgorithm:()=>rb,ChecksumLocation:()=>ib,DEFAULT_CHECKSUM_ALGORITHM:()=>ab,DEFAULT_REQUEST_CHECKSUM_CALCULATION:()=>eb,DEFAULT_RESPONSE_CHECKSUM_VALIDATION:()=>nb,ENV_REQUEST_CHECKSUM_CALCULATION:()=>ub,ENV_RESPONSE_CHECKSUM_VALIDATION:()=>mb,NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS:()=>fb,NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS:()=>gb,RequestChecksumCalculation:()=>$y,ResponseChecksumValidation:()=>tb,flexibleChecksumsMiddleware:()=>UT,flexibleChecksumsMiddlewareOptions:()=>HT,getFlexibleChecksumsPlugin:()=>eE,resolveFlexibleChecksumsConfig:()=>tE}),ere=n((()=>{pb(),_b(),ob(),WT(),Zne(),Qne()}));function nE(){return(e,t)=>async n=>{let{request:r}=n;if(rt.isInstance(r)&&!(rE in r.headers)&&!(iE in r.headers)){let e=`Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`;typeof t?.logger?.warn==`function`&&!(t.logger instanceof N)?t.logger.warn(e):console.warn(e)}return e({...n})}}var rE,iE,aE,oE,tre=n((()=>{R(),mS(),rE=`content-length`,iE=`x-amz-decoded-content-length`,aE={step:`finalizeRequest`,tags:[`CHECK_CONTENT_LENGTH_HEADER`],name:`getCheckContentLengthHeaderPlugin`,override:!0},oE=e=>({applyToStack:e=>{e.add(nE(),aE)}})})),sE,cE,lE=n((()=>{sE=e=>(t,n)=>async r=>{let i=await e.region(),a=e.region,o=()=>{};n.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>n.__s3RegionRedirect}),o=()=>Object.defineProperty(e,"region",{writable:!0,value:a}));try{let a=await t(r);if(n.__s3RegionRedirect&&(o(),i!==await e.region()))throw Error(`Region was not restored following S3 region redirect.`);return a}catch(e){throw o(),e}},cE={tags:[`REGION_REDIRECT`,`S3`],name:`regionRedirectEndpointMiddleware`,override:!0,relation:`before`,toMiddleware:`endpointV2Middleware`}}));function uE(e){return(t,n)=>async r=>{try{return await t(r)}catch(i){if(e.followRegionRedirects){let a=i?.$metadata?.httpStatusCode,o=n.commandName===`HeadBucketCommand`,s=i?.$response?.headers?.[`x-amz-bucket-region`];if(s&&(a===301||a===400&&(i?.name===`IllegalLocationConstraintException`||o))){try{let t=s;n.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),n.__s3RegionRedirect=t,bC(n,`S3_REGION_REDIRECT`,`Ah`)}catch(e){throw Error(`Region redirect failed: `+e)}return t(r)}}throw i}}}var dE,fE,nre=n((()=>{dT(),lE(),dE={step:`initialize`,tags:[`REGION_REDIRECT`,`S3`],name:`regionRedirectMiddleware`,override:!0},fE=e=>({applyToStack:t=>{t.add(uE(e),dE),t.addRelativeTo(sE(e),cE)}})})),pE,mE=n((()=>{pE=class e{data;lastPurgeTime=Date.now();static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS=3e4;constructor(e={}){this.data=e}get(e){let t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){let t=Date.now();if(!(this.lastPurgeTime+e.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>t))for(let e in this.data){let n=this.data[e];if(!n.isRefreshing){let r=await n.identity;r.expiration&&r.expiration.getTime(){hE=class{_identity;isRefreshing;accessed;constructor(e,t=!1,n=Date.now()){this._identity=e,this.isRefreshing=t,this.accessed=n}get identity(){return this.accessed=Date.now(),this._identity}}})),_E,vE=n((()=>{mE(),gE(),_E=class e{createSessionFn;cache;static REFRESH_WINDOW_MS=6e4;constructor(e,t=new pE){this.createSessionFn=e,this.cache=t}async getS3ExpressIdentity(t,n){let r=n.Bucket,{cache:i}=this,a=i.get(r);return a?a.identity.then(t=>(t.expiration?.getTime()??0){i.set(r,new hE(Promise.resolve(e)))})),t)):i.set(r,new hE(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch(e=>{console.warn(`Error while clearing expired entries in S3ExpressIdentityCache: -`+e)});let t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw Error(`s3#createSession response credential missing AccessKeyId or SecretAccessKey.`);return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}})),yE,rre=n((()=>{vE(),yE=(e,{session:t})=>{let[n,r]=t,{forcePathStyle:i,useAccelerateEndpoint:a,disableMultiregionAccessPoints:o,followRegionRedirects:s,s3ExpressIdentityProvider:c,bucketEndpoint:l,expectContinueHeader:u}=e;return Object.assign(e,{forcePathStyle:i??!1,useAccelerateEndpoint:a??!1,disableMultiregionAccessPoints:o??!1,followRegionRedirects:s??!1,s3ExpressIdentityProvider:c??new _E(async e=>n().send(new r({Bucket:e}))),bucketEndpoint:l??!1,expectContinueHeader:u??2097152})}})),bE,xE,SE,ire=n((()=>{mS(),x(),bE=e=>(e,t)=>async n=>{let r=await e(n),{response:i}=r;if(fe.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{Ve(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return r},xE={tags:[`S3`],name:`s3ExpiresMiddleware`,override:!0,relation:`after`,toMiddleware:`deserializerMiddleware`},SE=e=>({applyToStack:t=>{t.addRelativeTo(bE(e),xE)}})})),CE,wE,TE,EE,DE,OE=n((()=>{CE=(e,t)=>{let n=[];if(e&&n.push(e),t)for(let e of t)n.push(e);return n},wE=(e,t)=>`${e||`anonymous`}${t&&t.length>0?` (a.k.a. ${t.join(`,`)})`:``}`,TE=()=>{let e=[],t=[],n=!1,r=/* @__PURE__ */ new Set,i=e=>e.sort((e,t)=>EE[t.step]-EE[e.step]||DE[t.priority||`normal`]-DE[e.priority||`normal`]),a=n=>{let i=!1,a=e=>{let t=CE(e.name,e.aliases);if(t.includes(n)){i=!0;for(let e of t)r.delete(e);return!1}return!0};return e=e.filter(a),t=t.filter(a),i},o=n=>{let i=!1,a=e=>{if(e.middleware===n){i=!0;for(let t of CE(e.name,e.aliases))r.delete(t);return!1}return!0};return e=e.filter(a),t=t.filter(a),i},s=n=>(e.forEach(e=>{n.add(e.middleware,{...e})}),t.forEach(e=>{n.addRelativeTo(e.middleware,{...e})}),n.identifyOnResolve?.(u.identifyOnResolve()),n),c=e=>{let t=[];return e.before.forEach(e=>{e.before.length===0&&e.after.length===0?t.push(e):t.push(...c(e))}),t.push(e),e.after.reverse().forEach(e=>{e.before.length===0&&e.after.length===0?t.push(e):t.push(...c(e))}),t},l=(n=!1)=>{let r=[],a=[],o={};return e.forEach(e=>{let t={...e,before:[],after:[]};for(let e of CE(t.name,t.aliases))o[e]=t;r.push(t)}),t.forEach(e=>{let t={...e,before:[],after:[]};for(let e of CE(t.name,t.aliases))o[e]=t;a.push(t)}),a.forEach(e=>{if(e.toMiddleware){let t=o[e.toMiddleware];if(t===void 0){if(n)return;throw Error(`${e.toMiddleware} is not found when adding ${wE(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}e.relation===`after`&&t.after.push(e),e.relation===`before`&&t.before.push(e)}}),i(r).map(c).reduce((e,t)=>(e.push(...t),e),[])},u={add:(t,n={})=>{let{name:i,override:a,aliases:o}=n,s={step:`initialize`,priority:`normal`,middleware:t,...n},c=CE(i,o);if(c.length>0){if(c.some(e=>r.has(e))){if(!a)throw Error(`Duplicate middleware name '${wE(i,o)}'`);for(let t of c){let n=e.findIndex(e=>e.name===t||e.aliases?.some(e=>e===t));if(n===-1)continue;let r=e[n];if(r.step!==s.step||s.priority!==r.priority)throw Error(`"${wE(r.name,r.aliases)}" middleware with ${r.priority} priority in ${r.step} step cannot be overridden by "${wE(i,o)}" middleware with ${s.priority} priority in ${s.step} step.`);e.splice(n,1)}}for(let e of c)r.add(e)}e.push(s)},addRelativeTo:(e,n)=>{let{name:i,override:a,aliases:o}=n,s={middleware:e,...n},c=CE(i,o);if(c.length>0){if(c.some(e=>r.has(e))){if(!a)throw Error(`Duplicate middleware name '${wE(i,o)}'`);for(let e of c){let n=t.findIndex(t=>t.name===e||t.aliases?.some(t=>t===e));if(n===-1)continue;let r=t[n];if(r.toMiddleware!==s.toMiddleware||r.relation!==s.relation)throw Error(`"${wE(r.name,r.aliases)}" middleware ${r.relation} "${r.toMiddleware}" middleware cannot be overridden by "${wE(i,o)}" middleware ${s.relation} "${s.toMiddleware}" middleware.`);t.splice(n,1)}}for(let e of c)r.add(e)}t.push(s)},clone:()=>s(TE()),use:e=>{e.applyToStack(u)},remove:e=>typeof e==`string`?a(e):o(e),removeByTag:n=>{let i=!1,a=e=>{let{tags:t,name:a,aliases:o}=e;if(t&&t.includes(n)){let e=CE(a,o);for(let t of e)r.delete(t);return i=!0,!1}return!0};return e=e.filter(a),t=t.filter(a),i},concat:e=>{let t=s(TE());return t.use(e),t.identifyOnResolve(n||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:s,identify:()=>l(!0).map(e=>{let t=e.step??e.relation+` `+e.toMiddleware;return wE(e.name,e.aliases)+` - `+t}),identifyOnResolve(e){return typeof e==`boolean`&&(n=e),n},resolve:(e,t)=>{for(let n of l().map(e=>e.middleware).reverse())e=n(e,t);return n&&console.log(u.identify()),e}};return u},EE={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},DE={high:3,normal:2,low:1}})),kE,are=n((()=>{kE=e=>()=>{throw Error(e)}})),AE,ore=n((()=>{AE=e=>()=>Promise.reject(e)})),jE,ME=n((()=>{jE=()=>{let e=/* @__PURE__ */ new WeakSet;return(t,n)=>{if(typeof n==`object`&&n){if(e.has(n))return`[Circular]`;e.add(n)}return n}}})),NE,sre=n((()=>{NE=e=>new Promise(t=>setTimeout(t,e*1e3))})),PE,FE,IE,LE=n((()=>{ME(),PE={minDelay:2,maxDelay:120},(function(e){e.ABORTED=`ABORTED`,e.FAILURE=`FAILURE`,e.SUCCESS=`SUCCESS`,e.RETRY=`RETRY`,e.TIMEOUT=`TIMEOUT`})(FE||={}),IE=e=>{if(e.state===FE.ABORTED){let t=/* @__PURE__ */ Error(`${JSON.stringify({...e,reason:`Request was aborted`},jE())}`);throw t.name=`AbortError`,t}if(e.state===FE.TIMEOUT){let t=/* @__PURE__ */ Error(`${JSON.stringify({...e,reason:`Waiter has timed out`},jE())}`);throw t.name=`TimeoutError`,t}if(e.state!==FE.SUCCESS)throw Error(`${JSON.stringify(e,jE())}`);return e}})),RE,zE,BE,VE,HE,cre=n((()=>{ME(),sre(),LE(),RE=async({minDelay:e,maxDelay:t,maxWaitTime:n,abortController:r,client:i,abortSignal:a},o,s)=>{let c={},[l,u]=[e*1e3,t*1e3],d=0,f=Date.now()+n*1e3,p=Date.now()+6e4,m=!1;for(;;){if(d>0){let e=VE(l,u,d,f);if(r?.signal?.aborted||a?.aborted){let e=`AbortController signal aborted.`;return c[e]|=0,c[e]+=1,{state:FE.ABORTED,observedResponses:c}}if(Date.now()+e>f)return{state:FE.TIMEOUT,observedResponses:c};await NE(e/1e3)}let{state:e,reason:t}=await s(i,o);if(t){let e=BE(t);c[e]|=0,c[e]+=1}if(e!==FE.RETRY)return{state:e,reason:t,final:t,observedResponses:c};d+=1,!m&&Date.now()>=p&&(zE(c,i),m=!0)}},zE=(e={},t)=>{let n=Object.keys(e),r=0,i=0;for(let t of n){let n=e[t]|0;r=Math.max(n,r),t.startsWith(`403:`)&&(i+=n)}let a=t?.config?.logger,o=typeof a?.warn==`function`&&!a.constructor?.name?.includes?.(`NoOpLogger`)?a:console;(i>=3||n[n.length-1]?.startsWith(`403:`))&&o.warn(`@smithy/util-waiter WARN - 403 status code encountered during waiter polling.`)},BE=e=>{let t=e?.$response?.statusCode??e?.$metadata?.httpStatusCode;return e?.$responseBodyText?`${t?t+`: `:``}Deserialization error for body: ${e.$responseBodyText}`:t?e?.$response||e?.message?`${t??`Unknown`}: ${e?.message}`:`${t}: OK`:String(e?.message??JSON.stringify(e,jE())??`Unknown`)},VE=(e,t,n,r)=>{if(n>Math.log(t/e)/Math.log(2)+1)return t;let i=e*2**(n-1),a=HE(e,Math.min(i,t));if(Date.now()+a>r){let e=r-Date.now();return Math.max(0,e-500)}return a},HE=(e,t)=>e+Math.random()*(t-e)})),UE,lre=n((()=>{UE=e=>{if(e.maxWaitTime<=0)throw Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);if(e.minDelay<=0)throw Error(`WaiterConfiguration.minDelay must be greater than 0`);if(e.maxDelay<=0)throw Error(`WaiterConfiguration.maxDelay must be greater than 0`);if(e.maxWaitTime<=e.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${e.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${e.minDelay}] for this waiter`);if(e.maxDelay{cre(),lre(),LE(),WE=e=>{let t;return{clearListener(){typeof e.removeEventListener==`function`&&e.removeEventListener(`abort`,t)},aborted:new Promise(n=>{t=()=>n({state:FE.ABORTED}),typeof e.addEventListener==`function`?e.addEventListener(`abort`,t):e.onabort=t})}},GE=async(e,t,n)=>{let r={...PE,...e};UE(r);let i=[RE(r,t,n)],a=[];if(e.abortSignal){let{aborted:t,clearListener:n}=WE(e.abortSignal);a.push(n),i.push(t)}if(e.abortController?.signal){let{aborted:t,clearListener:n}=WE(e.abortController.signal);a.push(n),i.push(t)}return Promise.race(i).then(e=>{for(let e of a)e();return e})}})),KE,dre=n((()=>{OE(),KE=class{config;middlewareStack=TE();initConfig;handlers;constructor(e){this.config=e;let{protocol:t,protocolSettings:n}=e;n&&typeof t==`function`&&(e.protocol=new t(n))}send(e,t,n){let r=typeof t==`function`?void 0:t,i=typeof t==`function`?t:n,a=r===void 0&&this.config.cacheMiddleware===!0,o;if(a){this.handlers||=/* @__PURE__ */ new WeakMap;let t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,r),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,r);if(i)o(e).then(e=>i(null,e.output),e=>i(e)).catch(()=>{});else return o(e).then(e=>e.output)}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}}));function qE(e,t){if(t==null)return t;let n=Lt.of(e);if(n.getMergedTraits().sensitive)return JE;if(n.isListSchema()){if(n.getValueSchema().getMergedTraits().sensitive)return JE}else if(n.isMapSchema()){if(n.getKeySchema().getMergedTraits().sensitive||n.getValueSchema().getMergedTraits().sensitive)return JE}else if(n.isStructSchema()&&typeof t==`object`){let e=t,r={};for(let[t,i]of n.structIterator())e[t]!=null&&(r[t]=qE(i,e[t]));return r}return t}var JE,YE=n((()=>{Ft(),JE=`***SensitiveInformation***`})),XE,ZE,QE,$E=n((()=>{XE=ct(),OE(),YE(),ZE=class{middlewareStack=TE();schema;static classBuilder(){return new QE}resolveMiddlewareWithContext(e,t,n,{middlewareFn:r,clientName:i,commandName:a,inputFilterSensitiveLog:o,outputFilterSensitiveLog:s,smithyContext:c,additionalContext:l,CommandCtor:u}){for(let i of r.bind(this)(u,e,t,n))this.middlewareStack.use(i);let d=e.concat(this.middlewareStack),{logger:f}=t,p=l[XE.SMITHY_CONTEXT_KEY],m={logger:f,clientName:i,commandName:a,inputFilterSensitiveLog:o,outputFilterSensitiveLog:s,...l,[XE.SMITHY_CONTEXT_KEY]:{...p,commandInstance:this,...c,...n?.metricsRecorder===void 0?{}:{metricsRecorder:n.metricsRecorder}}},{requestHandler:h}=t,g=n??{};return g.metricsRecorder&&(g={...g},delete g.metricsRecorder),c.eventStream&&(g={isEventStream:!0,...g}),d.resolve(e=>h.handle(e.request,g),m)}},QE=class{_init=()=>{};_ep={};_middlewareFn=()=>[];_commandName=``;_clientName=``;_additionalContext={};_smithyContext={};_inputFilterSensitiveLog=void 0;_outputFilterSensitiveLog=void 0;_serializer=null;_deserializer=null;_operationSchema;init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,n={}){return this._smithyContext={service:e,operation:t,...n},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}sc(e){return this._operationSchema=e,this._smithyContext.operationSchema=e,this}build(){let e=this,t;return t=class extends ZE{input;static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.input=t??{},e._init(this),this.schema=e._operationSchema}resolveMiddleware(n,r,i){let a=e._operationSchema,o=a?.[4]??a?.input,s=a?.[5]??a?.output;return this.resolveMiddlewareWithContext(n,r,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog??(a?qE.bind(null,o):e=>e),outputFilterSensitiveLog:e._outputFilterSensitiveLog??(a?qE.bind(null,s):e=>e),smithyContext:e._smithyContext,additionalContext:e._additionalContext})}serialize=e._serializer;deserialize=e._deserializer}}}})),eD,fre=n((()=>{eD=`***SensitiveInformation***`})),tD,pre=n((()=>{tD=(e,t,n)=>{for(let[n,r]of Object.entries(e)){let e=async function(e,t,n){let i=new r(e);if(typeof t==`function`)this.send(i,t);else if(typeof n==`function`){if(typeof t!=`object`)throw Error(`Expected http options but got ${typeof t}`);this.send(i,t||{},n)}else return this.send(i,t)},i=(n[0].toLowerCase()+n.slice(1)).replace(/Command$/,``);t.prototype[i]=e}let{paginators:r={},waiters:i={}}=n??{};for(let[e,n]of Object.entries(r))t.prototype[e]===void 0&&(t.prototype[e]=function(e={},t,...r){return n({...t,client:this},e,...r)});for(let[e,n]of Object.entries(i))t.prototype[e]===void 0&&(t.prototype[e]=async function(e={},t,...r){let i=t;return typeof t==`number`&&(i={maxWaitTime:t}),n({...i,client:this},e,...r)})}})),nD,rD,iD=n((()=>{nD=class e extends Error{static shapeId=`smithy.ts.sdk.synthetic.nonamespace.client#ServiceException`;$fault;$response;$retryable;$metadata;constructor(e){super(e.message),Object.setPrototypeOf(this,Object.getPrototypeOf(this).constructor.prototype),this.name=e.name,this.$fault=e.$fault,this.$metadata=e.$metadata}static isInstance(t){if(!t)return!1;let n=t;return e.prototype.isPrototypeOf(n)||!!n.$fault&&!!n.$metadata&&(n.$fault===`client`||n.$fault===`server`)}static[Symbol.hasInstance](t){if(!t)return!1;let n=t;if(this===e)return e.isInstance(t);if(e.isInstance(t)){if(this.prototype.isPrototypeOf(t))return!0;let r=Object.prototype.hasOwnProperty.call(this,`shapeId`)?this.shapeId:void 0,i=!1;if(r){let t=Object.getPrototypeOf(n);for(;t&&t!==Object.prototype;){let n=t.constructor,a=n!==e&&Object.prototype.hasOwnProperty.call(n,`shapeId`)?n?.shapeId:void 0;if(a&&(i=!0,a===r))return!0;t=Object.getPrototypeOf(t)}}if(r&&i)return!1;let a=this.name;if(a&&a.length>=6){if(n.name===a)return!0;let e=Object.getPrototypeOf(n);for(;e&&e!==Object.prototype;){let t=e.constructor?.name;if(t&&t!==`Error`&&t===a)return!0;e=Object.getPrototypeOf(e)}}}return!1}},rD=(e,t={})=>(Object.entries(t).filter(([,e])=>e!==void 0).forEach(([t,n])=>{(e[t]==null||e[t]===``)&&(e[t]=n)}),e.message=e.message||e.Message||`UnknownError`,delete e.Message,e)})),aD,oD,sD,mre=n((()=>{iD(),aD=({output:e,parsedBody:t,exceptionCtor:n,errorCode:r})=>{let i=sD(e),a=i.httpStatusCode?i.httpStatusCode+``:void 0,o=new n({name:t?.code||t?.Code||r||a||`UnknownError`,$fault:`client`,$metadata:i});throw rD(o,t)},oD=e=>({output:t,parsedBody:n,errorCode:r})=>{aD({output:t,parsedBody:n,exceptionCtor:e,errorCode:r})},sD=e=>({httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]})})),cD,hre=n((()=>{cD=e=>{switch(e){case`standard`:return{retryMode:`standard`,connectionTimeout:3100};case`in-region`:return{retryMode:`standard`,connectionTimeout:1100};case`cross-region`:return{retryMode:`standard`,connectionTimeout:3100};case`mobile`:return{retryMode:`standard`,connectionTimeout:3e4};default:return{}}}})),lD,uD,gre=n((()=>{lD=!1,uD=e=>{e&&!lD&&parseInt(e.substring(1,e.indexOf(`.`)))<16&&(lD=!0)}})),dD,fD,pD,mD,hD=n((()=>{gt(),dD=ct(),fD=Object.values(dD.AlgorithmId),pD=e=>{let t=[];for(let n in dD.AlgorithmId){if(!mt(dD.AlgorithmId,n))continue;let r=dD.AlgorithmId[n];e[r]!==void 0&&t.push({algorithmId:()=>r,checksumConstructor:()=>e[r]})}for(let[n,r]of Object.entries(e.checksumAlgorithms??{}))t.push({algorithmId:()=>n,checksumConstructor:()=>r});return{addChecksumAlgorithm(n){e.checksumAlgorithms=e.checksumAlgorithms??{};let r=n.algorithmId(),i=n.checksumConstructor();fD.includes(r)?e.checksumAlgorithms[r.toUpperCase()]=i:e.checksumAlgorithms[r]=i,t.push(n)},checksumAlgorithms(){return t}}},mD=e=>{let t={};return e.checksumAlgorithms().forEach(e=>{let n=e.algorithmId();fD.includes(n)&&(t[n]=e.checksumConstructor())}),t}})),gD,_D,vD=n((()=>{gD=e=>({setRetryStrategy(t){e.retryStrategy=t},retryStrategy(){return e.retryStrategy}}),_D=e=>{let t={};return t.retryStrategy=e.retryStrategy(),t}})),yD,bD,xD,_re=n((()=>{hD(),vD(),yD=e=>Object.assign(pD(e),gD(e)),bD=yD,xD=e=>Object.assign(mD(e),_D(e))})),SD,vre=n((()=>{SD=e=>Array.isArray(e)?e:[e]})),CD,yre=n((()=>{gt(),CD=e=>{let t=`#text`;for(let n in e)mt(e,n)&&(e[n][t]===void 0?typeof e[n]==`object`&&e[n]!==null&&(e[n]=CD(e[n])):e[n]=e[n][t]);return e}})),wD,bre=n((()=>{wD=e=>e!=null})),TD,xre=n((()=>{TD=class{trace(){}debug(){}info(){}warn(){}error(){}}}));function ED(e,t,n){let r,i,a;if(t===void 0&&n===void 0)r={},a=e;else{if(r=e,typeof t==`function`)return i=t,a=n,kD(r,i,a);a=t}for(let e in a)mt(a,e)&&(Array.isArray(a[e])?AD(r,null,a,e):r[e]=a[e]);return r}var DD,OD,kD,AD,jD,MD,Sre=n((()=>{gt(),DD=e=>{let t={};for(let[n,r]of Object.entries(e||{}))t[n]=[,r];return t},OD=(e,t)=>{let n={};for(let r in t)mt(t,r)&&AD(n,e,t,r);return n},kD=(e,t,n)=>ED(e,Object.entries(n).reduce((e,[n,r])=>(e[n]=Array.isArray(r)?r:typeof r==`function`?[t,r()]:[t,r],e),{})),AD=(e,t,n,r)=>{if(t!==null){let i=n[r];typeof i==`function`&&(i=[,i]);let[a=jD,o=MD,s=r]=i;(typeof a==`function`&&a(t[s])||typeof a!=`function`&&a)&&(e[r]=o(t[s]));return}let[i,a]=n[r];if(typeof a==`function`){let t,n=i===void 0&&(t=a())!=null,o=typeof i==`function`&&!!i(void 0)||typeof i!=`function`&&!!i;n?e[r]=t:o&&(e[r]=a())}else{let t=i===void 0&&a!=null,n=typeof i==`function`&&!!i(a)||typeof i!=`function`&&!!i;(t||n)&&(e[r]=a)}},jD=e=>e!=null,MD=e=>e})),ND,PD,Cre=n((()=>{ND=e=>{if(e!==e)return`NaN`;switch(e){case 1/0:return`Infinity`;case-1/0:return`-Infinity`;default:return e}},PD=e=>e.toISOString().replace(`.000Z`,`Z`)})),FD,wre=n((()=>{gt(),FD=e=>{if(e==null)return{};if(Array.isArray(e))return e.filter(e=>e!=null).map(FD);if(typeof e==`object`){let t={};for(let n in e)mt(e,n)&&e[n]!=null&&(t[n]=FD(e[n]));return t}return e}}));function Tre(e,t,n,r){return function(i,a,o,s,c={}){let l=Object.assign({},e,i);return ZE.classBuilder().ep(l).m(function(e,t,n,i){let o=a.call(this,e,t,n,i);return o.unshift(r(n,e.getEndpointParameterInstructions())),o}).s(t,o,c).n(n,o.charAt(0).toUpperCase()+o.slice(1)+`Command`).sc(s).build()}}var Ere=n((()=>{$E()})),Dre=/* @__PURE__ */ i({AlgorithmId:()=>dD.AlgorithmId,Client:()=>KE,Command:()=>ZE,NoOpLogger:()=>TD,SENSITIVE_STRING:()=>eD,ServiceException:()=>nD,WaiterState:()=>FE,_json:()=>FD,checkExceptions:()=>IE,constructStack:()=>TE,convertMap:()=>DD,createAggregatedClient:()=>tD,createWaiter:()=>GE,decorateServiceException:()=>rD,emitWarningIfUnsupportedVersion:()=>uD,getArrayIfSingleItem:()=>SD,getChecksumConfiguration:()=>pD,getDefaultClientConfiguration:()=>bD,getDefaultExtensionConfiguration:()=>yD,getRetryConfiguration:()=>gD,getSmithyContext:()=>pt,getValueFromTextNode:()=>CD,invalidFunction:()=>kE,invalidProvider:()=>AE,isSerializableHeaderValue:()=>wD,loadConfigsForDefaultMode:()=>cD,makeBuilder:()=>Tre,map:()=>ED,normalizeProvider:()=>zt,resolveChecksumRuntimeConfig:()=>mD,resolveDefaultRuntimeConfig:()=>xD,resolveRetryRuntimeConfig:()=>_D,schemaLogFilter:()=>qE,serializeDateTime:()=>PD,serializeFloat:()=>ND,take:()=>OD,throwDefaultError:()=>aD,waiterServiceDefaults:()=>PE,withBaseException:()=>oD}),Ore=n((()=>{OE(),gt(),are(),ore(),ure(),LE(),dre(),$E(),fre(),pre(),mre(),hre(),gre(),iD(),_re(),hD(),vD(),vre(),yre(),bre(),xre(),Sre(),YE(),Cre(),wre(),Ere()})),ID,LD=n((()=>{Pt(),ID=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return It.mutate(e);if(!e)return It.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return It.mutate(await n)}}));function RD(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var zD=n((()=>{})),BD,VD=n((()=>{BD=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),HD,UD=n((()=>{gt(),Ft(),VD(),HD=class extends BD{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new Tt(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return xt}getResponseType(){return ft}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)mt(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)mt(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=Lt.of(t.input),i=Nt(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!bt(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-D8vV3lRY.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),WD,kre=n((()=>{gt(),Ft(),Pt(),UD(),LD(),zD(),WD=class extends HD{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=Lt.of(e?.input),l=[],u=[],d=!1,f,p=new xt({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(p,s),this.setHostPrefix(p,e,r);let t=Nt(e.traits);if(t.http){p.method=t.http[0];let[e,n]=t.http[1].split(`?`);p.path==`/`?p.path=e:p.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(p.path.includes(`{${e}+}`)||p.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(f=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):f=s:(i.write(t,s),f=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();p.path.includes(`{${e}+}`)?p.path=p.path.replace(`{${e}+}`,n.split(`/`).map(RD).join(`/`)):p.path.includes(`{${e}}`)&&(p.path=p.path.replace(`{${e}}`,RD(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!mt(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(d=!0,l.push(e),u.push(t))}if(d&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),l,u,void 0];n?a[6]=n:a.pop(),i.write(a,r),f=i.flush()}return p.headers=o,p.query=a,p.body=f,p}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(mt(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=Lt.of(e.output),a={};if(n.statusCode>=300){let i=await ID(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await ID(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await ID(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=Lt.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=Mt(n.body);else if(n.body){let i=await ID(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?vt(o,`,`,2):wt(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(mt(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),GD,Are=n((()=>{gt(),Ft(),UD(),LD(),GD=class extends HD{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=Lt.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new xt({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=Lt.of(e.output),a={};if(n.statusCode>=300){let i=await ID(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await ID(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),KD,qD=n((()=>{zD(),KD=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>RD(e)).join(`/`):RD(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function jre(e,t){return new JD(e,t)}var JD,Mre=n((()=>{gt(),qD(),JD=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new xt({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=KD(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function YD(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var XD=n((()=>{})),ZD,QD=n((()=>{Ft(),Pt(),VD(),XD(),ZD=class extends BD{settings;constructor(e){super(),this.settings=e}read(e,t){let n=Lt.of(e);if(n.isListSchema())return wt(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??jt)(t);if(n.isTimestampSchema())switch(YD(n,this.settings)){case 5:return Rt(t);case 6:return yt(t);case 7:return ut(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=kt.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new Ct(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??St)((this.serdeContext?.base64Decoder??jt)(e))}}})),$D,Nre=n((()=>{Ft(),Pt(),VD(),QD(),$D=class extends BD{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new ZD(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=Lt.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??St;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??Et;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),eO,tO=n((()=>{Ft(),Pt(),VD(),XD(),eO=class extends BD{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=Lt.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(YD(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Ot(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??lt)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:_t(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=kt.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??lt)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?At():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),nO,Pre=n((()=>{Ft(),tO(),nO=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new eO(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=Lt.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),rO,iO,Fre=n((()=>{rO=ct(),iO=class{name;kind;values;constructor({name:e,kind:t=rO.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),aO,Ire=n((()=>{aO=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),oO,sO,Lre=n((()=>{oO=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),sO=e=>({requestHandler:e.httpHandler()})}));function cO(e){return t=>async n=>{let r=n.request;if(xt.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(lO)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[lO]:String(n)})}catch{}}return t({...n,request:r})}}var lO,uO,dO,Rre=n((()=>{gt(),lO=`content-length`,uO={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},dO=e=>({applyToStack:t=>{t.add(cO(e.bodyLengthChecker),uO)}})})),fO,pO,mO=n((()=>{fO=e=>encodeURIComponent(e).replace(/[!'()*]/g,pO),pO=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),hO,zre=n((()=>{mO(),hO=e=>e.split(`/`).map(fO).join(`/`)}));function Bre(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=fO(n),Array.isArray(r))for(let e=0,i=r.length;e{mO()})),Hre=/* @__PURE__ */ i({Field:()=>iO,Fields:()=>aO,FromStringShapeDeserializer:()=>ZD,HttpBindingProtocol:()=>WD,HttpInterceptingShapeDeserializer:()=>$D,HttpInterceptingShapeSerializer:()=>nO,HttpProtocol:()=>HD,HttpRequest:()=>xt,HttpResponse:()=>ft,RequestBuilder:()=>JD,RpcProtocol:()=>GD,SerdeContext:()=>BD,ToStringShapeSerializer:()=>eO,buildQueryString:()=>Bre,collectBody:()=>ID,contentLengthMiddleware:()=>cO,contentLengthMiddlewareOptions:()=>uO,determineTimestampFormat:()=>YD,escapeUri:()=>fO,escapeUriPath:()=>hO,extendedEncodeURIComponent:()=>RD,getContentLengthPlugin:()=>dO,getHttpHandlerExtensionConfiguration:()=>oO,isValidHostname:()=>bt,parseQueryString:()=>ht,parseUrl:()=>dt,requestBuilder:()=>jre,resolveHttpHandlerRuntimeConfig:()=>sO,resolvedPath:()=>KD}),Ure=n((()=>{LD(),zD(),kre(),UD(),Are(),Mre(),qD(),QD(),Nre(),Pre(),tO(),XD(),VD(),Fre(),Ire(),gt(),Lre(),Rre(),mO(),zre(),Vre()})),gO=/* @__PURE__ */ a((t=>{let{hasOwn:n,fromUtf8:r,fromHex:i,toHex:a,toUint8Array:o,isArrayBuffer:s}=(Pt(),e(Dt)),{normalizeProvider:c}=(Ore(),e(Dre)),{escapeUri:l,HttpRequest:u}=(Ure(),e(Hre));var d=class{format(e){let t=[];for(let i in e){if(!n(e,i))continue;let a=r(i);t.push(Uint8Array.from([a.byteLength]),a,this.formatHeaderValue(e[i]))}let i=new Uint8Array(t.reduce((e,t)=>e+t.byteLength,0)),a=0;for(let e of t)i.set(e,a),a+=e.byteLength;return i}formatHeaderValue(e){switch(e.type){case`boolean`:return Uint8Array.from([+!e.value]);case`byte`:return Uint8Array.from([2,e.value]);case`short`:let t=/* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case`integer`:let n=/* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(5));return n.setUint8(0,4),n.setInt32(1,e.value,!1),new Uint8Array(n.buffer);case`long`:let a=/* @__PURE__ */ new Uint8Array(9);return a[0]=5,a.set(e.value.bytes,1),a;case`binary`:let o=new DataView(new ArrayBuffer(3+e.value.byteLength));o.setUint8(0,6),o.setUint16(1,e.value.byteLength,!1);let s=new Uint8Array(o.buffer);return s.set(e.value,3),s;case`string`:let c=r(e.value),l=new DataView(new ArrayBuffer(3+c.byteLength));l.setUint8(0,7),l.setUint16(1,c.byteLength,!1);let u=new Uint8Array(l.buffer);return u.set(c,3),u;case`timestamp`:let d=/* @__PURE__ */ new Uint8Array(9);return d[0]=8,d.set(m.fromNumber(e.value.valueOf()).bytes,1),d;case`uuid`:if(!p.test(e.value))throw Error(`Invalid UUID received: ${e.value}`);let f=/* @__PURE__ */ new Uint8Array(17);return f[0]=9,f.set(i(e.value.replace(/-/g,``)),1),f}}},f;(function(e){e[e.boolTrue=0]=`boolTrue`,e[e.boolFalse=1]=`boolFalse`,e[e.byte=2]=`byte`,e[e.short=3]=`short`,e[e.integer=4]=`integer`,e[e.long=5]=`long`,e[e.byteArray=6]=`byteArray`,e[e.string=7]=`string`,e[e.timestamp=8]=`timestamp`,e[e.uuid=9]=`uuid`})(f||={});let p=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;var m=class e{bytes;constructor(e){if(this.bytes=e,e.byteLength!==8)throw Error(`Int64 buffers must be exactly 8 bytes`)}static fromNumber(t){if(t>0x8000000000000000||t<-0x8000000000000000)throw Error(`${t} is too large (or, if negative, too small) to represent as an Int64`);let n=/* @__PURE__ */ new Uint8Array(8);for(let e=7,r=Math.abs(Math.round(t));e>-1&&r>0;e--,r/=256)n[e]=r;return t<0&&h(n),new e(n)}valueOf(){let e=this.bytes.slice(0),t=e[0]&128;return t&&h(e),parseInt(a(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}};function h(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,e[t]===0);t--);}let g=`X-Amz-Algorithm`,v=`X-Amz-Credential`,y=`X-Amz-Date`,b=`X-Amz-SignedHeaders`,x=`X-Amz-Expires`,S=`X-Amz-Signature`,C=`X-Amz-Security-Token`,w=`authorization`,T=`x-amz-date`,E=`date`,D=[w,T,E],O=`x-amz-signature`,k=`x-amz-content-sha256`,A=`x-amz-security-token`,j={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},M=/^proxy-/,N=/^sec-/,P=[/^proxy-/i,/^sec-/i],F=`AWS4-HMAC-SHA256`,I=`AWS4-HMAC-SHA256-PAYLOAD`,ee=`UNSIGNED-PAYLOAD`,L=`aws4_request`,R=604800,te=({query:e={}})=>{let t=[],r={};for(let i in e){if(!n(e,i)||i.toLowerCase()===O)continue;let a=l(i);t.push(a);let o=e[i];typeof o==`string`?r[a]=`${a}=${l(o)}`:Array.isArray(o)&&(r[a]=o.slice(0).reduce((e,t)=>e.concat([`${a}=${l(t)}`]),[]).sort().join(`&`))}return t.sort().map(e=>r[e]).filter(e=>e).join(`&`)},ne=e=>re(e).toISOString().replace(/\.\d{3}Z$/,`Z`),re=e=>typeof e==`number`?/* @__PURE__ */ new Date(e*1e3):typeof e==`string`?Number(e)?/* @__PURE__ */ new Date(Number(e)*1e3):new Date(e):e;var ie=class{service;regionProvider;credentialProvider;sha256;uriEscapePath;applyChecksum;constructor({applyChecksum:e,credentials:t,region:n,service:r,sha256:i,uriEscapePath:a=!0}){this.service=r,this.sha256=i,this.uriEscapePath=a,this.applyChecksum=typeof e!=`boolean`||e,this.regionProvider=c(n),this.credentialProvider=c(t)}createCanonicalRequest(e,t,n){let r=Object.keys(t).sort();return`${e.method} +More information can be found at: https://a.co/c895JFp`))}}})),Eb,Db,Ob,kb=n((()=>{Eb=()=>(e,t)=>async n=>(t.__retryLongPoll=!0,e(n)),Db={name:`longPollMiddleware`,tags:[`RETRY`],step:`initialize`,override:!0},Ob=e=>({applyToStack:e=>{e.add(Eb(),Db)}})}));function Ab(e,t,n){return e.$source||={},e.$source[t]=n,e}var jb=n((()=>{})),Mb,Nb=n((()=>{Mb=e=>e?.body instanceof vr||typeof ReadableStream<`u`&&e?.body instanceof ReadableStream})),Pb,Fb=n((()=>{x(),Pb=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return ne.mutate(e);if(!e)return ne.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return ne.mutate(await n)}}));function Ib(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var Lb=n((()=>{})),Rb,zb=n((()=>{Rb=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),Bb,Vb=n((()=>{ze(),D(),zb(),Bb=class extends Rb{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new T(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return rt}getResponseType(){return fe}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)tt(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)tt(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=ce.of(t.input),i=l(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!Me(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-BM39ThRa.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),Hb,Qee=n((()=>{ze(),D(),x(),Vb(),Fb(),Lb(),Hb=class extends Bb{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=ce.of(e?.input),u=[],d=[],f=!1,p,m=new rt({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(m,s),this.setHostPrefix(m,e,r);let t=l(e.traits);if(t.http){m.method=t.http[0];let[e,n]=t.http[1].split(`?`);m.path==`/`?m.path=e:m.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(m.path.includes(`{${e}+}`)||m.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(p=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):p=s:(i.write(t,s),p=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();m.path.includes(`{${e}+}`)?m.path=m.path.replace(`{${e}+}`,n.split(`/`).map(Ib).join(`/`)):m.path.includes(`{${e}}`)&&(m.path=m.path.replace(`{${e}}`,Ib(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!tt(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(f=!0,u.push(e),d.push(t))}if(f&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),u,d,void 0];n?a[6]=n:a.pop(),i.write(a,r),p=i.flush()}return m.headers=o,m.query=a,m.body=p,m}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(tt(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=ce.of(e.output),a={};if(n.statusCode>=300){let i=await Pb(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!tt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await Pb(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await Pb(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=ce.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=le(n.body);else if(n.body){let i=await Pb(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?ve(o,`,`,2):ee(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(tt(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),Ub,Wb=n((()=>{ze(),D(),Vb(),Fb(),Ub=class extends Bb{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=ce.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new rt({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=ce.of(e.output),a={};if(n.statusCode>=300){let i=await Pb(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!tt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await Pb(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),Gb,Kb=n((()=>{Lb(),Gb=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>Ib(e)).join(`/`):Ib(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function qb(e,t){return new Jb(e,t)}var Jb,$ee=n((()=>{ze(),Kb(),Jb=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new rt({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=Gb(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function Yb(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var Xb=n((()=>{})),Zb,Qb=n((()=>{D(),x(),zb(),Xb(),Zb=class extends Rb{settings;constructor(e){super(),this.settings=e}read(e,t){let n=ce.of(e);if(n.isListSchema())return ee(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??me)(t);if(n.isTimestampSchema())switch(Yb(n,this.settings)){case 5:return Fe(t);case 6:return Ge(t);case 7:return Ye(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=qe.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new ue(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??Ee)((this.serdeContext?.base64Decoder??me)(e))}}})),$b,ete=n((()=>{D(),x(),zb(),Qb(),$b=class extends Rb{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new Zb(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=ce.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??Ee;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??$e;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),ex,tx=n((()=>{D(),x(),zb(),Xb(),ex=class extends Rb{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=ce.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(Yb(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Ae(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??de)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:Re(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=qe.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??de)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?ae():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),nx,tte=n((()=>{D(),tx(),nx=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new ex(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=ce.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),rx,ix,nte=n((()=>{rx=ct(),ix=class{name;kind;values;constructor({name:e,kind:t=rx.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),ax,rte=n((()=>{ax=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),ox,sx,ite=n((()=>{ox=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),sx=e=>({requestHandler:e.httpHandler()})}));function cx(e){return t=>async n=>{let r=n.request;if(rt.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(lx)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[lx]:String(n)})}catch{}}return t({...n,request:r})}}var lx,ux,dx,ate=n((()=>{ze(),lx=`content-length`,ux={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},dx=e=>({applyToStack:t=>{t.add(cx(e.bodyLengthChecker),ux)}})})),fx,px,mx=n((()=>{fx=e=>encodeURIComponent(e).replace(/[!'()*]/g,px),px=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),hx,gx=n((()=>{mx(),hx=e=>e.split(`/`).map(fx).join(`/`)}));function ote(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=fx(n),Array.isArray(r))for(let e=0,i=r.length;e{mx()})),_x,vx=n((()=>{_x=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),yx,bx=n((()=>{yx=class{from;to;keys;constructor(e,t){this.from=e,this.to=t;let n=Object.keys(this.from),r=new Set(n);r.delete(`__type`),this.keys=r}mark(e){this.keys.delete(e)}hasUnknown(){return this.keys.size===1&&Object.keys(this.to).length===0}writeUnknown(){if(this.hasUnknown()){let e=this.keys.values().next().value,t=this.from[e];this.to.$unknown=[e,t]}}}}));function xx(){if(Sx===void 0)try{if(typeof Buffer!=`function`)Sx=!1;else{let e=JSON.parse(Buffer.from([123,125]));Sx=typeof e==`object`&&!!e}}catch{Sx=!1}return Sx}var Sx,Cx=n((()=>{}));function wx(e,t,n){if(n?.source){let e=n.source;if(typeof t==`number`)return t<=2**53-1&&t>=-(2**53-1)?Tx(e,t)?t:new ue(e,`bigDecimal`):cte(e)?new ue(e,`bigDecimal`):/[eE]/.test(e)?lte(e):BigInt(e)}return t}function cte(e){let t=e.indexOf(`.`);if(t===-1)return!1;let n=e.search(/[eE]/);if(n===-1)return!0;let r=n-t-1;return parseInt(e.slice(n+1),10)=o.length?o+`0`.repeat(c-o.length):o.slice(0,c)+`.`+o.slice(c)}return i.includes(`.`)&&(i=i.replace(/(\.\d*?)0+$/,`$1`).replace(/\.$/,``)),(t?`-`:``)+i}function lte(e){let t=e.search(/[eE]/),n=parseInt(e.slice(t+1),10),r=e.startsWith(`-`),i=e.slice(+!!r,t),a=i.indexOf(`.`),o,s;a===-1?(o=i,s=n):(o=i.slice(0,a)+i.slice(a+1),s=n-(i.length-a-1)),o=o.replace(/0+$/,``)||`0`;let c=BigInt(o)*10n**BigInt(s+(i.replace(`.`,``).length-o.length));return r?-c:c}var Dx=n((()=>{x()}));function Ox(e){let t=ce.of(e),n=t.getSchema();if(Array.isArray(n)&&t.isStructSchema()){if(Ax in n)return n[Ax];let e=kx(t,/* @__PURE__ */ new Set);return n[Ax]=e,e}return kx(t,/* @__PURE__ */ new Set)}function kx(e,t){let n=e.getSchema();if(t.has(n))return!1;if(t.add(n),e.isBigIntegerSchema()||e.isBigDecimalSchema())return!0;if(e.isStructSchema()){for(let[,n]of e.structIterator())if(kx(n,t))return!0}else if(e.isListSchema()||e.isMapSchema()){if(kx(e.getValueSchema(),t))return!0}else if(e.isDocumentSchema())return!0;return!1}var Ax,jx=n((()=>{D(),Ax=Symbol.for(`@aws-sdk/reviver`)})),Mx,ute=n((()=>{Fb(),x(),Mx=(e,t)=>Pb(e,t).then(e=>(t?.utf8Encoder??Ee)(e))}));async function Nx(e,t,n){let r;if(xx()&&typeof e?.[Symbol.asyncIterator]==`function`){let n=await Pb(e,t);typeof Buffer==`function`&&(r=Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength))}if(r||=await Mx(e,t),r.length===0)return{};let i=n&&Ox(n)?wx:void 0;try{return JSON.parse(r,i)}catch(e){throw e?.name===`SyntaxError`&&Object.defineProperty(e,"$responseBodyText",{value:typeof r==`string`?r:r.toString(`utf8`)}),e}}var Px,Fx,Ix,Lx,Rx,zx,Bx,Vx=n((()=>{Fb(),ute(),Cx(),Dx(),jx(),Px=async(e,t)=>{let n=await Nx(e,t);return n.message=n.message??n.Message,n},Fx=(e,t)=>Object.keys(e).find(e=>e.toLowerCase()===t.toLowerCase()),Ix=e=>{let t=e;return typeof t==`number`&&(t=t.toString()),t.indexOf(`,`)>=0&&(t=t.split(`,`)[0]),t.indexOf(`:`)>=0&&(t=t.split(`:`)[0]),t.indexOf(`#`)>=0&&(t=t.split(`#`)[1]),t},Lx=(e,t)=>Bx(e,t,[`header`,`code`,`type`]),Rx=(e,t,n=!1)=>Bx(e,t,n?[`code`,`header`,`type`]:[`type`,`code`,`header`]),zx=(e,t)=>{if(t?.__type!==void 0){let e=t.__type;return typeof e==`number`&&(e=e.toString()),e.indexOf(`,`)>=0&&(e=e.split(`,`)[0]),e.indexOf(`:`)>=0&&(e=e.split(`:`)[0]),e}},Bx=({headers:e},t,n)=>{for(;n.length>0;)switch(n.shift()){case`header`:let n=Fx(e??{},`x-amzn-errortype`);if(n!==void 0)return Ix(e[n]);break;case`code`:let r=Fx(t??{},`code`);if(r&&t[r]!==void 0)return Ix(t[r]);break;case`type`:if(t?.__type!==void 0)return Ix(t.__type)}}}));function Hx(e){Object.defineProperty(e,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}var Ux=n((()=>{})),Wx,Gx=n((()=>{Xb(),D(),x(),vx(),bx(),Cx(),Dx(),jx(),Vx(),Ux(),ze(),Wx=class extends _x{settings;constructor(e){super(),this.settings=e}async read(e,t){let n=Ox(e)?wx:void 0,r;if(typeof t==`string`){if(t.length===0)return{};r=JSON.parse(t,n)}else if(t instanceof Uint8Array&&xx()){if(t.byteLength===0)return{};let e=Buffer.isBuffer(t)?t:Buffer.from(t.buffer,t.byteOffset,t.byteLength);r=JSON.parse(e,n)}else r=await Nx(t,this.serdeContext,e);return this._read(e,r)}readObject(e,t){return this._read(e,t)}_read(e,t){let n=typeof t==`object`&&!!t,r=ce.of(e);if(n){if(r.isStructSchema())return this._readStruct(r,t);if(Array.isArray(t)&&r.isListSchema()){let e=r.getValueSchema();if(this.needsTransform(e))for(let n=0;n{x(),Kx=class e extends Uint8Array{string=null;static allocUnsafe(t){if(typeof Buffer==`function`){let n=Buffer.allocUnsafe(t);return new e(n.buffer,n.byteOffset,n.byteLength)}return new e(t)}toString(){return this.s()}valueOf(){return this.s()}includes(e,t){return typeof e==`string`?this.s().includes(e,t):Uint8Array.prototype.includes.call(this,e,t)}indexOf(e,t){return typeof e==`string`?this.s().indexOf(e,t):Uint8Array.prototype.indexOf.call(this,e,t)}lastIndexOf(e,t){if(typeof e==`string`)return this.s().lastIndexOf(e,t);let n=Uint8Array.prototype.lastIndexOf;return t===void 0?n.call(this,e):n.call(this,e,t)}startsWith(e,t){return this.s().startsWith(e,t)}endsWith(e,t){return this.s().endsWith(e,t)}match(e){return this.s().match(e)}replace(e,t){return this.s().replace(e,t)}search(e){return this.s().search(e)}split(e,t){return this.s().split(e,t)}substring(e,t){return this.s().substring(e,t)}trim(){return this.s().trim()}trimStart(){return this.s().trimStart()}trimEnd(){return this.s().trimEnd()}charAt(e){return this.s().charAt(e)}charCodeAt(e){return this.s().charCodeAt(e)}padStart(e,t){return this.s().padStart(e,t)}padEnd(e,t){return this.s().padEnd(e,t)}repeat(e){return this.s().repeat(e)}toUpperCase(){return this.s().toUpperCase()}toLowerCase(){return this.s().toLowerCase()}s(){if(this.string==null){let e=Date.now();e>qx+6e4&&(console.warn(`@aws-sdk/core/protocols - WARN - JsonCodec2: you have called a string method on a Uint8Array request body. It has been automatically converted to string. In a future version this will throw an error.`),qx=e),this.string=Ee(this)}return this.string}},qx=0}));function Jx(e){return Kx.allocUnsafe(e)}var Yx,Xx,Zx,Qx,$x,eS,tS,nS,rS,iS,aS,oS,sS,cS,lS,uS=n((()=>{Xb(),D(),x(),vx(),ze(),dte(),Yx=new TextEncoder,Xx=123,Zx=125,Qx=91,$x=93,eS=34,tS=58,nS=44,rS=92,iS=new Uint8Array([116,114,117,101]),aS=new Uint8Array([102,97,108,115,101]),oS=new Uint8Array([110,117,108,108]),sS=Array(128).fill(null),sS[8]=`b`,sS[9]=`t`,sS[10]=`n`,sS[12]=`f`,sS[13]=`r`,sS[34]=`"`,sS[92]=`\\`;for(let e=0;e<32;e++)sS[e]===null&&(sS[e]=`u00`+e.toString(16).padStart(2,`0`));cS=2048,lS=class e extends _x{settings;json;i=0;rootSchema;rawValue;passthrough=!1;constructor(e){super(),this.settings=e,this.json=Jx(cS)}write(e,t){this.i=0,this.rawValue=t,this.rootSchema=ce.of(e),this.passthrough=this.rootSchema.isBlobSchema()||this.rootSchema.isStringSchema(),this.passthrough||this.writeValue(this.rootSchema,t,void 0)}writeDiscriminatedDocument(e,t){this.i=0,this.rootSchema=ce.of(e);let n=this.rootSchema;if(n.isStructSchema()&&typeof t==`object`&&t){this.writeValue(n,t,void 0);let e=`"__type":"${n.getName(!0)??`Unknown`}",`,r=e.length;this.ensure(r),this.json.copyWithin(1+r,1,this.i),Yx.encodeInto(e,this.json.subarray(1)),this.i+=r}else this.writeValue(n,t,void 0)}flush(){this.rootSchema=void 0;let e=this.i;this.i=0;let t=this.rawValue;if(this.rawValue=void 0,e===0)return t;let n=this.json.subarray(0,e);return this.json=Jx(cS),n}ensure(e){let{i:t,json:n}=this;if(t+e>n.length){let r=n.length*2;for(;r34&&r<92)this.json[this.i++]=r;else if(r<128){let e=sS[r];if(e!==null){this.ensure(e.length+1+(t-n-1)*3+1),this.json[this.i++]=rS;for(let t=0;t=55296&&r<=56319){let i=n+1=56320&&i<=57343){this.ensure(4);let{written:t}=Yx.encodeInto(e.substring(n,n+2),this.json.subarray(this.i));this.i+=t,++n}else this.ensure(6+(t-n-1)*3+1),this.writeUnicodeEscape(r)}else if(r>=56320&&r<=57343)this.ensure(6+(t-n-1)*3+1),this.writeUnicodeEscape(r);else{let{i:e,json:t}=this;r<2048?(t[e++]=192|r>>6,t[e++]=128|r&63):(t[e++]=224|r>>12,t[e++]=128|r>>6&63,t[e++]=128|r&63),this.i=e}}this.json[this.i++]=eS}writeUnicodeEscape(e){let{json:t,i:n}=this;t[n++]=rS,t[n++]=117;let r=e.toString(16).padStart(4,`0`);for(let e=0;e<4;++e)t[n++]=r.charCodeAt(e);this.i=n}static B64=(()=>{let e=/* @__PURE__ */ new Uint8Array(64);for(let t=0;t<64;++t)e[t]=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.charCodeAt(t);return e})();writeBase64(t){let n=Math.ceil(t.length/3)*4;this.ensure(n+2);let r=this.json,i=e.B64,a=this.i;r[a++]=eS;let o=t.length,s=o%3,c=o-s;for(let e=0;e>2],r[a++]=i[(n&3)<<4|o>>4],r[a++]=i[(o&15)<<2|s>>6],r[a++]=i[s&63]}if(s===2){let e=t[c],n=t[c+1];r[a++]=i[e>>2],r[a++]=i[(e&3)<<4|n>>4],r[a++]=i[(n&15)<<2],r[a++]=61}else if(s===1){let e=t[c];r[a++]=i[e>>2],r[a++]=i[(e&3)<<4],r[a++]=61,r[a++]=61}r[a++]=eS,this.i=a}writeValue(e,t,n){if(t==null){if(n?.isStructSchema()){if(t===void 0&&ce.of(e).isIdempotencyToken()){this.writeAsciiQuoted(ae());return}return}this.ensure(4),this.json.set(oS,this.i),this.i+=4;return}let r=ce.of(e),i=typeof t==`object`;if(r.isStringSchema()){let e=r.getMergedTraits().mediaType;if(e&&(e===`application/json`||e.endsWith(`+json`))){this.writeJsonString(qe.from(t).toString());return}}if(this.settings.bigNumberAsString&&t!=null&&(r.isBigIntegerSchema()||r.isBigDecimalSchema())){let e=t instanceof ue?t.string:String(t);this.writeAsciiQuoted(e)}else if(i){if(r.isStructSchema()){this.writeStruct(r,t);return}if(Array.isArray(t)&&(r.isListSchema()||r.isDocumentSchema())){this.writeList(r,t,r.isDocumentSchema());return}if(r.isMapSchema()){this.writeMap(r,t,!1);return}if(t instanceof Uint8Array&&(r.isBlobSchema()||r.isDocumentSchema())){this.writeBase64(t);return}if(t instanceof Date&&(r.isTimestampSchema()||r.isDocumentSchema())){this.writeTimestamp(r,t);return}if(t instanceof ue){this.writeAscii(t.string);return}if(r.isDocumentSchema()){Array.isArray(t)?this.writeList(r,t,!0):this.writeMap(r,t,!0);return}let e=JSON.stringify(t);this.writeAscii(e)}else if(typeof t==`string`){if(r.isBlobSchema()){let e=(this.serdeContext?.base64Encoder??de)(t);this.writeAsciiQuoted(e);return}this.writeJsonString(t)}else if(typeof t==`number`){if(Math.abs(t)===1/0||Number.isNaN(t)){this.writeAsciiQuoted(String(t));return}let e=String(t);this.writeAscii(e)}else if(typeof t==`boolean`){this.ensure(5);let{i:e,json:n}=this;t?(n.set(iS,e),e+=4):(n.set(aS,e),e+=5),this.i=e}else typeof t==`bigint`?this.writeAscii(t.toString()):this.writeAscii(String(t))}writeStruct(e,t){this.ensure(2),this.json[this.i++]=Xx;let n=!1,r=typeof t.__type==`string`,i;r&&(i=/* @__PURE__ */ new Set);for(let[r,a]of e.structIterator()){let o=t[r];if(o==null&&!a.isIdempotencyToken())continue;n&&(this.ensure(1),this.json[this.i++]=nS),n=!0;let s=this.settings.jsonName?a.getMergedTraits().jsonName??r:r;i&&(i.add(r),i.add(s)),this.writeAsciiQuoted(s),this.json[this.i++]=tS,this.writeValue(a,o,e)}if(!n&&e.isUnionSchema()){let{$unknown:n}=t;if(Array.isArray(n)){let[t,r]=n;this.writeAsciiQuoted(t),this.ensure(1),this.json[this.i++]=tS,this.writeValue(15,r,e)}}else if(r)for(let e in t){if(i.has(e))continue;i.add(e);let r=t[e];n&&(this.ensure(1),this.json[this.i++]=nS),n=!0,this.writeAsciiQuoted(e),this.ensure(1),this.json[this.i++]=tS,this.writeValue(15,r,void 0)}this.ensure(1),this.json[this.i++]=Zx}writeList(e,t,n){let r=!!e.getMergedTraits().sparse,i=e.getValueSchema();if(!n&&(i.isStringSchema()||i.isNumericSchema()||i.isBooleanSchema())){let e=!1;for(let n=0;n{vx(),Gx(),uS(),dS=class extends _x{settings;constructor(e){super(),this.settings=e}createSerializer(){let e=new lS(this.settings);return e.setSerdeContext(this.serdeContext),e}createDeserializer(){let e=new Wx(this.settings);return e.setSerdeContext(this.serdeContext),e}}})),pS,fte=n((()=>{Wb(),D(),ze(),fS(),Vx(),pS=class extends Ub{codec=new dS({timestampFormat:{useTrait:!1,default:7},jsonName:!1,bigNumberAsString:!0});serializer=this.codec.createSerializer();deserializer=this.codec.createDeserializer();constructor({defaultNamespace:e,errorTypeRegistries:t}){super({defaultNamespace:e,errorTypeRegistries:t})}getShapeId(){return`smithy.protocols#rpcv2Json`}getPayloadCodec(){return this.codec}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n);Object.assign(r.headers,{"content-type":this.getDefaultContentType(),"smithy-protocol":`rpc-v2-json`,accept:this.getDefaultContentType()}),Ie(e.input)===`unit`?(delete r.body,delete r.headers[`content-type`]):r.body||=`{}`;let{service:i,operation:a}=p(n),o=`/service/${i}/operation/${a}`;return r.path.endsWith(`/`)?r.path+=o.slice(1):r.path+=o,r}async deserializeResponse(e,t,n){return super.deserializeResponse(e,t,n)}async handleError(e,t,n,r,i){let a=zx(n,r)??`Unknown`,o={$metadata:i,$fault:n.statusCode<=500?`client`:`server`},s=this.options.defaultNamespace;a.includes(`#`)&&([s]=a.split(`#`));let c=this.compositeErrorRegistry,l=T.for(s);c.copyFrom(l);let u;try{u=c.getSchema(a)}catch{r.Message&&(r.message=r.Message);let e=T.for(`smithy.ts.sdk.synthetic.`+s);c.copyFrom(e);let t=c.getBaseException();if(t){let e=c.getErrorCtor(t);throw Object.assign(new e({name:a}),o,r)}throw Object.assign(Error(a),o,r)}let d=ce.of(u),f=c.getErrorCtor(u),p=r.message??r.Message??`Unknown`,m=new f({}),h={},g=this.codec.createDeserializer();for(let[e,t]of d.structIterator())r[e]!=null&&(h[e]=g.readObject(t,r[e]));throw Object.assign(m,o,{$fault:d.getMergedTraits().error,message:p},h)}getDefaultContentType(){return`application/json`}}})),mS,hS=n((()=>{Xb(),D(),x(),ze(),vx(),bx(),Dx(),jx(),Vx(),Ux(),mS=class extends _x{settings;constructor(e){super(),this.settings=e}async read(e,t){let n=Ox(e)?wx:void 0;return this._read(e,typeof t==`string`?JSON.parse(t,n):await Nx(t,this.serdeContext,e))}readObject(e,t){return this._read(e,t)}_read(e,t){let n=typeof t==`object`&&!!t,r=ce.of(e);if(n){if(r.isStructSchema()){let e=t,n=r.isUnionSchema(),i={},a,{jsonName:o}=this.settings;o&&(a={});let s;n&&(s=new yx(e,i));for(let[t,c]of r.structIterator()){let r=t;o&&(r=c.getMergedTraits().jsonName??r,a[r]=t),n&&s.mark(r),e[r]!=null&&(i[t]=this._read(c,e[r]))}if(n)s.writeUnknown();else if(typeof e.__type==`string`)for(let t in e){if(!tt(e,t))continue;let n=e[t],r=o?a[t]??t:t;r in i||(i[r]=n)}return i}if(Array.isArray(t)&&r.isListSchema()){let e=r.getValueSchema(),n=[];for(let r of t)n.push(this._read(e,r));return n}if(r.isMapSchema()){let e=r.getValueSchema(),n={};for(let r in t)tt(t,r)&&(r===`__proto__`&&Hx(n),n[r]=this._read(e,t[r]));return n}}if(r.isBlobSchema()&&typeof t==`string`)return me(t);let i=r.getMergedTraits().mediaType;if(r.isStringSchema()&&typeof t==`string`&&i)return i===`application/json`||i.endsWith(`+json`)?qe.from(t):t;if(r.isTimestampSchema()&&t!=null)switch(Yb(r,this.settings)){case 5:return xe(t);case 6:return Ve(t);case 7:return _e(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(r.isBigIntegerSchema()&&(typeof t==`number`||typeof t==`string`))return BigInt(t);if(r.isBigDecimalSchema()&&t!=null){if(t instanceof ue)return t;let e=t;return e.type===`bigDecimal`&&`string`in e?new ue(e.string,e.type):new ue(String(t),`bigDecimal`)}if(r.isNumericSchema()&&typeof t==`string`){switch(t){case`Infinity`:return 1/0;case`-Infinity`:return-1/0;case`NaN`:return NaN}return t}if(r.isDocumentSchema()){if(n){let e=Array.isArray(t)?[]:{};for(let n in t){if(!tt(t,n))continue;n===`__proto__`&&Hx(e);let i=t[n];e[n]=i instanceof ue?i:this._read(r,i)}return e}return structuredClone(t)}return t}}})),gS,pte=n((()=>{x(),gS=class{values=/* @__PURE__ */ new Map;counter=0;stage=0;createReplacer(){if(this.stage===1)throw Error(`@aws-sdk/core/protocols - JsonReplacer already created.`);if(this.stage===2)throw Error(`@aws-sdk/core/protocols - JsonReplacer exhausted.`);return this.stage=1,(e,t)=>{if(t instanceof ue){let e=`${`Νnv`+this.counter++}_`+t.string;return this.values.set(`"${e}"`,t.string),e}if(typeof t==`bigint`){let e=t.toString(),n=`${`Νb`+this.counter++}_`+e;return this.values.set(`"${n}"`,e),n}return t}}replaceInJson(e){if(this.stage===0)throw Error(`@aws-sdk/core/protocols - JsonReplacer not created yet.`);if(this.stage===2)throw Error(`@aws-sdk/core/protocols - JsonReplacer exhausted.`);if(this.stage=2,this.counter===0)return e;for(let[t,n]of this.values)e=e.replace(t,n);return e}}})),_S,mte=n((()=>{Xb(),D(),x(),vx(),pte(),Ux(),ze(),_S=class extends _x{settings;buffer;useReplacer=!1;rootSchema;constructor(e){super(),this.settings=e}write(e,t){this.rootSchema=ce.of(e),this.buffer=this._write(this.rootSchema,t)}flush(){let{rootSchema:e,useReplacer:t}=this;if(this.rootSchema=void 0,this.useReplacer=!1,e?.isStructSchema()||e?.isDocumentSchema()){if(!t)return JSON.stringify(this.buffer);let e=new gS;return e.replaceInJson(JSON.stringify(this.buffer,e.createReplacer(),0))}return this.buffer}writeDiscriminatedDocument(e,t){this.write(e,t),typeof this.buffer==`object`&&(this.buffer.__type=ce.of(e).getName(!0))}_write(e,t,n){let r=typeof t==`object`&&!!t,i=ce.of(e);if(r){if(i.isStructSchema()){let e=t,n={},{jsonName:r}=this.settings,a;r&&(a={});let o=0;for(let[t,s]of i.structIterator()){let c=this._write(s,e[t],i);if(c!==void 0){let e=t;r&&(e=s.getMergedTraits().jsonName??t,a[t]=e),n[e]=c,o++}}if(i.isUnionSchema()&&o===0){let{$unknown:t}=e;if(Array.isArray(t)){let[e,r]=t;e===`__proto__`&&Hx(n),n[e]=this._write(15,r)}}else if(typeof e.__type==`string`)for(let t in e){if(!tt(e,t))continue;let i=e[t],o=r?a[t]??t:t;o in n||(n[o]=this._write(15,i))}return n}if(Array.isArray(t)&&i.isListSchema()){let e=i.getValueSchema(),n=[],r=!!i.getMergedTraits().sparse;for(let i of t)(r||i!=null)&&n.push(this._write(e,i));return n}if(i.isMapSchema()){let e=i.getValueSchema(),n={},r=!!i.getMergedTraits().sparse;for(let i in t){if(!tt(t,i))continue;let a=t[i];(r||a!=null)&&(i===`__proto__`&&Hx(n),n[i]=this._write(e,a))}return n}if(t instanceof Uint8Array&&i.isBlobSchema())return i===this.rootSchema?t:(this.serdeContext?.base64Encoder??de)(t);if(t instanceof Date&&(i.isTimestampSchema()||i.isDocumentSchema()))switch(Yb(i,this.settings)){case 5:return t.toISOString().replace(`.000Z`,`Z`);case 6:return Ae(t);case 7:return t.getTime()/1e3;default:return console.warn(`Missing timestamp format, using epoch seconds`,t),t.getTime()/1e3}t instanceof ue&&(this.useReplacer=!0)}if(!(t===null&&n?.isStructSchema())){if(i.isStringSchema()){if(t===void 0&&i.isIdempotencyToken())return ae();let e=i.getMergedTraits().mediaType;return t!=null&&e&&(e===`application/json`||e.endsWith(`+json`))?qe.from(t):t}if(typeof t==`number`)return Math.abs(t)===1/0||isNaN(t)?String(t):t;if(typeof t==`string`&&i.isBlobSchema())return i===this.rootSchema?t:(this.serdeContext?.base64Encoder??de)(t);if(typeof t==`bigint`&&(this.useReplacer=!0),i.isDocumentSchema()){if(r){if(t instanceof Uint8Array)return(this.serdeContext?.base64Encoder??de)(t);let e=Array.isArray(t)?[]:{};for(let n in t){if(!tt(t,n))continue;let r=t[n];n===`__proto__`&&Hx(e),r instanceof ue?(this.useReplacer=!0,e[n]=r):e[n]=this._write(i,r)}return e}return structuredClone(t)}return t}}}})),hte,gte=n((()=>{vx(),hS(),mte(),hte=class extends _x{settings;constructor(e){super(),this.settings=e}createSerializer(){let e=new _S(this.settings);return e.setSerdeContext(this.serdeContext),e}createDeserializer(){let e=new mS(this.settings);return e.setSerdeContext(this.serdeContext),e}}})),vS=/* @__PURE__ */ i({Field:()=>ix,Fields:()=>ax,FromStringShapeDeserializer:()=>Zb,HttpBindingProtocol:()=>Hb,HttpInterceptingShapeDeserializer:()=>$b,HttpInterceptingShapeSerializer:()=>nx,HttpProtocol:()=>Bb,HttpRequest:()=>rt,HttpResponse:()=>fe,JsonCodec:()=>hte,JsonCodec2:()=>dS,JsonShapeDeserializer:()=>mS,JsonShapeDeserializer2:()=>Wx,JsonShapeSerializer:()=>_S,JsonShapeSerializer2:()=>lS,RequestBuilder:()=>Jb,RpcProtocol:()=>Ub,SerdeContext:()=>Rb,SmithyRpcV2JsonProtocol:()=>pS,ToStringShapeSerializer:()=>ex,buildQueryString:()=>ote,collectBody:()=>Pb,contentLengthMiddleware:()=>cx,contentLengthMiddlewareOptions:()=>ux,determineTimestampFormat:()=>Yb,escapeUri:()=>fx,escapeUriPath:()=>hx,extendedEncodeURIComponent:()=>Ib,getContentLengthPlugin:()=>dx,getHttpHandlerExtensionConfiguration:()=>ox,isValidHostname:()=>Me,loadJsonRpcErrorCode:()=>Rx,loadRestJsonErrorCode:()=>Lx,loadSmithyRpcV2JsonErrorCode:()=>zx,parseJsonBody:()=>Nx,parseJsonErrorBody:()=>Px,parseQueryString:()=>Ze,parseUrl:()=>ge,requestBuilder:()=>qb,resolveHttpHandlerRuntimeConfig:()=>sx,resolvedPath:()=>Gb}),yS=n((()=>{Fb(),Lb(),Qee(),Vb(),Wb(),$ee(),Kb(),Qb(),ete(),tte(),tx(),Xb(),zb(),nte(),rte(),ze(),ite(),ate(),mx(),gx(),ste(),fte(),Vx(),gte(),mte(),hS(),fS(),uS(),Gx()})),_te,vte,yte,bte,xte,Ste,Cte=n((()=>{_te=[`AccessDeniedException`,`AuthFailure`,`InvalidSignatureException`,`RequestExpired`,`RequestInTheFuture`,`RequestTimeTooSkewed`,`SignatureDoesNotMatch`],vte=[`BandwidthLimitExceeded`,`EC2ThrottledException`,`LimitExceededException`,`PriorRequestNotComplete`,`ProvisionedThroughputExceededException`,`RequestLimitExceeded`,`RequestThrottled`,`RequestThrottledException`,`SlowDown`,`ThrottledException`,`Throttling`,`ThrottlingException`,`TooManyRequestsException`,`TransactionInProgressException`],yte=[`TimeoutError`,`RequestTimeout`,`RequestTimeoutException`],bte=[500,502,503,504],xte=[`ECONNRESET`,`ECONNREFUSED`,`EPIPE`,`ETIMEDOUT`],Ste=[`EHOSTUNREACH`,`ENETUNREACH`,`ENOTFOUND`,`EAI_AGAIN`]}));function wte(e){return e.code===`ERR_HTTP2_STREAM_ERROR`&&e.message.includes(`NGHTTP2_REFUSED_STREAM`)}var bS,xS,SS,CS,wS,TS,ES,DS=n((()=>{Cte(),bS=e=>e?.$retryable!==void 0,xS=e=>_te.includes(e.name),SS=e=>e.$metadata?.clockSkewCorrected,CS=e=>{let t=/* @__PURE__ */ new Set([`Failed to fetch`,`NetworkError when attempting to fetch resource`,`The Internet connection appears to be offline`,`Load failed`,`Network request failed`]);return e&&e instanceof TypeError?t.has(e.message):!1},wS=e=>e.$metadata?.httpStatusCode===429||vte.includes(e.name)||e.$retryable?.throttling==1,TS=(e,t=0)=>e?.name!==`AbortError`&&(bS(e)||SS(e)||e.name===`InvalidSignatureException`&&e.message?.includes(`Signature expired`)||yte.includes(e.name)||xte.includes(e?.code||``)||Ste.includes(e?.code||``)||bte.includes(e.$metadata?.httpStatusCode||0)||CS(e)||wte(e)||e.cause!==void 0&&t<=10&&TS(e.cause,t+1)),ES=e=>{if(e.$metadata?.httpStatusCode!==void 0){let t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!TS(e)}return!1}})),OS,kS,AS,jS=n((()=>{OS=2e4,kS=`amz-sdk-invocation-id`,AS=`amz-sdk-request`}));function Tte(e,t){if(fe.isInstance(e))for(let n in e.headers){if(!tt(e.headers,n))continue;let r=n.toLowerCase();if(r===`retry-after`){let r=e.headers[n],i=NaN;if(r.endsWith(`GMT`))try{i=(Ve(r).getTime()-Date.now())/1e3}catch(e){t?.trace?.(`Failed to parse retry-after header`),t?.trace?.(e)}else r.match(/ GMT, ((\d+)|(\d+\.\d+))$/)?i=Number(r.match(/ GMT, ([\d.]+)$/)?.[1]):r.match(/^((\d+)|(\d+\.\d+))$/)?i=Number(r):Date.parse(r)>=Date.now()&&(i=(Date.parse(r)-Date.now())/1e3);return isNaN(i)?void 0:new Date(Date.now()+i*1e3)}if(r===`x-amz-retry-after`){let r=e.headers[n],i=Number(r);if(isNaN(i)){t?.trace?.(`Failed to parse x-amz-retry-after=${r}`);return}return new Date(Date.now()+i)}}}function Ete(e,t){return Tte(e,t)}var MS=n((()=>{ze(),yS(),x()})),NS,PS=n((()=>{NS=e=>e instanceof Error?e:e instanceof Object?Object.assign(/* @__PURE__ */ Error(),e):Error(typeof e==`string`?e:`AWS SDK error wrapper for ${e}`)}));function FS(e){return t=>(n,r)=>async i=>{let a=await t.retryStrategy(),o=await t.maxAttempts();if(LS(a)){a=a;let s=await a.acquireInitialRetryToken((r.partition_id??``)+(r.__retryLongPoll?`:longpoll`:``)),c=/* @__PURE__ */ Error(),l=0,u=0,{request:d}=i,f=rt.isInstance(d);for(f&&(d.headers[kS]=He());;)try{f&&(d.headers[AS]=`attempt=${l+1}; max=${o}`);let{response:e,output:t}=await n(i);return a.recordSuccess(s),t.$metadata.attempts=l+1,t.$metadata.totalRetryDelay=u,{response:e,output:t}}catch(n){let i=RS(n,t.logger);if(c=NS(n),f&&e(d))throw(r.logger instanceof N?console:r.logger)?.warn(`An error was encountered in a non-retryable streaming request.`),c;try{s=await a.refreshRetryTokenForRetry(s,i)}catch{throw c.$metadata||(c.$metadata={}),c.$metadata.attempts=l+1,c.$metadata.totalRetryDelay=u,c}l=s.getRetryCount();let o=s.getRetryDelay();u+=(s?.$retryLog?.acquisitionDelay??0)+o,o>0&&await IS(o)}}else return a=a,a?.mode&&(r.userAgent=[...r.userAgent||[],[`cfg/retry-mode`,a.mode]]),a.retry(n,i)}}function Dte(e){let t=FS(e);return e=>({applyToStack:n=>{n.add(t(e),BS)}})}var IS,LS,RS,zS,BS,Ote=n((()=>{R(),yS(),x(),DS(),jS(),MS(),PS(),IS=e=>new Promise(t=>setTimeout(t,e)),LS=e=>e.acquireInitialRetryToken!==void 0&&e.refreshRetryTokenForRetry!==void 0&&e.recordSuccess!==void 0,RS=(e,t)=>{let n={error:e,errorType:zS(e)},r=Tte(e.$response,t);return r&&(n.retryAfterHint=r),n},zS=e=>wS(e)?`THROTTLING`:TS(e)?`TRANSIENT`:ES(e)?`SERVER_ERROR`:`CLIENT_ERROR`,BS={name:`retryMiddleware`,tags:[`RETRY`],step:`finalizeRequest`,priority:`high`,override:!0}})),VS,HS=n((()=>{DS(),VS=class e{static setTimeoutFn=(e,t)=>setTimeout(e,t);beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(e){this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(e){let t;this.updateMeasuredRate();let n=e;if(n?.errorType===`THROTTLING`||wS(n?.error??e)){let e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());let r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}getCurrentTimeInSeconds(){return Date.now()/1e3}async acquireTokenBucket(t){if(this.enabled){for(this.refillTokenBucket();t>this.availableTokens;){let n=(t-this.availableTokens)/this.fillRate*1e3;await new Promise(t=>e.setTimeoutFn(t,n)),this.refillTokenBucket()}this.availableTokens-=t}}refillTokenBucket(){let e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=e;return}let t=(e-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+t),this.lastTimestamp=e}calculateTimeWindow(){this.timeWindow=this.getPrecise((this.lastMaxRate*(1-this.beta)/this.scaleConstant)**(1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*(e-this.lastThrottleTime-this.timeWindow)**3+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let e=this.getCurrentTimeInSeconds(),t=Math.floor(e*2)/2;if(this.requestCount++,t>this.lastTxRateBucket){let e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}})),US,WS=n((()=>{US=class e{static v2026=typeof process<`u`&&process.env?.SMITHY_NEW_RETRIES_2026===`true`;static delay(){return e.v2026?50:100}static throttlingDelay(){return e.v2026?1e3:500}static cost(){return e.v2026?14:5}static throttlingCost(){return e.v2026?5:10}static modifiedCostType(){return e.v2026?`THROTTLING`:`TRANSIENT`}}})),GS,kte=n((()=>{jS(),WS(),GS=class{x=US.delay();computeNextBackoffDelay(e){let t=Math.random()*Math.min(this.x*2**e,OS);return Math.floor(t)}setDelayBase(e){this.x=e}}})),KS,Ate=n((()=>{jS(),KS=class{delay;count;cost;longPoll;$retryLog={acquisitionDelay:0};constructor(e,t,n,r){this.delay=e,this.count=t,this.cost=n,this.longPoll=r}getRetryCount(){return this.count}getRetryDelay(){return Math.min(OS,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}})),qS,JS,YS=n((()=>{(function(e){e.STANDARD=`standard`,e.ADAPTIVE=`adaptive`})(qS||={}),JS=qS.STANDARD})),XS,ZS,QS=n((()=>{kte(),Ate(),YS(),jS(),WS(),XS={incompatible:1,attempts:2,capacity:3},ZS=class{mode=qS.STANDARD;retryBackoffStrategy;capacity=500;maxAttemptsProvider;baseDelay;constructor(e){typeof e==`number`?this.maxAttemptsProvider=async()=>e:typeof e==`function`?this.maxAttemptsProvider=e:e&&typeof e==`object`&&(this.maxAttemptsProvider=async()=>e.maxAttempts,this.baseDelay=e.baseDelay,this.retryBackoffStrategy=e.backoff),this.maxAttemptsProvider??=async()=>3,this.baseDelay??=US.delay(),this.retryBackoffStrategy??=new GS}async acquireInitialRetryToken(e){return new KS(US.delay(),0,void 0,US.v2026&&e.includes(`:longpoll`))}async refreshRetryTokenForRetry(e,t){let n=await this.getMaxAttempts(),r=this.retryCode(e,t,n),i=r===0,a=e.isLongPoll?.();if(i||a){let n=t.errorType;this.retryBackoffStrategy.setDelayBase(n===`THROTTLING`?US.throttlingDelay():this.baseDelay);let o=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),s=o;if(t.retryAfterHint instanceof Date&&(s=Math.max(o,Math.min(t.retryAfterHint.getTime()-Date.now(),o+5e3))),i){let t=this.getCapacityCost(n);this.capacity-=t;let r=new KS(0,e.getRetryCount()+1,t,e.isLongPoll?.()??!1);return await new Promise(e=>setTimeout(e,s)),r.$retryLog.acquisitionDelay=s,r}{let e=US.v2026&&r===XS.capacity&&a?s:0;e>0&&await new Promise(t=>setTimeout(t,e))}}throw Error(`No retry token available`)}recordSuccess(e){this.capacity=Math.min(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch{return console.warn(`Max attempts provider could not resolve. Using default of 3`),3}}retryCode(e,t,n){let r=e.getRetryCount()+1,i=this.isRetryableError(t.errorType)?0:XS.incompatible,a=r=this.getCapacityCost(t.errorType)?0:XS.capacity;return i||a||o}getCapacityCost(e){return e===US.modifiedCostType()?US.throttlingCost():US.cost()}isRetryableError(e){return e===`THROTTLING`||e===`TRANSIENT`}}})),$S,eC=n((()=>{HS(),QS(),YS(),$S=class{mode=qS.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(e,t){let{rateLimiter:n}=t??{};this.rateLimiter=n??new VS,this.standardRetryStrategy=t?new ZS({maxAttempts:typeof e==`number`?e:3,...t}):new ZS(e)}async acquireInitialRetryToken(e){let t=await this.standardRetryStrategy.acquireInitialRetryToken(e);return await this.rateLimiter.getSendToken(),t}async refreshRetryTokenForRetry(e,t){this.rateLimiter.updateClientSendingRate(t);let n=await this.standardRetryStrategy.refreshRetryTokenForRetry(e,t);return await this.rateLimiter.getSendToken(),n}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}})),tC,jte=n((()=>{QS(),WS(),tC=class extends ZS{computeNextBackoffDelay;constructor(e,t=US.delay()){super(typeof e==`function`?e:async()=>e),this.computeNextBackoffDelay=typeof t==`number`?()=>t:t,this.retryBackoffStrategy.computeNextBackoffDelay=e=>{let t=e+1;return this.computeNextBackoffDelay(t)}}}})),nC,Mte=n((()=>{jS(),nC=(e,t)=>{let n=e,r=t?.noRetryIncrement??1,i=t?.retryCost??5,a=t?.timeoutRetryCost??10,o=e,s=e=>e.name===`TimeoutError`?a:i,c=e=>s(e)<=o;return Object.freeze({hasRetryTokens:c,retrieveRetryTokens:e=>{if(!c(e))throw Error(`No retry token available`);let t=s(e);return o-=t,t},releaseRetryTokens:e=>{o+=e??r,o=Math.min(o,n)}})}})),rC,iC=n((()=>{jS(),rC=(e,t)=>Math.floor(Math.min(OS,Math.random()*2**t*e))})),aC,oC=n((()=>{DS(),aC=e=>e?bS(e)||xS(e)||wS(e)||TS(e):!1})),sC,cC,lC=n((()=>{yS(),x(),DS(),YS(),jS(),PS(),Mte(),iC(),oC(),sC=class{maxAttemptsProvider;retryDecider;delayDecider;retryQuota;mode=qS.STANDARD;constructor(e,t){this.maxAttemptsProvider=e,this.retryDecider=t?.retryDecider??aC,this.delayDecider=t?.delayDecider??rC,this.retryQuota=t?.retryQuota??nC(500)}shouldRetry(e,t,n){return tsetTimeout(e,o));continue}throw t.$metadata||={},t.$metadata.attempts=i,t.$metadata.totalRetryDelay=a,t}}},cC=e=>{if(!fe.isInstance(e))return;let t=Object.keys(e.headers).find(e=>e.toLowerCase()===`retry-after`);if(!t)return;let n=e.headers[t],r=Number(n);if(!Number.isNaN(r))return Math.min(r*1e3,2e4);let i=new Date(n);return Math.min(i.getTime()-Date.now(),2e4)}})),uC,Nte=n((()=>{HS(),YS(),lC(),uC=class extends sC{rateLimiter;constructor(e,t){let{rateLimiter:n,...r}=t??{};super(e,r),this.rateLimiter=n??new VS,this.mode=qS.ADAPTIVE}async retry(e,t){return super.retry(e,t,{beforeRequest:async()=>this.rateLimiter.getSendToken(),afterRequest:e=>{this.rateLimiter.updateClientSendingRate(e)}})}}})),dC,fC,pC,mC,hC,gC,_C,Pte=n((()=>{R(),eC(),QS(),YS(),WS(),dC=`AWS_MAX_ATTEMPTS`,fC=`max_attempts`,pC={environmentVariableSelector:e=>{let t=e[dC];if(!t)return;let n=parseInt(t);if(Number.isNaN(n))throw Error(`Environment variable ${dC} mast be a number, got "${t}"`);return n},configFileSelector:e=>{let t=e[fC];if(!t)return;let n=parseInt(t);if(Number.isNaN(n))throw Error(`Shared config file entry ${fC} mast be a number, got "${t}"`);return n},default:3},mC=(e,t)=>{let{retryStrategy:n,retryMode:r}=e,{defaultMaxAttempts:i=3,defaultBaseDelay:a=US.delay()}=t??{},o=Se(e.maxAttempts??i),s=n?Promise.resolve(n):void 0,c=async()=>{let e=await o();return await Se(r)()===qS.ADAPTIVE?new $S(o,{maxAttempts:e,baseDelay:a}):new ZS({maxAttempts:e,baseDelay:a})};return Object.assign(e,{maxAttempts:o,retryStrategy:()=>s??=c()})},hC=`AWS_RETRY_MODE`,gC=`retry_mode`,_C={environmentVariableSelector:e=>e[hC],configFileSelector:e=>e[gC],default:JS}})),vC,yC,Fte,Ite=n((()=>{yS(),jS(),vC=()=>e=>async t=>{let{request:n}=t;return rt.isInstance(n)&&(delete n.headers[kS],delete n.headers[AS]),e(t)},yC={name:`omitRetryHeadersMiddleware`,tags:[`RETRY`,`HEADERS`,`OMIT_RETRY_HEADERS`],relation:`before`,toMiddleware:`awsAuthMiddleware`,override:!0},Fte=e=>({applyToStack:e=>{e.addRelativeTo(vC(),yC)}})})),Lte=/* @__PURE__ */ i({AdaptiveRetryStrategy:()=>$S,CONFIG_MAX_ATTEMPTS:()=>fC,CONFIG_RETRY_MODE:()=>gC,ConfiguredRetryStrategy:()=>tC,DEFAULT_MAX_ATTEMPTS:()=>3,DEFAULT_RETRY_DELAY_BASE:()=>100,DEFAULT_RETRY_MODE:()=>JS,DefaultRateLimiter:()=>VS,DeprecatedAdaptiveRetryStrategy:()=>uC,DeprecatedStandardRetryStrategy:()=>sC,ENV_MAX_ATTEMPTS:()=>dC,ENV_RETRY_MODE:()=>hC,INITIAL_RETRY_TOKENS:()=>500,INVOCATION_ID_HEADER:()=>kS,MAXIMUM_RETRY_DELAY:()=>OS,NODE_MAX_ATTEMPT_CONFIG_OPTIONS:()=>pC,NODE_RETRY_MODE_CONFIG_OPTIONS:()=>_C,NO_RETRY_INCREMENT:()=>1,REQUEST_HEADER:()=>AS,RETRY_COST:()=>5,RETRY_MODES:()=>qS,Retry:()=>US,StandardRetryStrategy:()=>ZS,THROTTLING_RETRY_DELAY_BASE:()=>500,TIMEOUT_RETRY_COST:()=>10,defaultDelayDecider:()=>rC,defaultRetryDecider:()=>aC,getOmitRetryHeadersPlugin:()=>Fte,getRetryAfterHint:()=>Ete,getRetryPlugin:()=>bC,isBrowserNetworkError:()=>CS,isClockSkewCorrectedError:()=>SS,isClockSkewError:()=>xS,isNodeJsHttp2TransientError:()=>wte,isRetryableByTrait:()=>bS,isServerError:()=>ES,isThrottlingError:()=>wS,isTransientError:()=>TS,omitRetryHeadersMiddleware:()=>vC,omitRetryHeadersMiddlewareOptions:()=>yC,resolveRetryConfig:()=>mC,retryMiddleware:()=>Rte,retryMiddlewareOptions:()=>BS}),Rte,bC,xC=n((()=>{Nb(),Ote(),DS(),eC(),jte(),HS(),QS(),YS(),jS(),WS(),Nte(),lC(),iC(),oC(),Pte(),Ite(),MS(),Rte=FS(Mb),bC=Dte(Mb)}));function SC(e,t,n){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=n}var zte=n((()=>{xC(),US.v2026||=typeof process==`object`&&process.env?.AWS_NEW_RETRIES_2026===`true`}));function Bte(e,t,n){return e.$source||={},e.$source[t]=n,e}var Vte=n((()=>{}));function CC(e){return e}var wC,TC,EC,Hte=n((()=>{yS(),wC=e=>t=>async n=>{if(!rt.isInstance(n.request))return t(n);let{request:r}=n,{handlerProtocol:i=``}=e.requestHandler.metadata||{};if(i.indexOf(`h2`)>=0&&!r.headers[`:authority`])delete r.headers.host,r.headers[`:authority`]=r.hostname+(r.port?`:`+r.port:``);else if(!r.headers.host){let e=r.hostname;r.port!=null&&(e+=`:${r.port}`),r.headers.host=e}return t(n)},TC={name:`hostHeaderMiddleware`,step:`build`,priority:`low`,tags:[`HOST`],override:!0},EC=e=>({applyToStack:t=>{t.add(wC(e),TC)}})})),DC,OC,kC,Ute=n((()=>{DC=()=>(e,t)=>async n=>{try{let r=await e(n),{clientName:i,commandName:a,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:l}=s,u=c??t.inputFilterSensitiveLog,d=l??t.outputFilterSensitiveLog,{$metadata:f,...p}=r.output;return o?.info?.({clientName:i,commandName:a,input:u(n.input),output:d(p),metadata:f}),r}catch(e){let{clientName:r,commandName:i,logger:a,dynamoDbDocumentClientOptions:o={}}=t,{overrideInputFilterSensitiveLog:s}=o,c=s??t.inputFilterSensitiveLog;throw a?.error?.({clientName:r,commandName:i,input:c(n.input),error:e,metadata:e.$metadata}),e}},OC={name:`loggerMiddleware`,tags:[`LOGGER`],step:`initialize`,override:!0},kC=e=>({applyToStack:e=>{e.add(DC(),OC)}})})),AC,jC=n((()=>{AC={step:`build`,tags:[`RECURSION_DETECTION`,`TRACE_CONTEXT_PROPAGATION`],name:`recursionDetectionMiddleware`,override:!0,priority:`low`}})),MC,NC,PC,FC,IC,LC,Wte=n((()=>{MC={REQUEST_ID:Symbol.for(`_AWS_LAMBDA_REQUEST_ID`),X_RAY_TRACE_ID:Symbol.for(`_AWS_LAMBDA_X_RAY_TRACE_ID`),TENANT_ID:Symbol.for(`_AWS_LAMBDA_TENANT_ID`),TRACEPARENT:Symbol.for(`_AWS_LAMBDA_TRACEPARENT`),TRACESTATE:Symbol.for(`_AWS_LAMBDA_TRACESTATE`),BAGGAGE:Symbol.for(`_AWS_LAMBDA_BAGGAGE`)},NC=[`true`,`1`].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA??``),NC||(globalThis.awslambda=globalThis.awslambda||{}),PC=class{static PROTECTED_KEYS=MC;isProtectedKey(e){return Object.values(MC).includes(e)}getRequestId(){return this.get(MC.REQUEST_ID)??`-`}getXRayTraceId(){return this.get(MC.X_RAY_TRACE_ID)}getTenantId(){return this.get(MC.TENANT_ID)}getTraceparent(){return this.get(MC.TRACEPARENT)}getTracestate(){return this.get(MC.TRACESTATE)}getBaggage(){return this.get(MC.BAGGAGE)}},FC=class extends PC{currentContext;getContext(){return this.currentContext}hasContext(){return this.currentContext!==void 0}get(e){return this.currentContext?.[e]}set(e,t){if(this.isProtectedKey(e))throw Error(`Cannot modify protected Lambda context field: ${String(e)}`);this.currentContext=this.currentContext||{},this.currentContext[e]=t}run(e,t){return this.currentContext=e,t()}},IC=class e extends PC{als;static async create(){let t=new e;return t.als=new(await(import(`node:async_hooks`))).AsyncLocalStorage,t}getContext(){return this.als.getStore()}hasContext(){return this.als.getStore()!==void 0}get(e){return this.als.getStore()?.[e]}set(e,t){if(this.isProtectedKey(e))throw Error(`Cannot modify protected Lambda context field: ${String(e)}`);let n=this.als.getStore();if(!n)throw Error(`No context available`);n[e]=t}run(e,t){return this.als.run(e,t)}},(function(e){let t=null;async function n(e){return t||=(async()=>{let t=e===!0||`AWS_LAMBDA_MAX_CONCURRENCY`in process.env?await IC.create():new FC;return!NC&&globalThis.awslambda?.InvokeStore?globalThis.awslambda.InvokeStore:(!NC&&globalThis.awslambda&&(globalThis.awslambda.InvokeStore=t),t)})(),t}e.getInstanceAsync=n,e._testing=process.env.AWS_LAMBDA_BENCHMARK_MODE===`1`?{reset:()=>{t=null,globalThis.awslambda?.InvokeStore&&delete globalThis.awslambda.InvokeStore,globalThis.awslambda={InvokeStore:void 0}}}:void 0})(LC||={})}));function Gte(e){for(let t of Object.keys(e)){let n=t.toLowerCase();t!==n&&(n===VC||n===HC||n===UC)&&(e[n]=e[t],delete e[t])}}var RC,zC,BC,VC,HC,UC,WC,GC=n((()=>{Wte(),yS(),RC=`AWS_LAMBDA_FUNCTION_NAME`,zC=`_X_AMZN_TRACE_ID`,BC=`X-Amzn-Trace-Id`,VC=`traceparent`,HC=`tracestate`,UC=`baggage`,WC=()=>e=>async t=>{let{request:n}=t;if(!rt.isInstance(n))return e(t);let r;{let e=Object.keys(n.headers??{}).find(e=>e.toLowerCase()===BC.toLowerCase())??BC;if(!n.headers.hasOwnProperty(e)){let e=process.env[RC],t=process.env[zC];r??=await LC.getInstanceAsync();let i=r?.getXRayTraceId()??t,a=e=>typeof e==`string`&&e.length>0;a(e)&&a(i)&&(n.headers[BC]=i)}}if(Gte(n.headers),!n.headers[VC]){let e=(r??=await LC.getInstanceAsync())?.getTraceparent?.();if(e){n.headers[VC]=e;let t=r?.getTracestate?.();t&&(n.headers[HC]=t);let i=r?.getBaggage?.();i&&(n.headers[UC]=i)}}return e(t)}})),KC,Kte=n((()=>{jC(),GC(),KC=e=>({applyToStack:e=>{e.add(WC(),AC)}})})),qC,qte=n((()=>{qC=(e,t)=>{if(!t||t.length===0)return e;let n=[];for(let r of t)for(let t of e)t.schemeId.split(`#`)[1]===r&&n.push(t);for(let t of e)n.find(({schemeId:e})=>e===t.schemeId)||n.push(t);return n}}));function Jte(e){let t=/* @__PURE__ */ new Map;for(let n of e)t.set(n.schemeId,n);return t}var JC,YC=n((()=>{ze(),qte(),JC=(e,t)=>(n,r)=>async i=>{let a=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,r,i.input)),o=e.authSchemePreference?await e.authSchemePreference():[],s=qC(a,o),c=Jte(e.httpAuthSchemes),l=p(r),u=[];for(let n of s){let i=c.get(n.schemeId);if(!i){u.push(`HttpAuthScheme \`${n.schemeId}\` was not enabled for this service.`);continue}let a=i.identityProvider(await t.identityProviderConfigProvider(e));if(!a){u.push(`HttpAuthScheme \`${n.schemeId}\` did not have an IdentityProvider configured.`);continue}let{identityProperties:o={},signingProperties:s={}}=n.propertiesExtractor?.(e,r)||{};n.identityProperties=Object.assign(n.identityProperties||{},o),n.signingProperties=Object.assign(n.signingProperties||{},s),l.selectedHttpAuthScheme={httpAuthOption:n,identity:await a(n.identityProperties),signer:i.signer};break}if(!l.selectedHttpAuthScheme)throw Error(u.join(` +`));return n(i)}})),XC,ZC,Yte=n((()=>{YC(),XC={step:`serialize`,tags:[`HTTP_AUTH_SCHEME`],name:`httpAuthSchemeMiddleware`,override:!0,relation:`before`,toMiddleware:`endpointV2Middleware`},ZC=(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n})=>({applyToStack:r=>{r.addRelativeTo(JC(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n}),XC)}})})),QC,$C,Xte=n((()=>{YC(),QC={step:`serialize`,tags:[`HTTP_AUTH_SCHEME`],name:`httpAuthSchemeMiddleware`,override:!0,relation:`before`,toMiddleware:`serializerMiddleware`},$C=(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n})=>({applyToStack:r=>{r.addRelativeTo(JC(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:n}),QC)}})})),Zte=n((()=>{YC(),Yte(),Xte()})),ew,tw,nw,rw=n((()=>{yS(),ze(),ew=e=>e=>{throw e},tw=(e,t)=>{},nw=e=>(e,t)=>async n=>{if(!rt.isInstance(n.request))return e(n);let r=p(t).selectedHttpAuthScheme;if(!r)throw Error(`No HttpAuthScheme was selected: unable to sign request`);let{httpAuthOption:{signingProperties:i={}},identity:a,signer:o}=r,s=await e({...n,request:await o.sign(n.request,a,i)}).catch((o.errorHandler||ew)(i));return(o.successHandler||tw)(s.response,i),s}})),iw,aw,Qte=n((()=>{rw(),iw={step:`finalizeRequest`,tags:[`HTTP_SIGNING`],name:`httpSigningMiddleware`,aliases:[`apiKeyMiddleware`,`tokenMiddleware`,`awsAuthMiddleware`],override:!0,relation:`after`,toMiddleware:`retryMiddleware`},aw=e=>({applyToStack:t=>{t.addRelativeTo(nw(e),iw)}})})),$te=n((()=>{rw(),Qte()})),ow,ene=n((()=>{ow=e=>{if(typeof e==`function`)return e;let t=Promise.resolve(e);return()=>t}}));function tne(e,t,n,r,i){return async function*(a,o,...s){let c=o,l=a.startingToken??c[n],u=!0,d;for(;u;){if(c[n]=l,i&&(c[i]=c[i]??a.pageSize),a.client instanceof e)d=await sw(t,a.client,o,a.withCommand,...s);else throw Error(`Invalid client, expected instance of ${e.name}`);yield d;let f=l;l=cw(d,r),u=!(!l||a.stopOnSameToken&&l===f)}return void 0}}var sw,cw,nne=n((()=>{sw=async(e,t,n,r=e=>e,...i)=>{let a=new e(n);return a=r(a)??a,await t.send(a,...i)},cw=(e,t)=>{let n=e,r=t.split(`.`);for(let e of r){if(!n||typeof n!=`object`)return;n=n[e]}return n}}));function rne(e,t,n){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=n}var ine=n((()=>{})),lw,ane=n((()=>{ze(),lw=class{authSchemes=/* @__PURE__ */ new Map;constructor(e){for(let t in e){if(!tt(e,t))continue;let n=e[t];n!==void 0&&this.authSchemes.set(t,n)}}getIdentityProvider(e){return this.authSchemes.get(e)}}})),uw,dw,one=n((()=>{yS(),uw=ct(),dw=class{async sign(e,t,n){if(!n)throw Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing");if(!n.name)throw Error("request could not be signed with `apiKey` since the `name` signer property is missing");if(!n.in)throw Error("request could not be signed with `apiKey` since the `in` signer property is missing");if(!t.apiKey)throw Error("request could not be signed with `apiKey` since the `apiKey` is not defined");let r=rt.clone(e);if(n.in===uw.HttpApiKeyAuthLocation.QUERY)r.query[n.name]=t.apiKey;else if(n.in===uw.HttpApiKeyAuthLocation.HEADER)r.headers[n.name]=n.scheme?`${n.scheme} ${t.apiKey}`:t.apiKey;else throw Error("request can only be signed with `apiKey` locations `query` or `header`, but found: `"+n.in+"`");return r}}})),fw,sne=n((()=>{yS(),fw=class{async sign(e,t,n){let r=rt.clone(e);if(!t.token)throw Error("request could not be signed with `token` since the `token` is not defined");return r.headers.Authorization=`Bearer ${t.token}`,r}}})),pw,cne=n((()=>{pw=class{async sign(e,t,n){return e}}})),lne=n((()=>{one(),sne(),cne()})),mw,hw,gw,_w,vw,une=n((()=>{mw=e=>function(t){return _w(t)&&t.expiration.getTime()-Date.now()e.expiration!==void 0,vw=(e,t,n)=>{if(e===void 0)return;let r=typeof e==`function`?e:async()=>Promise.resolve(e),i,a,o,s=!1,c=async e=>{a||=r(e);try{i=await a,o=!0,s=!1}finally{a=void 0}return i};return t===void 0?async e=>((!o||e?.forceRefresh)&&(i=await c(e)),i):async e=>((!o||e?.forceRefresh)&&(i=await c(e)),s?i:n(i)?(t(i)&&await c(e),i):(s=!0,i))}})),dne=n((()=>{ane(),lne(),une()})),fne=/* @__PURE__ */ i({DefaultIdentityProviderConfig:()=>lw,EXPIRATION_MS:()=>hw,HttpApiKeyAuthSigner:()=>dw,HttpBearerAuthSigner:()=>fw,NoAuthSigner:()=>pw,createIsIdentityExpiredFunction:()=>mw,createPaginator:()=>tne,doesIdentityRequireRefresh:()=>_w,getHttpAuthSchemeEndpointRuleSetPlugin:()=>ZC,getHttpAuthSchemePlugin:()=>$C,getHttpSigningPlugin:()=>aw,getSmithyContext:()=>p,httpAuthSchemeEndpointRuleSetMiddlewareOptions:()=>XC,httpAuthSchemeMiddleware:()=>JC,httpAuthSchemeMiddlewareOptions:()=>QC,httpSigningMiddleware:()=>nw,httpSigningMiddlewareOptions:()=>iw,isIdentityExpired:()=>gw,memoizeIdentityProvider:()=>vw,normalizeProvider:()=>ow,requestBuilder:()=>qb,setFeature:()=>rne}),yw=n((()=>{ze(),Zte(),$te(),ene(),nne(),yS(),ine(),dne()}));function pne(e){return e===void 0||typeof e==`string`&&e.length<=50}function bw(e){let t=ow(e.userAgentAppId??void 0),{customUserAgent:n}=e;return Object.assign(e,{customUserAgent:typeof n==`string`?[[n]]:n,userAgentAppId:async()=>{let n=await t();if(!pne(n)){let t=e.logger?.constructor?.name===`NoOpLogger`||!e.logger?console:e.logger;typeof n==`string`?n.length>50&&t?.warn(`The provided userAgentAppId exceeds the maximum length of 50 characters.`):t?.warn(`userAgentAppId must be a string or undefined.`)}return n}})}var xw=n((()=>{yw()})),Sw,mne=n((()=>{Sw={partitions:[{id:`aws`,outputs:{dnsSuffix:`amazonaws.com`,dualStackDnsSuffix:`api.aws`,implicitGlobalRegion:`us-east-1`,name:`aws`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$`,regions:{"af-south-1":{description:`Africa (Cape Town)`},"ap-east-1":{description:`Asia Pacific (Hong Kong)`},"ap-east-2":{description:`Asia Pacific (Taipei)`},"ap-northeast-1":{description:`Asia Pacific (Tokyo)`},"ap-northeast-2":{description:`Asia Pacific (Seoul)`},"ap-northeast-3":{description:`Asia Pacific (Osaka)`},"ap-south-1":{description:`Asia Pacific (Mumbai)`},"ap-south-2":{description:`Asia Pacific (Hyderabad)`},"ap-southeast-1":{description:`Asia Pacific (Singapore)`},"ap-southeast-2":{description:`Asia Pacific (Sydney)`},"ap-southeast-3":{description:`Asia Pacific (Jakarta)`},"ap-southeast-4":{description:`Asia Pacific (Melbourne)`},"ap-southeast-5":{description:`Asia Pacific (Malaysia)`},"ap-southeast-6":{description:`Asia Pacific (New Zealand)`},"ap-southeast-7":{description:`Asia Pacific (Thailand)`},"aws-global":{description:`aws global region`},"ca-central-1":{description:`Canada (Central)`},"ca-west-1":{description:`Canada West (Calgary)`},"eu-central-1":{description:`Europe (Frankfurt)`},"eu-central-2":{description:`Europe (Zurich)`},"eu-north-1":{description:`Europe (Stockholm)`},"eu-south-1":{description:`Europe (Milan)`},"eu-south-2":{description:`Europe (Spain)`},"eu-west-1":{description:`Europe (Ireland)`},"eu-west-2":{description:`Europe (London)`},"eu-west-3":{description:`Europe (Paris)`},"il-central-1":{description:`Israel (Tel Aviv)`},"me-central-1":{description:`Middle East (UAE)`},"me-south-1":{description:`Middle East (Bahrain)`},"mx-central-1":{description:`Mexico (Central)`},"sa-east-1":{description:`South America (Sao Paulo)`},"us-east-1":{description:`US East (N. Virginia)`},"us-east-2":{description:`US East (Ohio)`},"us-west-1":{description:`US West (N. California)`},"us-west-2":{description:`US West (Oregon)`}}},{id:`aws-cn`,outputs:{dnsSuffix:`amazonaws.com.cn`,dualStackDnsSuffix:`api.amazonwebservices.com.cn`,implicitGlobalRegion:`cn-northwest-1`,name:`aws-cn`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^cn\\-\\w+\\-\\d+$`,regions:{"aws-cn-global":{description:`aws-cn global region`},"cn-north-1":{description:`China (Beijing)`},"cn-northwest-1":{description:`China (Ningxia)`}}},{id:`aws-eusc`,outputs:{dnsSuffix:`amazonaws.eu`,dualStackDnsSuffix:`api.amazonwebservices.eu`,implicitGlobalRegion:`eusc-de-east-1`,name:`aws-eusc`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^eusc\\-(de)\\-\\w+\\-\\d+$`,regions:{"eusc-de-east-1":{description:`AWS European Sovereign Cloud (Germany)`}}},{id:`aws-iso`,outputs:{dnsSuffix:`c2s.ic.gov`,dualStackDnsSuffix:`api.aws.ic.gov`,implicitGlobalRegion:`us-iso-east-1`,name:`aws-iso`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-iso\\-\\w+\\-\\d+$`,regions:{"aws-iso-global":{description:`aws-iso global region`},"us-iso-east-1":{description:`US ISO East`},"us-iso-west-1":{description:`US ISO WEST`}}},{id:`aws-iso-b`,outputs:{dnsSuffix:`sc2s.sgov.gov`,dualStackDnsSuffix:`api.aws.scloud`,implicitGlobalRegion:`us-isob-east-1`,name:`aws-iso-b`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-isob\\-\\w+\\-\\d+$`,regions:{"aws-iso-b-global":{description:`aws-iso-b global region`},"us-isob-east-1":{description:`US ISOB East (Ohio)`},"us-isob-west-1":{description:`US ISOB West`}}},{id:`aws-iso-e`,outputs:{dnsSuffix:`cloud.adc-e.uk`,dualStackDnsSuffix:`api.cloud-aws.adc-e.uk`,implicitGlobalRegion:`eu-isoe-west-1`,name:`aws-iso-e`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^eu\\-isoe\\-\\w+\\-\\d+$`,regions:{"aws-iso-e-global":{description:`aws-iso-e global region`},"eu-isoe-west-1":{description:`EU ISOE West`}}},{id:`aws-iso-f`,outputs:{dnsSuffix:`csp.hci.ic.gov`,dualStackDnsSuffix:`api.aws.hci.ic.gov`,implicitGlobalRegion:`us-isof-south-1`,name:`aws-iso-f`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-isof\\-\\w+\\-\\d+$`,regions:{"aws-iso-f-global":{description:`aws-iso-f global region`},"us-isof-east-1":{description:`US ISOF EAST`},"us-isof-south-1":{description:`US ISOF SOUTH`}}},{id:`aws-us-gov`,outputs:{dnsSuffix:`amazonaws.com`,dualStackDnsSuffix:`api.aws`,implicitGlobalRegion:`us-gov-west-1`,name:`aws-us-gov`,supportsDualStack:!0,supportsFIPS:!0},regionRegex:`^us\\-gov\\-\\w+\\-\\d+$`,regions:{"aws-us-gov-global":{description:`aws-us-gov global region`},"us-gov-east-1":{description:`AWS GovCloud (US-East)`},"us-gov-west-1":{description:`AWS GovCloud (US-West)`}}}],version:`1.1`}})),Cw,ww,Tw,Ew,hne,Dw,Ow=n((()=>{mne(),Cw=Sw,ww=``,Tw=e=>{let{partitions:t}=Cw;for(let n of t){let{regions:t,outputs:r}=n;for(let[n,i]of Object.entries(t))if(n===e)return{...r,...i}}for(let n of t){let{regionRegex:t,outputs:r}=n;if(new RegExp(t).test(e))return{...r}}let n=t.find(e=>e.id===`aws`);if(!n)throw Error(`Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.`);return{...n.outputs}},Ew=(e,t=``)=>{Cw=e,ww=t},hne=()=>{Ew(Sw,``)},Dw=()=>ww}));async function gne(e,t,n){if(n.request?.headers?.[`smithy-protocol`]===`rpc-v2-cbor`&&SC(e,`PROTOCOL_RPC_V2_CBOR`,`M`),typeof t.retryStrategy==`function`){let n=await t.retryStrategy();if(typeof n.mode==`string`)switch(n.mode){case qS.ADAPTIVE:SC(e,`RETRY_MODE_ADAPTIVE`,`F`);break;case qS.STANDARD:SC(e,`RETRY_MODE_STANDARD`,`E`)}}if(typeof t.accountIdEndpointMode==`function`){let n=e.endpointV2;switch(String(n?.url?.hostname).match(_ne)&&SC(e,`ACCOUNT_ID_ENDPOINT`,`O`),await t.accountIdEndpointMode?.()){case`disabled`:SC(e,`ACCOUNT_ID_MODE_DISABLED`,`Q`);break;case`preferred`:SC(e,`ACCOUNT_ID_MODE_PREFERRED`,`P`);break;case`required`:SC(e,`ACCOUNT_ID_MODE_REQUIRED`,`R`)}}let r=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(r?.$source){let t=r;t.accountId&&SC(e,`RESOLVED_ACCOUNT_ID`,`T`);for(let[n,r]of Object.entries(t.$source??{}))SC(e,n,r)}}var _ne,vne=n((()=>{xC(),zte(),_ne=/\d{12}\.ddb/})),kw,Aw,yne,bne,xne=n((()=>{kw=`user-agent`,Aw=`x-amz-user-agent`,yne=/[^!$%&'*+\-.^_`|~\w]/g,bne=/[^!$%&'*+\-.^_`|~\w#]/g}));function Sne(e){let t=``;for(let n in e){let r=e[n];if(t.length+r.length+1<=jw)t.length?t+=`,`+r:t+=r;else break}return t}var jw,Cne=n((()=>{jw=1024})),Mw,Nw,Pw,Fw,wne=n((()=>{yS(),Ow(),vne(),xne(),Cne(),Mw=e=>(t,n)=>async r=>{let{request:i}=r;if(!rt.isInstance(i))return t(r);let{headers:a}=i,o=n?.userAgent?.map(Nw)||[],s=(await e.defaultUserAgentProvider()).map(Nw);await gne(n,e,r);let c=n;s.push(`m/${Sne(Object.assign({},n.__smithy_context?.features,c.__aws_sdk_context?.features))}`);let l=e?.customUserAgent?.map(Nw)||[],u=await e.userAgentAppId();u&&s.push(Nw([`app`,`${u}`]));let d=Dw(),f=(d?[d]:[]).concat([...s,...o,...l]).join(` `),p=[...s.filter(e=>e.startsWith(`aws-sdk-`)),...l].join(` `);return e.runtime===`browser`?a[Aw]=f:(p&&(a[Aw]=a[`x-amz-user-agent`]?`${a[kw]} ${p}`:p),a[kw]=f),t({...r,request:i})},Nw=e=>{let t=e[0].split(`/`).map(e=>e.replace(yne,`-`)).join(`/`),n=e[1]?.replace(bne,`-`),r=t.indexOf(`/`),i=t.substring(0,r),a=t.substring(r+1);return i===`api`&&(a=a.toLowerCase()),[i,a,n].filter(e=>e&&e.length>0).reduce((e,t,n)=>{switch(n){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}},``)},Pw={name:`getUserAgentMiddleware`,step:`build`,priority:`low`,tags:[`SET_USER_AGENT`,`USER_AGENT`],override:!0},Fw=e=>({applyToStack:t=>{t.add(Mw(e),Pw)}})})),Iw,Tne=n((()=>{Iw=()=>{for(let e of[`deno`,`bun`,`llrt`])if(B[e])return[`md/${e}`,B[e]];return[`md/nodejs`,B.node]}})),Lw,Rw=n((()=>{Lw={isCrtAvailable:!1}})),zw,Ene=n((()=>{Rw(),zw=()=>Lw.isCrtAvailable?[`md/crt-avail`]:null})),Bw,Vw,Dne=n((()=>{Tne(),Ene(),Rw(),Bw=({serviceId:e,clientVersion:t})=>{let n=Iw();return async r=>{let i=[[`aws-sdk-js`,t],[`ua`,`2.1`],[`os/${Kr()}`,qr()],[`lang/js`],n],a=zw();a&&i.push(a),e&&i.push([`api/${e}`,t]),Jn.AWS_EXECUTION_ENV&&i.push([`exec-env/${Jn.AWS_EXECUTION_ENV}`]);let o=await r?.userAgentAppId?.();return o?[...i,[`app/${o}`]]:[...i]}},Vw=Bw})),Hw,Uw,Ww,Gw,One=n((()=>{xw(),Hw=`AWS_SDK_UA_APP_ID`,Uw=`sdk_ua_app_id`,Ww=`sdk-ua-app-id`,Gw={environmentVariableSelector:e=>e[Hw],configFileSelector:e=>e.sdk_ua_app_id??e[Ww],default:void 0}})),Kw,qw=n((()=>{Kw=({serviceId:e,clientVersion:t})=>async n=>{let i=await import(`./es5-BuhCuli8.js`).then(e=>/* @__PURE__ */ r(e.default)),a=i.parse??i.default.parse??(()=>``),o=typeof window<`u`&&window?.navigator?.userAgent?a(window.navigator.userAgent):void 0,s=[[`aws-sdk-js`,t],[`ua`,`2.1`],[`os/${o?.os?.name||`other`}`,o?.os?.version],[`lang/js`],[`md/browser`,`${o?.browser?.name??`unknown`}_${o?.browser?.version??`unknown`}`]];e&&s.push([`api/${e}`,t]);let c=await n?.userAgentAppId?.();return c&&s.push([`app/${c}`]),s}})),Jw,kne=n((()=>{qw(),Jw={os(e){if(/iPhone|iPad|iPod/.test(e))return`iOS`;if(/Macintosh|Mac OS X/.test(e))return`macOS`;if(/Windows NT/.test(e))return`Windows`;if(/Android/.test(e))return`Android`;if(/Linux/.test(e))return`Linux`},browser(e){if(/EdgiOS|EdgA|Edg\//.test(e))return`Microsoft Edge`;if(/Firefox\//.test(e))return`Firefox`;if(/Chrome\//.test(e))return`Chrome`;if(/Safari\//.test(e))return`Safari`}}})),Yw=n((()=>{Le()})),Xw,Zw=n((()=>{Le(),Yw(),Xw=(e,t=!1)=>{if(t){for(let t of e.split(`.`))if(!Xw(t))return!1;return!0}return!(!we(e)||e.length<3||e.length>63||e!==e.toLowerCase()||je(e))}})),Qw,$w,eT,tT=n((()=>{Qw=`:`,$w=`/`,eT=e=>{let t=e.split(Qw);if(t.length<6)return null;let[n,r,i,a,o,...s]=t;return n!==`arn`||r===``||i===``||s.join(Qw)===``?null:{partition:r,service:i,region:a,accountId:o,resourceId:s.map(e=>e.split($w)).flat()}}})),nT,Ane=n((()=>{Le(),Zw(),tT(),Ow(),nT={isVirtualHostableS3Bucket:Xw,parseArn:eT,partition:Tw},Qe.aws=nT})),jne=n((()=>{Le()})),rT,iT,Mne=n((()=>{yS(),rT=e=>{if(typeof e.endpointProvider!=`function`)throw Error(`@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client.`);let{endpoint:t}=e;return t===void 0&&(e.endpoint=async()=>iT(e.endpointProvider({Region:typeof e.region==`function`?await e.region():e.region,UseDualStack:typeof e.useDualstackEndpoint==`function`?await e.useDualstackEndpoint():e.useDualstackEndpoint,UseFIPS:typeof e.useFipsEndpoint==`function`?await e.useFipsEndpoint():e.useFipsEndpoint,Endpoint:void 0},{logger:e.logger}))),e},iT=e=>ge(e.url)})),Nne=n((()=>{Le()})),Pne=n((()=>{nt()}));function aT(e={}){return w({...g,async default(){return oT.silence||console.warn(`@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly.`),`us-east-1`}},{...v,...e})}var oT,Fne=n((()=>{nt(),oT={silence:!1}})),sT,cT,Ine=n((()=>{sT=e=>({setRegion(t){e.region=t},region(){return e.region}}),cT=e=>({region:e.region()})})),lT=/* @__PURE__ */ i({DEFAULT_UA_APP_ID:()=>void 0,EndpointError:()=>Ce,NODE_APP_ID_CONFIG_OPTIONS:()=>Gw,NODE_REGION_CONFIG_FILE_OPTIONS:()=>v,NODE_REGION_CONFIG_OPTIONS:()=>g,REGION_ENV_NAME:()=>P,REGION_INI_NAME:()=>ke,UA_APP_ID_ENV_NAME:()=>Hw,UA_APP_ID_INI_NAME:()=>Uw,awsEndpointFunctions:()=>nT,createDefaultUserAgentProvider:()=>Bw,createUserAgentStringParsingProvider:()=>Kw,crtAvailability:()=>Lw,defaultUserAgent:()=>Vw,emitWarningIfUnsupportedVersion:()=>wb,fallback:()=>Jw,getAwsRegionExtensionConfiguration:()=>sT,getHostHeaderPlugin:()=>EC,getLoggerPlugin:()=>kC,getLongPollPlugin:()=>Ob,getRecursionDetectionPlugin:()=>KC,getUserAgentMiddlewareOptions:()=>Pw,getUserAgentPlugin:()=>Fw,getUserAgentPrefix:()=>Dw,hostHeaderMiddleware:()=>wC,hostHeaderMiddlewareOptions:()=>TC,isIpAddress:()=>je,isVirtualHostableS3Bucket:()=>Xw,loggerMiddleware:()=>DC,loggerMiddlewareOptions:()=>OC,parseArn:()=>eT,partition:()=>Tw,recursionDetectionMiddleware:()=>WC,recursionDetectionMiddlewareOptions:()=>AC,resolveAwsRegionExtensionConfiguration:()=>cT,resolveDefaultAwsRegionalEndpointsConfig:()=>rT,resolveEndpoint:()=>pe,resolveHostHeaderConfig:()=>CC,resolveRegionConfig:()=>te,resolveUserAgentConfig:()=>bw,setCredentialFeature:()=>Ab,setFeature:()=>SC,setPartitionInfo:()=>Ew,setTokenFeature:()=>Bte,state:()=>Cb,stsRegionDefaultResolver:()=>aT,stsRegionWarning:()=>oT,toEndpointV1:()=>iT,useDefaultPartitionInfo:()=>hne,userAgentMiddleware:()=>Mw}),uT=n((()=>{Tb(),kb(),jb(),zte(),Vte(),Hte(),Ute(),jC(),Kte(),GC(),xw(),wne(),Dne(),One(),kne(),qw(),Ane(),jne(),Mne(),Yw(),Zw(),tT(),Ow(),Nne(),Pne(),Fne(),Ine()})),dT,Lne=n((()=>{db(),dT=(e,{requestChecksumRequired:t,requestAlgorithmMember:n,requestChecksumCalculation:r})=>{if(!n)return r===ib.WHEN_SUPPORTED||t?ub:void 0;if(e[n])return e[n]}})),fT,pT=n((()=>{db(),fT=e=>e===cb.MD5?`content-md5`:`x-amz-checksum-${e.toLowerCase()}`})),mT,Rne=n((()=>{mT=(e,t)=>{let n=e.toLowerCase();for(let e of Object.keys(t))if(n===e.toLowerCase())return!0;return!1}})),hT,zne=n((()=>{hT=(e,t)=>{let n=e.toLowerCase();for(let e of Object.keys(t))if(e.toLowerCase().startsWith(n))return!0;return!1}})),gT,_T=n((()=>{x(),gT=e=>e!==void 0&&typeof e!=`string`&&!ArrayBuffer.isView(e)&&!f(e)})),vT,yT,bT=n((()=>{vT=/* @__PURE__ */ new Uint32Array(256);for(let e=0;e<256;++e){let t=e;for(let e=0;e<8;++e)t=t&1?2197175160^t>>>1:t>>>1;vT[e]=t>>>0}yT=class{digestLength=4;crc=4294967295;update(e){let t=this.crc;for(let n=0;n>>8^vT[(t^e[n])&255];this.crc=t}async digest(){let e=(this.crc^4294967295)>>>0,t=/* @__PURE__ */ new Uint8Array(4);return t[0]=e>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t}reset(){this.crc=4294967295}}})),xT,Bne=n((()=>{bT(),xT=yT})),ST,CT=n((()=>{ST={CrtCrc64Nvme:null}})),wT,TT,ET,DT,OT,kT,AT,jT,MT,NT,PT,FT,IT=n((()=>{wT=()=>{let e=Array(8);for(let t=0;t<8;t++){let n=Array(512);for(let e=0;e<256;e++){let r=BigInt(e);for(let e=0;e<8*(t+1);e++)r&1n?r=r>>1n^11127430586519243189n:r>>=1n;n[e*2]=Number(r>>32n&4294967295n),n[e*2+1]=Number(r&4294967295n)}e[t]=new Uint32Array(n)}return e},PT=()=>{TT||(TT=wT(),[ET,DT,OT,kT,AT,jT,MT,NT]=TT)},FT=class{c1=0;c2=0;constructor(){PT(),this.reset()}update(e){let t=e.length,n=0,r=this.c1,i=this.c2;for(;n+8<=t;){let t=((i^e[n++])&255)<<1,a=((i>>>8^e[n++])&255)<<1,o=((i>>>16^e[n++])&255)<<1,s=((i>>>24^e[n++])&255)<<1,c=((r^e[n++])&255)<<1,l=((r>>>8^e[n++])&255)<<1,u=((r>>>16^e[n++])&255)<<1,d=((r>>>24^e[n++])&255)<<1;r=NT[t]^MT[a]^jT[o]^AT[s]^kT[c]^OT[l]^DT[u]^ET[d],i=NT[t+1]^MT[a+1]^jT[o+1]^AT[s+1]^kT[c+1]^OT[l+1]^DT[u+1]^ET[d+1]}for(;n>>8|(r&255)<<24)>>>0,r=r>>>8^ET[t],i^=ET[t+1],++n}this.c1=r,this.c2=i}async digest(){let e=this.c1^4294967295,t=this.c2^4294967295;return new Uint8Array([e>>>24,e>>>16&255,e>>>8&255,e&255,t>>>24,t>>>16&255,t>>>8&255,t&255])}reset(){this.c1=4294967295,this.c2=4294967295}}})),LT,Vne=n((()=>{CT(),IT(),LT=class{impl;constructor(){let e=ST.CrtCrc64Nvme;this.impl=e?new e:new FT}update(e){this.impl.update(e)}async digest(){return this.impl.digest()}reset(){this.impl.reset()}}})),Hne=n((()=>{bT(),Bne(),Vne(),IT(),CT(),C()})),RT,zT,BT=n((()=>{db(),RT=[cb.CRC32,cb.CRC32C,cb.CRC64NVME,cb.SHA1,cb.SHA256],zT=[cb.SHA256,cb.SHA1,cb.CRC32,cb.CRC32C,cb.CRC64NVME]})),VT,HT=n((()=>{Hne(),db(),BT(),VT=(e,t)=>{let{checksumAlgorithms:n={}}=t;switch(e){case cb.MD5:return n?.MD5??t.md5;case cb.CRC32:return n?.CRC32??ie;case cb.CRC32C:return n?.CRC32C??xT;case cb.CRC64NVME:return n?.CRC64NVME??LT;case cb.SHA1:return n?.SHA1??t.sha1;case cb.SHA256:return n?.SHA256??t.sha256;default:if(n?.[e])return n[e];throw Error(`The checksum algorithm "${e}" is not supported by the client. Select one of ${RT}, or provide an implementation to the client constructor checksums field.`)}}})),UT,WT=n((()=>{x(),UT=(e,t)=>{let n=new e;return n.update(O(t||``)),n.digest()}})),GT,KT,qT=n((()=>{uT(),yS(),x(),db(),Lne(),pT(),Rne(),zne(),_T(),HT(),WT(),GT={name:`flexibleChecksumsMiddleware`,step:`build`,tags:[`BODY_CHECKSUM`],override:!0},KT=(e,t)=>(n,r)=>async i=>{if(!rt.isInstance(i.request)||hT(`x-amz-checksum-`,i.request.headers))return n(i);let{request:a,input:o}=i,{body:s,headers:c}=a,{base64Encoder:l,streamHasher:u}=e,{requestChecksumRequired:d,requestAlgorithmMember:f}=t,p=await e.requestChecksumCalculation(),m=f?.name,h=f?.httpHeader;m&&!o[m]&&(p===ib.WHEN_SUPPORTED||d)&&(o[m]=ub,h&&(c[h]=ub));let g=dT(o,{requestChecksumRequired:d,requestAlgorithmMember:f?.name,requestChecksumCalculation:p}),v=s,y=c;if(g){switch(g){case cb.CRC32:SC(r,`FLEXIBLE_CHECKSUMS_REQ_CRC32`,`U`);break;case cb.CRC32C:SC(r,`FLEXIBLE_CHECKSUMS_REQ_CRC32C`,`V`);break;case cb.CRC64NVME:SC(r,`FLEXIBLE_CHECKSUMS_REQ_CRC64`,`W`);break;case cb.SHA1:SC(r,`FLEXIBLE_CHECKSUMS_REQ_SHA1`,`X`);break;case cb.SHA256:SC(r,`FLEXIBLE_CHECKSUMS_REQ_SHA256`,`Y`)}let t=fT(g),n=VT(g,e);if(gT(s)){let{getAwsChunkedEncodingStream:i,bodyLengthChecker:a}=e;v=i(typeof e.requestStreamBufferSize==`number`&&e.requestStreamBufferSize>=8192?se(s,e.requestStreamBufferSize,r.logger):s,{base64Encoder:l,bodyLengthChecker:a,checksumLocationName:t,checksumAlgorithmFn:n,streamHasher:u}),y={...c,"content-encoding":c[`content-encoding`]?`${c[`content-encoding`]},aws-chunked`:`aws-chunked`,"transfer-encoding":`chunked`,"x-amz-decoded-content-length":c[`content-length`],"x-amz-content-sha256":`STREAMING-UNSIGNED-PAYLOAD-TRAILER`,"x-amz-trailer":t},delete y[`content-length`]}else if(!mT(t,c)){let e=await UT(n,s);y={...c,[t]:l(e)}}}try{return await n({...i,request:{...a,headers:y,body:v}})}catch(e){if(e instanceof Error&&e.name===`InvalidChunkSizeError`)try{e.message.endsWith(`.`)||(e.message+=`.`),e.message+=` Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream.`}catch{}throw e}}})),JT,YT,Une=n((()=>{uT(),db(),JT={name:`flexibleChecksumsInputMiddleware`,toMiddleware:`serializerMiddleware`,relation:`before`,tags:[`BODY_CHECKSUM`],override:!0},YT=(e,t)=>(n,r)=>async i=>{let a=i.input,{requestValidationModeMember:o}=t,s=await e.requestChecksumCalculation(),c=await e.responseChecksumValidation();switch(s){case ib.WHEN_REQUIRED:SC(r,`FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED`,`a`);break;case ib.WHEN_SUPPORTED:SC(r,`FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED`,`Z`)}switch(c){case ob.WHEN_REQUIRED:SC(r,`FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED`,`c`);break;case ob.WHEN_SUPPORTED:SC(r,`FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED`,`b`)}return o&&!a[o]&&c===ob.WHEN_SUPPORTED&&(a[o]=`ENABLED`),n(i)}})),XT,ZT=n((()=>{BT(),XT=(e=[])=>{let t=[],n=zT.length;for(let r of e){let e=zT.indexOf(r);e===-1?t[n++]=r:t[e]=r}return t.filter(Boolean)}})),QT,Wne=n((()=>{QT=e=>{let t=e.lastIndexOf(`-`);if(t!==-1){let n=e.slice(t+1);if(!n.startsWith(`0`)){let e=parseInt(n,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1}})),$T,Gne=n((()=>{WT(),$T=async(e,{checksumAlgorithmFn:t,base64Encoder:n})=>n(await UT(t,e))})),eE,Kne=n((()=>{x(),db(),Gne(),ZT(),pT(),_T(),HT(),eE=async(e,{config:t,responseAlgorithms:n,logger:r})=>{let i=XT(n),{body:a,headers:o}=e;for(let n of i){let i=fT(n),s=o[i];if(s){let o;try{o=VT(n,t)}catch(e){if(n===cb.CRC64NVME){r?.warn(`Skipping ${cb.CRC64NVME} checksum validation: ${e.message}`);continue}throw e}let{base64Encoder:c}=t;if(gT(a)){e.body=I({expectedChecksum:s,checksumSourceLocation:i,checksum:new o,source:a,base64Encoder:c});return}let l=await $T(a,{checksumAlgorithmFn:o,base64Encoder:c});if(l===s)break;throw Error(`Checksum mismatch: expected "${l}" but received "${s}" in response header "${i}".`)}}}})),tE,nE,qne=n((()=>{yS(),ZT(),pT(),Wne(),Kne(),tE={name:`flexibleChecksumsResponseMiddleware`,toMiddleware:`deserializerMiddleware`,relation:`after`,tags:[`BODY_CHECKSUM`],override:!0},nE=(e,t)=>(n,r)=>async i=>{if(!rt.isInstance(i.request))return n(i);let a=i.input,o=await n(i),s=o.response,{requestValidationModeMember:c,responseAlgorithms:l}=t;if(c&&a[c]===`ENABLED`){let{clientName:t,commandName:n}=r,i=Object.keys(e.checksumAlgorithms??{}).filter(e=>{let t=fT(e);return s.headers[t]!==void 0}),a=XT([...l??[],...i]);if(t===`S3Client`&&n===`GetObjectCommand`&&a.every(e=>{let t=fT(e),n=s.headers[t];return!n||QT(n)}))return o;await eE(s,{config:e,responseAlgorithms:a,logger:r.logger})}return o}})),rE,Jne=n((()=>{Une(),qT(),qne(),rE=(e,t)=>({applyToStack:n=>{n.add(KT(e,t),GT),n.addRelativeTo(YT(e,t),JT),n.addRelativeTo(nE(e,t),tE)}})})),iE,Yne=n((()=>{R(),db(),iE=e=>{let{requestChecksumCalculation:t,responseChecksumValidation:n,requestStreamBufferSize:r}=e;return Object.assign(e,{requestChecksumCalculation:Se(t??ab),responseChecksumValidation:Se(n??sb),requestStreamBufferSize:Number(r??0),checksumAlgorithms:e.checksumAlgorithms??{}})}})),Xne=/* @__PURE__ */ i({CONFIG_REQUEST_CHECKSUM_CALCULATION:()=>gb,CONFIG_RESPONSE_CHECKSUM_VALIDATION:()=>bb,ChecksumAlgorithm:()=>cb,ChecksumLocation:()=>lb,DEFAULT_CHECKSUM_ALGORITHM:()=>ub,DEFAULT_REQUEST_CHECKSUM_CALCULATION:()=>ab,DEFAULT_RESPONSE_CHECKSUM_VALIDATION:()=>sb,ENV_REQUEST_CHECKSUM_CALCULATION:()=>hb,ENV_RESPONSE_CHECKSUM_VALIDATION:()=>yb,NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS:()=>_b,NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS:()=>xb,RequestChecksumCalculation:()=>ib,ResponseChecksumValidation:()=>ob,flexibleChecksumsMiddleware:()=>KT,flexibleChecksumsMiddlewareOptions:()=>GT,getFlexibleChecksumsPlugin:()=>rE,resolveFlexibleChecksumsConfig:()=>iE}),Zne=n((()=>{vb(),Sb(),db(),qT(),Jne(),Yne()}));function aE(){return(e,t)=>async n=>{let{request:r}=n;if(rt.isInstance(r)&&!(oE in r.headers)&&!(sE in r.headers)){let e=`Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`;typeof t?.logger?.warn==`function`&&!(t.logger instanceof N)?t.logger.warn(e):console.warn(e)}return e({...n})}}var oE,sE,cE,lE,Qne=n((()=>{R(),yS(),oE=`content-length`,sE=`x-amz-decoded-content-length`,cE={step:`finalizeRequest`,tags:[`CHECK_CONTENT_LENGTH_HEADER`],name:`getCheckContentLengthHeaderPlugin`,override:!0},lE=e=>({applyToStack:e=>{e.add(aE(),cE)}})})),uE,dE,fE=n((()=>{uE=e=>(t,n)=>async r=>{let i=await e.region(),a=e.region,o=()=>{};n.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>n.__s3RegionRedirect}),o=()=>Object.defineProperty(e,"region",{writable:!0,value:a}));try{let a=await t(r);if(n.__s3RegionRedirect&&(o(),i!==await e.region()))throw Error(`Region was not restored following S3 region redirect.`);return a}catch(e){throw o(),e}},dE={tags:[`REGION_REDIRECT`,`S3`],name:`regionRedirectEndpointMiddleware`,override:!0,relation:`before`,toMiddleware:`endpointV2Middleware`}}));function pE(e){return(t,n)=>async r=>{try{return await t(r)}catch(i){if(e.followRegionRedirects){let a=i?.$metadata?.httpStatusCode,o=n.commandName===`HeadBucketCommand`,s=i?.$response?.headers?.[`x-amz-bucket-region`];if(s&&(a===301||a===400&&(i?.name===`IllegalLocationConstraintException`||o))){try{let t=s;n.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),n.__s3RegionRedirect=t,SC(n,`S3_REGION_REDIRECT`,`Ah`)}catch(e){throw Error(`Region redirect failed: `+e)}return t(r)}}throw i}}}var mE,hE,$ne=n((()=>{uT(),fE(),mE={step:`initialize`,tags:[`REGION_REDIRECT`,`S3`],name:`regionRedirectMiddleware`,override:!0},hE=e=>({applyToStack:t=>{t.add(pE(e),mE),t.addRelativeTo(uE(e),dE)}})})),gE,_E=n((()=>{gE=class e{data;lastPurgeTime=Date.now();static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS=3e4;constructor(e={}){this.data=e}get(e){let t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){let t=Date.now();if(!(this.lastPurgeTime+e.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>t))for(let e in this.data){let n=this.data[e];if(!n.isRefreshing){let r=await n.identity;r.expiration&&r.expiration.getTime(){vE=class{_identity;isRefreshing;accessed;constructor(e,t=!1,n=Date.now()){this._identity=e,this.isRefreshing=t,this.accessed=n}get identity(){return this.accessed=Date.now(),this._identity}}})),bE,xE=n((()=>{_E(),yE(),bE=class e{createSessionFn;cache;static REFRESH_WINDOW_MS=6e4;constructor(e,t=new gE){this.createSessionFn=e,this.cache=t}async getS3ExpressIdentity(t,n){let r=n.Bucket,{cache:i}=this,a=i.get(r);return a?a.identity.then(t=>(t.expiration?.getTime()??0){i.set(r,new vE(Promise.resolve(e)))})),t)):i.set(r,new vE(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch(e=>{console.warn(`Error while clearing expired entries in S3ExpressIdentityCache: +`+e)});let t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw Error(`s3#createSession response credential missing AccessKeyId or SecretAccessKey.`);return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}})),SE,ere=n((()=>{xE(),SE=(e,{session:t})=>{let[n,r]=t,{forcePathStyle:i,useAccelerateEndpoint:a,disableMultiregionAccessPoints:o,followRegionRedirects:s,s3ExpressIdentityProvider:c,bucketEndpoint:l,expectContinueHeader:u}=e;return Object.assign(e,{forcePathStyle:i??!1,useAccelerateEndpoint:a??!1,disableMultiregionAccessPoints:o??!1,followRegionRedirects:s??!1,s3ExpressIdentityProvider:c??new bE(async e=>n().send(new r({Bucket:e}))),bucketEndpoint:l??!1,expectContinueHeader:u??2097152})}})),CE,wE,TE,tre=n((()=>{yS(),x(),CE=e=>(e,t)=>async n=>{let r=await e(n),{response:i}=r;if(fe.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{Ve(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return r},wE={tags:[`S3`],name:`s3ExpiresMiddleware`,override:!0,relation:`after`,toMiddleware:`deserializerMiddleware`},TE=e=>({applyToStack:t=>{t.addRelativeTo(CE(e),wE)}})})),EE,DE,OE,kE,AE,jE=n((()=>{EE=(e,t)=>{let n=[];if(e&&n.push(e),t)for(let e of t)n.push(e);return n},DE=(e,t)=>`${e||`anonymous`}${t&&t.length>0?` (a.k.a. ${t.join(`,`)})`:``}`,OE=()=>{let e=[],t=[],n=!1,r=/* @__PURE__ */ new Set,i=e=>e.sort((e,t)=>kE[t.step]-kE[e.step]||AE[t.priority||`normal`]-AE[e.priority||`normal`]),a=n=>{let i=!1,a=e=>{let t=EE(e.name,e.aliases);if(t.includes(n)){i=!0;for(let e of t)r.delete(e);return!1}return!0};return e=e.filter(a),t=t.filter(a),i},o=n=>{let i=!1,a=e=>{if(e.middleware===n){i=!0;for(let t of EE(e.name,e.aliases))r.delete(t);return!1}return!0};return e=e.filter(a),t=t.filter(a),i},s=n=>(e.forEach(e=>{n.add(e.middleware,{...e})}),t.forEach(e=>{n.addRelativeTo(e.middleware,{...e})}),n.identifyOnResolve?.(u.identifyOnResolve()),n),c=e=>{let t=[];return e.before.forEach(e=>{e.before.length===0&&e.after.length===0?t.push(e):t.push(...c(e))}),t.push(e),e.after.reverse().forEach(e=>{e.before.length===0&&e.after.length===0?t.push(e):t.push(...c(e))}),t},l=(n=!1)=>{let r=[],a=[],o={};return e.forEach(e=>{let t={...e,before:[],after:[]};for(let e of EE(t.name,t.aliases))o[e]=t;r.push(t)}),t.forEach(e=>{let t={...e,before:[],after:[]};for(let e of EE(t.name,t.aliases))o[e]=t;a.push(t)}),a.forEach(e=>{if(e.toMiddleware){let t=o[e.toMiddleware];if(t===void 0){if(n)return;throw Error(`${e.toMiddleware} is not found when adding ${DE(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}e.relation===`after`&&t.after.push(e),e.relation===`before`&&t.before.push(e)}}),i(r).map(c).reduce((e,t)=>(e.push(...t),e),[])},u={add:(t,n={})=>{let{name:i,override:a,aliases:o}=n,s={step:`initialize`,priority:`normal`,middleware:t,...n},c=EE(i,o);if(c.length>0){if(c.some(e=>r.has(e))){if(!a)throw Error(`Duplicate middleware name '${DE(i,o)}'`);for(let t of c){let n=e.findIndex(e=>e.name===t||e.aliases?.some(e=>e===t));if(n===-1)continue;let r=e[n];if(r.step!==s.step||s.priority!==r.priority)throw Error(`"${DE(r.name,r.aliases)}" middleware with ${r.priority} priority in ${r.step} step cannot be overridden by "${DE(i,o)}" middleware with ${s.priority} priority in ${s.step} step.`);e.splice(n,1)}}for(let e of c)r.add(e)}e.push(s)},addRelativeTo:(e,n)=>{let{name:i,override:a,aliases:o}=n,s={middleware:e,...n},c=EE(i,o);if(c.length>0){if(c.some(e=>r.has(e))){if(!a)throw Error(`Duplicate middleware name '${DE(i,o)}'`);for(let e of c){let n=t.findIndex(t=>t.name===e||t.aliases?.some(t=>t===e));if(n===-1)continue;let r=t[n];if(r.toMiddleware!==s.toMiddleware||r.relation!==s.relation)throw Error(`"${DE(r.name,r.aliases)}" middleware ${r.relation} "${r.toMiddleware}" middleware cannot be overridden by "${DE(i,o)}" middleware ${s.relation} "${s.toMiddleware}" middleware.`);t.splice(n,1)}}for(let e of c)r.add(e)}t.push(s)},clone:()=>s(OE()),use:e=>{e.applyToStack(u)},remove:e=>typeof e==`string`?a(e):o(e),removeByTag:n=>{let i=!1,a=e=>{let{tags:t,name:a,aliases:o}=e;if(t&&t.includes(n)){let e=EE(a,o);for(let t of e)r.delete(t);return i=!0,!1}return!0};return e=e.filter(a),t=t.filter(a),i},concat:e=>{let t=s(OE());return t.use(e),t.identifyOnResolve(n||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:s,identify:()=>l(!0).map(e=>{let t=e.step??e.relation+` `+e.toMiddleware;return DE(e.name,e.aliases)+` - `+t}),identifyOnResolve(e){return typeof e==`boolean`&&(n=e),n},resolve:(e,t)=>{for(let n of l().map(e=>e.middleware).reverse())e=n(e,t);return n&&console.log(u.identify()),e}};return u},kE={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},AE={high:3,normal:2,low:1}})),ME,nre=n((()=>{ME=e=>()=>{throw Error(e)}})),NE,rre=n((()=>{NE=e=>()=>Promise.reject(e)})),PE,FE=n((()=>{PE=()=>{let e=/* @__PURE__ */ new WeakSet;return(t,n)=>{if(typeof n==`object`&&n){if(e.has(n))return`[Circular]`;e.add(n)}return n}}})),IE,ire=n((()=>{IE=e=>new Promise(t=>setTimeout(t,e*1e3))})),LE,RE,zE,BE=n((()=>{FE(),LE={minDelay:2,maxDelay:120},(function(e){e.ABORTED=`ABORTED`,e.FAILURE=`FAILURE`,e.SUCCESS=`SUCCESS`,e.RETRY=`RETRY`,e.TIMEOUT=`TIMEOUT`})(RE||={}),zE=e=>{if(e.state===RE.ABORTED){let t=/* @__PURE__ */ Error(`${JSON.stringify({...e,reason:`Request was aborted`},PE())}`);throw t.name=`AbortError`,t}if(e.state===RE.TIMEOUT){let t=/* @__PURE__ */ Error(`${JSON.stringify({...e,reason:`Waiter has timed out`},PE())}`);throw t.name=`TimeoutError`,t}if(e.state!==RE.SUCCESS)throw Error(`${JSON.stringify(e,PE())}`);return e}})),VE,HE,UE,WE,GE,are=n((()=>{FE(),ire(),BE(),VE=async({minDelay:e,maxDelay:t,maxWaitTime:n,abortController:r,client:i,abortSignal:a},o,s)=>{let c={},[l,u]=[e*1e3,t*1e3],d=0,f=Date.now()+n*1e3,p=Date.now()+6e4,m=!1;for(;;){if(d>0){let e=WE(l,u,d,f);if(r?.signal?.aborted||a?.aborted){let e=`AbortController signal aborted.`;return c[e]|=0,c[e]+=1,{state:RE.ABORTED,observedResponses:c}}if(Date.now()+e>f)return{state:RE.TIMEOUT,observedResponses:c};await IE(e/1e3)}let{state:e,reason:t}=await s(i,o);if(t){let e=UE(t);c[e]|=0,c[e]+=1}if(e!==RE.RETRY)return{state:e,reason:t,final:t,observedResponses:c};d+=1,!m&&Date.now()>=p&&(HE(c,i),m=!0)}},HE=(e={},t)=>{let n=Object.keys(e),r=0,i=0;for(let t of n){let n=e[t]|0;r=Math.max(n,r),t.startsWith(`403:`)&&(i+=n)}let a=t?.config?.logger,o=typeof a?.warn==`function`&&!a.constructor?.name?.includes?.(`NoOpLogger`)?a:console;(i>=3||n[n.length-1]?.startsWith(`403:`))&&o.warn(`@smithy/util-waiter WARN - 403 status code encountered during waiter polling.`)},UE=e=>{let t=e?.$response?.statusCode??e?.$metadata?.httpStatusCode;return e?.$responseBodyText?`${t?t+`: `:``}Deserialization error for body: ${e.$responseBodyText}`:t?e?.$response||e?.message?`${t??`Unknown`}: ${e?.message}`:`${t}: OK`:String(e?.message??JSON.stringify(e,PE())??`Unknown`)},WE=(e,t,n,r)=>{if(n>Math.log(t/e)/Math.log(2)+1)return t;let i=e*2**(n-1),a=GE(e,Math.min(i,t));if(Date.now()+a>r){let e=r-Date.now();return Math.max(0,e-500)}return a},GE=(e,t)=>e+Math.random()*(t-e)})),KE,ore=n((()=>{KE=e=>{if(e.maxWaitTime<=0)throw Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);if(e.minDelay<=0)throw Error(`WaiterConfiguration.minDelay must be greater than 0`);if(e.maxDelay<=0)throw Error(`WaiterConfiguration.maxDelay must be greater than 0`);if(e.maxWaitTime<=e.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${e.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${e.minDelay}] for this waiter`);if(e.maxDelay{are(),ore(),BE(),qE=e=>{let t;return{clearListener(){typeof e.removeEventListener==`function`&&e.removeEventListener(`abort`,t)},aborted:new Promise(n=>{t=()=>n({state:RE.ABORTED}),typeof e.addEventListener==`function`?e.addEventListener(`abort`,t):e.onabort=t})}},JE=async(e,t,n)=>{let r={...LE,...e};KE(r);let i=[VE(r,t,n)],a=[];if(e.abortSignal){let{aborted:t,clearListener:n}=qE(e.abortSignal);a.push(n),i.push(t)}if(e.abortController?.signal){let{aborted:t,clearListener:n}=qE(e.abortController.signal);a.push(n),i.push(t)}return Promise.race(i).then(e=>{for(let e of a)e();return e})}})),YE,cre=n((()=>{jE(),YE=class{config;middlewareStack=OE();initConfig;handlers;constructor(e){this.config=e;let{protocol:t,protocolSettings:n}=e;n&&typeof t==`function`&&(e.protocol=new t(n))}send(e,t,n){let r=typeof t==`function`?void 0:t,i=typeof t==`function`?t:n,a=r===void 0&&this.config.cacheMiddleware===!0,o;if(a){this.handlers||=/* @__PURE__ */ new WeakMap;let t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,r),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,r);if(i)o(e).then(e=>i(null,e.output),e=>i(e)).catch(()=>{});else return o(e).then(e=>e.output)}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}}));function XE(e,t){if(t==null)return t;let n=Lt.of(e);if(n.getMergedTraits().sensitive)return ZE;if(n.isListSchema()){if(n.getValueSchema().getMergedTraits().sensitive)return ZE}else if(n.isMapSchema()){if(n.getKeySchema().getMergedTraits().sensitive||n.getValueSchema().getMergedTraits().sensitive)return ZE}else if(n.isStructSchema()&&typeof t==`object`){let e=t,r={};for(let[t,i]of n.structIterator())e[t]!=null&&(r[t]=XE(i,e[t]));return r}return t}var ZE,QE=n((()=>{Ft(),ZE=`***SensitiveInformation***`})),$E,eD,tD,nD=n((()=>{$E=ct(),jE(),QE(),eD=class{middlewareStack=OE();schema;static classBuilder(){return new tD}resolveMiddlewareWithContext(e,t,n,{middlewareFn:r,clientName:i,commandName:a,inputFilterSensitiveLog:o,outputFilterSensitiveLog:s,smithyContext:c,additionalContext:l,CommandCtor:u}){for(let i of r.bind(this)(u,e,t,n))this.middlewareStack.use(i);let d=e.concat(this.middlewareStack),{logger:f}=t,p=l[$E.SMITHY_CONTEXT_KEY],m={logger:f,clientName:i,commandName:a,inputFilterSensitiveLog:o,outputFilterSensitiveLog:s,...l,[$E.SMITHY_CONTEXT_KEY]:{...p,commandInstance:this,...c,...n?.metricsRecorder===void 0?{}:{metricsRecorder:n.metricsRecorder}}},{requestHandler:h}=t,g=n??{};return g.metricsRecorder&&(g={...g},delete g.metricsRecorder),c.eventStream&&(g={isEventStream:!0,...g}),d.resolve(e=>h.handle(e.request,g),m)}},tD=class{_init=()=>{};_ep={};_middlewareFn=()=>[];_commandName=``;_clientName=``;_additionalContext={};_smithyContext={};_inputFilterSensitiveLog=void 0;_outputFilterSensitiveLog=void 0;_serializer=null;_deserializer=null;_operationSchema;init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,n={}){return this._smithyContext={service:e,operation:t,...n},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}sc(e){return this._operationSchema=e,this._smithyContext.operationSchema=e,this}build(){let e=this,t;return t=class extends eD{input;static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.input=t??{},e._init(this),this.schema=e._operationSchema}resolveMiddleware(n,r,i){let a=e._operationSchema,o=a?.[4]??a?.input,s=a?.[5]??a?.output;return this.resolveMiddlewareWithContext(n,r,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog??(a?XE.bind(null,o):e=>e),outputFilterSensitiveLog:e._outputFilterSensitiveLog??(a?XE.bind(null,s):e=>e),smithyContext:e._smithyContext,additionalContext:e._additionalContext})}serialize=e._serializer;deserialize=e._deserializer}}}})),rD,lre=n((()=>{rD=`***SensitiveInformation***`})),iD,ure=n((()=>{iD=(e,t,n)=>{for(let[n,r]of Object.entries(e)){let e=async function(e,t,n){let i=new r(e);if(typeof t==`function`)this.send(i,t);else if(typeof n==`function`){if(typeof t!=`object`)throw Error(`Expected http options but got ${typeof t}`);this.send(i,t||{},n)}else return this.send(i,t)},i=(n[0].toLowerCase()+n.slice(1)).replace(/Command$/,``);t.prototype[i]=e}let{paginators:r={},waiters:i={}}=n??{};for(let[e,n]of Object.entries(r))t.prototype[e]===void 0&&(t.prototype[e]=function(e={},t,...r){return n({...t,client:this},e,...r)});for(let[e,n]of Object.entries(i))t.prototype[e]===void 0&&(t.prototype[e]=async function(e={},t,...r){let i=t;return typeof t==`number`&&(i={maxWaitTime:t}),n({...i,client:this},e,...r)})}})),aD,oD,sD=n((()=>{aD=class e extends Error{static shapeId=`smithy.ts.sdk.synthetic.nonamespace.client#ServiceException`;$fault;$response;$retryable;$metadata;constructor(e){super(e.message),Object.setPrototypeOf(this,Object.getPrototypeOf(this).constructor.prototype),this.name=e.name,this.$fault=e.$fault,this.$metadata=e.$metadata}static isInstance(t){if(!t)return!1;let n=t;return e.prototype.isPrototypeOf(n)||!!n.$fault&&!!n.$metadata&&(n.$fault===`client`||n.$fault===`server`)}static[Symbol.hasInstance](t){if(!t)return!1;let n=t;if(this===e)return e.isInstance(t);if(e.isInstance(t)){if(this.prototype.isPrototypeOf(t))return!0;let r=Object.prototype.hasOwnProperty.call(this,`shapeId`)?this.shapeId:void 0,i=!1;if(r){let t=Object.getPrototypeOf(n);for(;t&&t!==Object.prototype;){let n=t.constructor,a=n!==e&&Object.prototype.hasOwnProperty.call(n,`shapeId`)?n?.shapeId:void 0;if(a&&(i=!0,a===r))return!0;t=Object.getPrototypeOf(t)}}if(r&&i)return!1;let a=this.name;if(a&&a.length>=6){if(n.name===a)return!0;let e=Object.getPrototypeOf(n);for(;e&&e!==Object.prototype;){let t=e.constructor?.name;if(t&&t!==`Error`&&t===a)return!0;e=Object.getPrototypeOf(e)}}}return!1}},oD=(e,t={})=>(Object.entries(t).filter(([,e])=>e!==void 0).forEach(([t,n])=>{(e[t]==null||e[t]===``)&&(e[t]=n)}),e.message=e.message||e.Message||`UnknownError`,delete e.Message,e)})),cD,dre,fre,pre=n((()=>{sD(),cD=({output:e,parsedBody:t,exceptionCtor:n,errorCode:r})=>{let i=fre(e),a=i.httpStatusCode?i.httpStatusCode+``:void 0,o=new n({name:t?.code||t?.Code||r||a||`UnknownError`,$fault:`client`,$metadata:i});throw oD(o,t)},dre=e=>({output:t,parsedBody:n,errorCode:r})=>{cD({output:t,parsedBody:n,exceptionCtor:e,errorCode:r})},fre=e=>({httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]})})),mre,hre=n((()=>{mre=e=>{switch(e){case`standard`:return{retryMode:`standard`,connectionTimeout:3100};case`in-region`:return{retryMode:`standard`,connectionTimeout:1100};case`cross-region`:return{retryMode:`standard`,connectionTimeout:3100};case`mobile`:return{retryMode:`standard`,connectionTimeout:3e4};default:return{}}}})),lD,gre,_re=n((()=>{lD=!1,gre=e=>{e&&!lD&&parseInt(e.substring(1,e.indexOf(`.`)))<16&&(lD=!0)}})),uD,dD,fD,pD,vre=n((()=>{gt(),uD=ct(),dD=Object.values(uD.AlgorithmId),fD=e=>{let t=[];for(let n in uD.AlgorithmId){if(!mt(uD.AlgorithmId,n))continue;let r=uD.AlgorithmId[n];e[r]!==void 0&&t.push({algorithmId:()=>r,checksumConstructor:()=>e[r]})}for(let[n,r]of Object.entries(e.checksumAlgorithms??{}))t.push({algorithmId:()=>n,checksumConstructor:()=>r});return{addChecksumAlgorithm(n){e.checksumAlgorithms=e.checksumAlgorithms??{};let r=n.algorithmId(),i=n.checksumConstructor();dD.includes(r)?e.checksumAlgorithms[r.toUpperCase()]=i:e.checksumAlgorithms[r]=i,t.push(n)},checksumAlgorithms(){return t}}},pD=e=>{let t={};return e.checksumAlgorithms().forEach(e=>{let n=e.algorithmId();dD.includes(n)&&(t[n]=e.checksumConstructor())}),t}})),mD,hD,yre=n((()=>{mD=e=>({setRetryStrategy(t){e.retryStrategy=t},retryStrategy(){return e.retryStrategy}}),hD=e=>{let t={};return t.retryStrategy=e.retryStrategy(),t}})),gD,bre,xre,Sre=n((()=>{vre(),yre(),gD=e=>Object.assign(fD(e),mD(e)),bre=gD,xre=e=>Object.assign(pD(e),hD(e))})),Cre,wre=n((()=>{Cre=e=>Array.isArray(e)?e:[e]})),_D,Tre=n((()=>{gt(),_D=e=>{let t=`#text`;for(let n in e)mt(e,n)&&(e[n][t]===void 0?typeof e[n]==`object`&&e[n]!==null&&(e[n]=_D(e[n])):e[n]=e[n][t]);return e}})),Ere,Dre=n((()=>{Ere=e=>e!=null})),Ore,kre=n((()=>{Ore=class{trace(){}debug(){}info(){}warn(){}error(){}}}));function Are(e,t,n){let r,i,a;if(t===void 0&&n===void 0)r={},a=e;else{if(r=e,typeof t==`function`)return i=t,a=n,Nre(r,i,a);a=t}for(let e in a)mt(a,e)&&(Array.isArray(a[e])?vD(r,null,a,e):r[e]=a[e]);return r}var jre,Mre,Nre,vD,yD,bD,Pre=n((()=>{gt(),jre=e=>{let t={};for(let[n,r]of Object.entries(e||{}))t[n]=[,r];return t},Mre=(e,t)=>{let n={};for(let r in t)mt(t,r)&&vD(n,e,t,r);return n},Nre=(e,t,n)=>Are(e,Object.entries(n).reduce((e,[n,r])=>(e[n]=Array.isArray(r)?r:typeof r==`function`?[t,r()]:[t,r],e),{})),vD=(e,t,n,r)=>{if(t!==null){let i=n[r];typeof i==`function`&&(i=[,i]);let[a=yD,o=bD,s=r]=i;(typeof a==`function`&&a(t[s])||typeof a!=`function`&&a)&&(e[r]=o(t[s]));return}let[i,a]=n[r];if(typeof a==`function`){let t,n=i===void 0&&(t=a())!=null,o=typeof i==`function`&&!!i(void 0)||typeof i!=`function`&&!!i;n?e[r]=t:o&&(e[r]=a())}else{let t=i===void 0&&a!=null,n=typeof i==`function`&&!!i(a)||typeof i!=`function`&&!!i;(t||n)&&(e[r]=a)}},yD=e=>e!=null,bD=e=>e})),xD,SD,Fre=n((()=>{xD=e=>{if(e!==e)return`NaN`;switch(e){case 1/0:return`Infinity`;case-1/0:return`-Infinity`;default:return e}},SD=e=>e.toISOString().replace(`.000Z`,`Z`)})),CD,Ire=n((()=>{gt(),CD=e=>{if(e==null)return{};if(Array.isArray(e))return e.filter(e=>e!=null).map(CD);if(typeof e==`object`){let t={};for(let n in e)mt(e,n)&&e[n]!=null&&(t[n]=CD(e[n]));return t}return e}}));function Lre(e,t,n,r){return function(i,a,o,s,c={}){let l=Object.assign({},e,i);return eD.classBuilder().ep(l).m(function(e,t,n,i){let o=a.call(this,e,t,n,i);return o.unshift(r(n,e.getEndpointParameterInstructions())),o}).s(t,o,c).n(n,o.charAt(0).toUpperCase()+o.slice(1)+`Command`).sc(s).build()}}var Rre=n((()=>{nD()})),zre=/* @__PURE__ */ i({AlgorithmId:()=>uD.AlgorithmId,Client:()=>YE,Command:()=>eD,NoOpLogger:()=>Ore,SENSITIVE_STRING:()=>rD,ServiceException:()=>aD,WaiterState:()=>RE,_json:()=>CD,checkExceptions:()=>zE,constructStack:()=>OE,convertMap:()=>jre,createAggregatedClient:()=>iD,createWaiter:()=>JE,decorateServiceException:()=>oD,emitWarningIfUnsupportedVersion:()=>gre,getArrayIfSingleItem:()=>Cre,getChecksumConfiguration:()=>fD,getDefaultClientConfiguration:()=>bre,getDefaultExtensionConfiguration:()=>gD,getRetryConfiguration:()=>mD,getSmithyContext:()=>pt,getValueFromTextNode:()=>_D,invalidFunction:()=>ME,invalidProvider:()=>NE,isSerializableHeaderValue:()=>Ere,loadConfigsForDefaultMode:()=>mre,makeBuilder:()=>Lre,map:()=>Are,normalizeProvider:()=>zt,resolveChecksumRuntimeConfig:()=>pD,resolveDefaultRuntimeConfig:()=>xre,resolveRetryRuntimeConfig:()=>hD,schemaLogFilter:()=>XE,serializeDateTime:()=>SD,serializeFloat:()=>xD,take:()=>Mre,throwDefaultError:()=>cD,waiterServiceDefaults:()=>LE,withBaseException:()=>dre}),Bre=n((()=>{jE(),gt(),nre(),rre(),sre(),BE(),cre(),nD(),lre(),ure(),pre(),hre(),_re(),sD(),Sre(),vre(),yre(),wre(),Tre(),Dre(),kre(),Pre(),QE(),Fre(),Ire(),Rre()})),wD,TD=n((()=>{Pt(),wD=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return It.mutate(e);if(!e)return It.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return It.mutate(await n)}}));function ED(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var DD=n((()=>{})),OD,kD=n((()=>{OD=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),AD,jD=n((()=>{gt(),Ft(),kD(),AD=class extends OD{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new Tt(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return xt}getResponseType(){return ft}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)mt(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)mt(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=Lt.of(t.input),i=Nt(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!bt(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-D8vV3lRY.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),MD,Vre=n((()=>{gt(),Ft(),Pt(),jD(),TD(),DD(),MD=class extends AD{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=Lt.of(e?.input),l=[],u=[],d=!1,f,p=new xt({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(p,s),this.setHostPrefix(p,e,r);let t=Nt(e.traits);if(t.http){p.method=t.http[0];let[e,n]=t.http[1].split(`?`);p.path==`/`?p.path=e:p.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(p.path.includes(`{${e}+}`)||p.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(f=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):f=s:(i.write(t,s),f=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();p.path.includes(`{${e}+}`)?p.path=p.path.replace(`{${e}+}`,n.split(`/`).map(ED).join(`/`)):p.path.includes(`{${e}}`)&&(p.path=p.path.replace(`{${e}}`,ED(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!mt(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(d=!0,l.push(e),u.push(t))}if(d&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),l,u,void 0];n?a[6]=n:a.pop(),i.write(a,r),f=i.flush()}return p.headers=o,p.query=a,p.body=f,p}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(mt(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=Lt.of(e.output),a={};if(n.statusCode>=300){let i=await wD(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await wD(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await wD(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=Lt.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=Mt(n.body);else if(n.body){let i=await wD(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?vt(o,`,`,2):wt(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(mt(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),ND,Hre=n((()=>{gt(),Ft(),jD(),TD(),ND=class extends AD{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=Lt.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new xt({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=Lt.of(e.output),a={};if(n.statusCode>=300){let i=await wD(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mt(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await wD(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),PD,FD=n((()=>{DD(),PD=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>ED(e)).join(`/`):ED(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function Ure(e,t){return new ID(e,t)}var ID,Wre=n((()=>{gt(),FD(),ID=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new xt({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=PD(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function LD(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var RD=n((()=>{})),zD,BD=n((()=>{Ft(),Pt(),kD(),RD(),zD=class extends OD{settings;constructor(e){super(),this.settings=e}read(e,t){let n=Lt.of(e);if(n.isListSchema())return wt(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??jt)(t);if(n.isTimestampSchema())switch(LD(n,this.settings)){case 5:return Rt(t);case 6:return yt(t);case 7:return ut(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=kt.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new Ct(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??St)((this.serdeContext?.base64Decoder??jt)(e))}}})),VD,Gre=n((()=>{Ft(),Pt(),kD(),BD(),VD=class extends OD{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new zD(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=Lt.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??St;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??Et;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),HD,UD=n((()=>{Ft(),Pt(),kD(),RD(),HD=class extends OD{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=Lt.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(LD(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Ot(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??lt)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:_t(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=kt.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??lt)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?At():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),WD,Kre=n((()=>{Ft(),UD(),WD=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new HD(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=Lt.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),GD,KD,qre=n((()=>{GD=ct(),KD=class{name;kind;values;constructor({name:e,kind:t=GD.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),qD,Jre=n((()=>{qD=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),JD,YD,Yre=n((()=>{JD=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),YD=e=>({requestHandler:e.httpHandler()})}));function XD(e){return t=>async n=>{let r=n.request;if(xt.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(ZD)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[ZD]:String(n)})}catch{}}return t({...n,request:r})}}var ZD,QD,$D,Xre=n((()=>{gt(),ZD=`content-length`,QD={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},$D=e=>({applyToStack:t=>{t.add(XD(e.bodyLengthChecker),QD)}})})),eO,tO,nO=n((()=>{eO=e=>encodeURIComponent(e).replace(/[!'()*]/g,tO),tO=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),rO,Zre=n((()=>{nO(),rO=e=>e.split(`/`).map(eO).join(`/`)}));function Qre(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=eO(n),Array.isArray(r))for(let e=0,i=r.length;e{nO()})),eie=/* @__PURE__ */ i({Field:()=>KD,Fields:()=>qD,FromStringShapeDeserializer:()=>zD,HttpBindingProtocol:()=>MD,HttpInterceptingShapeDeserializer:()=>VD,HttpInterceptingShapeSerializer:()=>WD,HttpProtocol:()=>AD,HttpRequest:()=>xt,HttpResponse:()=>ft,RequestBuilder:()=>ID,RpcProtocol:()=>ND,SerdeContext:()=>OD,ToStringShapeSerializer:()=>HD,buildQueryString:()=>Qre,collectBody:()=>wD,contentLengthMiddleware:()=>XD,contentLengthMiddlewareOptions:()=>QD,determineTimestampFormat:()=>LD,escapeUri:()=>eO,escapeUriPath:()=>rO,extendedEncodeURIComponent:()=>ED,getContentLengthPlugin:()=>$D,getHttpHandlerExtensionConfiguration:()=>JD,isValidHostname:()=>bt,parseQueryString:()=>ht,parseUrl:()=>dt,requestBuilder:()=>Ure,resolveHttpHandlerRuntimeConfig:()=>YD,resolvedPath:()=>PD}),tie=n((()=>{TD(),DD(),Vre(),jD(),Hre(),Wre(),FD(),BD(),Gre(),Kre(),UD(),RD(),kD(),qre(),Jre(),gt(),Yre(),Xre(),nO(),Zre(),$re()})),iO=/* @__PURE__ */ a((t=>{let{hasOwn:n,fromUtf8:r,fromHex:i,toHex:a,toUint8Array:o,isArrayBuffer:s}=(Pt(),e(Dt)),{normalizeProvider:c}=(Bre(),e(zre)),{escapeUri:l,HttpRequest:u}=(tie(),e(eie));var d=class{format(e){let t=[];for(let i in e){if(!n(e,i))continue;let a=r(i);t.push(Uint8Array.from([a.byteLength]),a,this.formatHeaderValue(e[i]))}let i=new Uint8Array(t.reduce((e,t)=>e+t.byteLength,0)),a=0;for(let e of t)i.set(e,a),a+=e.byteLength;return i}formatHeaderValue(e){switch(e.type){case`boolean`:return Uint8Array.from([+!e.value]);case`byte`:return Uint8Array.from([2,e.value]);case`short`:let t=/* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case`integer`:let n=/* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(5));return n.setUint8(0,4),n.setInt32(1,e.value,!1),new Uint8Array(n.buffer);case`long`:let a=/* @__PURE__ */ new Uint8Array(9);return a[0]=5,a.set(e.value.bytes,1),a;case`binary`:let o=new DataView(new ArrayBuffer(3+e.value.byteLength));o.setUint8(0,6),o.setUint16(1,e.value.byteLength,!1);let s=new Uint8Array(o.buffer);return s.set(e.value,3),s;case`string`:let c=r(e.value),l=new DataView(new ArrayBuffer(3+c.byteLength));l.setUint8(0,7),l.setUint16(1,c.byteLength,!1);let u=new Uint8Array(l.buffer);return u.set(c,3),u;case`timestamp`:let d=/* @__PURE__ */ new Uint8Array(9);return d[0]=8,d.set(m.fromNumber(e.value.valueOf()).bytes,1),d;case`uuid`:if(!p.test(e.value))throw Error(`Invalid UUID received: ${e.value}`);let f=/* @__PURE__ */ new Uint8Array(17);return f[0]=9,f.set(i(e.value.replace(/-/g,``)),1),f}}},f;(function(e){e[e.boolTrue=0]=`boolTrue`,e[e.boolFalse=1]=`boolFalse`,e[e.byte=2]=`byte`,e[e.short=3]=`short`,e[e.integer=4]=`integer`,e[e.long=5]=`long`,e[e.byteArray=6]=`byteArray`,e[e.string=7]=`string`,e[e.timestamp=8]=`timestamp`,e[e.uuid=9]=`uuid`})(f||={});let p=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;var m=class e{bytes;constructor(e){if(this.bytes=e,e.byteLength!==8)throw Error(`Int64 buffers must be exactly 8 bytes`)}static fromNumber(t){if(t>0x8000000000000000||t<-0x8000000000000000)throw Error(`${t} is too large (or, if negative, too small) to represent as an Int64`);let n=/* @__PURE__ */ new Uint8Array(8);for(let e=7,r=Math.abs(Math.round(t));e>-1&&r>0;e--,r/=256)n[e]=r;return t<0&&h(n),new e(n)}valueOf(){let e=this.bytes.slice(0),t=e[0]&128;return t&&h(e),parseInt(a(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}};function h(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,e[t]===0);t--);}let g=`X-Amz-Algorithm`,v=`X-Amz-Credential`,y=`X-Amz-Date`,b=`X-Amz-SignedHeaders`,x=`X-Amz-Expires`,S=`X-Amz-Signature`,C=`X-Amz-Security-Token`,w=`authorization`,T=`x-amz-date`,E=`date`,D=[w,T,E],O=`x-amz-signature`,k=`x-amz-content-sha256`,A=`x-amz-security-token`,j={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},M=/^proxy-/,N=/^sec-/,P=[/^proxy-/i,/^sec-/i],F=`AWS4-HMAC-SHA256`,I=`AWS4-HMAC-SHA256-PAYLOAD`,ee=`UNSIGNED-PAYLOAD`,L=`aws4_request`,R=604800,te=({query:e={}})=>{let t=[],r={};for(let i in e){if(!n(e,i)||i.toLowerCase()===O)continue;let a=l(i);t.push(a);let o=e[i];typeof o==`string`?r[a]=`${a}=${l(o)}`:Array.isArray(o)&&(r[a]=o.slice(0).reduce((e,t)=>e.concat([`${a}=${l(t)}`]),[]).sort().join(`&`))}return t.sort().map(e=>r[e]).filter(e=>e).join(`&`)},ne=e=>re(e).toISOString().replace(/\.\d{3}Z$/,`Z`),re=e=>typeof e==`number`?/* @__PURE__ */ new Date(e*1e3):typeof e==`string`?Number(e)?/* @__PURE__ */ new Date(Number(e)*1e3):new Date(e):e;var ie=class{service;regionProvider;credentialProvider;sha256;uriEscapePath;applyChecksum;constructor({applyChecksum:e,credentials:t,region:n,service:r,sha256:i,uriEscapePath:a=!0}){this.service=r,this.sha256=i,this.uriEscapePath=a,this.applyChecksum=typeof e!=`boolean`||e,this.regionProvider=c(n),this.credentialProvider=c(t)}createCanonicalRequest(e,t,n){let r=Object.keys(t).sort();return`${e.method} ${this.getCanonicalPath(e)} ${te(e)} ${r.map(e=>`${e}:${t[e]}`).join(` @@ -349,20 +349,20 @@ ${n}`}async createStringToSign(e,t,n,r){let i=new this.sha256;i.update(o(n));let ${e} ${t} ${a(s)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){let t=[];for(let n of e.split(`/`))n?.length!==0&&n!==`.`&&(n===`..`?t.pop():t.push(n));let n=`${e?.startsWith(`/`)?`/`:``}${t.join(`/`)}${t.length>0&&e?.endsWith(`/`)?`/`:``}`;return l(n).replace(/%2F/g,`/`)}return e}validateResolvedCredentials(e){if(typeof e!=`object`||typeof e.accessKeyId!=`string`||typeof e.secretAccessKey!=`string`)throw Error(`Resolved credential object is not valid`)}formatDate(e){let t=ne(e).replace(/[-:]/g,``);return{longDate:t,shortDate:t.slice(0,8)}}getCanonicalHeaderList(e){return Object.keys(e).sort().join(`;`)}};let z={},ae=[],oe=(e,t,n)=>`${e}/${t}/${n}/${L}`,se=async(e,t,n,r,i)=>{let o=await le(e,t.secretAccessKey,t.accessKeyId),s=`${n}:${r}:${i}:${a(o)}:${t.sessionToken}`;if(s in z)return z[s];for(ae.push(s);ae.length>50;)delete z[ae.shift()];let c=`AWS4${t.secretAccessKey}`;for(let t of[n,r,i,L])c=await le(e,c,t);return z[s]=c},ce=()=>{ae.length=0,Object.keys(z).forEach(e=>{delete z[e]})},le=(e,t,n)=>{let r=new e(t);return r.update(o(n)),r.digest()},ue=({headers:e},t,n)=>{let r={};for(let i of Object.keys(e).sort()){if(e[i]==null)continue;let a=i.toLowerCase();(a in j||t?.has(a)||M.test(a)||N.test(a))&&(!n||n&&!n.has(a))||(r[a]=e[i].replace(/[\r\n]/g,` `).replace(/[ \t]+/g,` `).replace(/^ | $/g,``))}return r},de=async({headers:e,body:t},r)=>{for(let t in e)if(n(e,t)&&t.toLowerCase()===k)return e[t];if(t==null)return`e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`;if(typeof t==`string`||ArrayBuffer.isView(t)||s(t)){let e=new r;return e.update(o(t)),a(await e.digest())}return ee},fe=(e,t)=>{e=e.toLowerCase();for(let r in t)if(n(t,r)&&e===r.toLowerCase())return!0;return!1},pe=(e,t={})=>{let{headers:r,query:i={}}=u.clone(e);for(let e in r){if(!n(r,e))continue;let a=e.toLowerCase();(a.slice(0,6)===`x-amz-`&&!t.unhoistableHeaders?.has(a)||t.hoistableHeaders?.has(a))&&(i[e]=r[e],delete r[e])}return{...e,headers:r,query:i}},me=e=>{e=u.clone(e);for(let t in e.headers)n(e.headers,t)&&D.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e};var he=class extends ie{headerFormatter=new d;constructor({applyChecksum:e,credentials:t,region:n,service:r,sha256:i,uriEscapePath:a=!0}){super({applyChecksum:e,credentials:t,region:n,service:r,sha256:i,uriEscapePath:a})}async presign(e,t={}){let{signingDate:n=/* @__PURE__ */ new Date,expiresIn:r=3600,unsignableHeaders:i,unhoistableHeaders:a,signableHeaders:o,hoistableHeaders:s,signingRegion:c,signingService:l}=t,u=await this.credentialProvider();this.validateResolvedCredentials(u);let d=c??await this.regionProvider(),{longDate:f,shortDate:p}=this.formatDate(n);if(r>R)return Promise.reject(`Signature version 4 presigned URLs must have an expiration date less than one week in the future`);let m=oe(p,d,l??this.service),h=pe(me(e),{unhoistableHeaders:a,hoistableHeaders:s});u.sessionToken&&(h.query[C]=u.sessionToken),h.query[g]=F,h.query[v]=`${u.accessKeyId}/${m}`,h.query[y]=f,h.query[x]=r.toString(10);let w=ue(h,i,o);return h.query[b]=this.getCanonicalHeaderList(w),h.query[S]=await this.getSignature(f,m,this.getSigningKey(u,d,p,l),this.createCanonicalRequest(h,w,await de(e,this.sha256))),h}async sign(e,t){return typeof e==`string`?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:n=/* @__PURE__ */ new Date,priorSignature:r,signingRegion:i,signingService:o,eventStreamCredentials:s}){let c=i??await this.regionProvider(),{shortDate:l,longDate:u}=this.formatDate(n),d=oe(l,c,o??this.service),f=await de({headers:{},body:t},this.sha256),p=new this.sha256;p.update(e);let m=a(await p.digest()),h=[I,u,d,r,m,f].join(` -`);return this.signString(h,{signingDate:n,signingRegion:c,signingService:o,eventStreamCredentials:s})}async signMessage(e,{signingDate:t=/* @__PURE__ */ new Date,signingRegion:n,signingService:r,eventStreamCredentials:i}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:n,signingService:r,priorSignature:e.priorSignature,eventStreamCredentials:i}).then(t=>({message:e.message,signature:t}))}async signString(e,{signingDate:t=/* @__PURE__ */ new Date,signingRegion:n,signingService:r,eventStreamCredentials:i}={}){let s=i??await this.credentialProvider();this.validateResolvedCredentials(s);let c=n??await this.regionProvider(),{shortDate:l}=this.formatDate(t),u=new this.sha256(await this.getSigningKey(s,c,l,r));return u.update(o(e)),a(await u.digest())}async signRequest(e,{signingDate:t=/* @__PURE__ */ new Date,signableHeaders:n,unsignableHeaders:r,signingRegion:i,signingService:a}={}){let o=await this.credentialProvider();this.validateResolvedCredentials(o);let s=i??await this.regionProvider(),c=me(e),{longDate:l,shortDate:u}=this.formatDate(t),d=oe(u,s,a??this.service);c.headers[T]=l,o.sessionToken&&(c.headers[A]=o.sessionToken);let f=await de(c,this.sha256);!fe(k,c.headers)&&this.applyChecksum&&(c.headers[k]=f);let p=ue(c,r,n),m=await this.getSignature(l,d,this.getSigningKey(o,s,u,a),this.createCanonicalRequest(c,p,f));return c.headers[w]=`${F} Credential=${o.accessKeyId}/${d}, SignedHeaders=${this.getCanonicalHeaderList(p)}, Signature=${m}`,c}async getSignature(e,t,n,r){let i=await this.createStringToSign(e,t,r,F),s=new this.sha256(await n);return s.update(o(i)),a(await s.digest())}getSigningKey(e,t,n,r){return se(this.sha256,e,n,t,r||this.service)}};t.ALGORITHM_IDENTIFIER=F,t.ALGORITHM_IDENTIFIER_V4A=`AWS4-ECDSA-P256-SHA256`,t.ALGORITHM_QUERY_PARAM=g,t.ALWAYS_UNSIGNABLE_HEADERS=j,t.AMZ_DATE_HEADER=T,t.AMZ_DATE_QUERY_PARAM=y,t.AUTH_HEADER=w,t.CREDENTIAL_QUERY_PARAM=v,t.DATE_HEADER=E,t.EVENT_ALGORITHM_IDENTIFIER=I,t.EXPIRES_QUERY_PARAM=x,t.GENERATED_HEADERS=D,t.HOST_HEADER=`host`,t.KEY_TYPE_IDENTIFIER=L,t.MAX_CACHE_SIZE=50,t.MAX_PRESIGNED_TTL=R,t.PROXY_HEADER_PATTERN=M,t.REGION_SET_PARAM=`X-Amz-Region-Set`,t.SEC_HEADER_PATTERN=N,t.SHA256_HEADER=k,t.SIGNATURE_HEADER=O,t.SIGNATURE_QUERY_PARAM=S,t.SIGNED_HEADERS_QUERY_PARAM=b,t.SignatureV4=he,t.SignatureV4Base=ie,t.TOKEN_HEADER=A,t.TOKEN_QUERY_PARAM=C,t.UNSIGNABLE_PATTERNS=P,t.UNSIGNED_PAYLOAD=ee,t.clearCredentialCache=ce,t.createScope=oe,t.getCanonicalHeaders=ue,t.getCanonicalQuery=te,t.getPayloadHash=de,t.getSigningKey=se,t.hasHeader=fe,t.moveHeadersToQuery=pe,t.prepareRequest=me,t.signatureV4aContainer={SignatureV4a:null}})),_O=/* @__PURE__ */ a((e=>{let{SignatureV4:t,signatureV4aContainer:n}=gO(),r={CrtSignerV4:null},i=`X-Amz-S3session-Token`,a=`x-amz-s3session-token`;var o=class extends t{async signWithCredentials(e,t,n){let r=s(t);e.headers[a]=t.sessionToken;let i=this;return c(i,r),i.signRequest(e,n??{})}async presignWithCredentials(e,t,n){let r=s(t);return delete e.headers[a],e.headers[i]=t.sessionToken,e.query=e.query??{},e.query[i]=t.sessionToken,c(this,r),this.presign(e,n)}};function s(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function c(e,t){let n=e.credentialProvider;e.credentialProvider=()=>(e.credentialProvider=n,Promise.resolve(t))}e.SignatureV4MultiRegion=class{sigv4aSigner;sigv4Signer;signerOptions;static sigv4aDependency(){return typeof r.CrtSignerV4==`function`?`crt`:typeof n.SignatureV4a==`function`?`js`:`none`}constructor(e){this.sigv4Signer=new o(e),this.signerOptions=e}async sign(e,t={}){return t.signingRegion===`*`?this.getSigv4aSigner().sign(e,t):this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,n={}){if(n.signingRegion===`*`){let i=this.getSigv4aSigner(),a=r.CrtSignerV4;if(a&&i instanceof a)return i.signWithCredentials(e,t,n);throw Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}return this.sigv4Signer.signWithCredentials(e,t,n)}async presign(e,t={}){if(t.signingRegion===`*`){let n=this.getSigv4aSigner(),i=r.CrtSignerV4;if(i&&n instanceof i)return n.presign(e,t);throw Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,n={}){if(n.signingRegion===`*`)throw Error(`Method presignWithCredentials is not supported for [signingRegion=*].`);return this.sigv4Signer.presignWithCredentials(e,t,n)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=r.CrtSignerV4,t=n.SignatureV4a;if(this.signerOptions.runtime===`node`){if(!e&&!t)throw Error(`Neither CRT nor JS SigV4a implementation is available. Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`);if(e&&typeof e==`function`)this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1});else if(t&&typeof t==`function`)this.sigv4aSigner=new t({...this.signerOptions});else throw Error(`Available SigV4a implementation is not a valid constructor. Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a.For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}else{if(!t||typeof t!=`function`)throw Error(`JS SigV4a implementation is not available or not a valid constructor. Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. You must also register the package by calling [require('@aws-sdk/signature-v4a');] or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. For more information please go to https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a`);this.sigv4aSigner=new t({...this.signerOptions})}}return this.sigv4aSigner}},e.SignatureV4SignWithCredentials=o,e.signatureV4CrtContainer=r})),vO,yO,Wre=n((()=>{vO=_O(),yO=class extends vO.SignatureV4SignWithCredentials{}})),bO,xO,SO,CO,wO,TO,EO=n((()=>{nt(),bO=`sigv4-s3express`,xO=`X-Amz-S3session-Token`,SO=xO.toLowerCase(),CO=`AWS_S3_DISABLE_EXPRESS_SESSION_AUTH`,wO=`s3_disable_express_session_auth`,TO={environmentVariableSelector:e=>st(e,CO,A.ENV),configFileSelector:e=>st(e,wO,A.CONFIG),default:!1}})),DO,OO,kO,Gre=n((()=>{dT(),mS(),EO(),DO=e=>(t,n)=>async r=>{if(n.endpointV2){let t=n.endpointV2,i=t.properties?.authSchemes?.[0]?.name===bO;if((t.properties?.backend===`S3Express`||t.properties?.bucketType===`Directory`)&&(bC(n,`S3_EXPRESS_BUCKET`,`J`),n.isS3ExpressBucket=!0),i){let t=r.input.Bucket;if(t){let i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});n.s3ExpressIdentity=i,rt.isInstance(r.request)&&i.sessionToken&&(r.request.headers[SO]=i.sessionToken)}}}return t(r)},OO={name:`s3ExpressMiddleware`,step:`build`,tags:[`S3`,`S3_EXPRESS`],override:!0},kO=e=>({applyToStack:t=>{t.add(DO(e),OO)}})})),AO,Kre=n((()=>{AO=async(e,t,n,r)=>{let i=await r.signWithCredentials(n,e,{});if(i.headers[`X-Amz-Security-Token`]||i.headers[`x-amz-security-token`])throw Error(`X-Amz-Security-Token must not be set for s3-express requests.`);return i}})),jO,MO,NO,PO,FO,qre=n((()=>{_w(),R(),mS(),Kre(),jO=e=>e=>{throw e},MO=(e,t)=>{},NO=nw,PO=e=>(t,n)=>async r=>{if(!rt.isInstance(r.request))return t(r);let i=p(n).selectedHttpAuthScheme;if(!i)throw Error(`No HttpAuthScheme was selected: unable to sign request`);let{httpAuthOption:{signingProperties:a={}},identity:o,signer:s}=i,c;c=n.s3ExpressIdentity?await AO(n.s3ExpressIdentity,a,r.request,await e.signer()):await s.sign(r.request,o,a);let l=await t({...r,request:c}).catch((s.errorHandler||jO)(a));return(s.successHandler||MO)(l.response,a),l},FO=e=>({applyToStack:t=>{t.addRelativeTo(PO(e),nw)}})}));function Jre(e){return _r.from(Buffer.from(e))}var Yre=n((()=>{})),IO,LO,RO,zO,BO,Xre=n((()=>{mS(),Yre(),IO={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},LO=e=>(t,n)=>async r=>{let i=await t(r),{response:a}=i;if(!fe.isInstance(a))return i;let{statusCode:o,body:s}=a;if(o<200||o>=300)return i;let c=await RO(s,e);if(a.body=Jre(c),c.length===0&&IO[n.commandName]){let e=/* @__PURE__ */ Error(`S3 aborted request`);throw e.$metadata={httpStatusCode:503},e.name=`InternalError`,e}let l=e.utf8Encoder(c.subarray(c.length-16));return l&&l.endsWith(``)&&(a.statusCode=503),i},RO=(e=/* @__PURE__ */ new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(/* @__PURE__ */ new Uint8Array),zO={relation:`after`,toMiddleware:`deserializerMiddleware`,tags:[`THROW_200_EXCEPTIONS`,`S3`],name:`throw200ExceptionsMiddleware`,override:!0},BO=e=>({applyToStack:t=>{t.addRelativeTo(LO(e),zO)}})})),VO,HO,Zre=n((()=>{VO=e=>typeof e==`string`&&e.indexOf(`arn:`)===0&&e.split(`:`).length>=6,HO=e=>{let t=e.split(`:`);if(t.length<6||t[0]!==`arn`)throw Error(`Malformed ARN`);let[,n,r,i,a,...o]=t;return{partition:n,service:r,region:i,accountId:a,resource:o.join(`:`)}}})),UO=n((()=>{Zre(),mS()}));function Qre(e){return(t,n)=>async r=>{if(e.bucketEndpoint){let e=n.endpointV2;if(e){let t=r.input.Bucket;if(typeof t==`string`)try{let r=new URL(t);n.endpointV2={...e,url:r}}catch(e){let r=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw n.logger?.constructor?.name===`NoOpLogger`?console.warn(r):n.logger?.warn?.(r),e}}}return t(r)}}var WO,$re=n((()=>{WO={name:`bucketEndpointMiddleware`,override:!0,relation:`after`,toMiddleware:`endpointV2Middleware`}}));function GO({bucketEndpoint:e}){return t=>async n=>{let{input:{Bucket:r}}=n;if(!e&&typeof r==`string`&&!VO(r)&&r.indexOf(`/`)>=0){let e=/* @__PURE__ */ Error(`Bucket name shouldn't contain '/', received '${r}'`);throw e.name=`InvalidBucketName`,e}return t({...n})}}var KO,qO,eie=n((()=>{UO(),$re(),KO={step:`initialize`,tags:[`VALIDATE_BUCKET_NAME`],name:`validateBucketNameMiddleware`,override:!0},qO=e=>({applyToStack:t=>{t.add(GO(e),KO),t.addRelativeTo(Qre(e),WO)}})})),JO,YO=n((()=>{R(),D(),JO=class{queryCompat;errorRegistry;constructor(e=!1){this.queryCompat=e}resolveRestContentType(e,t){let n=t.getMemberSchemas(),r=Object.values(n).find(e=>!!e.getMergedTraits().httpPayload);if(r)return r.getMergedTraits().mediaType||(r.isStringSchema()?`text/plain`:r.isBlobSchema()?`application/octet-stream`:e);if(!t.isUnitSchema()&&Object.values(n).find(e=>{let{httpQuery:t,httpQueryParams:n,httpHeader:r,httpLabel:i,httpPrefixHeaders:a}=e.getMergedTraits();return!t&&!n&&!r&&!i&&a===void 0}))return e}async getErrorSchemaOrThrowBaseException(e,t,n,r,i,a){let o=e;e.includes(`#`)&&([,o]=e.split(`#`));let s={$metadata:i,$fault:n.statusCode<500?`client`:`server`};if(!this.errorRegistry)throw Error(`@aws-sdk/core/protocols - error handler not initialized.`);try{return{errorSchema:a?.(this.errorRegistry,o)??this.errorRegistry.getSchema(e),errorMetadata:s}}catch{r.message=r.message??r.Message??`UnknownError`;let e=this.errorRegistry,t=e.getBaseException();if(t){let n=e.getErrorCtor(t)??Error;throw this.decorateServiceException(Object.assign(new n({name:o}),s),r)}let n=r,i=n?.message??n?.Message??n?.Error?.Message??n?.Error?.message;throw this.decorateServiceException(Object.assign(Error(i),{name:o},s),r)}}compose(e,t,n){let r=n;t.includes(`#`)&&([r]=t.split(`#`));let i=T.for(r),a=T.for(`smithy.ts.sdk.synthetic.`+n);e.copyFrom(i),e.copyFrom(a),this.errorRegistry=e}decorateServiceException(e,t={}){if(this.queryCompat){let n=e.Message??t.Message,r=d(e,t);n&&(r.message=n);let i=r.Error??{};i.Type=r.Error?.Type,i.Code=r.Error?.Code,i.Message=r.Error?.message??r.Error?.Message??n,r.Error=i;let a=r.$metadata.requestId;return a&&(r.RequestId=a),r}return d(e,t)}setQueryCompatError(e,t){let n=t.headers?.[`x-amzn-query-error`];if(e!==void 0&&n!=null){let[t,r]=n.split(`;`),i=Object.keys(e),a={Code:t,Type:r};e.Code=t,e.Type=r;for(let t=0;tce.of(e).getMergedTraits().awsQueryError?.[0]===t)}}}})),XO,tie=n((()=>{mS(),D(),YO(),XO=class extends Lb{serializer;deserializer;codec;mixin=new JO;constructor({defaultNamespace:e,errorTypeRegistries:t,jsonCodec:n}){super({defaultNamespace:e,errorTypeRegistries:t});let r={timestampFormat:{useTrait:!0,default:7},httpBindings:!0,jsonName:!0};this.codec=n??new oS(r),this.serializer=new Zb(this.codec.createSerializer(),r),this.deserializer=new Jb(this.codec.createDeserializer(),r)}getShapeId(){return`aws.protocols#restJson1`}getPayloadCodec(){return this.codec}setSerdeContext(e){this.codec.setSerdeContext(e),super.setSerdeContext(e)}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n),i=ce.of(e.input);if(!r.headers[`content-type`]){let e=this.mixin.resolveRestContentType(this.getDefaultContentType(),i);e&&(r.headers[`content-type`]=e)}return r.body==null&&r.headers[`content-type`]===this.getDefaultContentType()&&(r.body=`{}`),r}async deserializeResponse(e,t,n){let r=await super.deserializeResponse(e,t,n),i=ce.of(e.output);for(let[e,t]of i.structIterator())t.getMemberTraits().httpPayload&&!(e in r)&&(r[e]=null);return r}async handleError(e,t,n,r,i){let a=Mx(n,r)??`Unknown`;this.mixin.compose(this.compositeErrorRegistry,a,this.options.defaultNamespace);let{errorSchema:o,errorMetadata:s}=await this.mixin.getErrorSchemaOrThrowBaseException(a,this.options.defaultNamespace,n,r,i),c=ce.of(o),l=r.message??r.Message??`UnknownError`,u=new((this.compositeErrorRegistry.getErrorCtor(o))??Error)({});await this.deserializeHttpMessage(o,t,n,r);let d={},f=this.codec.createDeserializer();for(let[e,t]of c.structIterator()){let n=t.getMergedTraits().jsonName??e;d[e]=f.readObject(t,r[n])}throw this.mixin.decorateServiceException(Object.assign(u,s,{$fault:c.getMergedTraits().error,message:l},d),r)}getDefaultContentType(){return`application/json`}}})),ZO=/* @__PURE__ */ a((e=>{let t=/[&<>"]/g,n={"&":`&`,"<":`<`,">":`>`,'"':`"`};function r(e){return e.replace(t,e=>n[e])}let i=/[&"'<>\r\n\u0085\u2028]/g,a={"&":`&`,'"':`"`,"'":`'`,"<":`<`,">":`>`,"\r":` `,"\n":` `,"…":`…`,"\u2028":`
`};function o(e){return e.replace(i,e=>a[e])}var s=class{value;constructor(e){this.value=e}toString(){return o(``+this.value)}},c=class e{name;children;attributes={};static of(t,n,r){let i=new e(t);return n!==void 0&&i.addChildNode(new s(n)),r!==void 0&&i.withName(r),i}constructor(e,t=[]){this.name=e,this.children=t}withName(e){return this.name=e,this}addAttribute(e,t){return this.attributes[e]=t,this}addChildNode(e){return this.children.push(e),this}removeAttribute(e){return delete this.attributes[e],this}n(e){return this.name=e,this}c(e){return this.children.push(e),this}a(e,t){return t!=null&&(this.attributes[e]=t),this}cc(t,n,r=n){if(t[n]!=null){let i=e.of(n,t[n]).withName(r);this.c(i)}}l(e,t,n,r){e[t]!=null&&r().map(e=>{e.withName(n),this.c(e)})}lc(t,n,r,i){if(t[n]!=null){let t=i(),n=new e(r);t.map(e=>{n.c(e)}),this.c(n)}}toString(){let e=!!this.children.length,t=`<${this.name}`,n=this.attributes;for(let e of Object.keys(n)){let i=n[e];i!=null&&(t+=` ${e}="${r(``+i)}"`)}return t+=e?`>${this.children.map(e=>e.toString()).join(``)}`:`/>`}};function l(e){Object.defineProperty(e,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function u(e){return new d(e).parse()}var d=class e{x;i=0;z;constructor(e){this.x=e,this.x=e.replace(/\r\n?/g,` +`);return this.signString(h,{signingDate:n,signingRegion:c,signingService:o,eventStreamCredentials:s})}async signMessage(e,{signingDate:t=/* @__PURE__ */ new Date,signingRegion:n,signingService:r,eventStreamCredentials:i}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:n,signingService:r,priorSignature:e.priorSignature,eventStreamCredentials:i}).then(t=>({message:e.message,signature:t}))}async signString(e,{signingDate:t=/* @__PURE__ */ new Date,signingRegion:n,signingService:r,eventStreamCredentials:i}={}){let s=i??await this.credentialProvider();this.validateResolvedCredentials(s);let c=n??await this.regionProvider(),{shortDate:l}=this.formatDate(t),u=new this.sha256(await this.getSigningKey(s,c,l,r));return u.update(o(e)),a(await u.digest())}async signRequest(e,{signingDate:t=/* @__PURE__ */ new Date,signableHeaders:n,unsignableHeaders:r,signingRegion:i,signingService:a}={}){let o=await this.credentialProvider();this.validateResolvedCredentials(o);let s=i??await this.regionProvider(),c=me(e),{longDate:l,shortDate:u}=this.formatDate(t),d=oe(u,s,a??this.service);c.headers[T]=l,o.sessionToken&&(c.headers[A]=o.sessionToken);let f=await de(c,this.sha256);!fe(k,c.headers)&&this.applyChecksum&&(c.headers[k]=f);let p=ue(c,r,n),m=await this.getSignature(l,d,this.getSigningKey(o,s,u,a),this.createCanonicalRequest(c,p,f));return c.headers[w]=`${F} Credential=${o.accessKeyId}/${d}, SignedHeaders=${this.getCanonicalHeaderList(p)}, Signature=${m}`,c}async getSignature(e,t,n,r){let i=await this.createStringToSign(e,t,r,F),s=new this.sha256(await n);return s.update(o(i)),a(await s.digest())}getSigningKey(e,t,n,r){return se(this.sha256,e,n,t,r||this.service)}};t.ALGORITHM_IDENTIFIER=F,t.ALGORITHM_IDENTIFIER_V4A=`AWS4-ECDSA-P256-SHA256`,t.ALGORITHM_QUERY_PARAM=g,t.ALWAYS_UNSIGNABLE_HEADERS=j,t.AMZ_DATE_HEADER=T,t.AMZ_DATE_QUERY_PARAM=y,t.AUTH_HEADER=w,t.CREDENTIAL_QUERY_PARAM=v,t.DATE_HEADER=E,t.EVENT_ALGORITHM_IDENTIFIER=I,t.EXPIRES_QUERY_PARAM=x,t.GENERATED_HEADERS=D,t.HOST_HEADER=`host`,t.KEY_TYPE_IDENTIFIER=L,t.MAX_CACHE_SIZE=50,t.MAX_PRESIGNED_TTL=R,t.PROXY_HEADER_PATTERN=M,t.REGION_SET_PARAM=`X-Amz-Region-Set`,t.SEC_HEADER_PATTERN=N,t.SHA256_HEADER=k,t.SIGNATURE_HEADER=O,t.SIGNATURE_QUERY_PARAM=S,t.SIGNED_HEADERS_QUERY_PARAM=b,t.SignatureV4=he,t.SignatureV4Base=ie,t.TOKEN_HEADER=A,t.TOKEN_QUERY_PARAM=C,t.UNSIGNABLE_PATTERNS=P,t.UNSIGNED_PAYLOAD=ee,t.clearCredentialCache=ce,t.createScope=oe,t.getCanonicalHeaders=ue,t.getCanonicalQuery=te,t.getPayloadHash=de,t.getSigningKey=se,t.hasHeader=fe,t.moveHeadersToQuery=pe,t.prepareRequest=me,t.signatureV4aContainer={SignatureV4a:null}})),aO=/* @__PURE__ */ a((e=>{let{SignatureV4:t,signatureV4aContainer:n}=iO(),r={CrtSignerV4:null},i=`X-Amz-S3session-Token`,a=`x-amz-s3session-token`;var o=class extends t{async signWithCredentials(e,t,n){let r=s(t);e.headers[a]=t.sessionToken;let i=this;return c(i,r),i.signRequest(e,n??{})}async presignWithCredentials(e,t,n){let r=s(t);return delete e.headers[a],e.headers[i]=t.sessionToken,e.query=e.query??{},e.query[i]=t.sessionToken,c(this,r),this.presign(e,n)}};function s(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function c(e,t){let n=e.credentialProvider;e.credentialProvider=()=>(e.credentialProvider=n,Promise.resolve(t))}e.SignatureV4MultiRegion=class{sigv4aSigner;sigv4Signer;signerOptions;static sigv4aDependency(){return typeof r.CrtSignerV4==`function`?`crt`:typeof n.SignatureV4a==`function`?`js`:`none`}constructor(e){this.sigv4Signer=new o(e),this.signerOptions=e}async sign(e,t={}){return t.signingRegion===`*`?this.getSigv4aSigner().sign(e,t):this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,n={}){if(n.signingRegion===`*`){let i=this.getSigv4aSigner(),a=r.CrtSignerV4;if(a&&i instanceof a)return i.signWithCredentials(e,t,n);throw Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}return this.sigv4Signer.signWithCredentials(e,t,n)}async presign(e,t={}){if(t.signingRegion===`*`){let n=this.getSigv4aSigner(),i=r.CrtSignerV4;if(i&&n instanceof i)return n.presign(e,t);throw Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,n={}){if(n.signingRegion===`*`)throw Error(`Method presignWithCredentials is not supported for [signingRegion=*].`);return this.sigv4Signer.presignWithCredentials(e,t,n)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=r.CrtSignerV4,t=n.SignatureV4a;if(this.signerOptions.runtime===`node`){if(!e&&!t)throw Error(`Neither CRT nor JS SigV4a implementation is available. Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`);if(e&&typeof e==`function`)this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1});else if(t&&typeof t==`function`)this.sigv4aSigner=new t({...this.signerOptions});else throw Error(`Available SigV4a implementation is not a valid constructor. Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a.For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}else{if(!t||typeof t!=`function`)throw Error(`JS SigV4a implementation is not available or not a valid constructor. Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. You must also register the package by calling [require('@aws-sdk/signature-v4a');] or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. For more information please go to https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a`);this.sigv4aSigner=new t({...this.signerOptions})}}return this.sigv4aSigner}},e.SignatureV4SignWithCredentials=o,e.signatureV4CrtContainer=r})),oO,sO,nie=n((()=>{oO=aO(),sO=class extends oO.SignatureV4SignWithCredentials{}})),cO,lO,uO,dO,fO,pO,mO=n((()=>{nt(),cO=`sigv4-s3express`,lO=`X-Amz-S3session-Token`,uO=lO.toLowerCase(),dO=`AWS_S3_DISABLE_EXPRESS_SESSION_AUTH`,fO=`s3_disable_express_session_auth`,pO={environmentVariableSelector:e=>st(e,dO,A.ENV),configFileSelector:e=>st(e,fO,A.CONFIG),default:!1}})),hO,gO,_O,rie=n((()=>{uT(),yS(),mO(),hO=e=>(t,n)=>async r=>{if(n.endpointV2){let t=n.endpointV2,i=t.properties?.authSchemes?.[0]?.name===cO;if((t.properties?.backend===`S3Express`||t.properties?.bucketType===`Directory`)&&(SC(n,`S3_EXPRESS_BUCKET`,`J`),n.isS3ExpressBucket=!0),i){let t=r.input.Bucket;if(t){let i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});n.s3ExpressIdentity=i,rt.isInstance(r.request)&&i.sessionToken&&(r.request.headers[uO]=i.sessionToken)}}}return t(r)},gO={name:`s3ExpressMiddleware`,step:`build`,tags:[`S3`,`S3_EXPRESS`],override:!0},_O=e=>({applyToStack:t=>{t.add(hO(e),gO)}})})),vO,iie=n((()=>{vO=async(e,t,n,r)=>{let i=await r.signWithCredentials(n,e,{});if(i.headers[`X-Amz-Security-Token`]||i.headers[`x-amz-security-token`])throw Error(`X-Amz-Security-Token must not be set for s3-express requests.`);return i}})),yO,bO,xO,SO,CO,aie=n((()=>{yw(),R(),yS(),iie(),yO=e=>e=>{throw e},bO=(e,t)=>{},xO=iw,SO=e=>(t,n)=>async r=>{if(!rt.isInstance(r.request))return t(r);let i=p(n).selectedHttpAuthScheme;if(!i)throw Error(`No HttpAuthScheme was selected: unable to sign request`);let{httpAuthOption:{signingProperties:a={}},identity:o,signer:s}=i,c;c=n.s3ExpressIdentity?await vO(n.s3ExpressIdentity,a,r.request,await e.signer()):await s.sign(r.request,o,a);let l=await t({...r,request:c}).catch((s.errorHandler||yO)(a));return(s.successHandler||bO)(l.response,a),l},CO=e=>({applyToStack:t=>{t.addRelativeTo(SO(e),iw)}})}));function oie(e){return vr.from(Buffer.from(e))}var sie=n((()=>{})),wO,TO,EO,DO,OO,cie=n((()=>{yS(),sie(),wO={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},TO=e=>(t,n)=>async r=>{let i=await t(r),{response:a}=i;if(!fe.isInstance(a))return i;let{statusCode:o,body:s}=a;if(o<200||o>=300)return i;let c=await EO(s,e);if(a.body=oie(c),c.length===0&&wO[n.commandName]){let e=/* @__PURE__ */ Error(`S3 aborted request`);throw e.$metadata={httpStatusCode:503},e.name=`InternalError`,e}let l=e.utf8Encoder(c.subarray(c.length-16));return l&&l.endsWith(``)&&(a.statusCode=503),i},EO=(e=/* @__PURE__ */ new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(/* @__PURE__ */ new Uint8Array),DO={relation:`after`,toMiddleware:`deserializerMiddleware`,tags:[`THROW_200_EXCEPTIONS`,`S3`],name:`throw200ExceptionsMiddleware`,override:!0},OO=e=>({applyToStack:t=>{t.addRelativeTo(TO(e),DO)}})})),kO,AO,lie=n((()=>{kO=e=>typeof e==`string`&&e.indexOf(`arn:`)===0&&e.split(`:`).length>=6,AO=e=>{let t=e.split(`:`);if(t.length<6||t[0]!==`arn`)throw Error(`Malformed ARN`);let[,n,r,i,a,...o]=t;return{partition:n,service:r,region:i,accountId:a,resource:o.join(`:`)}}})),jO=n((()=>{lie(),yS()}));function uie(e){return(t,n)=>async r=>{if(e.bucketEndpoint){let e=n.endpointV2;if(e){let t=r.input.Bucket;if(typeof t==`string`)try{let r=new URL(t);n.endpointV2={...e,url:r}}catch(e){let r=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw n.logger?.constructor?.name===`NoOpLogger`?console.warn(r):n.logger?.warn?.(r),e}}}return t(r)}}var MO,die=n((()=>{MO={name:`bucketEndpointMiddleware`,override:!0,relation:`after`,toMiddleware:`endpointV2Middleware`}}));function NO({bucketEndpoint:e}){return t=>async n=>{let{input:{Bucket:r}}=n;if(!e&&typeof r==`string`&&!kO(r)&&r.indexOf(`/`)>=0){let e=/* @__PURE__ */ Error(`Bucket name shouldn't contain '/', received '${r}'`);throw e.name=`InvalidBucketName`,e}return t({...n})}}var PO,FO,fie=n((()=>{jO(),die(),PO={step:`initialize`,tags:[`VALIDATE_BUCKET_NAME`],name:`validateBucketNameMiddleware`,override:!0},FO=e=>({applyToStack:t=>{t.add(NO(e),PO),t.addRelativeTo(uie(e),MO)}})})),IO,LO=n((()=>{R(),D(),IO=class{queryCompat;errorRegistry;constructor(e=!1){this.queryCompat=e}resolveRestContentType(e,t){let n=t.getMemberSchemas(),r=Object.values(n).find(e=>!!e.getMergedTraits().httpPayload);if(r)return r.getMergedTraits().mediaType||(r.isStringSchema()?`text/plain`:r.isBlobSchema()?`application/octet-stream`:e);if(!t.isUnitSchema()&&Object.values(n).find(e=>{let{httpQuery:t,httpQueryParams:n,httpHeader:r,httpLabel:i,httpPrefixHeaders:a}=e.getMergedTraits();return!t&&!n&&!r&&!i&&a===void 0}))return e}async getErrorSchemaOrThrowBaseException(e,t,n,r,i,a){let o=e;e.includes(`#`)&&([,o]=e.split(`#`));let s={$metadata:i,$fault:n.statusCode<500?`client`:`server`};if(!this.errorRegistry)throw Error(`@aws-sdk/core/protocols - error handler not initialized.`);try{return{errorSchema:a?.(this.errorRegistry,o)??this.errorRegistry.getSchema(e),errorMetadata:s}}catch{r.message=r.message??r.Message??`UnknownError`;let e=this.errorRegistry,t=e.getBaseException();if(t){let n=e.getErrorCtor(t)??Error;throw this.decorateServiceException(Object.assign(new n({name:o}),s),r)}let n=r,i=n?.message??n?.Message??n?.Error?.Message??n?.Error?.message;throw this.decorateServiceException(Object.assign(Error(i),{name:o},s),r)}}compose(e,t,n){let r=n;t.includes(`#`)&&([r]=t.split(`#`));let i=T.for(r),a=T.for(`smithy.ts.sdk.synthetic.`+n);e.copyFrom(i),e.copyFrom(a),this.errorRegistry=e}decorateServiceException(e,t={}){if(this.queryCompat){let n=e.Message??t.Message,r=d(e,t);n&&(r.message=n);let i=r.Error??{};i.Type=r.Error?.Type,i.Code=r.Error?.Code,i.Message=r.Error?.message??r.Error?.Message??n,r.Error=i;let a=r.$metadata.requestId;return a&&(r.RequestId=a),r}return d(e,t)}setQueryCompatError(e,t){let n=t.headers?.[`x-amzn-query-error`];if(e!==void 0&&n!=null){let[t,r]=n.split(`;`),i=Object.keys(e),a={Code:t,Type:r};e.Code=t,e.Type=r;for(let t=0;tce.of(e).getMergedTraits().awsQueryError?.[0]===t)}}}})),RO,pie=n((()=>{yS(),D(),LO(),RO=class extends Hb{serializer;deserializer;codec;mixin=new IO;constructor({defaultNamespace:e,errorTypeRegistries:t,jsonCodec:n}){super({defaultNamespace:e,errorTypeRegistries:t});let r={timestampFormat:{useTrait:!0,default:7},httpBindings:!0,jsonName:!0};this.codec=n??new dS(r),this.serializer=new nx(this.codec.createSerializer(),r),this.deserializer=new $b(this.codec.createDeserializer(),r)}getShapeId(){return`aws.protocols#restJson1`}getPayloadCodec(){return this.codec}setSerdeContext(e){this.codec.setSerdeContext(e),super.setSerdeContext(e)}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n),i=ce.of(e.input);if(!r.headers[`content-type`]){let e=this.mixin.resolveRestContentType(this.getDefaultContentType(),i);e&&(r.headers[`content-type`]=e)}return r.body==null&&r.headers[`content-type`]===this.getDefaultContentType()&&(r.body=`{}`),r}async deserializeResponse(e,t,n){let r=await super.deserializeResponse(e,t,n),i=ce.of(e.output);for(let[e,t]of i.structIterator())t.getMemberTraits().httpPayload&&!(e in r)&&(r[e]=null);return r}async handleError(e,t,n,r,i){let a=Lx(n,r)??`Unknown`;this.mixin.compose(this.compositeErrorRegistry,a,this.options.defaultNamespace);let{errorSchema:o,errorMetadata:s}=await this.mixin.getErrorSchemaOrThrowBaseException(a,this.options.defaultNamespace,n,r,i),c=ce.of(o),l=r.message??r.Message??`UnknownError`,u=new((this.compositeErrorRegistry.getErrorCtor(o))??Error)({});await this.deserializeHttpMessage(o,t,n,r);let d={},f=this.codec.createDeserializer();for(let[e,t]of c.structIterator()){let n=t.getMergedTraits().jsonName??e;d[e]=f.readObject(t,r[n])}throw this.mixin.decorateServiceException(Object.assign(u,s,{$fault:c.getMergedTraits().error,message:l},d),r)}getDefaultContentType(){return`application/json`}}})),zO=/* @__PURE__ */ a((e=>{let t=/[&<>"]/g,n={"&":`&`,"<":`<`,">":`>`,'"':`"`};function r(e){return e.replace(t,e=>n[e])}let i=/[&"'<>\r\n\u0085\u2028]/g,a={"&":`&`,'"':`"`,"'":`'`,"<":`<`,">":`>`,"\r":` `,"\n":` `,"…":`…`,"\u2028":`
`};function o(e){return e.replace(i,e=>a[e])}var s=class{value;constructor(e){this.value=e}toString(){return o(``+this.value)}},c=class e{name;children;attributes={};static of(t,n,r){let i=new e(t);return n!==void 0&&i.addChildNode(new s(n)),r!==void 0&&i.withName(r),i}constructor(e,t=[]){this.name=e,this.children=t}withName(e){return this.name=e,this}addAttribute(e,t){return this.attributes[e]=t,this}addChildNode(e){return this.children.push(e),this}removeAttribute(e){return delete this.attributes[e],this}n(e){return this.name=e,this}c(e){return this.children.push(e),this}a(e,t){return t!=null&&(this.attributes[e]=t),this}cc(t,n,r=n){if(t[n]!=null){let i=e.of(n,t[n]).withName(r);this.c(i)}}l(e,t,n,r){e[t]!=null&&r().map(e=>{e.withName(n),this.c(e)})}lc(t,n,r,i){if(t[n]!=null){let t=i(),n=new e(r);t.map(e=>{n.c(e)}),this.c(n)}}toString(){let e=!!this.children.length,t=`<${this.name}`,n=this.attributes;for(let e of Object.keys(n)){let i=n[e];i!=null&&(t+=` ${e}="${r(``+i)}"`)}return t+=e?`>${this.children.map(e=>e.toString()).join(``)}`:`/>`}};function l(e){Object.defineProperty(e,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function u(e){return new d(e).parse()}var d=class e{x;i=0;z;constructor(e){this.x=e,this.x=e.replace(/\r\n?/g,` `),this.z=this.x.length}parse(){let e=this,{z:t}=e;for(;e.i=t));)if(e.isNext(``),e.trim();else if(e.isNext(``),e.trim();else if(e.isNext(`/`.includes(e.x[e.i]);)t+=e.x[e.i++];let n=!1,r={};for(;e.i/`.includes(e.x[e.i]));){let t=``;for(;e.i/?`.includes(e.x[e.i]);)t+=e.x[e.i++];if(e.trim(),e.x[e.i]!==`=`)break;++e.i,e.trim(),t===`__proto__`&&l(r),r[t]=e.readAttrValue(),n=!0}if(e.i>=e.z)throw Error(`@aws-sdk XML parse error: unexpected end of input.`);if(e.x[e.i]===`/`){if(++e.i,e.i>=e.z||e.x[e.i]!==`>`)throw Error(`@aws-sdk XML parse error: expected > at the end of self-closing tag.`);return++e.i,{tag:t,value:n?r:``}}if(e.x[e.i]!==`>`)throw Error(`@aws-sdk XML parse error: expected > at the end of opening tag.`);++e.i;let i=[],a=[],o=!1;for(;e.i`):e.isNext(``))):e.isNext(``):(o=!0,a.push(e.parseTag()));else{let t=``;for(;e.i.`);e.i+=2;let s=e.readTo(`>`).trim();if(s!==t)throw Error(`@aws-sdk XML parse error: mismatched tags <${t}> and .`);if(!n&&i.length===0&&!o)return{tag:t,value:``};if(!n&&!o){let e=i.length===1?i[0]:i.join(``);return e.trim()===``&&e.includes(` `)?{tag:t,value:``}:{tag:t,value:e}}let c={};for(let e of i)e.trim()===``&&e.includes(` -`)||(c[`#text`]=`#text`in c?c[`#text`]+e:e);for(let e of a)e.tag===`__proto__`&&l(c),e.tag in c?Array.isArray(c[e.tag])?c[e.tag].push(e.value):c[e.tag]=[c[e.tag],e.value]:c[e.tag]=e.value;for(let[e,t]of Object.entries(r))e===`__proto__`&&l(c),c[e]=t;return{tag:t,value:c}}static ENTITIES={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};skipDoctype(){let e=this;e.i+=9;let t=0;for(;e.i`&&t===0){++e.i;return}++e.i}throw Error(`@aws-sdk XML parse error: unclosed DOCTYPE.`)}decodeEntities(t){return t.replace(/&(?:#x([0-9a-fA-F]{1,6})|#(\d{1,7})|([a-zA-Z][a-zA-Z0-9]{0,30}));/g,(t,n,r,i)=>n?String.fromCharCode(parseInt(n,16)):r?String.fromCharCode(parseInt(r,10)):e.ENTITIES[i]??``)}};e.XmlNode=c,e.XmlText=s,e.parseXML=u})),QO,$O=n((()=>{QO=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),ek,nie=n((()=>{ek=class{from;to;keys;constructor(e,t){this.from=e,this.to=t;let n=Object.keys(this.from),r=new Set(n);r.delete(`__type`),this.keys=r}mark(e){this.keys.delete(e)}hasUnknown(){return this.keys.size===1&&Object.keys(this.to).length===0}writeUnknown(){if(this.hasUnknown()){let e=this.keys.values().next().value,t=this.from[e];this.to.$unknown=[e,t]}}}}));function rie(e){Object.defineProperty(e,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}var iie=n((()=>{})),tk,nk,rk=n((()=>{tk=ZO(),R(),mS(),D(),x(),$O(),nie(),iie(),nk=class extends QO{settings;stringDeserializer;constructor(e){super(),this.settings=e,this.stringDeserializer=new Kb(e)}setSerdeContext(e){this.serdeContext=e,this.stringDeserializer.setSerdeContext(e)}read(e,t,n){let r=ce.of(e),i=r.getMemberSchemas();if(r.isStructSchema()&&r.isMemberSchema()&&Object.values(i).find(e=>!!e.getMemberTraits().eventPayload)){let e={},n=Object.keys(i)[0];return e[n]=i[n].isBlobSchema()?t:this.read(i[n],t),e}let a=(this.serdeContext?.utf8Encoder??Ee)(t),o=this.parseXml(a);return this.readSchema(e,n?o[n]:o)}readSchema(e,t){let n=ce.of(e);if(n.isUnitSchema())return;let r=n.getMergedTraits();if(n.isListSchema()&&!Array.isArray(t))return this.readSchema(n,[t]);if(t==null)return t;if(typeof t==`object`){let e=!!r.xmlFlattened;if(n.isListSchema()){let r=n.getValueSchema(),i=[],a=r.getMergedTraits().xmlName??`member`,o=e?t:(t[0]??t)[a];if(o==null)return i;let s=Array.isArray(o)?o:[o];for(let e of s)i.push(this.readSchema(r,e));return i}let i={};if(n.isMapSchema()){let r=n.getKeySchema(),a=n.getValueSchema(),o;o=e?Array.isArray(t)?t:[t]:Array.isArray(t.entry)?t.entry:[t.entry];let s=r.getMergedTraits().xmlName??`key`,c=a.getMergedTraits().xmlName??`value`;for(let e of o){let t=e[s],n=e[c];t===`__proto__`&&rie(i),i[t]=this.readSchema(a,n)}return i}if(n.isStructSchema()){let e=n.isUnionSchema(),r;e&&(r=new ek(t,i));for(let[a,o]of n.structIterator()){let n=o.getMergedTraits(),s=n.httpPayload?n.xmlName??o.getName():o.getMemberTraits().xmlName??a;e&&r.mark(s),t[s]!=null&&(i[a]=this.readSchema(o,t[s]))}return e&&r.writeUnknown(),i}if(n.isDocumentSchema())return t;throw Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${n.getName(!0)}`)}return n.isListSchema()?[]:n.isMapSchema()||n.isStructSchema()?{}:this.stringDeserializer.read(n,t)}parseXml(e){if(e.length){let t;try{t=(0,tk.parseXML)(e)}catch(t){throw t&&typeof t==`object`&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}let n=`#text`,r=Object.keys(t)[0],i=t[r];return i[n]&&(i[r]=i[n],delete i[n]),u(i)}return{}}}})),ik,ak=n((()=>{mS(),D(),x(),$O(),ik=class extends QO{settings;buffer;constructor(e){super(),this.settings=e}write(e,t,n=``){this.buffer===void 0&&(this.buffer=``);let r=ce.of(e);if(n&&!n.endsWith(`.`)&&(n+=`.`),r.isBlobSchema())(typeof t==`string`||t instanceof Uint8Array)&&(this.writeKey(n),this.writeValue((this.serdeContext?.base64Encoder??de)(t)));else if(r.isBooleanSchema()||r.isNumericSchema()||r.isStringSchema())t==null?r.isIdempotencyToken()&&(this.writeKey(n),this.writeValue(ae())):(this.writeKey(n),this.writeValue(String(t)));else if(r.isBigIntegerSchema())t!=null&&(this.writeKey(n),this.writeValue(String(t)));else if(r.isBigDecimalSchema())t!=null&&(this.writeKey(n),this.writeValue(t instanceof ue?t.string:String(t)));else if(r.isTimestampSchema()){if(t instanceof Date)switch(this.writeKey(n),Wb(r,this.settings)){case 5:this.writeValue(t.toISOString().replace(`.000Z`,`Z`));break;case 6:this.writeValue(Ae(t));break;case 7:this.writeValue(String(t.getTime()/1e3))}}else if(r.isDocumentSchema())Array.isArray(t)?this.write(79,t,n):t instanceof Date?this.write(4,t,n):t instanceof Uint8Array?this.write(21,t,n):t&&typeof t==`object`?this.write(143,t,n):(this.writeKey(n),this.writeValue(String(t)));else if(r.isListSchema()){if(Array.isArray(t)){if(t.length===0)this.settings.serializeEmptyLists&&(this.writeKey(n),this.writeValue(``));else{let e=r.getValueSchema(),i=this.settings.flattenLists||r.getMergedTraits().xmlFlattened,a=1;for(let r of t){if(r==null)continue;let t=e.getMergedTraits(),o=this.getKey(`member`,t.xmlName,t.ec2QueryName),s=i?`${n}${a}`:`${n}${o}.${a}`;this.write(e,r,s),++a}}}}else if(r.isMapSchema()){if(t&&typeof t==`object`){let e=r.getKeySchema(),i=r.getValueSchema(),a=r.getMergedTraits().xmlFlattened,o=1;for(let r in t){let s=t[r];if(s==null)continue;let c=e.getMergedTraits(),l=this.getKey(`key`,c.xmlName,c.ec2QueryName),u=a?`${n}${o}.${l}`:`${n}entry.${o}.${l}`,d=i.getMergedTraits(),f=this.getKey(`value`,d.xmlName,d.ec2QueryName),p=a?`${n}${o}.${f}`:`${n}entry.${o}.${f}`;this.write(e,r,u),this.write(i,s,p),++o}}}else if(r.isStructSchema()){if(t&&typeof t==`object`){let e=!1;for(let[i,a]of r.structIterator()){if(t[i]==null&&!a.isIdempotencyToken())continue;let r=a.getMergedTraits(),o=this.getKey(i,r.xmlName,r.ec2QueryName,`struct`),s=`${n}${o}`;this.write(a,t[i],s),e=!0}if(!e&&r.isUnionSchema()){let{$unknown:e}=t;if(Array.isArray(e)){let[t,r]=e,i=`${n}${t}`;this.write(15,r,i)}}}}else if(!r.isUnitSchema())throw Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${r.getName(!0)}`)}flush(){if(this.buffer===void 0)throw Error(`@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer.`);let e=this.buffer;return delete this.buffer,e}getKey(e,t,n,r){let{ec2:i,capitalizeKeys:a}=this.settings;if(i&&n)return n;let o=t??e;return a&&r===`struct`?o[0].toUpperCase()+o.slice(1):o}writeKey(e){e.endsWith(`.`)&&(e=e.slice(0,e.length-1)),this.buffer+=`&${jb(e)}=`}writeValue(e){this.buffer+=jb(e)}}})),ok,aie=n((()=>{mS(),D(),YO(),rk(),ak(),ok=class extends Rb{options;serializer;deserializer;mixin=new JO;constructor(e){super({defaultNamespace:e.defaultNamespace,errorTypeRegistries:e.errorTypeRegistries}),this.options=e;let t={timestampFormat:{useTrait:!0,default:5},httpBindings:!1,xmlNamespace:e.xmlNamespace,serviceNamespace:e.defaultNamespace,serializeEmptyLists:!0};this.serializer=new ik(t),this.deserializer=new nk(t)}getShapeId(){return`aws.protocols#awsQuery`}setSerdeContext(e){this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e)}getPayloadCodec(){throw Error(`AWSQuery protocol has no payload codec.`)}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n);return r.path.endsWith(`/`)||(r.path+=`/`),r.headers[`content-type`]=`application/x-www-form-urlencoded`,Ie(e.input)!==`unit`&&r.body||(r.body=``),r.body=`Action=${e.name.split(`#`)[1]??e.name}&Version=${this.options.version}`+r.body,r.body.endsWith(`&`)&&(r.body=r.body.slice(-1)),r}async deserializeResponse(e,t,n){let r=this.deserializer,i=ce.of(e.output),a={};if(n.statusCode>=300){let i=await kb(n.body,t);i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n))}for(let e in n.headers){let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=e.name.split(`#`)[1]??e.name,s=i.isStructSchema()&&this.useNestedResult()?o+`Result`:void 0,c=await kb(n.body,t);return c.byteLength>0&&Object.assign(a,await r.read(i,c,s)),a.$metadata=this.deserializeMetadata(n),a}useNestedResult(){return!0}async handleError(e,t,n,r,i){let a=this.loadQueryErrorCode(n,r)??`Unknown`;this.mixin.compose(this.compositeErrorRegistry,a,this.options.defaultNamespace);let o=this.loadQueryError(r)??{},s=this.loadQueryErrorMessage(r);o.message=s,o.Error={Type:o.Type,Code:o.Code,Message:s};let{errorSchema:c,errorMetadata:l}=await this.mixin.getErrorSchemaOrThrowBaseException(a,this.options.defaultNamespace,n,o,i,this.mixin.findQueryCompatibleError),u=ce.of(c),d=new((this.compositeErrorRegistry.getErrorCtor(c))??Error)({}),f={Type:o.Error.Type,Code:o.Error.Code,Error:o.Error};for(let[e,t]of u.structIterator()){let n=t.getMergedTraits().xmlName??e,i=o[n]??r[n];f[e]=this.deserializer.readSchema(t,i)}throw this.mixin.decorateServiceException(Object.assign(d,l,{$fault:u.getMergedTraits().error,message:s},f),r)}loadQueryErrorCode(e,t){let n=(t.Errors?.[0]?.Error??t.Errors?.Error??t.Error)?.Code;if(n!==void 0)return n;if(e.statusCode==404)return`NotFound`}loadQueryError(e){return e.Errors?.[0]?.Error??e.Errors?.Error??e.Error}loadQueryErrorMessage(e){let t=this.loadQueryError(e);return t?.message??t?.Message??e.message??e.Message??`Unknown`}getDefaultContentType(){return`application/x-www-form-urlencoded`}}})),sk,ck=n((()=>{sk=(e,t)=>{if(t?.Error?.Code!==void 0)return t.Error.Code;if(t?.Code!==void 0)return t.Code;if(e.statusCode==404)return`NotFound`}})),lk,uk,dk=n((()=>{lk=ZO(),mS(),D(),x(),$O(),uk=class extends QO{settings;stringBuffer;byteBuffer;buffer;constructor(e){super(),this.settings=e}write(e,t){let n=ce.of(e);if(n.isStringSchema()&&typeof t==`string`)this.stringBuffer=t;else if(n.isBlobSchema())this.byteBuffer=`byteLength`in t?t:(this.serdeContext?.base64Decoder??me)(t);else{this.buffer=this.writeStruct(n,t,void 0);let e=n.getMergedTraits();e.httpPayload&&!e.xmlName&&this.buffer.withName(n.getName())}}flush(){if(this.byteBuffer!==void 0){let e=this.byteBuffer;return delete this.byteBuffer,e}if(this.stringBuffer!==void 0){let e=this.stringBuffer;return delete this.stringBuffer,e}let e=this.buffer;return this.settings.xmlNamespace&&(e?.attributes?.xmlns||e.addAttribute(`xmlns`,this.settings.xmlNamespace)),delete this.buffer,e.toString()}writeStruct(e,t,n){let r=e.getMergedTraits(),i=e.isMemberSchema()&&!r.httpPayload?e.getMemberTraits().xmlName??e.getMemberName():r.xmlName??e.getName();if(!i||!e.isStructSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${e.getName(!0)}.`);let a=lk.XmlNode.of(i),[o,s]=this.getXmlnsAttribute(e,n);for(let[n,r]of e.structIterator()){let e=t[n];if(e!=null||r.isIdempotencyToken()){if(r.getMergedTraits().xmlAttribute){a.addAttribute(r.getMergedTraits().xmlName??n,this.writeSimple(r,e));continue}if(r.isListSchema())this.writeList(r,e,a,s);else if(r.isMapSchema())this.writeMap(r,e,a,s);else if(r.isStructSchema())a.addChildNode(this.writeStruct(r,e,s));else{let t=lk.XmlNode.of(r.getMergedTraits().xmlName??r.getMemberName());this.writeSimpleInto(r,e,t,s),a.addChildNode(t)}}}let{$unknown:c}=t;if(c&&e.isUnionSchema()&&Array.isArray(c)&&Object.keys(t).length===1){let[e,n]=c,r=lk.XmlNode.of(e);if(typeof n!=`string`){if(t instanceof lk.XmlNode||t instanceof lk.XmlText)a.addChildNode(t);else throw Error(`@aws-sdk - $unknown union member in XML requires value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`)}this.writeSimpleInto(0,n,r,s),a.addChildNode(r)}return s&&a.addAttribute(o,s),a}writeList(e,t,n,r){if(!e.isMemberSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${e.getName(!0)}`);let i=e.getMergedTraits(),a=e.getValueSchema(),o=a.getMergedTraits(),s=!!o.sparse,c=!!i.xmlFlattened,[l,u]=this.getXmlnsAttribute(e,r),d=(t,n)=>{if(a.isListSchema())this.writeList(a,Array.isArray(n)?n:[n],t,u);else if(a.isMapSchema())this.writeMap(a,n,t,u);else if(a.isStructSchema()){let r=this.writeStruct(a,n,u);t.addChildNode(r.withName(c?i.xmlName??e.getMemberName():o.xmlName??`member`))}else{let r=lk.XmlNode.of(c?i.xmlName??e.getMemberName():o.xmlName??`member`);this.writeSimpleInto(a,n,r,u),t.addChildNode(r)}};if(c)for(let e of t)(s||e!=null)&&d(n,e);else{let r=lk.XmlNode.of(i.xmlName??e.getMemberName());u&&r.addAttribute(l,u);for(let e of t)(s||e!=null)&&d(r,e);n.addChildNode(r)}}writeMap(e,t,n,r,i=!1){if(!e.isMemberSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${e.getName(!0)}`);let a=e.getMergedTraits(),o=e.getKeySchema(),s=o.getMergedTraits().xmlName??`key`,c=e.getValueSchema(),l=c.getMergedTraits(),u=l.xmlName??`value`,d=!!l.sparse,f=!!a.xmlFlattened,[p,m]=this.getXmlnsAttribute(e,r),h=(e,t,n)=>{let r=lk.XmlNode.of(s,t),[i,a]=this.getXmlnsAttribute(o,m);a&&r.addAttribute(i,a),e.addChildNode(r);let l=lk.XmlNode.of(u);c.isListSchema()?this.writeList(c,n,l,m):c.isMapSchema()?this.writeMap(c,n,l,m,!0):c.isStructSchema()?l=this.writeStruct(c,n,m):this.writeSimpleInto(c,n,l,m),e.addChildNode(l)};if(f)for(let r in t){let i=t[r];if(d||i!=null){let t=lk.XmlNode.of(a.xmlName??e.getMemberName());h(t,r,i),n.addChildNode(t)}}else{let r;i||(r=lk.XmlNode.of(a.xmlName??e.getMemberName()),m&&r.addAttribute(p,m),n.addChildNode(r));for(let e in t){let a=t[e];if(d||a!=null){let t=lk.XmlNode.of(`entry`);h(t,e,a),(i?n:r).addChildNode(t)}}}}writeSimple(e,t){if(t===null)throw Error(`@aws-sdk/core/protocols - (XML serializer) cannot write null value.`);let n=ce.of(e),r=null;if(t&&typeof t==`object`){if(n.isBlobSchema())r=(this.serdeContext?.base64Encoder??de)(t);else if(n.isTimestampSchema()&&t instanceof Date)switch(Wb(n,this.settings)){case 5:r=t.toISOString().replace(`.000Z`,`Z`);break;case 6:r=Ae(t);break;case 7:r=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using http date`,t),r=Ae(t)}else if(n.isBigDecimalSchema()&&t)return t instanceof ue?t.string:String(t);else if(n.isMapSchema()||n.isListSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead.`);else throw Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${n.getName(!0)}`)}if((n.isBooleanSchema()||n.isNumericSchema()||n.isBigIntegerSchema()||n.isBigDecimalSchema())&&(r=String(t)),n.isStringSchema()&&(r=t===void 0&&n.isIdempotencyToken()?ae():String(t)),r===null)throw Error(`Unhandled schema-value pair ${n.getName(!0)}=${t}`);return r}writeSimpleInto(e,t,n,r){let i=this.writeSimple(e,t),a=ce.of(e),o=new lk.XmlText(i),[s,c]=this.getXmlnsAttribute(a,r);c&&n.addAttribute(s,c),n.addChildNode(o)}getXmlnsAttribute(e,t){let[n,r]=e.getMergedTraits().xmlNamespace??[];return r&&r!==t?[n?`xmlns:${n}`:`xmlns`,r]:[void 0,void 0]}}})),fk,pk=n((()=>{$O(),rk(),dk(),fk=class extends QO{settings;constructor(e){super(),this.settings=e}createSerializer(){let e=new uk(this.settings);return e.setSerdeContext(this.serdeContext),e}createDeserializer(){let e=new nk(this.settings);return e.setSerdeContext(this.serdeContext),e}}})),mk,oie=n((()=>{mS(),D(),YO(),ck(),pk(),mk=class extends Lb{codec;serializer;deserializer;mixin=new JO;constructor(e){super(e);let t={timestampFormat:{useTrait:!0,default:5},httpBindings:!0,xmlNamespace:e.xmlNamespace,serviceNamespace:e.defaultNamespace};this.codec=new fk(t),this.serializer=new Zb(this.codec.createSerializer(),t),this.deserializer=new Jb(this.codec.createDeserializer(),t)}getPayloadCodec(){return this.codec}getShapeId(){return`aws.protocols#restXml`}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n),i=ce.of(e.input);if(!r.headers[`content-type`]){let e=this.mixin.resolveRestContentType(this.getDefaultContentType(),i);e&&(r.headers[`content-type`]=e)}return typeof r.body==`string`&&r.headers[`content-type`]===this.getDefaultContentType()&&!r.body.startsWith(``+r.body),r}async deserializeResponse(e,t,n){return super.deserializeResponse(e,t,n)}async handleError(e,t,n,r,i){let a=sk(n,r)??`Unknown`;if(this.mixin.compose(this.compositeErrorRegistry,a,this.options.defaultNamespace),r.Error&&typeof r.Error==`object`)for(let e of Object.keys(r.Error))r[e]=r.Error[e],e.toLowerCase()===`message`&&(r.message=r.Error[e]);r.RequestId&&!i.requestId&&(i.requestId=r.RequestId);let{errorSchema:o,errorMetadata:s}=await this.mixin.getErrorSchemaOrThrowBaseException(a,this.options.defaultNamespace,n,r,i),c=ce.of(o),l=r.Error?.message??r.Error?.Message??r.message??r.Message??`UnknownError`,u=new((this.compositeErrorRegistry.getErrorCtor(o))??Error)({});await this.deserializeHttpMessage(o,t,n,r);let d={},f=this.codec.createDeserializer();for(let[e,t]of c.structIterator()){let n=t.getMergedTraits().xmlName??e,i=r.Error?.[n]??r[n];d[e]=f.readSchema(t,i)}throw this.mixin.decorateServiceException(Object.assign(u,s,{$fault:c.getMergedTraits().error,message:l},d),r)}getDefaultContentType(){return`application/xml`}hasUnstructuredPayloadBinding(e){for(let[,t]of e.structIterator())if(t.getMergedTraits().httpPayload)return!(t.isStructSchema()||t.isMapSchema()||t.isListSchema());return!1}}})),hk=n((()=>{mS(),YO(),tie(),aie(),ak(),oie(),pk(),rk(),dk(),ck()})),gk,sie=n((()=>{hk(),D(),gk=class extends mk{async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n),i=ce.of(e.input),a=i.getSchema(),o=0,s=a[6]??0;if(t&&typeof t==`object`)for(let[e,n]of i.structIterator()){if(++o>s)break;if(e===`Bucket`){if(!t.Bucket&&n.getMergedTraits().httpLabel)throw Error(`No value provided for input HTTP label: Bucket.`);break}}return r}}})),_k,vk,yk,cie=n((()=>{nt(),_k=`AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS`,vk=`s3_disable_multiregion_access_points`,yk={environmentVariableSelector:e=>st(e,_k,A.ENV),configFileSelector:e=>st(e,vk,A.CONFIG),default:!1}})),bk,xk,Sk,lie=n((()=>{nt(),bk=`AWS_S3_USE_ARN_REGION`,xk=`s3_use_arn_region`,Sk={environmentVariableSelector:e=>st(e,bk,A.ENV),configFileSelector:e=>st(e,xk,A.CONFIG),default:void 0}})),Ck,wk,Tk,Ek,Dk,Ok,kk,Ak,jk,Mk,Nk,Pk,Fk,Ik,Lk,Rk,zk,Bk,Vk,Hk,Uk,Wk,Gk,Kk,qk,Jk,Yk=n((()=>{Ck=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,wk=/(\d+\.){3}\d+/,Tk=/\.\./,Ek=/\./,Dk=/^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./,Ok=/^s3(-external-1)?\.amazonaws\.com$/,kk=`amazonaws.com`,Ak=e=>typeof e.bucketName==`string`,jk=e=>Ck.test(e)&&!wk.test(e)&&!Tk.test(e),Mk=e=>{let t=e.match(Dk);return[t[4],e.replace(RegExp(`^${t[0]}`),``)]},Nk=e=>Ok.test(e)?[`us-east-1`,kk]:Mk(e),Pk=e=>Ok.test(e)?[e.replace(`.${kk}`,``),kk]:Mk(e),Fk=e=>{if(e.pathStyleEndpoint)throw Error(`Path-style S3 endpoint is not supported when bucket is an ARN`);if(e.accelerateEndpoint)throw Error(`Accelerate endpoint is not supported when bucket is an ARN`);if(!e.tlsCompatible)throw Error(`HTTPS is required when bucket is an ARN`)},Ik=e=>{if(e!==`s3`&&e!==`s3-outposts`&&e!==`s3-object-lambda`)throw Error(`Expect 's3' or 's3-outposts' or 's3-object-lambda' in ARN service component`)},Lk=e=>{if(e!==`s3`)throw Error(`Expect 's3' in Accesspoint ARN service component`)},Rk=e=>{if(e!==`s3-outposts`)throw Error(`Expect 's3-posts' in Outpost ARN service component`)},zk=(e,t)=>{if(e!==t.clientPartition)throw Error(`Partition in ARN is incompatible, got "${e}" but expected "${t.clientPartition}"`)},Bk=(e,t)=>{},Vk=e=>{if([`s3-external-1`,`aws-global`].includes(e))throw Error(`Client region ${e} is not regional`)},Hk=e=>{if(!/[0-9]{12}/.exec(e))throw Error(`Access point ARN accountID does not match regex '[0-9]{12}'`)},Uk=(e,t={tlsCompatible:!0})=>{if(e.length>=64||!/^[a-z0-9][a-z0-9.-]*[a-z0-9]$/.test(e)||/(\d+\.){3}\d+/.test(e)||/[.-]{2}/.test(e)||t?.tlsCompatible&&Ek.test(e))throw Error(`Invalid DNS label ${e}`)},Wk=e=>{if(e.isCustomEndpoint){if(e.dualstackEndpoint)throw Error(`Dualstack endpoint is not supported with custom endpoint`);if(e.accelerateEndpoint)throw Error(`Accelerate endpoint is not supported with custom endpoint`)}},Gk=e=>{let t=e.includes(`:`)?`:`:`/`,[n,...r]=e.split(t);if(n===`accesspoint`){if(r.length!==1||r[0]===``)throw Error(`Access Point ARN should have one resource accesspoint${t}{accesspointname}`);return{accesspointName:r[0]}}if(n===`outpost`){if(!r[0]||r[1]!==`accesspoint`||!r[2]||r.length!==3)throw Error(`Outpost ARN should have resource outpost${t}{outpostId}${t}accesspoint${t}{accesspointName}`);let[e,n,i]=r;return{outpostId:e,accesspointName:i}}throw Error(`ARN resource should begin with 'accesspoint${t}' or 'outpost${t}'`)},Kk=e=>{},qk=e=>{if(e)throw Error(`FIPS region is not supported with Outpost.`)},Jk=e=>{try{e.split(`.`).forEach(e=>{Uk(e)})}catch{throw Error(`"${e}" is not a DNS compatible name.`)}}})),Xk,Zk,Qk,$k,eA,tA,nA,rA=n((()=>{Yk(),Xk=e=>(Wk(e),Ak(e)?Zk(e):Qk(e)),Zk=({accelerateEndpoint:e=!1,clientRegion:t,baseHostname:n,bucketName:r,dualstackEndpoint:i=!1,fipsEndpoint:a=!1,pathStyleEndpoint:o=!1,tlsCompatible:s=!0,isCustomEndpoint:c=!1})=>{let[l,u]=c?[t,n]:Nk(n);return o||!jk(r)||s&&Ek.test(r)?{bucketEndpoint:!1,hostname:i?`s3.dualstack.${l}.${u}`:n}:(e?n=`s3-accelerate${i?`.dualstack`:``}.${u}`:i&&(n=`s3.dualstack.${l}.${u}`),{bucketEndpoint:!0,hostname:`${r}.${n}`})},Qk=e=>{let{isCustomEndpoint:t,baseHostname:n,clientRegion:r}=e,i=t?n:Pk(n)[1],{pathStyleEndpoint:a,accelerateEndpoint:o=!1,fipsEndpoint:s=!1,tlsCompatible:c=!0,bucketName:l,clientPartition:u=`aws`}=e;Fk({pathStyleEndpoint:a,accelerateEndpoint:o,tlsCompatible:c});let{service:d,partition:f,accountId:p,region:m,resource:h}=l;Ik(d),zk(f,{clientPartition:u}),Hk(p);let{accesspointName:g,outpostId:v}=Gk(h);return d===`s3-object-lambda`?$k({...e,tlsCompatible:c,bucketName:l,accesspointName:g,hostnameSuffix:i}):m===``?eA({...e,clientRegion:r,mrapAlias:g,hostnameSuffix:i}):v?tA({...e,clientRegion:r,outpostId:v,accesspointName:g,hostnameSuffix:i}):nA({...e,clientRegion:r,accesspointName:g,hostnameSuffix:i})},$k=({dualstackEndpoint:e=!1,fipsEndpoint:t=!1,tlsCompatible:n=!0,useArnRegion:r,clientRegion:i,clientSigningRegion:a=i,accesspointName:o,bucketName:s,hostnameSuffix:c})=>{let{accountId:l,region:u,service:d}=s;Vk(i);let f=`${o}-${l}`;Uk(f,{tlsCompatible:n});let p=r?u:i,m=r?u:a;return{bucketEndpoint:!0,hostname:`${f}.${d}${t?`-fips`:``}.${p}.${c}`,signingRegion:m,signingService:d}},eA=({disableMultiregionAccessPoints:e,dualstackEndpoint:t=!1,isCustomEndpoint:n,mrapAlias:r,hostnameSuffix:i})=>{if(e===!0)throw Error(`SDK is attempting to use a MRAP ARN. Please enable to feature.`);return Jk(r),{bucketEndpoint:!0,hostname:`${r}${n?``:`.accesspoint.s3-global`}.${i}`,signingRegion:`*`}},tA=({useArnRegion:e,clientRegion:t,clientSigningRegion:n=t,bucketName:r,outpostId:i,dualstackEndpoint:a=!1,fipsEndpoint:o=!1,tlsCompatible:s=!0,accesspointName:c,isCustomEndpoint:l,hostnameSuffix:u})=>{Vk(t);let d=`${c}-${r.accountId}`;Uk(d,{tlsCompatible:s});let f=e?r.region:t,p=e?r.region:n;return Rk(r.service),Uk(i,{tlsCompatible:s}),qk(o),{bucketEndpoint:!0,hostname:`${`${d}.${i}`}${l?``:`.s3-outposts.${f}`}.${u}`,signingRegion:p,signingService:`s3-outposts`}},nA=({useArnRegion:e,clientRegion:t,clientSigningRegion:n=t,bucketName:r,dualstackEndpoint:i=!1,fipsEndpoint:a=!1,tlsCompatible:o=!0,accesspointName:s,isCustomEndpoint:c,hostnameSuffix:l})=>{Vk(t);let u=`${s}-${r.accountId}`;Uk(u,{tlsCompatible:o});let d=e?r.region:t,f=e?r.region:n;return Lk(r.service),{bucketEndpoint:!0,hostname:`${u}${c?``:`.s3-accesspoint${a?`-fips`:``}${i?`.dualstack`:``}.${d}`}.${l}`,signingRegion:f}}})),iA,aA,oA,uie=n((()=>{UO(),mS(),rA(),iA=e=>(t,n)=>async r=>{let{Bucket:i}=r.input,a=e.bucketEndpoint,o=r.request;if(rt.isInstance(o)){if(e.bucketEndpoint)o.hostname=i;else if(VO(i)){let t=HO(i),r=await e.region(),s=await e.useDualstackEndpoint(),c=await e.useFipsEndpoint(),{partition:l,signingRegion:u=r}=await e.regionInfoProvider(r,{useDualstackEndpoint:s,useFipsEndpoint:c})||{},d=await e.useArnRegion(),{hostname:f,bucketEndpoint:p,signingRegion:m,signingService:h}=Xk({bucketName:t,baseHostname:o.hostname,accelerateEndpoint:e.useAccelerateEndpoint,dualstackEndpoint:s,fipsEndpoint:c,pathStyleEndpoint:e.forcePathStyle,tlsCompatible:o.protocol===`https:`,useArnRegion:d,clientPartition:l,clientSigningRegion:u,clientRegion:r,isCustomEndpoint:e.isCustomEndpoint,disableMultiregionAccessPoints:await e.disableMultiregionAccessPoints()});m&&m!==u&&(n.signing_region=m),h&&h!==`s3`&&(n.signing_service=h),o.hostname=f,a=p}else{let t=await e.region(),n=await e.useDualstackEndpoint(),r=await e.useFipsEndpoint(),{hostname:s,bucketEndpoint:c}=Xk({bucketName:i,clientRegion:t,baseHostname:o.hostname,accelerateEndpoint:e.useAccelerateEndpoint,dualstackEndpoint:n,fipsEndpoint:r,pathStyleEndpoint:e.forcePathStyle,tlsCompatible:o.protocol===`https:`,isCustomEndpoint:e.isCustomEndpoint});o.hostname=s,a=c}a&&(o.path=o.path.replace(/^(\/)?[^\/]+/,``),o.path===``&&(o.path=`/`))}return t({...r,request:o})},aA={tags:[`BUCKET_ENDPOINT`],name:`bucketEndpointMiddleware`,relation:`before`,toMiddleware:`hostHeaderMiddleware`,override:!0},oA=e=>({applyToStack:t=>{t.addRelativeTo(iA(e),aA)}})}));function die(e){let{bucketEndpoint:t=!1,forcePathStyle:n=!1,useAccelerateEndpoint:r=!1,useArnRegion:i,disableMultiregionAccessPoints:a=!1}=e;return Object.assign(e,{bucketEndpoint:t,forcePathStyle:n,useAccelerateEndpoint:r,useArnRegion:typeof i==`function`?i:()=>Promise.resolve(i),disableMultiregionAccessPoints:typeof a==`function`?a:()=>Promise.resolve(a)})}var fie=n((()=>{}));function sA(e){return t=>async n=>{let{request:r}=n;if(e.expectContinueHeader!==!1&&rt.isInstance(r)&&r.body&&e.runtime===`node`&&e.requestHandler?.constructor?.name!==`FetchHttpHandler`){let t=!0;if(typeof e.expectContinueHeader==`number`)try{t=(Number(r.headers?.[`content-length`])??e.bodyLengthChecker?.(r.body)??1/0)>=e.expectContinueHeader}catch{}else t=!!e.expectContinueHeader;t&&(r.headers.Expect=`100-continue`)}return t({...n,request:r})}}var cA,lA,pie=n((()=>{mS(),cA={step:`build`,tags:[`SET_EXPECT_HEADER`,`EXPECT_HEADER`],name:`addExpectContinueMiddleware`,override:!0},lA=e=>({applyToStack:t=>{t.add(sA(e),cA)}})}));function uA(e){return t=>async n=>{let{CreateBucketConfiguration:r}=n.input,i=await e.region();return!r?.LocationConstraint&&!r?.Location&&i!==`us-east-1`&&(n.input.CreateBucketConfiguration=n.input.CreateBucketConfiguration??{},n.input.CreateBucketConfiguration.LocationConstraint=i),t(n)}}var dA,fA,mie=n((()=>{dA={step:`initialize`,tags:[`LOCATION_CONSTRAINT`,`CREATE_BUCKET_CONFIGURATION`],name:`locationConstraintMiddleware`,override:!0},fA=e=>({applyToStack:t=>{t.add(uA(e),dA)}})}));function hie(e){return e}var gie=n((()=>{}));function pA(e){return t=>async n=>{let r={...n.input};for(let t of[{target:`SSECustomerKey`,hash:`SSECustomerKeyMD5`},{target:`CopySourceSSECustomerKey`,hash:`CopySourceSSECustomerKeyMD5`}]){let n=r[t.target];if(n){let i;typeof n==`string`?mA(n,e)?i=e.base64Decoder(n):(i=e.utf8Decoder(n),r[t.target]=e.base64Encoder(i)):(i=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n),r[t.target]=e.base64Encoder(i));let a=new e.md5;a.update(i),r[t.hash]=e.base64Encoder(await a.digest())}}return t({...n,input:r})}}function mA(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return t.base64Decoder(e).length===32}catch{return!1}}var hA,gA,_ie=n((()=>{hA={name:`ssecMiddleware`,step:`initialize`,tags:[`SSE`],override:!0},gA=e=>({applyToStack:t=>{t.add(pA(e),hA)}})})),vie=/* @__PURE__ */ i({NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS:()=>yk,NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME:()=>_k,NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME:()=>vk,NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS:()=>TO,NODE_USE_ARN_REGION_CONFIG_OPTIONS:()=>Sk,NODE_USE_ARN_REGION_ENV_NAME:()=>bk,NODE_USE_ARN_REGION_INI_NAME:()=>xk,S3ExpressIdentityCache:()=>pE,S3ExpressIdentityCacheEntry:()=>hE,S3ExpressIdentityProviderImpl:()=>_E,S3RestXmlProtocol:()=>gk,SignatureV4S3Express:()=>yO,addExpectContinueMiddleware:()=>sA,addExpectContinueMiddlewareOptions:()=>cA,bucketEndpointMiddleware:()=>iA,bucketEndpointMiddlewareOptions:()=>aA,bucketHostname:()=>Xk,checkContentLengthHeader:()=>nE,checkContentLengthHeaderMiddlewareOptions:()=>aE,getAddExpectContinuePlugin:()=>lA,getArnResources:()=>Gk,getBucketEndpointPlugin:()=>oA,getCheckContentLengthHeaderPlugin:()=>oE,getLocationConstraintPlugin:()=>fA,getRegionRedirectMiddlewarePlugin:()=>fE,getS3ExpiresMiddlewarePlugin:()=>SE,getS3ExpressHttpSigningPlugin:()=>FO,getS3ExpressPlugin:()=>kO,getSsecPlugin:()=>gA,getSuffixForArnEndpoint:()=>Pk,getThrow200ExceptionsPlugin:()=>BO,getValidateBucketNamePlugin:()=>qO,isValidBase64EncodedSSECustomerKey:()=>mA,locationConstraintMiddleware:()=>uA,locationConstraintMiddlewareOptions:()=>dA,regionRedirectEndpointMiddleware:()=>sE,regionRedirectEndpointMiddlewareOptions:()=>cE,regionRedirectMiddleware:()=>uE,regionRedirectMiddlewareOptions:()=>dE,resolveBucketEndpointConfig:()=>die,resolveLocationConstraintConfig:()=>hie,resolveS3Config:()=>yE,s3ExpiresMiddleware:()=>bE,s3ExpiresMiddlewareOptions:()=>xE,s3ExpressHttpSigningMiddleware:()=>PO,s3ExpressHttpSigningMiddlewareOptions:()=>NO,s3ExpressMiddleware:()=>DO,s3ExpressMiddlewareOptions:()=>OO,ssecMiddleware:()=>pA,ssecMiddlewareOptions:()=>hA,throw200ExceptionsMiddleware:()=>LO,throw200ExceptionsMiddlewareOptions:()=>zO,validateAccountId:()=>Hk,validateBucketNameMiddleware:()=>GO,validateBucketNameMiddlewareOptions:()=>KO,validateDNSHostLabel:()=>Uk,validateNoDualstack:()=>Kk,validateNoFIPS:()=>qk,validateOutpostService:()=>Rk,validatePartition:()=>zk,validateRegion:()=>Bk}),yie=n((()=>{tre(),lE(),nre(),rre(),ire(),mE(),gE(),vE(),Wre(),EO(),Gre(),qre(),Xre(),eie(),sie(),cie(),lie(),uie(),rA(),fie(),Yk(),pie(),mie(),gie(),_ie()})),_A,vA,bie=n((()=>{mS(),_A=e=>fe.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,vA=e=>fe.isInstance(e)?e.headers?.age??e.headers?.Age:void 0})),yA,xie=n((()=>{yA=e=>new Date(Date.now()+e)})),bA,Sie=n((()=>{bA=(e,t,n,r)=>{if(r!==void 0)return t;let i=Date.parse(e),a=Date.now();return n!==void 0&&a-n>9e5?t:n===void 0?i-a:i-(n+a)/2}})),xA=n((()=>{bie(),xie(),Sie()})),SA,CA,wA,TA,EA,DA,OA=n((()=>{mS(),SA=ct(),xA(),CA=(e,t)=>{if(!t)throw Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},wA=e=>e.context?.[SA.SMITHY_CONTEXT_KEY]?.eventStream?.output===!0,TA=async e=>{let t=CA(`context`,e.context),n=CA(`config`,e.config),r=t.endpointV2?.properties?.authSchemes?.[0];return{config:n,signer:await CA(`signer`,n.signer)(r),signingRegion:e?.signingRegion,signingRegionSet:e?.signingRegionSet,signingName:e?.signingName}},EA=class{async sign(e,t,n){if(!rt.isInstance(e))throw Error("The request is not an instance of `HttpRequest` and cannot be signed");let r=await TA(n),{config:i,signer:a}=r,{signingRegion:o,signingName:s}=r,c=n.context;if(c?.authSchemes?.length??!1){let[e,t]=c.authSchemes;e?.name===`sigv4a`&&t?.name===`sigv4`&&(o=t?.signingRegion??o,s=t?.signingName??s)}let l=await i.disableClockSkewCorrection?.()===!0;n._disableClockSkewCorrection=l;let u=l||wA(n);return n._skipClockSkewSampling=u,u||(n._preRequestSystemClockOffset=i.systemClockOffset,n._requestSentAt=Date.now()),await a.sign(e,{signingDate:l?/* @__PURE__ */ new Date:yA(i.systemClockOffset),signingRegion:o,signingService:s})}errorHandler(e){return t=>{let n=t;if(!e._skipClockSkewSampling&&!e._disableClockSkewCorrection){let t=n.ServerTime??_A(n.$response);if(t){let r=CA(`config`,e.config),i=e._preRequestSystemClockOffset,a=e._requestSentAt,o=vA(n.$response),s=bA(t,r.systemClockOffset,a,o);r.systemClockOffset=s,Math.abs(s)>=24e4&&(s!==i||i!==void 0&&i!==s)&&n.$metadata&&(n.$metadata.clockSkewCorrected=!0)}}throw t}}successHandler(e,t){if(t._skipClockSkewSampling||t._disableClockSkewCorrection)return;let n=_A(e);if(n){let r=CA(`config`,t.config),i=t._requestSentAt,a=vA(e);r.systemClockOffset=bA(n,r.systemClockOffset,i,a)}}},DA=EA})),kA,Cie=n((()=>{mS(),xA(),OA(),kA=class extends EA{async sign(e,t,n){if(!rt.isInstance(e))throw Error("The request is not an instance of `HttpRequest` and cannot be signed");let{config:r,signer:i,signingRegion:a,signingRegionSet:o,signingName:s}=await TA(n),c=(await r.sigv4aSigningRegionSet?.()??o??[a]).join(`,`),l=await r.disableClockSkewCorrection?.()===!0;return n._disableClockSkewCorrection=l,l||(n._preRequestSystemClockOffset=r.systemClockOffset,n._requestSentAt=Date.now()),await i.sign(e,{signingDate:l?/* @__PURE__ */ new Date:yA(r.systemClockOffset),signingRegion:c,signingService:s})}}})),AA,wie=n((()=>{AA=e=>typeof e==`string`&&e.length>0?e.split(`,`).map(e=>e.trim()):[]})),jA,MA=n((()=>{jA=e=>`AWS_BEARER_TOKEN_${e.replace(/[\s-]/g,`_`).toUpperCase()}`})),NA,PA,FA,Tie=n((()=>{wie(),MA(),NA=`AWS_AUTH_SCHEME_PREFERENCE`,PA=`auth_scheme_preference`,FA={environmentVariableSelector:(e,t)=>{if(t?.signingName&&jA(t.signingName)in e)return[`httpBearerAuth`];if(NA in e)return AA(e[NA])},configFileSelector:e=>{if(PA in e)return AA(e[PA])},default:[]}})),IA,LA,Eie=n((()=>{_w(),nt(),IA=e=>(e.sigv4aSigningRegionSet=iw(e.sigv4aSigningRegionSet),e),LA={environmentVariableSelector(e){if(e.AWS_SIGV4A_SIGNING_REGION_SET)return e.AWS_SIGV4A_SIGNING_REGION_SET.split(`,`).map(e=>e.trim());throw new z(`AWS_SIGV4A_SIGNING_REGION_SET not set in env.`,{tryNextLink:!0})},configFileSelector(e){if(e.sigv4a_signing_region_set)return(e.sigv4a_signing_region_set??``).split(`,`).map(e=>e.trim());throw new z(`sigv4a_signing_region_set not set in profile.`,{tryNextLink:!0})},default:void 0}}));function Die(e,{credentials:t,credentialDefaultProvider:n}){let r;return r=t?t?.memoized?t:gw(t,mw,hw):n?iw(n(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured.")},r.memoized=!0,r}function Oie(e,t){if(t.configBound)return t;let n=async n=>t({...n,callerClientConfig:e});return n.memoized=t.memoized,n.configBound=!0,n}var RA,zA,kie=n((()=>{dT(),_w(),RA=gO(),zA=e=>t=>{let n=t.credentials,r=!!t.credentials,i;Object.defineProperty(t,"credentials",{set(e){e&&e!==n&&e!==i&&(r=!0),n=e;let a=Oie(t,Die(t,{credentials:n,credentialDefaultProvider:t.credentialDefaultProvider}));if(r&&!a.attributed){let e=typeof n==`object`&&!!n;i=async t=>{let n=await a(t);return e&&(!n.$source||Object.keys(n.$source).length===0)?Tb(n,`CREDENTIALS_CODE`,`e`):n},i.memoized=a.memoized,i.configBound=a.configBound,i.attributed=!0}else i=a},get(){return i},enumerable:!0,configurable:!0}),t.credentials=n;let{signingEscapePath:a=!0,systemClockOffset:o=t.systemClockOffset||0,sha256:s}=t,c;return c=t.signer?iw(t.signer):t.regionInfoProvider?()=>iw(t.region)().then(async e=>[await t.regionInfoProvider(e,{useFipsEndpoint:await t.useFipsEndpoint(),useDualstackEndpoint:await t.useDualstackEndpoint()})||{},e]).then(([e,n])=>{let{signingRegion:r,signingService:i}=e;t.signingRegion=t.signingRegion||r||n,t.signingName=t.signingName||i||t.serviceId;let o={...t,credentials:t.credentials,region:t.signingRegion,service:t.signingName,sha256:s,uriEscapePath:a};return new(t.signerConstructor||RA.SignatureV4)(o)}):async e=>{e=Object.assign({},{name:`sigv4`,signingName:t.signingName||t.defaultSigningName,signingRegion:await iw(t.region)(),properties:{}},e);let n=e.signingRegion,r=e.signingName;t.signingRegion=t.signingRegion||n,t.signingName=t.signingName||r||t.serviceId;let i={...t,credentials:t.credentials,region:t.signingRegion,service:t.signingName,sha256:s,uriEscapePath:a};return new(t.signerConstructor||RA.SignatureV4)(i)},Object.assign(t,{systemClockOffset:o,signingEscapePath:a,signer:c,disableClockSkewCorrection:iw(t.disableClockSkewCorrection??e)})}})),Aie=n((()=>{OA(),Cie(),Tie(),Eie(),kie()})),BA,VA,HA,jie=n((()=>{nt(),BA=`AWS_DISABLE_CLOCK_SKEW_CORRECTION`,VA=`disable_clock_skew_correction`,HA={environmentVariableSelector:e=>st(e,BA,A.ENV),configFileSelector:e=>st(e,VA,A.CONFIG),default:!1}})),UA,Mie=n((()=>{nt(),jie(),UA=w(HA)})),WA=/* @__PURE__ */ i({AWSSDKSigV4Signer:()=>DA,AwsSdkSigV4ASigner:()=>kA,AwsSdkSigV4Signer:()=>EA,NODE_AUTH_SCHEME_PREFERENCE_OPTIONS:()=>FA,NODE_SIGV4A_CONFIG_OPTIONS:()=>LA,getBearerTokenEnvKey:()=>jA,resolveAWSSDKSigV4Config:()=>KA,resolveAwsSdkSigV4AConfig:()=>IA,resolveAwsSdkSigV4Config:()=>GA,validateSigningProperties:()=>TA}),GA,KA,qA=n((()=>{Aie(),MA(),Mie(),GA=zA(UA),KA=GA})),JA=/* @__PURE__ */ a((t=>{let{setCredentialFeature:n}=(dT(),e(uT)),{CredentialsProviderError:r}=(nt(),e(he)),i=`AWS_ACCESS_KEY_ID`,a=`AWS_SECRET_ACCESS_KEY`,o=`AWS_SESSION_TOKEN`,s=`AWS_CREDENTIAL_EXPIRATION`,c=`AWS_CREDENTIAL_SCOPE`,l=`AWS_ACCOUNT_ID`;t.ENV_ACCOUNT_ID=l,t.ENV_CREDENTIAL_SCOPE=c,t.ENV_EXPIRATION=s,t.ENV_KEY=i,t.ENV_SECRET=a,t.ENV_SESSION=o,t.fromEnv=e=>async()=>{e?.logger?.debug(`@aws-sdk/credential-provider-env - fromEnv`);let t=process.env[i],u=process.env[a],d=process.env[o],f=process.env[s],p=process.env[c],m=process.env[l];if(t&&u){let e={accessKeyId:t,secretAccessKey:u,...d&&{sessionToken:d},...f&&{expiration:new Date(f)},...p&&{credentialScope:p},...m&&{accountId:m}};return n(e,`CREDENTIALS_ENV_VARS`,`g`),e}throw new r(`Unable to find environment variable credentials.`,{logger:e?.logger})}})),YA,XA=n((()=>{YA=class e extends Error{name=`ProviderError`;tryNextLink;constructor(t,n=!0){let r,i=!0;typeof n==`boolean`?(r=void 0,i=n):typeof n==`object`&&n&&(r=n.logger,i=n.tryNextLink??!0),super(t),this.tryNextLink=i,Object.setPrototypeOf(this,e.prototype),r?.debug?.(`@smithy/property-provider ${i?`->`:`(!)`} ${t}`)}static from(e,t=!0){return Object.assign(new this(e.message,t),e)}}})),ZA,QA=n((()=>{XA(),ZA=class e extends YA{name=`CredentialsProviderError`;constructor(t,n=!0){super(t,n),Object.setPrototypeOf(this,e.prototype)}}})),$A,Nie=n((()=>{XA(),$A=class e extends YA{name=`TokenProviderError`;constructor(t,n=!0){super(t,n),Object.setPrototypeOf(this,e.prototype)}}})),ej,tj=n((()=>{XA(),ej=(...e)=>async()=>{if(e.length===0)throw new YA(`No providers in chain`);let t;for(let n of e)try{return await n()}catch(e){if(t=e,e?.tryNextLink)continue;throw e}throw t}})),nj,rj=n((()=>{nj=e=>()=>Promise.resolve(e)})),ij,aj=n((()=>{ij=(e,t,n)=>{let r,i,a,o=!1,s=async()=>{i||=e();try{r=await i,a=!0,o=!1}finally{i=void 0}return r};return t===void 0?async e=>((!a||e?.forceRefresh)&&(r=await s()),r):async e=>((!a||e?.forceRefresh)&&(r=await s()),o?r:n&&!n(r)?(o=!0,r):(t(r)&&await s(),r))}})),oj,sj=n((()=>{oj=(e,t,n)=>{if(t in e){if(e[t]===`true`)return!0;if(e[t]===`false`)return!1;throw Error(`Cannot load ${n} "${t}". Expected "true" or "false", got ${e[t]}.`)}}})),cj,Pie=n((()=>{cj=(e,t,n)=>{if(!(t in e))return;let r=parseInt(e[t],10);if(Number.isNaN(r))throw TypeError(`Cannot load ${n} '${t}'. Expected number, got '${e[t]}'.`);return r}})),lj,uj=n((()=>{(function(e){e.ENV=`env`,e.CONFIG=`shared config entry`})(lj||={})})),dj,fj,pj,mj=n((()=>{dj={},fj=()=>process&&process.geteuid?`${process.geteuid()}`:`DEFAULT`,pj=()=>{let{HOME:e,USERPROFILE:t,HOMEPATH:n,HOMEDRIVE:r=`C:${tee}`}=process.env;if(e)return e;if(t)return t;if(n)return`${r}${n}`;let i=fj();return dj[i]||(dj[i]=Wr()),dj[i]}})),hj,gj,_j,vj=n((()=>{hj=`AWS_PROFILE`,gj=`default`,_j=e=>e.profile||process.env.AWS_PROFILE||`default`})),yj,bj=n((()=>{mj(),yj=e=>{let t=wr(`sha1`).update(e).digest(`hex`);return Pr(pj(),`.aws`,`sso`,`cache`,`${t}.json`)}})),xj,Sj,Cj=n((()=>{bj(),xj={},Sj=async e=>{if(xj[e])return xj[e];let t=yj(e),n=await Ar(t,`utf8`);return JSON.parse(n)}})),wj=n((()=>{})),Tj,Ej,Fie=n((()=>{Tj=ct(),wj(),Ej=e=>Object.entries(e).filter(([e])=>{let t=e.indexOf(`.`);return t!==-1&&Object.values(Tj.IniSectionType).includes(e.substring(0,t))}).reduce((e,[t,n])=>{let r=t.indexOf(`.`),i=t.substring(0,r)===Tj.IniSectionType.PROFILE?t.substring(r+1):t;return e[i]=n,e},{...e.default&&{default:e.default}})})),Dj,Oj=n((()=>{mj(),Dj=()=>process.env.AWS_CONFIG_FILE||Pr(pj(),`.aws`,`config`)})),kj,Iie=n((()=>{mj(),kj=()=>process.env.AWS_SHARED_CREDENTIALS_FILE||Pr(pj(),`.aws`,`credentials`)})),Aj,jj,Mj,Nj,Pj=n((()=>{Aj=ct(),wj(),jj=/^([\w-]+)\s(["'])?([\w-@+.%:/]+)\2$/,Mj=[`__proto__`,`profile __proto__`],Nj=e=>{let t={},n,r;for(let i of e.split(/\r?\n/)){let e=i.split(/(^|\s)[;#]/)[0].trim();if(e[0]===`[`&&e[e.length-1]===`]`){n=void 0,r=void 0;let t=e.substring(1,e.length-1),i=jj.exec(t);if(i){let[,e,,t]=i;Object.values(Aj.IniSectionType).includes(e)&&(n=[e,t].join(`.`))}else n=t;if(Mj.includes(t))throw Error(`Found invalid profile name "${t}"`)}else if(n){let a=e.indexOf(`=`);if(![0,-1].includes(a)){let[o,s]=[e.substring(0,a).trim(),e.substring(a+1).trim()];if(s===``)r=o;else{r&&i.trimStart()===i&&(r=void 0),t[n]=t[n]||{};let e=r?[r,o].join(`.`):o;t[n][e]=s}}}}return t}})),Fj,Ij,Lj,Rj=n((()=>{Fj={},Ij={},Lj=(e,t)=>Ij[e]===void 0?((!Fj[e]||t?.ignoreCache)&&(Fj[e]=Ar(e,`utf8`)),Fj[e]):Ij[e]})),zj,Bj,Vj=n((()=>{Fie(),Oj(),Iie(),mj(),Pj(),Rj(),wj(),zj=()=>({}),Bj=async(e={})=>{let{filepath:t=kj(),configFilepath:n=Dj()}=e,r=pj(),i=t;t.startsWith(`~/`)&&(i=Pr(r,t.slice(2)));let a=n;n.startsWith(`~/`)&&(a=Pr(r,n.slice(2)));let o=await Promise.all([Lj(a,{ignoreCache:e.ignoreCache}).then(Nj).then(Ej).catch(zj),Lj(i,{ignoreCache:e.ignoreCache}).then(Nj).catch(zj)]);return{configFile:o[0],credentialsFile:o[1]}}})),Hj,Uj,Lie=n((()=>{Hj=ct(),Vj(),Uj=e=>Object.entries(e).filter(([e])=>e.startsWith(Hj.IniSectionType.SSO_SESSION+`.`)).reduce((e,[t,n])=>({...e,[t.substring(t.indexOf(`.`)+1)]:n}),{})})),Wj,Gj,Rie=n((()=>{Oj(),Lie(),Pj(),Rj(),Wj=()=>({}),Gj=async(e={})=>Lj(e.configFilepath??Dj()).then(Nj).then(Uj).catch(Wj)})),Kj,zie=n((()=>{Kj=(...e)=>{let t={};for(let n of e)for(let[e,r]of Object.entries(n))t[e]===void 0?t[e]=r:Object.assign(t[e],r);return t}})),qj,Bie=n((()=>{Vj(),zie(),qj=async e=>{let t=await Bj(e);return Kj(t.configFile,t.credentialsFile)}})),Jj,Vie=n((()=>{Cj(),Rj(),Jj={getFileRecord(){return Ij},interceptFile(e,t){Ij[e]=Promise.resolve(t)},getTokenRecord(){return xj},interceptToken(e,t){xj[e]=t}}}));function Yj(e){try{let t=new Set(Array.from(e.match(/([A-Z_]){3,}/g)??[]));return t.delete(`CONFIG`),t.delete(`CONFIG_PREFIX_SEPARATOR`),t.delete(`ENV`),[...t].join(`, `)}catch{return e}}var Xj=n((()=>{})),Hie,Uie=n((()=>{QA(),Xj(),Hie=(e,t)=>async()=>{try{let n=e(process.env,t);if(n===void 0)throw Error();return n}catch(n){throw new ZA(n.message||`Not found in ENV: ${Yj(e.toString())}`,{logger:t?.logger})}}})),Wie,Gie=n((()=>{QA(),vj(),Vj(),Xj(),Wie=(e,{preferredFile:t=`config`,...n}={})=>async()=>{let r=_j(n),{configFile:i,credentialsFile:a}=await Bj(n),o=a[r]||{},s=i[r]||{},c=t===`config`?{...o,...s}:{...s,...o};try{let n=e(c,t===`config`?i:a);if(n===void 0)throw Error();return n}catch(t){throw new ZA(t.message||`Not found in config files w/ profile [${r}]: ${Yj(e.toString())}`,{logger:n.logger})}}})),Kie,Zj,qie=n((()=>{rj(),Kie=e=>typeof e==`function`,Zj=e=>Kie(e)?async()=>await e():nj(e)})),Qj,Jie=n((()=>{tj(),aj(),Uie(),Gie(),qie(),Qj=({environmentVariableSelector:e,configFileSelector:t,default:n},r={})=>{let{signingName:i,logger:a}=r;return ij(ej(Hie(e,{signingName:i,logger:a}),Wie(t,r),Zj(n)))}})),$j,eM,Yie,Xie,Zie=n((()=>{sj(),uj(),$j=`AWS_USE_DUALSTACK_ENDPOINT`,eM=`use_dualstack_endpoint`,Yie={environmentVariableSelector:e=>oj(e,$j,lj.ENV),configFileSelector:e=>oj(e,eM,lj.CONFIG),default:!1},Xie={environmentVariableSelector:e=>oj(e,$j,lj.ENV),configFileSelector:e=>oj(e,eM,lj.CONFIG),default:void 0}})),tM,nM,Qie,$ie,eae=n((()=>{sj(),uj(),tM=`AWS_USE_FIPS_ENDPOINT`,nM=`use_fips_endpoint`,Qie={environmentVariableSelector:e=>oj(e,tM,lj.ENV),configFileSelector:e=>oj(e,nM,lj.CONFIG),default:!1},$ie={environmentVariableSelector:e=>oj(e,tM,lj.ENV),configFileSelector:e=>oj(e,nM,lj.CONFIG),default:void 0}})),tae=n((()=>{Vt()})),nae,rae=n((()=>{tae(),nae=e=>{let{tls:t,endpoint:n,urlParser:r,useDualstackEndpoint:i}=e;return Object.assign(e,{tls:t??!0,endpoint:qt(typeof n==`string`?r(n):n),isCustomEndpoint:!0,useDualstackEndpoint:qt(i??!1)})}})),iae,aae=n((()=>{iae=async e=>{let{tls:t=!0}=e,n=await e.region();if(!(/* @__PURE__ */ new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/)).test(n))throw Error(`Invalid region in client config`);let r=await e.useDualstackEndpoint(),i=await e.useFipsEndpoint(),{hostname:a}=await e.regionInfoProvider(n,{useDualstackEndpoint:r,useFipsEndpoint:i})??{};if(!a)throw Error(`Cannot resolve hostname from client config`);return e.urlParser(`${t?`https:`:`http:`}//${a}`)}})),oae,sae=n((()=>{tae(),aae(),oae=e=>{let t=qt(e.useDualstackEndpoint??!1),{endpoint:n,useFipsEndpoint:r,urlParser:i,tls:a}=e;return Object.assign(e,{tls:a??!0,endpoint:n?qt(typeof n==`string`?i(n):n):()=>iae({...e,useDualstackEndpoint:t,useFipsEndpoint:r}),isCustomEndpoint:!!n,useDualstackEndpoint:t})}})),cae,lae,uae,dae=n((()=>{cae=[`in-region`,`cross-region`,`mobile`,`standard`,`legacy`],lae=`/latest/api/token`,uae=`x-aws-ec2-metadata-token-ttl-seconds`})),rM,fae,iM,aM,oM,pae,sM,mae=n((()=>{dae(),rM=1e3,fae=6e4,iM=0,aM=async()=>{if(!process.env.AWS_EC2_METADATA_DISABLED&&!(Date.now(){iM=Date.now()+fae},pae=()=>{let e=process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT;if(e){let t=new URL(e);return{hostname:t.hostname.replace(/^\[(.+)]$/,`$1`),port:t.port?Number(t.port):void 0}}return process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE===`IPv6`?{hostname:`fd00:ec2::254`}:{hostname:`169.254.169.254`}},sM=async e=>{let{request:t}=await import(`node:http`);return new Promise((n,r)=>{let i=t({hostname:e.hostname,port:e.port,path:e.path,method:e.method,headers:e.headers,timeout:rM,signal:AbortSignal.timeout(rM)});i.on(`error`,e=>{r(e),i.destroy()}),i.on(`timeout`,()=>{r(/* @__PURE__ */ Error(`TimeoutError from instance metadata service`)),i.destroy()}),i.on(`response`,e=>{let{statusCode:t=400}=e;if(t<200||t>=300){r(Object.assign(/* @__PURE__ */ Error(`Error response received from instance metadata service`),{statusCode:t})),i.destroy();return}let a=[];e.on(`data`,e=>a.push(e)),e.on(`end`,()=>{n(Buffer.concat(a)),i.destroy()})}),i.end()})}})),cM,lM,uM,hae,gae=n((()=>{mae(),cM=`AWS_REGION`,lM=`region`,uM={environmentVariableSelector:e=>e[cM],configFileSelector:e=>e[lM],default:async()=>{let e=await aM();if(e)return e;throw Error(`Region is missing`)}},hae={preferredFile:`credentials`}})),dM,_ae,vae=n((()=>{Vt(),dM=/* @__PURE__ */ new Set,_ae=(e,t=Qt)=>{if(!dM.has(e)&&!t(e)){if(e===`*`)console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`);else throw Error(`Region not accepted: region="${e}" is not a valid hostname component.`)}else dM.add(e)}})),fM,yae=n((()=>{fM=e=>typeof e==`string`&&(e.startsWith(`fips-`)||e.endsWith(`-fips`))})),bae,xae=n((()=>{yae(),bae=e=>fM(e)?[`fips-aws-global`,`aws-fips`].includes(e)?`us-east-1`:e.replace(/fips-(dkr-|prod-)?|-fips/,``):e})),Sae,Cae=n((()=>{vae(),xae(),yae(),Sae=e=>{let{region:t,useFipsEndpoint:n}=e;if(!t)throw Error(`Region is missing`);return Object.assign(e,{region:async()=>{let e=typeof t==`function`?await t():t,n=bae(e);return _ae(n),n},useFipsEndpoint:async()=>{let e=typeof t==`string`?t:await t();return fM(e)?!0:typeof n==`function`?n():Promise.resolve(!!n)}})}})),pM,wae=n((()=>{pM=(e=[],{useFipsEndpoint:t,useDualstackEndpoint:n})=>e.find(({tags:e})=>t===e.includes(`fips`)&&n===e.includes(`dualstack`))?.hostname})),Tae,Eae=n((()=>{Tae=(e,{regionHostname:t,partitionHostname:n})=>t||(n?n.replace(`{region}`,e):void 0)})),Dae,Oae=n((()=>{Dae=(e,{partitionHash:t})=>Object.keys(t||{}).find(n=>t[n].regions.includes(e))??`aws`})),kae,Aae=n((()=>{kae=(e,{signingRegion:t,regionRegex:n,useFipsEndpoint:r})=>{if(t)return t;if(r){let t=n.replace(`\\\\`,`\\`).replace(/^\^/g,`\\.`).replace(/\$$/g,`\\.`),r=e.match(t);if(r)return r[0].slice(1,-1)}}})),jae,Mae=n((()=>{wae(),Eae(),Oae(),Aae(),jae=(e,{useFipsEndpoint:t=!1,useDualstackEndpoint:n=!1,signingService:r,regionHash:i,partitionHash:a})=>{let o=Dae(e,{partitionHash:a}),s=e in i?e:a[o]?.endpoint??e,c={useFipsEndpoint:t,useDualstackEndpoint:n},l=pM(i[s]?.variants,c),u=pM(a[o]?.variants,c),d=Tae(s,{regionHostname:l,partitionHostname:u});if(d===void 0)throw Error(`Endpoint resolution failed for: [object Object]`);let f=kae(d,{signingRegion:i[s]?.signingRegion,regionRegex:a[o].regionRegex,useFipsEndpoint:t});return{partition:o,signingService:r,hostname:d,...f&&{signingRegion:f},...i[s]?.signingService&&{signingService:i[s].signingService}}}})),Nae,Pae,Fae,Iae=n((()=>{Nae=`AWS_DEFAULTS_MODE`,Pae=`defaults_mode`,Fae={environmentVariableSelector:e=>e[Nae],configFileSelector:e=>e[Pae],default:`legacy`}})),Lae,Rae,zae,Bae=n((()=>{gae(),mae(),Jie(),aj(),dae(),Iae(),Lae=({region:e=Qj(uM),defaultsMode:t=Qj(Fae)}={})=>ij(async()=>{let n=typeof t==`function`?await t():t;switch(n?.toLowerCase()){case`auto`:return Rae(e);case`in-region`:case`cross-region`:case`mobile`:case`standard`:case`legacy`:return Promise.resolve(n?.toLocaleLowerCase());case void 0:return Promise.resolve(`legacy`);default:throw Error(`Invalid parameter for "defaultsMode", expect ${cae.join(`, `)}, got ${n}`)}}),Rae=async e=>{if(e){let t=typeof e==`function`?await e():e,n=await zae();return n?t===n?`in-region`:`cross-region`:`standard`}return`standard`},zae=async()=>process.env.AWS_EXECUTION_ENV&&(process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION)?process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION:aM()})),Vae=/* @__PURE__ */ i({CONFIG_PREFIX_SEPARATOR:()=>`.`,CONFIG_USE_DUALSTACK_ENDPOINT:()=>eM,CONFIG_USE_FIPS_ENDPOINT:()=>nM,CredentialsProviderError:()=>ZA,DEFAULT_PROFILE:()=>gj,DEFAULT_USE_DUALSTACK_ENDPOINT:()=>!1,DEFAULT_USE_FIPS_ENDPOINT:()=>!1,ENV_PROFILE:()=>hj,ENV_USE_DUALSTACK_ENDPOINT:()=>$j,ENV_USE_FIPS_ENDPOINT:()=>tM,NODE_REGION_CONFIG_FILE_OPTIONS:()=>hae,NODE_REGION_CONFIG_OPTIONS:()=>uM,NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS:()=>Yie,NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS:()=>Qie,ProviderError:()=>YA,REGION_ENV_NAME:()=>cM,REGION_INI_NAME:()=>lM,SelectorType:()=>lj,TokenProviderError:()=>$A,booleanSelector:()=>oj,chain:()=>ej,externalDataInterceptor:()=>Jj,fromStatic:()=>Zj,fromValue:()=>nj,getHomeDir:()=>pj,getProfileName:()=>_j,getRegionInfo:()=>jae,getSSOTokenFilepath:()=>yj,getSSOTokenFromFile:()=>Sj,loadConfig:()=>Qj,loadSharedConfigFiles:()=>Bj,loadSsoSessionData:()=>Gj,memoize:()=>ij,nodeDualstackConfigSelectors:()=>Xie,nodeFipsConfigSelectors:()=>$ie,numberSelector:()=>cj,parseKnownFiles:()=>qj,readFile:()=>Lj,resolveCustomEndpointsConfig:()=>nae,resolveDefaultsModeConfig:()=>Lae,resolveEndpointsConfig:()=>oae,resolveRegionConfig:()=>Sae}),Hae=n((()=>{XA(),QA(),Nie(),tj(),rj(),aj(),sj(),Pie(),uj(),mj(),vj(),bj(),Cj(),wj(),Vj(),Rie(),Bie(),Vie(),Rj(),Jie(),qie(),Zie(),eae(),rae(),sae(),gae(),Cae(),Mae(),Bae()})),mM,hM=n((()=>{fn(),mM=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return pn.mutate(e);if(!e)return pn.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return pn.mutate(await n)}}));function gM(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var _M=n((()=>{})),vM,yM=n((()=>{vM=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),bM,xM=n((()=>{Vt(),Jt(),yM(),bM=class extends vM{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new Xt(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return Bt}getResponseType(){return $t}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)mn(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)mn(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=Gt.of(t.input),i=gn(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!Kt(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-BIy_EUGs.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),Uae,Wae=n((()=>{Vt(),Jt(),fn(),xM(),hM(),_M(),Uae=class extends bM{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=Gt.of(e?.input),l=[],u=[],d=!1,f,p=new Bt({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(p,s),this.setHostPrefix(p,e,r);let t=gn(e.traits);if(t.http){p.method=t.http[0];let[e,n]=t.http[1].split(`?`);p.path==`/`?p.path=e:p.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(p.path.includes(`{${e}+}`)||p.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(f=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):f=s:(i.write(t,s),f=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();p.path.includes(`{${e}+}`)?p.path=p.path.replace(`{${e}+}`,n.split(`/`).map(gM).join(`/`)):p.path.includes(`{${e}}`)&&(p.path=p.path.replace(`{${e}}`,gM(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!mn(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(d=!0,l.push(e),u.push(t))}if(d&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),l,u,void 0];n?a[6]=n:a.pop(),i.write(a,r),f=i.flush()}return p.headers=o,p.query=a,p.body=f,p}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(mn(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=Gt.of(e.output),a={};if(n.statusCode>=300){let i=await mM(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await mM(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await mM(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=Gt.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=tn(n.body);else if(n.body){let i=await mM(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?un(o,`,`,2):rn(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(mn(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),SM,Gae=n((()=>{Vt(),Jt(),xM(),hM(),SM=class extends bM{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=Gt.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new Bt({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=Gt.of(e.output),a={};if(n.statusCode>=300){let i=await mM(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await mM(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),CM,wM=n((()=>{_M(),CM=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>gM(e)).join(`/`):gM(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function Kae(e,t){return new TM(e,t)}var TM,qae=n((()=>{Vt(),wM(),TM=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new Bt({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=CM(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function EM(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var DM=n((()=>{})),OM,kM=n((()=>{Jt(),fn(),yM(),DM(),OM=class extends vM{settings;constructor(e){super(),this.settings=e}read(e,t){let n=Gt.of(e);if(n.isListSchema())return rn(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??sn)(t);if(n.isTimestampSchema())switch(EM(n,this.settings)){case 5:return an(t);case 6:return en(t);case 7:return on(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=hn.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new ln(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??Ut)((this.serdeContext?.base64Decoder??sn)(e))}}})),AM,Jae=n((()=>{Jt(),fn(),yM(),kM(),AM=class extends vM{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new OM(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=Gt.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??Ut;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??cn;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),jM,MM=n((()=>{Jt(),fn(),yM(),DM(),jM=class extends vM{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=Gt.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(EM(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Ht(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??Yt)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:nn(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=hn.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??Yt)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?dn():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),NM,Yae=n((()=>{Jt(),MM(),NM=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new jM(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=Gt.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),PM,FM,Xae=n((()=>{PM=ct(),FM=class{name;kind;values;constructor({name:e,kind:t=PM.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),IM,Zae=n((()=>{IM=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),LM,RM,Qae=n((()=>{LM=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),RM=e=>({requestHandler:e.httpHandler()})}));function zM(e){return t=>async n=>{let r=n.request;if(Bt.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(BM)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[BM]:String(n)})}catch{}}return t({...n,request:r})}}var BM,VM,HM,$ae=n((()=>{Vt(),BM=`content-length`,VM={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},HM=e=>({applyToStack:t=>{t.add(zM(e.bodyLengthChecker),VM)}})})),UM,WM,GM=n((()=>{UM=e=>encodeURIComponent(e).replace(/[!'()*]/g,WM),WM=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),KM,eoe=n((()=>{GM(),KM=e=>e.split(`/`).map(UM).join(`/`)}));function toe(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=UM(n),Array.isArray(r))for(let e=0,i=r.length;e{GM()})),roe=/* @__PURE__ */ i({Field:()=>FM,Fields:()=>IM,FromStringShapeDeserializer:()=>OM,HttpBindingProtocol:()=>Uae,HttpInterceptingShapeDeserializer:()=>AM,HttpInterceptingShapeSerializer:()=>NM,HttpProtocol:()=>bM,HttpRequest:()=>Bt,HttpResponse:()=>$t,RequestBuilder:()=>TM,RpcProtocol:()=>SM,SerdeContext:()=>vM,ToStringShapeSerializer:()=>jM,buildQueryString:()=>toe,collectBody:()=>mM,contentLengthMiddleware:()=>zM,contentLengthMiddlewareOptions:()=>VM,determineTimestampFormat:()=>EM,escapeUri:()=>UM,escapeUriPath:()=>KM,extendedEncodeURIComponent:()=>gM,getContentLengthPlugin:()=>HM,getHttpHandlerExtensionConfiguration:()=>LM,isValidHostname:()=>Kt,parseQueryString:()=>Zt,parseUrl:()=>Wt,requestBuilder:()=>Kae,resolveHttpHandlerRuntimeConfig:()=>RM,resolvedPath:()=>CM}),ioe=n((()=>{hM(),_M(),Wae(),xM(),Gae(),qae(),wM(),kM(),Jae(),Yae(),MM(),DM(),yM(),Xae(),Zae(),Vt(),Qae(),$ae(),GM(),eoe(),noe()})),qM=/* @__PURE__ */ a((n=>{let{ProviderError:r,CredentialsProviderError:i,loadConfig:a}=(Hae(),e(Vae)),o=t(`node:http`),{parseUrl:s}=(ioe(),e(roe)),c=e=>!!e&&typeof e==`object`&&typeof e.AccessKeyId==`string`&&typeof e.SecretAccessKey==`string`&&typeof e.Token==`string`&&typeof e.Expiration==`string`,l=e=>({accessKeyId:e.AccessKeyId,secretAccessKey:e.SecretAccessKey,sessionToken:e.Token,expiration:new Date(e.Expiration),...e.AccountId&&{accountId:e.AccountId}}),u=1e3,d=({maxRetries:e=0,timeout:t=u})=>({maxRetries:e,timeout:t});function f(e){return new Promise((t,n)=>{let i=o.request({method:`GET`,...e,hostname:e.hostname?.replace(/^\[(.+)\]$/,`$1`)});i.on(`error`,e=>{n(Object.assign(new r(`Unable to connect to instance metadata service`),e)),i.destroy()}),i.on(`timeout`,()=>{n(new r(`TimeoutError from instance metadata service`)),i.destroy()}),i.on(`response`,e=>{let{statusCode:a=400}=e;(a<200||300<=a)&&(n(Object.assign(new r(`Error response received from instance metadata service`),{statusCode:a})),i.destroy());let o=[];e.on(`data`,e=>{o.push(e)}),e.on(`end`,()=>{t(Buffer.concat(o)),i.destroy()})}),i.end()})}let p=(e,t)=>{let n=e();for(let r=0;r{let{timeout:t,maxRetries:n}=d(e);return()=>p(async()=>{let n=await S({logger:e.logger}),r=JSON.parse(await y(t,n));if(!c(r))throw new i(`Invalid response received from instance metadata service.`,{logger:e.logger});return l(r)},n)},y=async(e,t)=>(process.env[g]&&(t.headers={...t.headers,Authorization:process.env[g]}),(await f({...t,timeout:e})).toString()),b=/* @__PURE__ */ new Set([`localhost`,`127.0.0.1`]),x=/* @__PURE__ */ new Set([`http:`,`https:`]),S=async({logger:e})=>{if(process.env[h])return{hostname:`169.254.170.2`,path:process.env[h]};if(process.env[m]){let t;try{t=new URL(process.env[m])}catch{throw new i(`${process.env[m]} is not a valid container metadata service URL`,{tryNextLink:!1,logger:e})}if(!t.hostname||!b.has(t.hostname))throw new i(`${t.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:e});if(!t.protocol||!x.has(t.protocol))throw new i(`${t.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:e});return{protocol:t.protocol,hostname:t.hostname,path:t.pathname+t.search,port:t.port?parseInt(t.port,10):void 0}}throw new i(`The container metadata credential provider cannot be used unless the ${h} or ${m} environment variable is set`,{tryNextLink:!1,logger:e})};var C=class e extends i{tryNextLink;name=`InstanceMetadataV1FallbackError`;constructor(t,n=!0){super(t,n),this.tryNextLink=n,Object.setPrototypeOf(this,e.prototype)}},w;(function(e){e.IPv4=`http://169.254.169.254`,e.IPv6=`http://[fd00:ec2::254]`})(w||={});let T={environmentVariableSelector:e=>e.AWS_EC2_METADATA_SERVICE_ENDPOINT,configFileSelector:e=>e.ec2_metadata_service_endpoint,default:void 0};var E;(function(e){e.IPv4=`IPv4`,e.IPv6=`IPv6`})(E||={});let D={environmentVariableSelector:e=>e.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE,configFileSelector:e=>e.ec2_metadata_service_endpoint_mode,default:E.IPv4},O=async()=>s(await k()||await A()),k=async()=>a(T)(),A=async()=>{let e=await a(D)();switch(e){case E.IPv4:return w.IPv4;case E.IPv6:return w.IPv6;default:throw Error(`Unsupported endpoint mode: ${e}. Select from ${Object.values(E)}`)}},j=(e,t)=>{let n=300+Math.floor(Math.random()*300),r=new Date(Date.now()+n*1e3);t.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(r)}.\nFor more information, please visit: https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html`);let i=e.originalExpiration??e.expiration;return{...e,...i?{originalExpiration:i}:{},expiration:r}},M=(e,t={})=>{let n=t?.logger||console,r;return async()=>{let t;try{t=await e(),t.expiration&&t.expiration.getTime()M(L(e),{logger:e.logger}),L=(e={})=>{let t=!1,{logger:n,profile:r}=e,{timeout:o,maxRetries:s}=d(e),c=async(n,o)=>{if(t||o.headers?.[I]==null){let t=!1,n=!1,o=await a({environmentVariableSelector:t=>{let r=t[P];if(n=!!r&&r!==`false`,r===void 0)throw new i(`${P} not set in env, checking config file next.`,{logger:e.logger});return n},configFileSelector:e=>{let n=e[F];return t=!!n&&n!==`false`,t},default:!1},{profile:r})();if(e.ec2MetadataV1Disabled||o){let r=[];throw e.ec2MetadataV1Disabled&&r.push(`credential provider initialization (runtime option ec2MetadataV1Disabled)`),t&&r.push(`config file profile (${F})`),n&&r.push(`process environment variable (${P})`),new C(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${r.join(`, `)}].`)}}let s=(await p(async()=>{let e;try{e=await te(o)}catch(e){throw e.statusCode===401&&(t=!1),e}return e},n)).trim();return p(async()=>{let n;try{n=await ne(s,o,e)}catch(e){throw e.statusCode===401&&(t=!1),e}return n},n)};return async()=>{let e=await O();if(t)return n?.debug(`AWS SDK Instance Metadata`,`using v1 fallback (no token fetch)`),c(s,{...e,timeout:o});{let r;try{r=(await R({...e,timeout:o})).toString()}catch(r){if(r?.statusCode===400)throw Object.assign(r,{message:`EC2 Metadata token request returned error`});return(r.message===`TimeoutError`||[403,404,405].includes(r.statusCode))&&(t=!0),n?.debug(`AWS SDK Instance Metadata`,`using v1 fallback (initial)`),c(s,{...e,timeout:o})}return c(s,{...e,headers:{[I]:r},timeout:o})}}},R=async e=>f({...e,path:`/latest/api/token`,method:`PUT`,headers:{"x-aws-ec2-metadata-token-ttl-seconds":`21600`}}),te=async e=>(await f({...e,path:N})).toString(),ne=async(e,t,n)=>{let r=JSON.parse((await f({...t,path:N+e})).toString());if(!c(r))throw new i(`Invalid response received from instance metadata service.`,{logger:n.logger});return l(r)};n.DEFAULT_MAX_RETRIES=0,n.DEFAULT_TIMEOUT=u,n.ENV_CMDS_AUTH_TOKEN=g,n.ENV_CMDS_FULL_URI=m,n.ENV_CMDS_RELATIVE_URI=h,n.Endpoint=w,n.fromContainerMetadata=v,n.fromInstanceMetadata=ee,n.getInstanceMetadataEndpoint=O,n.httpRequest=f,n.providerConfigFromInit=d})),JM,YM=n((()=>{Bn(),JM=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return Hn.mutate(e);if(!e)return Hn.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return Hn.mutate(await n)}}));function XM(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var ZM=n((()=>{})),QM,$M=n((()=>{QM=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),eN,tN=n((()=>{Sn(),Vn(),$M(),eN=class extends QM{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new Mn(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return bn}getResponseType(){return _n}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)Dn(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)Dn(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=Un.of(t.input),i=Rn(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!Gn(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-B3wzXbv_.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),nN,aoe=n((()=>{Sn(),Vn(),Bn(),tN(),YM(),ZM(),nN=class extends eN{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=Un.of(e?.input),l=[],u=[],d=!1,f,p=new bn({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(p,s),this.setHostPrefix(p,e,r);let t=Rn(e.traits);if(t.http){p.method=t.http[0];let[e,n]=t.http[1].split(`?`);p.path==`/`?p.path=e:p.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(p.path.includes(`{${e}+}`)||p.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(f=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):f=s:(i.write(t,s),f=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();p.path.includes(`{${e}+}`)?p.path=p.path.replace(`{${e}+}`,n.split(`/`).map(XM).join(`/`)):p.path.includes(`{${e}}`)&&(p.path=p.path.replace(`{${e}}`,XM(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!Dn(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(d=!0,l.push(e),u.push(t))}if(d&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),l,u,void 0];n?a[6]=n:a.pop(),i.write(a,r),f=i.flush()}return p.headers=o,p.query=a,p.body=f,p}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(Dn(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=Un.of(e.output),a={};if(n.statusCode>=300){let i=await JM(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!Dn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await JM(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await JM(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=Un.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=Ln(n.body);else if(n.body){let i=await JM(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?Tn(o,`,`,2):jn(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(Dn(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),rN,ooe=n((()=>{Sn(),Vn(),tN(),YM(),rN=class extends eN{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=Un.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new bn({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=Un.of(e.output),a={};if(n.statusCode>=300){let i=await JM(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!Dn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await JM(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),iN,aN=n((()=>{ZM(),iN=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>XM(e)).join(`/`):XM(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function soe(e,t){return new oN(e,t)}var oN,coe=n((()=>{Sn(),aN(),oN=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new bn({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=iN(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function sN(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var cN=n((()=>{})),lN,uN=n((()=>{Vn(),Bn(),$M(),cN(),lN=class extends QM{settings;constructor(e){super(),this.settings=e}read(e,t){let n=Un.of(e);if(n.isListSchema())return jn(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??wn)(t);if(n.isTimestampSchema())switch(sN(n,this.settings)){case 5:return Wn(t);case 6:return En(t);case 7:return vn(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=Fn.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new An(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??zn)((this.serdeContext?.base64Decoder??wn)(e))}}})),dN,loe=n((()=>{Vn(),Bn(),$M(),uN(),dN=class extends QM{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new lN(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=Un.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??zn;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??On;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),fN,pN=n((()=>{Vn(),Bn(),$M(),cN(),fN=class extends QM{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=Un.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(sN(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Pn(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??kn)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:Cn(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=Fn.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??kn)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?In():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),mN,uoe=n((()=>{Vn(),pN(),mN=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new fN(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=Un.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),hN,gN,doe=n((()=>{hN=ct(),gN=class{name;kind;values;constructor({name:e,kind:t=hN.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),_N,foe=n((()=>{_N=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),vN,yN,poe=n((()=>{vN=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),yN=e=>({requestHandler:e.httpHandler()})}));function bN(e){return t=>async n=>{let r=n.request;if(bn.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(xN)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[xN]:String(n)})}catch{}}return t({...n,request:r})}}var xN,SN,CN,moe=n((()=>{Sn(),xN=`content-length`,SN={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},CN=e=>({applyToStack:t=>{t.add(bN(e.bodyLengthChecker),SN)}})})),wN,TN,EN=n((()=>{wN=e=>encodeURIComponent(e).replace(/[!'()*]/g,TN),TN=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),DN,hoe=n((()=>{EN(),DN=e=>e.split(`/`).map(wN).join(`/`)}));function goe(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=wN(n),Array.isArray(r))for(let e=0,i=r.length;e{EN()})),voe=/* @__PURE__ */ i({Field:()=>gN,Fields:()=>_N,FromStringShapeDeserializer:()=>lN,HttpBindingProtocol:()=>nN,HttpInterceptingShapeDeserializer:()=>dN,HttpInterceptingShapeSerializer:()=>mN,HttpProtocol:()=>eN,HttpRequest:()=>bn,HttpResponse:()=>_n,RequestBuilder:()=>oN,RpcProtocol:()=>rN,SerdeContext:()=>QM,ToStringShapeSerializer:()=>fN,buildQueryString:()=>goe,collectBody:()=>JM,contentLengthMiddleware:()=>bN,contentLengthMiddlewareOptions:()=>SN,determineTimestampFormat:()=>sN,escapeUri:()=>wN,escapeUriPath:()=>DN,extendedEncodeURIComponent:()=>XM,getContentLengthPlugin:()=>CN,getHttpHandlerExtensionConfiguration:()=>vN,isValidHostname:()=>Gn,parseQueryString:()=>xn,parseUrl:()=>yn,requestBuilder:()=>soe,resolveHttpHandlerRuntimeConfig:()=>yN,resolvedPath:()=>iN}),yoe=n((()=>{YM(),ZM(),aoe(),tN(),ooe(),coe(),aN(),uN(),loe(),uoe(),pN(),cN(),$M(),doe(),foe(),Sn(),poe(),moe(),EN(),hoe(),_oe()})),ON=/* @__PURE__ */ a((n=>{let{hasOwn:r}=(Bn(),e(Nn)),{streamCollector:i}=(Bn(),e(Nn));n.streamCollector=i;let{buildQueryString:a,HttpResponse:o}=(yoe(),e(voe)),s=t(`node:https`),{Readable:c}=t(`node:stream`),l=t(`node:http2`);function u(e){let t=e&&typeof e==`object`&&`reason`in e?e.reason:void 0;if(t){if(t instanceof Error){let e=/* @__PURE__ */ Error(`Request aborted`);return e.name=`AbortError`,e.cause=t,e}let e=Error(String(t));return e.name=`AbortError`,e}let n=/* @__PURE__ */ Error(`Request aborted`);return n.name=`AbortError`,n}let d=[`ECONNRESET`,`EPIPE`,`ETIMEDOUT`],f=e=>{let t={};for(let n in e){if(!r(e,n))continue;let i=e[n];t[n]=Array.isArray(i)?i.join(`,`):i}return t},p={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},m=1e3,h=(e,t,n=0)=>{if(!n)return-1;let r=r=>{let i=p.setTimeout(()=>{e.destroy(),t(Object.assign(/* @__PURE__ */ Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${n} ms.`),{name:`TimeoutError`}))},n-r),a=e=>{e?.connecting?e.on(`connect`,()=>{p.clearTimeout(i)}):p.clearTimeout(i)};e.socket?a(e.socket):e.on(`socket`,a)};return n<2e3?(r(0),0):p.setTimeout(r.bind(null,m),m)},g=(e,t,n=0,r,i)=>n?p.setTimeout(()=>{let a=`@smithy/node-http-handler - [${r?`ERROR`:`WARN`}] a request has exceeded the configured ${n} ms requestTimeout.`;if(r){let n=Object.assign(Error(a),{name:`TimeoutError`,code:`ETIMEDOUT`});e.destroy(n),t(n)}else a+=` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`,i?.warn?.(a)},n):-1,v=(e,{keepAlive:t,keepAliveMsecs:n},r=3e3)=>{if(t!==!0)return-1;let i=()=>{e.socket?e.socket.setKeepAlive(t,n||0):e.on(`socket`,e=>{e.setKeepAlive(t,n||0)})};return r===0?(i(),0):p.setTimeout(i,r)},y=3e3,b=(e,t,n=0)=>{let r=r=>{let i=n-r,a=()=>{e.destroy(),t(Object.assign(/* @__PURE__ */ Error(`@smithy/node-http-handler - the request socket timed out after ${n} ms of inactivity (configured by client requestHandler).`),{name:`TimeoutError`}))};e.socket?(e.socket.setTimeout(i,a),e.on(`close`,()=>e.socket?.removeListener(`timeout`,a))):e.setTimeout(i,a)};return 0{o=Number(p.setTimeout(()=>e(!0),Math.max(x,n)))}),new Promise(t=>{e.on(`continue`,()=>{p.clearTimeout(o),t(!0)}),e.on(`response`,()=>{p.clearTimeout(o),t(!1)}),e.on(`error`,()=>{p.clearTimeout(o),t(!1)})})])),s&&C(e,t.body)}function C(e,t){if(t instanceof c)t.pipe(e);else if(t){let n=Buffer.isBuffer(t);if(n||typeof t==`string`){n&&t.byteLength===0?e.end():e.end(t);return}let r=t;if(typeof r==`object`&&r.buffer&&typeof r.byteOffset==`number`&&typeof r.byteLength==`number`){e.end(Buffer.from(r.buffer,r.byteOffset,r.byteLength));return}e.end(Buffer.from(t))}else e.end()}let w,T;var E=class e{config;configProvider;socketWarningTimestamp=0;externalAgent=!1;metadata={handlerProtocol:`http/1.1`};static create(t){return typeof t?.handle==`function`?t:new e(t)}static checkSocketUsage(e,t,n=console){let{sockets:i,requests:a,maxSockets:o}=e;if(typeof o!=`number`||o===1/0||Date.now()-15e3=o&&s>=2*o)return n?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${t} and ${s} additional requests are enqueued. +`)||(c[`#text`]=`#text`in c?c[`#text`]+e:e);for(let e of a)e.tag===`__proto__`&&l(c),e.tag in c?Array.isArray(c[e.tag])?c[e.tag].push(e.value):c[e.tag]=[c[e.tag],e.value]:c[e.tag]=e.value;for(let[e,t]of Object.entries(r))e===`__proto__`&&l(c),c[e]=t;return{tag:t,value:c}}static ENTITIES={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};skipDoctype(){let e=this;e.i+=9;let t=0;for(;e.i`&&t===0){++e.i;return}++e.i}throw Error(`@aws-sdk XML parse error: unclosed DOCTYPE.`)}decodeEntities(t){return t.replace(/&(?:#x([0-9a-fA-F]{1,6})|#(\d{1,7})|([a-zA-Z][a-zA-Z0-9]{0,30}));/g,(t,n,r,i)=>n?String.fromCharCode(parseInt(n,16)):r?String.fromCharCode(parseInt(r,10)):e.ENTITIES[i]??``)}};e.XmlNode=c,e.XmlText=s,e.parseXML=u})),BO,VO=n((()=>{BO=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),HO,mie=n((()=>{HO=class{from;to;keys;constructor(e,t){this.from=e,this.to=t;let n=Object.keys(this.from),r=new Set(n);r.delete(`__type`),this.keys=r}mark(e){this.keys.delete(e)}hasUnknown(){return this.keys.size===1&&Object.keys(this.to).length===0}writeUnknown(){if(this.hasUnknown()){let e=this.keys.values().next().value,t=this.from[e];this.to.$unknown=[e,t]}}}}));function hie(e){Object.defineProperty(e,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}var gie=n((()=>{})),UO,WO,GO=n((()=>{UO=zO(),R(),yS(),D(),x(),VO(),mie(),gie(),WO=class extends BO{settings;stringDeserializer;constructor(e){super(),this.settings=e,this.stringDeserializer=new Zb(e)}setSerdeContext(e){this.serdeContext=e,this.stringDeserializer.setSerdeContext(e)}read(e,t,n){let r=ce.of(e),i=r.getMemberSchemas();if(r.isStructSchema()&&r.isMemberSchema()&&Object.values(i).find(e=>!!e.getMemberTraits().eventPayload)){let e={},n=Object.keys(i)[0];return e[n]=i[n].isBlobSchema()?t:this.read(i[n],t),e}let a=(this.serdeContext?.utf8Encoder??Ee)(t),o=this.parseXml(a);return this.readSchema(e,n?o[n]:o)}readSchema(e,t){let n=ce.of(e);if(n.isUnitSchema())return;let r=n.getMergedTraits();if(n.isListSchema()&&!Array.isArray(t))return this.readSchema(n,[t]);if(t==null)return t;if(typeof t==`object`){let e=!!r.xmlFlattened;if(n.isListSchema()){let r=n.getValueSchema(),i=[],a=r.getMergedTraits().xmlName??`member`,o=e?t:(t[0]??t)[a];if(o==null)return i;let s=Array.isArray(o)?o:[o];for(let e of s)i.push(this.readSchema(r,e));return i}let i={};if(n.isMapSchema()){let r=n.getKeySchema(),a=n.getValueSchema(),o;o=e?Array.isArray(t)?t:[t]:Array.isArray(t.entry)?t.entry:[t.entry];let s=r.getMergedTraits().xmlName??`key`,c=a.getMergedTraits().xmlName??`value`;for(let e of o){let t=e[s],n=e[c];t===`__proto__`&&hie(i),i[t]=this.readSchema(a,n)}return i}if(n.isStructSchema()){let e=n.isUnionSchema(),r;e&&(r=new HO(t,i));for(let[a,o]of n.structIterator()){let n=o.getMergedTraits(),s=n.httpPayload?n.xmlName??o.getName():o.getMemberTraits().xmlName??a;e&&r.mark(s),t[s]!=null&&(i[a]=this.readSchema(o,t[s]))}return e&&r.writeUnknown(),i}if(n.isDocumentSchema())return t;throw Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${n.getName(!0)}`)}return n.isListSchema()?[]:n.isMapSchema()||n.isStructSchema()?{}:this.stringDeserializer.read(n,t)}parseXml(e){if(e.length){let t;try{t=(0,UO.parseXML)(e)}catch(t){throw t&&typeof t==`object`&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}let n=`#text`,r=Object.keys(t)[0],i=t[r];return i[n]&&(i[r]=i[n],delete i[n]),u(i)}return{}}}})),KO,qO=n((()=>{yS(),D(),x(),VO(),KO=class extends BO{settings;buffer;constructor(e){super(),this.settings=e}write(e,t,n=``){this.buffer===void 0&&(this.buffer=``);let r=ce.of(e);if(n&&!n.endsWith(`.`)&&(n+=`.`),r.isBlobSchema())(typeof t==`string`||t instanceof Uint8Array)&&(this.writeKey(n),this.writeValue((this.serdeContext?.base64Encoder??de)(t)));else if(r.isBooleanSchema()||r.isNumericSchema()||r.isStringSchema())t==null?r.isIdempotencyToken()&&(this.writeKey(n),this.writeValue(ae())):(this.writeKey(n),this.writeValue(String(t)));else if(r.isBigIntegerSchema())t!=null&&(this.writeKey(n),this.writeValue(String(t)));else if(r.isBigDecimalSchema())t!=null&&(this.writeKey(n),this.writeValue(t instanceof ue?t.string:String(t)));else if(r.isTimestampSchema()){if(t instanceof Date)switch(this.writeKey(n),Yb(r,this.settings)){case 5:this.writeValue(t.toISOString().replace(`.000Z`,`Z`));break;case 6:this.writeValue(Ae(t));break;case 7:this.writeValue(String(t.getTime()/1e3))}}else if(r.isDocumentSchema())Array.isArray(t)?this.write(79,t,n):t instanceof Date?this.write(4,t,n):t instanceof Uint8Array?this.write(21,t,n):t&&typeof t==`object`?this.write(143,t,n):(this.writeKey(n),this.writeValue(String(t)));else if(r.isListSchema()){if(Array.isArray(t)){if(t.length===0)this.settings.serializeEmptyLists&&(this.writeKey(n),this.writeValue(``));else{let e=r.getValueSchema(),i=this.settings.flattenLists||r.getMergedTraits().xmlFlattened,a=1;for(let r of t){if(r==null)continue;let t=e.getMergedTraits(),o=this.getKey(`member`,t.xmlName,t.ec2QueryName),s=i?`${n}${a}`:`${n}${o}.${a}`;this.write(e,r,s),++a}}}}else if(r.isMapSchema()){if(t&&typeof t==`object`){let e=r.getKeySchema(),i=r.getValueSchema(),a=r.getMergedTraits().xmlFlattened,o=1;for(let r in t){let s=t[r];if(s==null)continue;let c=e.getMergedTraits(),l=this.getKey(`key`,c.xmlName,c.ec2QueryName),u=a?`${n}${o}.${l}`:`${n}entry.${o}.${l}`,d=i.getMergedTraits(),f=this.getKey(`value`,d.xmlName,d.ec2QueryName),p=a?`${n}${o}.${f}`:`${n}entry.${o}.${f}`;this.write(e,r,u),this.write(i,s,p),++o}}}else if(r.isStructSchema()){if(t&&typeof t==`object`){let e=!1;for(let[i,a]of r.structIterator()){if(t[i]==null&&!a.isIdempotencyToken())continue;let r=a.getMergedTraits(),o=this.getKey(i,r.xmlName,r.ec2QueryName,`struct`),s=`${n}${o}`;this.write(a,t[i],s),e=!0}if(!e&&r.isUnionSchema()){let{$unknown:e}=t;if(Array.isArray(e)){let[t,r]=e,i=`${n}${t}`;this.write(15,r,i)}}}}else if(!r.isUnitSchema())throw Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${r.getName(!0)}`)}flush(){if(this.buffer===void 0)throw Error(`@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer.`);let e=this.buffer;return delete this.buffer,e}getKey(e,t,n,r){let{ec2:i,capitalizeKeys:a}=this.settings;if(i&&n)return n;let o=t??e;return a&&r===`struct`?o[0].toUpperCase()+o.slice(1):o}writeKey(e){e.endsWith(`.`)&&(e=e.slice(0,e.length-1)),this.buffer+=`&${Ib(e)}=`}writeValue(e){this.buffer+=Ib(e)}}})),JO,_ie=n((()=>{yS(),D(),LO(),GO(),qO(),JO=class extends Ub{options;serializer;deserializer;mixin=new IO;constructor(e){super({defaultNamespace:e.defaultNamespace,errorTypeRegistries:e.errorTypeRegistries}),this.options=e;let t={timestampFormat:{useTrait:!0,default:5},httpBindings:!1,xmlNamespace:e.xmlNamespace,serviceNamespace:e.defaultNamespace,serializeEmptyLists:!0};this.serializer=new KO(t),this.deserializer=new WO(t)}getShapeId(){return`aws.protocols#awsQuery`}setSerdeContext(e){this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e)}getPayloadCodec(){throw Error(`AWSQuery protocol has no payload codec.`)}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n);return r.path.endsWith(`/`)||(r.path+=`/`),r.headers[`content-type`]=`application/x-www-form-urlencoded`,Ie(e.input)!==`unit`&&r.body||(r.body=``),r.body=`Action=${e.name.split(`#`)[1]??e.name}&Version=${this.options.version}`+r.body,r.body.endsWith(`&`)&&(r.body=r.body.slice(-1)),r}async deserializeResponse(e,t,n){let r=this.deserializer,i=ce.of(e.output),a={};if(n.statusCode>=300){let i=await Pb(n.body,t);i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n))}for(let e in n.headers){let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=e.name.split(`#`)[1]??e.name,s=i.isStructSchema()&&this.useNestedResult()?o+`Result`:void 0,c=await Pb(n.body,t);return c.byteLength>0&&Object.assign(a,await r.read(i,c,s)),a.$metadata=this.deserializeMetadata(n),a}useNestedResult(){return!0}async handleError(e,t,n,r,i){let a=this.loadQueryErrorCode(n,r)??`Unknown`;this.mixin.compose(this.compositeErrorRegistry,a,this.options.defaultNamespace);let o=this.loadQueryError(r)??{},s=this.loadQueryErrorMessage(r);o.message=s,o.Error={Type:o.Type,Code:o.Code,Message:s};let{errorSchema:c,errorMetadata:l}=await this.mixin.getErrorSchemaOrThrowBaseException(a,this.options.defaultNamespace,n,o,i,this.mixin.findQueryCompatibleError),u=ce.of(c),d=new((this.compositeErrorRegistry.getErrorCtor(c))??Error)({}),f={Type:o.Error.Type,Code:o.Error.Code,Error:o.Error};for(let[e,t]of u.structIterator()){let n=t.getMergedTraits().xmlName??e,i=o[n]??r[n];f[e]=this.deserializer.readSchema(t,i)}throw this.mixin.decorateServiceException(Object.assign(d,l,{$fault:u.getMergedTraits().error,message:s},f),r)}loadQueryErrorCode(e,t){let n=(t.Errors?.[0]?.Error??t.Errors?.Error??t.Error)?.Code;if(n!==void 0)return n;if(e.statusCode==404)return`NotFound`}loadQueryError(e){return e.Errors?.[0]?.Error??e.Errors?.Error??e.Error}loadQueryErrorMessage(e){let t=this.loadQueryError(e);return t?.message??t?.Message??e.message??e.Message??`Unknown`}getDefaultContentType(){return`application/x-www-form-urlencoded`}}})),YO,XO=n((()=>{YO=(e,t)=>{if(t?.Error?.Code!==void 0)return t.Error.Code;if(t?.Code!==void 0)return t.Code;if(e.statusCode==404)return`NotFound`}})),ZO,QO,$O=n((()=>{ZO=zO(),yS(),D(),x(),VO(),QO=class extends BO{settings;stringBuffer;byteBuffer;buffer;constructor(e){super(),this.settings=e}write(e,t){let n=ce.of(e);if(n.isStringSchema()&&typeof t==`string`)this.stringBuffer=t;else if(n.isBlobSchema())this.byteBuffer=`byteLength`in t?t:(this.serdeContext?.base64Decoder??me)(t);else{this.buffer=this.writeStruct(n,t,void 0);let e=n.getMergedTraits();e.httpPayload&&!e.xmlName&&this.buffer.withName(n.getName())}}flush(){if(this.byteBuffer!==void 0){let e=this.byteBuffer;return delete this.byteBuffer,e}if(this.stringBuffer!==void 0){let e=this.stringBuffer;return delete this.stringBuffer,e}let e=this.buffer;return this.settings.xmlNamespace&&(e?.attributes?.xmlns||e.addAttribute(`xmlns`,this.settings.xmlNamespace)),delete this.buffer,e.toString()}writeStruct(e,t,n){let r=e.getMergedTraits(),i=e.isMemberSchema()&&!r.httpPayload?e.getMemberTraits().xmlName??e.getMemberName():r.xmlName??e.getName();if(!i||!e.isStructSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${e.getName(!0)}.`);let a=ZO.XmlNode.of(i),[o,s]=this.getXmlnsAttribute(e,n);for(let[n,r]of e.structIterator()){let e=t[n];if(e!=null||r.isIdempotencyToken()){if(r.getMergedTraits().xmlAttribute){a.addAttribute(r.getMergedTraits().xmlName??n,this.writeSimple(r,e));continue}if(r.isListSchema())this.writeList(r,e,a,s);else if(r.isMapSchema())this.writeMap(r,e,a,s);else if(r.isStructSchema())a.addChildNode(this.writeStruct(r,e,s));else{let t=ZO.XmlNode.of(r.getMergedTraits().xmlName??r.getMemberName());this.writeSimpleInto(r,e,t,s),a.addChildNode(t)}}}let{$unknown:c}=t;if(c&&e.isUnionSchema()&&Array.isArray(c)&&Object.keys(t).length===1){let[e,n]=c,r=ZO.XmlNode.of(e);if(typeof n!=`string`){if(t instanceof ZO.XmlNode||t instanceof ZO.XmlText)a.addChildNode(t);else throw Error(`@aws-sdk - $unknown union member in XML requires value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`)}this.writeSimpleInto(0,n,r,s),a.addChildNode(r)}return s&&a.addAttribute(o,s),a}writeList(e,t,n,r){if(!e.isMemberSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${e.getName(!0)}`);let i=e.getMergedTraits(),a=e.getValueSchema(),o=a.getMergedTraits(),s=!!o.sparse,c=!!i.xmlFlattened,[l,u]=this.getXmlnsAttribute(e,r),d=(t,n)=>{if(a.isListSchema())this.writeList(a,Array.isArray(n)?n:[n],t,u);else if(a.isMapSchema())this.writeMap(a,n,t,u);else if(a.isStructSchema()){let r=this.writeStruct(a,n,u);t.addChildNode(r.withName(c?i.xmlName??e.getMemberName():o.xmlName??`member`))}else{let r=ZO.XmlNode.of(c?i.xmlName??e.getMemberName():o.xmlName??`member`);this.writeSimpleInto(a,n,r,u),t.addChildNode(r)}};if(c)for(let e of t)(s||e!=null)&&d(n,e);else{let r=ZO.XmlNode.of(i.xmlName??e.getMemberName());u&&r.addAttribute(l,u);for(let e of t)(s||e!=null)&&d(r,e);n.addChildNode(r)}}writeMap(e,t,n,r,i=!1){if(!e.isMemberSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${e.getName(!0)}`);let a=e.getMergedTraits(),o=e.getKeySchema(),s=o.getMergedTraits().xmlName??`key`,c=e.getValueSchema(),l=c.getMergedTraits(),u=l.xmlName??`value`,d=!!l.sparse,f=!!a.xmlFlattened,[p,m]=this.getXmlnsAttribute(e,r),h=(e,t,n)=>{let r=ZO.XmlNode.of(s,t),[i,a]=this.getXmlnsAttribute(o,m);a&&r.addAttribute(i,a),e.addChildNode(r);let l=ZO.XmlNode.of(u);c.isListSchema()?this.writeList(c,n,l,m):c.isMapSchema()?this.writeMap(c,n,l,m,!0):c.isStructSchema()?l=this.writeStruct(c,n,m):this.writeSimpleInto(c,n,l,m),e.addChildNode(l)};if(f)for(let r in t){let i=t[r];if(d||i!=null){let t=ZO.XmlNode.of(a.xmlName??e.getMemberName());h(t,r,i),n.addChildNode(t)}}else{let r;i||(r=ZO.XmlNode.of(a.xmlName??e.getMemberName()),m&&r.addAttribute(p,m),n.addChildNode(r));for(let e in t){let a=t[e];if(d||a!=null){let t=ZO.XmlNode.of(`entry`);h(t,e,a),(i?n:r).addChildNode(t)}}}}writeSimple(e,t){if(t===null)throw Error(`@aws-sdk/core/protocols - (XML serializer) cannot write null value.`);let n=ce.of(e),r=null;if(t&&typeof t==`object`){if(n.isBlobSchema())r=(this.serdeContext?.base64Encoder??de)(t);else if(n.isTimestampSchema()&&t instanceof Date)switch(Yb(n,this.settings)){case 5:r=t.toISOString().replace(`.000Z`,`Z`);break;case 6:r=Ae(t);break;case 7:r=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using http date`,t),r=Ae(t)}else if(n.isBigDecimalSchema()&&t)return t instanceof ue?t.string:String(t);else if(n.isMapSchema()||n.isListSchema())throw Error(`@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead.`);else throw Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${n.getName(!0)}`)}if((n.isBooleanSchema()||n.isNumericSchema()||n.isBigIntegerSchema()||n.isBigDecimalSchema())&&(r=String(t)),n.isStringSchema()&&(r=t===void 0&&n.isIdempotencyToken()?ae():String(t)),r===null)throw Error(`Unhandled schema-value pair ${n.getName(!0)}=${t}`);return r}writeSimpleInto(e,t,n,r){let i=this.writeSimple(e,t),a=ce.of(e),o=new ZO.XmlText(i),[s,c]=this.getXmlnsAttribute(a,r);c&&n.addAttribute(s,c),n.addChildNode(o)}getXmlnsAttribute(e,t){let[n,r]=e.getMergedTraits().xmlNamespace??[];return r&&r!==t?[n?`xmlns:${n}`:`xmlns`,r]:[void 0,void 0]}}})),ek,tk=n((()=>{VO(),GO(),$O(),ek=class extends BO{settings;constructor(e){super(),this.settings=e}createSerializer(){let e=new QO(this.settings);return e.setSerdeContext(this.serdeContext),e}createDeserializer(){let e=new WO(this.settings);return e.setSerdeContext(this.serdeContext),e}}})),nk,vie=n((()=>{yS(),D(),LO(),XO(),tk(),nk=class extends Hb{codec;serializer;deserializer;mixin=new IO;constructor(e){super(e);let t={timestampFormat:{useTrait:!0,default:5},httpBindings:!0,xmlNamespace:e.xmlNamespace,serviceNamespace:e.defaultNamespace};this.codec=new ek(t),this.serializer=new nx(this.codec.createSerializer(),t),this.deserializer=new $b(this.codec.createDeserializer(),t)}getPayloadCodec(){return this.codec}getShapeId(){return`aws.protocols#restXml`}async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n),i=ce.of(e.input);if(!r.headers[`content-type`]){let e=this.mixin.resolveRestContentType(this.getDefaultContentType(),i);e&&(r.headers[`content-type`]=e)}return typeof r.body==`string`&&r.headers[`content-type`]===this.getDefaultContentType()&&!r.body.startsWith(``+r.body),r}async deserializeResponse(e,t,n){return super.deserializeResponse(e,t,n)}async handleError(e,t,n,r,i){let a=YO(n,r)??`Unknown`;if(this.mixin.compose(this.compositeErrorRegistry,a,this.options.defaultNamespace),r.Error&&typeof r.Error==`object`)for(let e of Object.keys(r.Error))r[e]=r.Error[e],e.toLowerCase()===`message`&&(r.message=r.Error[e]);r.RequestId&&!i.requestId&&(i.requestId=r.RequestId);let{errorSchema:o,errorMetadata:s}=await this.mixin.getErrorSchemaOrThrowBaseException(a,this.options.defaultNamespace,n,r,i),c=ce.of(o),l=r.Error?.message??r.Error?.Message??r.message??r.Message??`UnknownError`,u=new((this.compositeErrorRegistry.getErrorCtor(o))??Error)({});await this.deserializeHttpMessage(o,t,n,r);let d={},f=this.codec.createDeserializer();for(let[e,t]of c.structIterator()){let n=t.getMergedTraits().xmlName??e,i=r.Error?.[n]??r[n];d[e]=f.readSchema(t,i)}throw this.mixin.decorateServiceException(Object.assign(u,s,{$fault:c.getMergedTraits().error,message:l},d),r)}getDefaultContentType(){return`application/xml`}hasUnstructuredPayloadBinding(e){for(let[,t]of e.structIterator())if(t.getMergedTraits().httpPayload)return!(t.isStructSchema()||t.isMapSchema()||t.isListSchema());return!1}}})),rk=n((()=>{yS(),LO(),pie(),_ie(),qO(),vie(),tk(),GO(),$O(),XO()})),ik,yie=n((()=>{rk(),D(),ik=class extends nk{async serializeRequest(e,t,n){let r=await super.serializeRequest(e,t,n),i=ce.of(e.input),a=i.getSchema(),o=0,s=a[6]??0;if(t&&typeof t==`object`)for(let[e,n]of i.structIterator()){if(++o>s)break;if(e===`Bucket`){if(!t.Bucket&&n.getMergedTraits().httpLabel)throw Error(`No value provided for input HTTP label: Bucket.`);break}}return r}}})),ak,ok,sk,bie=n((()=>{nt(),ak=`AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS`,ok=`s3_disable_multiregion_access_points`,sk={environmentVariableSelector:e=>st(e,ak,A.ENV),configFileSelector:e=>st(e,ok,A.CONFIG),default:!1}})),ck,lk,uk,xie=n((()=>{nt(),ck=`AWS_S3_USE_ARN_REGION`,lk=`s3_use_arn_region`,uk={environmentVariableSelector:e=>st(e,ck,A.ENV),configFileSelector:e=>st(e,lk,A.CONFIG),default:void 0}})),dk,fk,pk,mk,hk,gk,_k,vk,yk,bk,xk,Sk,Ck,wk,Tk,Ek,Dk,Ok,kk,Ak,jk,Mk,Nk,Pk,Fk,Ik,Lk=n((()=>{dk=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,fk=/(\d+\.){3}\d+/,pk=/\.\./,mk=/\./,hk=/^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./,gk=/^s3(-external-1)?\.amazonaws\.com$/,_k=`amazonaws.com`,vk=e=>typeof e.bucketName==`string`,yk=e=>dk.test(e)&&!fk.test(e)&&!pk.test(e),bk=e=>{let t=e.match(hk);return[t[4],e.replace(RegExp(`^${t[0]}`),``)]},xk=e=>gk.test(e)?[`us-east-1`,_k]:bk(e),Sk=e=>gk.test(e)?[e.replace(`.${_k}`,``),_k]:bk(e),Ck=e=>{if(e.pathStyleEndpoint)throw Error(`Path-style S3 endpoint is not supported when bucket is an ARN`);if(e.accelerateEndpoint)throw Error(`Accelerate endpoint is not supported when bucket is an ARN`);if(!e.tlsCompatible)throw Error(`HTTPS is required when bucket is an ARN`)},wk=e=>{if(e!==`s3`&&e!==`s3-outposts`&&e!==`s3-object-lambda`)throw Error(`Expect 's3' or 's3-outposts' or 's3-object-lambda' in ARN service component`)},Tk=e=>{if(e!==`s3`)throw Error(`Expect 's3' in Accesspoint ARN service component`)},Ek=e=>{if(e!==`s3-outposts`)throw Error(`Expect 's3-posts' in Outpost ARN service component`)},Dk=(e,t)=>{if(e!==t.clientPartition)throw Error(`Partition in ARN is incompatible, got "${e}" but expected "${t.clientPartition}"`)},Ok=(e,t)=>{},kk=e=>{if([`s3-external-1`,`aws-global`].includes(e))throw Error(`Client region ${e} is not regional`)},Ak=e=>{if(!/[0-9]{12}/.exec(e))throw Error(`Access point ARN accountID does not match regex '[0-9]{12}'`)},jk=(e,t={tlsCompatible:!0})=>{if(e.length>=64||!/^[a-z0-9][a-z0-9.-]*[a-z0-9]$/.test(e)||/(\d+\.){3}\d+/.test(e)||/[.-]{2}/.test(e)||t?.tlsCompatible&&mk.test(e))throw Error(`Invalid DNS label ${e}`)},Mk=e=>{if(e.isCustomEndpoint){if(e.dualstackEndpoint)throw Error(`Dualstack endpoint is not supported with custom endpoint`);if(e.accelerateEndpoint)throw Error(`Accelerate endpoint is not supported with custom endpoint`)}},Nk=e=>{let t=e.includes(`:`)?`:`:`/`,[n,...r]=e.split(t);if(n===`accesspoint`){if(r.length!==1||r[0]===``)throw Error(`Access Point ARN should have one resource accesspoint${t}{accesspointname}`);return{accesspointName:r[0]}}if(n===`outpost`){if(!r[0]||r[1]!==`accesspoint`||!r[2]||r.length!==3)throw Error(`Outpost ARN should have resource outpost${t}{outpostId}${t}accesspoint${t}{accesspointName}`);let[e,n,i]=r;return{outpostId:e,accesspointName:i}}throw Error(`ARN resource should begin with 'accesspoint${t}' or 'outpost${t}'`)},Pk=e=>{},Fk=e=>{if(e)throw Error(`FIPS region is not supported with Outpost.`)},Ik=e=>{try{e.split(`.`).forEach(e=>{jk(e)})}catch{throw Error(`"${e}" is not a DNS compatible name.`)}}})),Rk,zk,Bk,Vk,Hk,Uk,Wk,Gk=n((()=>{Lk(),Rk=e=>(Mk(e),vk(e)?zk(e):Bk(e)),zk=({accelerateEndpoint:e=!1,clientRegion:t,baseHostname:n,bucketName:r,dualstackEndpoint:i=!1,fipsEndpoint:a=!1,pathStyleEndpoint:o=!1,tlsCompatible:s=!0,isCustomEndpoint:c=!1})=>{let[l,u]=c?[t,n]:xk(n);return o||!yk(r)||s&&mk.test(r)?{bucketEndpoint:!1,hostname:i?`s3.dualstack.${l}.${u}`:n}:(e?n=`s3-accelerate${i?`.dualstack`:``}.${u}`:i&&(n=`s3.dualstack.${l}.${u}`),{bucketEndpoint:!0,hostname:`${r}.${n}`})},Bk=e=>{let{isCustomEndpoint:t,baseHostname:n,clientRegion:r}=e,i=t?n:Sk(n)[1],{pathStyleEndpoint:a,accelerateEndpoint:o=!1,fipsEndpoint:s=!1,tlsCompatible:c=!0,bucketName:l,clientPartition:u=`aws`}=e;Ck({pathStyleEndpoint:a,accelerateEndpoint:o,tlsCompatible:c});let{service:d,partition:f,accountId:p,region:m,resource:h}=l;wk(d),Dk(f,{clientPartition:u}),Ak(p);let{accesspointName:g,outpostId:v}=Nk(h);return d===`s3-object-lambda`?Vk({...e,tlsCompatible:c,bucketName:l,accesspointName:g,hostnameSuffix:i}):m===``?Hk({...e,clientRegion:r,mrapAlias:g,hostnameSuffix:i}):v?Uk({...e,clientRegion:r,outpostId:v,accesspointName:g,hostnameSuffix:i}):Wk({...e,clientRegion:r,accesspointName:g,hostnameSuffix:i})},Vk=({dualstackEndpoint:e=!1,fipsEndpoint:t=!1,tlsCompatible:n=!0,useArnRegion:r,clientRegion:i,clientSigningRegion:a=i,accesspointName:o,bucketName:s,hostnameSuffix:c})=>{let{accountId:l,region:u,service:d}=s;kk(i);let f=`${o}-${l}`;jk(f,{tlsCompatible:n});let p=r?u:i,m=r?u:a;return{bucketEndpoint:!0,hostname:`${f}.${d}${t?`-fips`:``}.${p}.${c}`,signingRegion:m,signingService:d}},Hk=({disableMultiregionAccessPoints:e,dualstackEndpoint:t=!1,isCustomEndpoint:n,mrapAlias:r,hostnameSuffix:i})=>{if(e===!0)throw Error(`SDK is attempting to use a MRAP ARN. Please enable to feature.`);return Ik(r),{bucketEndpoint:!0,hostname:`${r}${n?``:`.accesspoint.s3-global`}.${i}`,signingRegion:`*`}},Uk=({useArnRegion:e,clientRegion:t,clientSigningRegion:n=t,bucketName:r,outpostId:i,dualstackEndpoint:a=!1,fipsEndpoint:o=!1,tlsCompatible:s=!0,accesspointName:c,isCustomEndpoint:l,hostnameSuffix:u})=>{kk(t);let d=`${c}-${r.accountId}`;jk(d,{tlsCompatible:s});let f=e?r.region:t,p=e?r.region:n;return Ek(r.service),jk(i,{tlsCompatible:s}),Fk(o),{bucketEndpoint:!0,hostname:`${`${d}.${i}`}${l?``:`.s3-outposts.${f}`}.${u}`,signingRegion:p,signingService:`s3-outposts`}},Wk=({useArnRegion:e,clientRegion:t,clientSigningRegion:n=t,bucketName:r,dualstackEndpoint:i=!1,fipsEndpoint:a=!1,tlsCompatible:o=!0,accesspointName:s,isCustomEndpoint:c,hostnameSuffix:l})=>{kk(t);let u=`${s}-${r.accountId}`;jk(u,{tlsCompatible:o});let d=e?r.region:t,f=e?r.region:n;return Tk(r.service),{bucketEndpoint:!0,hostname:`${u}${c?``:`.s3-accesspoint${a?`-fips`:``}${i?`.dualstack`:``}.${d}`}.${l}`,signingRegion:f}}})),Kk,qk,Jk,Sie=n((()=>{jO(),yS(),Gk(),Kk=e=>(t,n)=>async r=>{let{Bucket:i}=r.input,a=e.bucketEndpoint,o=r.request;if(rt.isInstance(o)){if(e.bucketEndpoint)o.hostname=i;else if(kO(i)){let t=AO(i),r=await e.region(),s=await e.useDualstackEndpoint(),c=await e.useFipsEndpoint(),{partition:l,signingRegion:u=r}=await e.regionInfoProvider(r,{useDualstackEndpoint:s,useFipsEndpoint:c})||{},d=await e.useArnRegion(),{hostname:f,bucketEndpoint:p,signingRegion:m,signingService:h}=Rk({bucketName:t,baseHostname:o.hostname,accelerateEndpoint:e.useAccelerateEndpoint,dualstackEndpoint:s,fipsEndpoint:c,pathStyleEndpoint:e.forcePathStyle,tlsCompatible:o.protocol===`https:`,useArnRegion:d,clientPartition:l,clientSigningRegion:u,clientRegion:r,isCustomEndpoint:e.isCustomEndpoint,disableMultiregionAccessPoints:await e.disableMultiregionAccessPoints()});m&&m!==u&&(n.signing_region=m),h&&h!==`s3`&&(n.signing_service=h),o.hostname=f,a=p}else{let t=await e.region(),n=await e.useDualstackEndpoint(),r=await e.useFipsEndpoint(),{hostname:s,bucketEndpoint:c}=Rk({bucketName:i,clientRegion:t,baseHostname:o.hostname,accelerateEndpoint:e.useAccelerateEndpoint,dualstackEndpoint:n,fipsEndpoint:r,pathStyleEndpoint:e.forcePathStyle,tlsCompatible:o.protocol===`https:`,isCustomEndpoint:e.isCustomEndpoint});o.hostname=s,a=c}a&&(o.path=o.path.replace(/^(\/)?[^\/]+/,``),o.path===``&&(o.path=`/`))}return t({...r,request:o})},qk={tags:[`BUCKET_ENDPOINT`],name:`bucketEndpointMiddleware`,relation:`before`,toMiddleware:`hostHeaderMiddleware`,override:!0},Jk=e=>({applyToStack:t=>{t.addRelativeTo(Kk(e),qk)}})}));function Cie(e){let{bucketEndpoint:t=!1,forcePathStyle:n=!1,useAccelerateEndpoint:r=!1,useArnRegion:i,disableMultiregionAccessPoints:a=!1}=e;return Object.assign(e,{bucketEndpoint:t,forcePathStyle:n,useAccelerateEndpoint:r,useArnRegion:typeof i==`function`?i:()=>Promise.resolve(i),disableMultiregionAccessPoints:typeof a==`function`?a:()=>Promise.resolve(a)})}var wie=n((()=>{}));function Yk(e){return t=>async n=>{let{request:r}=n;if(e.expectContinueHeader!==!1&&rt.isInstance(r)&&r.body&&e.runtime===`node`&&e.requestHandler?.constructor?.name!==`FetchHttpHandler`){let t=!0;if(typeof e.expectContinueHeader==`number`)try{t=(Number(r.headers?.[`content-length`])??e.bodyLengthChecker?.(r.body)??1/0)>=e.expectContinueHeader}catch{}else t=!!e.expectContinueHeader;t&&(r.headers.Expect=`100-continue`)}return t({...n,request:r})}}var Xk,Zk,Tie=n((()=>{yS(),Xk={step:`build`,tags:[`SET_EXPECT_HEADER`,`EXPECT_HEADER`],name:`addExpectContinueMiddleware`,override:!0},Zk=e=>({applyToStack:t=>{t.add(Yk(e),Xk)}})}));function Qk(e){return t=>async n=>{let{CreateBucketConfiguration:r}=n.input,i=await e.region();return!r?.LocationConstraint&&!r?.Location&&i!==`us-east-1`&&(n.input.CreateBucketConfiguration=n.input.CreateBucketConfiguration??{},n.input.CreateBucketConfiguration.LocationConstraint=i),t(n)}}var $k,eA,Eie=n((()=>{$k={step:`initialize`,tags:[`LOCATION_CONSTRAINT`,`CREATE_BUCKET_CONFIGURATION`],name:`locationConstraintMiddleware`,override:!0},eA=e=>({applyToStack:t=>{t.add(Qk(e),$k)}})}));function Die(e){return e}var Oie=n((()=>{}));function tA(e){return t=>async n=>{let r={...n.input};for(let t of[{target:`SSECustomerKey`,hash:`SSECustomerKeyMD5`},{target:`CopySourceSSECustomerKey`,hash:`CopySourceSSECustomerKeyMD5`}]){let n=r[t.target];if(n){let i;typeof n==`string`?nA(n,e)?i=e.base64Decoder(n):(i=e.utf8Decoder(n),r[t.target]=e.base64Encoder(i)):(i=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n),r[t.target]=e.base64Encoder(i));let a=new e.md5;a.update(i),r[t.hash]=e.base64Encoder(await a.digest())}}return t({...n,input:r})}}function nA(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return t.base64Decoder(e).length===32}catch{return!1}}var rA,iA,kie=n((()=>{rA={name:`ssecMiddleware`,step:`initialize`,tags:[`SSE`],override:!0},iA=e=>({applyToStack:t=>{t.add(tA(e),rA)}})})),Aie=/* @__PURE__ */ i({NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS:()=>sk,NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME:()=>ak,NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME:()=>ok,NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS:()=>pO,NODE_USE_ARN_REGION_CONFIG_OPTIONS:()=>uk,NODE_USE_ARN_REGION_ENV_NAME:()=>ck,NODE_USE_ARN_REGION_INI_NAME:()=>lk,S3ExpressIdentityCache:()=>gE,S3ExpressIdentityCacheEntry:()=>vE,S3ExpressIdentityProviderImpl:()=>bE,S3RestXmlProtocol:()=>ik,SignatureV4S3Express:()=>sO,addExpectContinueMiddleware:()=>Yk,addExpectContinueMiddlewareOptions:()=>Xk,bucketEndpointMiddleware:()=>Kk,bucketEndpointMiddlewareOptions:()=>qk,bucketHostname:()=>Rk,checkContentLengthHeader:()=>aE,checkContentLengthHeaderMiddlewareOptions:()=>cE,getAddExpectContinuePlugin:()=>Zk,getArnResources:()=>Nk,getBucketEndpointPlugin:()=>Jk,getCheckContentLengthHeaderPlugin:()=>lE,getLocationConstraintPlugin:()=>eA,getRegionRedirectMiddlewarePlugin:()=>hE,getS3ExpiresMiddlewarePlugin:()=>TE,getS3ExpressHttpSigningPlugin:()=>CO,getS3ExpressPlugin:()=>_O,getSsecPlugin:()=>iA,getSuffixForArnEndpoint:()=>Sk,getThrow200ExceptionsPlugin:()=>OO,getValidateBucketNamePlugin:()=>FO,isValidBase64EncodedSSECustomerKey:()=>nA,locationConstraintMiddleware:()=>Qk,locationConstraintMiddlewareOptions:()=>$k,regionRedirectEndpointMiddleware:()=>uE,regionRedirectEndpointMiddlewareOptions:()=>dE,regionRedirectMiddleware:()=>pE,regionRedirectMiddlewareOptions:()=>mE,resolveBucketEndpointConfig:()=>Cie,resolveLocationConstraintConfig:()=>Die,resolveS3Config:()=>SE,s3ExpiresMiddleware:()=>CE,s3ExpiresMiddlewareOptions:()=>wE,s3ExpressHttpSigningMiddleware:()=>SO,s3ExpressHttpSigningMiddlewareOptions:()=>xO,s3ExpressMiddleware:()=>hO,s3ExpressMiddlewareOptions:()=>gO,ssecMiddleware:()=>tA,ssecMiddlewareOptions:()=>rA,throw200ExceptionsMiddleware:()=>TO,throw200ExceptionsMiddlewareOptions:()=>DO,validateAccountId:()=>Ak,validateBucketNameMiddleware:()=>NO,validateBucketNameMiddlewareOptions:()=>PO,validateDNSHostLabel:()=>jk,validateNoDualstack:()=>Pk,validateNoFIPS:()=>Fk,validateOutpostService:()=>Ek,validatePartition:()=>Dk,validateRegion:()=>Ok}),jie=n((()=>{Qne(),fE(),$ne(),ere(),tre(),_E(),yE(),xE(),nie(),mO(),rie(),aie(),cie(),fie(),yie(),bie(),xie(),Sie(),Gk(),wie(),Lk(),Tie(),Eie(),Oie(),kie()})),aA,oA,Mie=n((()=>{yS(),aA=e=>fe.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,oA=e=>fe.isInstance(e)?e.headers?.age??e.headers?.Age:void 0})),sA,Nie=n((()=>{sA=e=>new Date(Date.now()+e)})),cA,Pie=n((()=>{cA=(e,t,n,r)=>{if(r!==void 0)return t;let i=Date.parse(e),a=Date.now();return n!==void 0&&a-n>9e5?t:n===void 0?i-a:i-(n+a)/2}})),lA=n((()=>{Mie(),Nie(),Pie()})),uA,dA,fA,pA,mA,hA,gA=n((()=>{yS(),uA=ct(),lA(),dA=(e,t)=>{if(!t)throw Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},fA=e=>e.context?.[uA.SMITHY_CONTEXT_KEY]?.eventStream?.output===!0,pA=async e=>{let t=dA(`context`,e.context),n=dA(`config`,e.config),r=t.endpointV2?.properties?.authSchemes?.[0];return{config:n,signer:await dA(`signer`,n.signer)(r),signingRegion:e?.signingRegion,signingRegionSet:e?.signingRegionSet,signingName:e?.signingName}},mA=class{async sign(e,t,n){if(!rt.isInstance(e))throw Error("The request is not an instance of `HttpRequest` and cannot be signed");let r=await pA(n),{config:i,signer:a}=r,{signingRegion:o,signingName:s}=r,c=n.context;if(c?.authSchemes?.length??!1){let[e,t]=c.authSchemes;e?.name===`sigv4a`&&t?.name===`sigv4`&&(o=t?.signingRegion??o,s=t?.signingName??s)}let l=await i.disableClockSkewCorrection?.()===!0;n._disableClockSkewCorrection=l;let u=l||fA(n);return n._skipClockSkewSampling=u,u||(n._preRequestSystemClockOffset=i.systemClockOffset,n._requestSentAt=Date.now()),await a.sign(e,{signingDate:l?/* @__PURE__ */ new Date:sA(i.systemClockOffset),signingRegion:o,signingService:s})}errorHandler(e){return t=>{let n=t;if(!e._skipClockSkewSampling&&!e._disableClockSkewCorrection){let t=n.ServerTime??aA(n.$response);if(t){let r=dA(`config`,e.config),i=e._preRequestSystemClockOffset,a=e._requestSentAt,o=oA(n.$response),s=cA(t,r.systemClockOffset,a,o);r.systemClockOffset=s,Math.abs(s)>=24e4&&(s!==i||i!==void 0&&i!==s)&&n.$metadata&&(n.$metadata.clockSkewCorrected=!0)}}throw t}}successHandler(e,t){if(t._skipClockSkewSampling||t._disableClockSkewCorrection)return;let n=aA(e);if(n){let r=dA(`config`,t.config),i=t._requestSentAt,a=oA(e);r.systemClockOffset=cA(n,r.systemClockOffset,i,a)}}},hA=mA})),_A,Fie=n((()=>{yS(),lA(),gA(),_A=class extends mA{async sign(e,t,n){if(!rt.isInstance(e))throw Error("The request is not an instance of `HttpRequest` and cannot be signed");let{config:r,signer:i,signingRegion:a,signingRegionSet:o,signingName:s}=await pA(n),c=(await r.sigv4aSigningRegionSet?.()??o??[a]).join(`,`),l=await r.disableClockSkewCorrection?.()===!0;return n._disableClockSkewCorrection=l,l||(n._preRequestSystemClockOffset=r.systemClockOffset,n._requestSentAt=Date.now()),await i.sign(e,{signingDate:l?/* @__PURE__ */ new Date:sA(r.systemClockOffset),signingRegion:c,signingService:s})}}})),vA,Iie=n((()=>{vA=e=>typeof e==`string`&&e.length>0?e.split(`,`).map(e=>e.trim()):[]})),yA,bA=n((()=>{yA=e=>`AWS_BEARER_TOKEN_${e.replace(/[\s-]/g,`_`).toUpperCase()}`})),xA,SA,CA,Lie=n((()=>{Iie(),bA(),xA=`AWS_AUTH_SCHEME_PREFERENCE`,SA=`auth_scheme_preference`,CA={environmentVariableSelector:(e,t)=>{if(t?.signingName&&yA(t.signingName)in e)return[`httpBearerAuth`];if(xA in e)return vA(e[xA])},configFileSelector:e=>{if(SA in e)return vA(e[SA])},default:[]}})),wA,TA,Rie=n((()=>{yw(),nt(),wA=e=>(e.sigv4aSigningRegionSet=ow(e.sigv4aSigningRegionSet),e),TA={environmentVariableSelector(e){if(e.AWS_SIGV4A_SIGNING_REGION_SET)return e.AWS_SIGV4A_SIGNING_REGION_SET.split(`,`).map(e=>e.trim());throw new z(`AWS_SIGV4A_SIGNING_REGION_SET not set in env.`,{tryNextLink:!0})},configFileSelector(e){if(e.sigv4a_signing_region_set)return(e.sigv4a_signing_region_set??``).split(`,`).map(e=>e.trim());throw new z(`sigv4a_signing_region_set not set in profile.`,{tryNextLink:!0})},default:void 0}}));function zie(e,{credentials:t,credentialDefaultProvider:n}){let r;return r=t?t?.memoized?t:vw(t,gw,_w):n?ow(n(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured.")},r.memoized=!0,r}function Bie(e,t){if(t.configBound)return t;let n=async n=>t({...n,callerClientConfig:e});return n.memoized=t.memoized,n.configBound=!0,n}var EA,DA,Vie=n((()=>{uT(),yw(),EA=iO(),DA=e=>t=>{let n=t.credentials,r=!!t.credentials,i;Object.defineProperty(t,"credentials",{set(e){e&&e!==n&&e!==i&&(r=!0),n=e;let a=Bie(t,zie(t,{credentials:n,credentialDefaultProvider:t.credentialDefaultProvider}));if(r&&!a.attributed){let e=typeof n==`object`&&!!n;i=async t=>{let n=await a(t);return e&&(!n.$source||Object.keys(n.$source).length===0)?Ab(n,`CREDENTIALS_CODE`,`e`):n},i.memoized=a.memoized,i.configBound=a.configBound,i.attributed=!0}else i=a},get(){return i},enumerable:!0,configurable:!0}),t.credentials=n;let{signingEscapePath:a=!0,systemClockOffset:o=t.systemClockOffset||0,sha256:s}=t,c;return c=t.signer?ow(t.signer):t.regionInfoProvider?()=>ow(t.region)().then(async e=>[await t.regionInfoProvider(e,{useFipsEndpoint:await t.useFipsEndpoint(),useDualstackEndpoint:await t.useDualstackEndpoint()})||{},e]).then(([e,n])=>{let{signingRegion:r,signingService:i}=e;t.signingRegion=t.signingRegion||r||n,t.signingName=t.signingName||i||t.serviceId;let o={...t,credentials:t.credentials,region:t.signingRegion,service:t.signingName,sha256:s,uriEscapePath:a};return new(t.signerConstructor||EA.SignatureV4)(o)}):async e=>{e=Object.assign({},{name:`sigv4`,signingName:t.signingName||t.defaultSigningName,signingRegion:await ow(t.region)(),properties:{}},e);let n=e.signingRegion,r=e.signingName;t.signingRegion=t.signingRegion||n,t.signingName=t.signingName||r||t.serviceId;let i={...t,credentials:t.credentials,region:t.signingRegion,service:t.signingName,sha256:s,uriEscapePath:a};return new(t.signerConstructor||EA.SignatureV4)(i)},Object.assign(t,{systemClockOffset:o,signingEscapePath:a,signer:c,disableClockSkewCorrection:ow(t.disableClockSkewCorrection??e)})}})),Hie=n((()=>{gA(),Fie(),Lie(),Rie(),Vie()})),OA,kA,AA,Uie=n((()=>{nt(),OA=`AWS_DISABLE_CLOCK_SKEW_CORRECTION`,kA=`disable_clock_skew_correction`,AA={environmentVariableSelector:e=>st(e,OA,A.ENV),configFileSelector:e=>st(e,kA,A.CONFIG),default:!1}})),jA,Wie=n((()=>{nt(),Uie(),jA=w(AA)})),MA=/* @__PURE__ */ i({AWSSDKSigV4Signer:()=>hA,AwsSdkSigV4ASigner:()=>_A,AwsSdkSigV4Signer:()=>mA,NODE_AUTH_SCHEME_PREFERENCE_OPTIONS:()=>CA,NODE_SIGV4A_CONFIG_OPTIONS:()=>TA,getBearerTokenEnvKey:()=>yA,resolveAWSSDKSigV4Config:()=>PA,resolveAwsSdkSigV4AConfig:()=>wA,resolveAwsSdkSigV4Config:()=>NA,validateSigningProperties:()=>pA}),NA,PA,FA=n((()=>{Hie(),bA(),Wie(),NA=DA(jA),PA=NA})),IA=/* @__PURE__ */ a((t=>{let{setCredentialFeature:n}=(uT(),e(lT)),{CredentialsProviderError:r}=(nt(),e(he)),i=`AWS_ACCESS_KEY_ID`,a=`AWS_SECRET_ACCESS_KEY`,o=`AWS_SESSION_TOKEN`,s=`AWS_CREDENTIAL_EXPIRATION`,c=`AWS_CREDENTIAL_SCOPE`,l=`AWS_ACCOUNT_ID`;t.ENV_ACCOUNT_ID=l,t.ENV_CREDENTIAL_SCOPE=c,t.ENV_EXPIRATION=s,t.ENV_KEY=i,t.ENV_SECRET=a,t.ENV_SESSION=o,t.fromEnv=e=>async()=>{e?.logger?.debug(`@aws-sdk/credential-provider-env - fromEnv`);let t=process.env[i],u=process.env[a],d=process.env[o],f=process.env[s],p=process.env[c],m=process.env[l];if(t&&u){let e={accessKeyId:t,secretAccessKey:u,...d&&{sessionToken:d},...f&&{expiration:new Date(f)},...p&&{credentialScope:p},...m&&{accountId:m}};return n(e,`CREDENTIALS_ENV_VARS`,`g`),e}throw new r(`Unable to find environment variable credentials.`,{logger:e?.logger})}})),LA,RA=n((()=>{LA=class e extends Error{name=`ProviderError`;tryNextLink;constructor(t,n=!0){let r,i=!0;typeof n==`boolean`?(r=void 0,i=n):typeof n==`object`&&n&&(r=n.logger,i=n.tryNextLink??!0),super(t),this.tryNextLink=i,Object.setPrototypeOf(this,e.prototype),r?.debug?.(`@smithy/property-provider ${i?`->`:`(!)`} ${t}`)}static from(e,t=!0){return Object.assign(new this(e.message,t),e)}}})),zA,BA=n((()=>{RA(),zA=class e extends LA{name=`CredentialsProviderError`;constructor(t,n=!0){super(t,n),Object.setPrototypeOf(this,e.prototype)}}})),VA,Gie=n((()=>{RA(),VA=class e extends LA{name=`TokenProviderError`;constructor(t,n=!0){super(t,n),Object.setPrototypeOf(this,e.prototype)}}})),HA,UA=n((()=>{RA(),HA=(...e)=>async()=>{if(e.length===0)throw new LA(`No providers in chain`);let t;for(let n of e)try{return await n()}catch(e){if(t=e,e?.tryNextLink)continue;throw e}throw t}})),WA,GA=n((()=>{WA=e=>()=>Promise.resolve(e)})),KA,qA=n((()=>{KA=(e,t,n)=>{let r,i,a,o=!1,s=async()=>{i||=e();try{r=await i,a=!0,o=!1}finally{i=void 0}return r};return t===void 0?async e=>((!a||e?.forceRefresh)&&(r=await s()),r):async e=>((!a||e?.forceRefresh)&&(r=await s()),o?r:n&&!n(r)?(o=!0,r):(t(r)&&await s(),r))}})),JA,YA=n((()=>{JA=(e,t,n)=>{if(t in e){if(e[t]===`true`)return!0;if(e[t]===`false`)return!1;throw Error(`Cannot load ${n} "${t}". Expected "true" or "false", got ${e[t]}.`)}}})),XA,Kie=n((()=>{XA=(e,t,n)=>{if(!(t in e))return;let r=parseInt(e[t],10);if(Number.isNaN(r))throw TypeError(`Cannot load ${n} '${t}'. Expected number, got '${e[t]}'.`);return r}})),ZA,QA=n((()=>{(function(e){e.ENV=`env`,e.CONFIG=`shared config entry`})(ZA||={})})),$A,ej,tj,nj=n((()=>{$A={},ej=()=>process&&process.geteuid?`${process.geteuid()}`:`DEFAULT`,tj=()=>{let{HOME:e,USERPROFILE:t,HOMEPATH:n,HOMEDRIVE:r=`C:${nee}`}=process.env;if(e)return e;if(t)return t;if(n)return`${r}${n}`;let i=ej();return $A[i]||($A[i]=Gr()),$A[i]}})),rj,ij,aj,oj=n((()=>{rj=`AWS_PROFILE`,ij=`default`,aj=e=>e.profile||process.env.AWS_PROFILE||`default`})),sj,cj=n((()=>{nj(),sj=e=>{let t=Tr(`sha1`).update(e).digest(`hex`);return Nr(tj(),`.aws`,`sso`,`cache`,`${t}.json`)}})),lj,uj,dj=n((()=>{cj(),lj={},uj=async e=>{if(lj[e])return lj[e];let t=sj(e),n=await jr(t,`utf8`);return JSON.parse(n)}})),fj=n((()=>{})),pj,mj,qie=n((()=>{pj=ct(),fj(),mj=e=>Object.entries(e).filter(([e])=>{let t=e.indexOf(`.`);return t!==-1&&Object.values(pj.IniSectionType).includes(e.substring(0,t))}).reduce((e,[t,n])=>{let r=t.indexOf(`.`),i=t.substring(0,r)===pj.IniSectionType.PROFILE?t.substring(r+1):t;return e[i]=n,e},{...e.default&&{default:e.default}})})),hj,gj=n((()=>{nj(),hj=()=>process.env.AWS_CONFIG_FILE||Nr(tj(),`.aws`,`config`)})),_j,Jie=n((()=>{nj(),_j=()=>process.env.AWS_SHARED_CREDENTIALS_FILE||Nr(tj(),`.aws`,`credentials`)})),vj,yj,bj,xj,Sj=n((()=>{vj=ct(),fj(),yj=/^([\w-]+)\s(["'])?([\w-@+.%:/]+)\2$/,bj=[`__proto__`,`profile __proto__`],xj=e=>{let t={},n,r;for(let i of e.split(/\r?\n/)){let e=i.split(/(^|\s)[;#]/)[0].trim();if(e[0]===`[`&&e[e.length-1]===`]`){n=void 0,r=void 0;let t=e.substring(1,e.length-1),i=yj.exec(t);if(i){let[,e,,t]=i;Object.values(vj.IniSectionType).includes(e)&&(n=[e,t].join(`.`))}else n=t;if(bj.includes(t))throw Error(`Found invalid profile name "${t}"`)}else if(n){let a=e.indexOf(`=`);if(![0,-1].includes(a)){let[o,s]=[e.substring(0,a).trim(),e.substring(a+1).trim()];if(s===``)r=o;else{r&&i.trimStart()===i&&(r=void 0),t[n]=t[n]||{};let e=r?[r,o].join(`.`):o;t[n][e]=s}}}}return t}})),Cj,wj,Tj,Ej=n((()=>{Cj={},wj={},Tj=(e,t)=>wj[e]===void 0?((!Cj[e]||t?.ignoreCache)&&(Cj[e]=jr(e,`utf8`)),Cj[e]):wj[e]})),Dj,Oj,kj=n((()=>{qie(),gj(),Jie(),nj(),Sj(),Ej(),fj(),Dj=()=>({}),Oj=async(e={})=>{let{filepath:t=_j(),configFilepath:n=hj()}=e,r=tj(),i=t;t.startsWith(`~/`)&&(i=Nr(r,t.slice(2)));let a=n;n.startsWith(`~/`)&&(a=Nr(r,n.slice(2)));let o=await Promise.all([Tj(a,{ignoreCache:e.ignoreCache}).then(xj).then(mj).catch(Dj),Tj(i,{ignoreCache:e.ignoreCache}).then(xj).catch(Dj)]);return{configFile:o[0],credentialsFile:o[1]}}})),Aj,jj,Yie=n((()=>{Aj=ct(),kj(),jj=e=>Object.entries(e).filter(([e])=>e.startsWith(Aj.IniSectionType.SSO_SESSION+`.`)).reduce((e,[t,n])=>({...e,[t.substring(t.indexOf(`.`)+1)]:n}),{})})),Mj,Nj,Xie=n((()=>{gj(),Yie(),Sj(),Ej(),Mj=()=>({}),Nj=async(e={})=>Tj(e.configFilepath??hj()).then(xj).then(jj).catch(Mj)})),Pj,Zie=n((()=>{Pj=(...e)=>{let t={};for(let n of e)for(let[e,r]of Object.entries(n))t[e]===void 0?t[e]=r:Object.assign(t[e],r);return t}})),Fj,Qie=n((()=>{kj(),Zie(),Fj=async e=>{let t=await Oj(e);return Pj(t.configFile,t.credentialsFile)}})),Ij,$ie=n((()=>{dj(),Ej(),Ij={getFileRecord(){return wj},interceptFile(e,t){wj[e]=Promise.resolve(t)},getTokenRecord(){return lj},interceptToken(e,t){lj[e]=t}}}));function Lj(e){try{let t=new Set(Array.from(e.match(/([A-Z_]){3,}/g)??[]));return t.delete(`CONFIG`),t.delete(`CONFIG_PREFIX_SEPARATOR`),t.delete(`ENV`),[...t].join(`, `)}catch{return e}}var Rj=n((()=>{})),zj,eae=n((()=>{BA(),Rj(),zj=(e,t)=>async()=>{try{let n=e(process.env,t);if(n===void 0)throw Error();return n}catch(n){throw new zA(n.message||`Not found in ENV: ${Lj(e.toString())}`,{logger:t?.logger})}}})),Bj,tae=n((()=>{BA(),oj(),kj(),Rj(),Bj=(e,{preferredFile:t=`config`,...n}={})=>async()=>{let r=aj(n),{configFile:i,credentialsFile:a}=await Oj(n),o=a[r]||{},s=i[r]||{},c=t===`config`?{...o,...s}:{...s,...o};try{let n=e(c,t===`config`?i:a);if(n===void 0)throw Error();return n}catch(t){throw new zA(t.message||`Not found in config files w/ profile [${r}]: ${Lj(e.toString())}`,{logger:n.logger})}}})),Vj,Hj,Uj=n((()=>{GA(),Vj=e=>typeof e==`function`,Hj=e=>Vj(e)?async()=>await e():WA(e)})),Wj,Gj=n((()=>{UA(),qA(),eae(),tae(),Uj(),Wj=({environmentVariableSelector:e,configFileSelector:t,default:n},r={})=>{let{signingName:i,logger:a}=r;return KA(HA(zj(e,{signingName:i,logger:a}),Bj(t,r),Hj(n)))}})),Kj,qj,Jj,Yj,nae=n((()=>{YA(),QA(),Kj=`AWS_USE_DUALSTACK_ENDPOINT`,qj=`use_dualstack_endpoint`,Jj={environmentVariableSelector:e=>JA(e,Kj,ZA.ENV),configFileSelector:e=>JA(e,qj,ZA.CONFIG),default:!1},Yj={environmentVariableSelector:e=>JA(e,Kj,ZA.ENV),configFileSelector:e=>JA(e,qj,ZA.CONFIG),default:void 0}})),Xj,Zj,Qj,$j,rae=n((()=>{YA(),QA(),Xj=`AWS_USE_FIPS_ENDPOINT`,Zj=`use_fips_endpoint`,Qj={environmentVariableSelector:e=>JA(e,Xj,ZA.ENV),configFileSelector:e=>JA(e,Zj,ZA.CONFIG),default:!1},$j={environmentVariableSelector:e=>JA(e,Xj,ZA.ENV),configFileSelector:e=>JA(e,Zj,ZA.CONFIG),default:void 0}})),eM=n((()=>{Vt()})),tM,iae=n((()=>{eM(),tM=e=>{let{tls:t,endpoint:n,urlParser:r,useDualstackEndpoint:i}=e;return Object.assign(e,{tls:t??!0,endpoint:qt(typeof n==`string`?r(n):n),isCustomEndpoint:!0,useDualstackEndpoint:qt(i??!1)})}})),nM,aae=n((()=>{nM=async e=>{let{tls:t=!0}=e,n=await e.region();if(!(/* @__PURE__ */ new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/)).test(n))throw Error(`Invalid region in client config`);let r=await e.useDualstackEndpoint(),i=await e.useFipsEndpoint(),{hostname:a}=await e.regionInfoProvider(n,{useDualstackEndpoint:r,useFipsEndpoint:i})??{};if(!a)throw Error(`Cannot resolve hostname from client config`);return e.urlParser(`${t?`https:`:`http:`}//${a}`)}})),rM,oae=n((()=>{eM(),aae(),rM=e=>{let t=qt(e.useDualstackEndpoint??!1),{endpoint:n,useFipsEndpoint:r,urlParser:i,tls:a}=e;return Object.assign(e,{tls:a??!0,endpoint:n?qt(typeof n==`string`?i(n):n):()=>nM({...e,useDualstackEndpoint:t,useFipsEndpoint:r}),isCustomEndpoint:!!n,useDualstackEndpoint:t})}})),iM,aM,oM,sM=n((()=>{iM=[`in-region`,`cross-region`,`mobile`,`standard`,`legacy`],aM=`/latest/api/token`,oM=`x-aws-ec2-metadata-token-ttl-seconds`})),cM,lM,uM,dM,fM,pM,mM,hM=n((()=>{sM(),cM=1e3,lM=6e4,uM=0,dM=async()=>{if(!process.env.AWS_EC2_METADATA_DISABLED&&!(Date.now(){uM=Date.now()+lM},pM=()=>{let e=process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT;if(e){let t=new URL(e);return{hostname:t.hostname.replace(/^\[(.+)]$/,`$1`),port:t.port?Number(t.port):void 0}}return process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE===`IPv6`?{hostname:`fd00:ec2::254`}:{hostname:`169.254.169.254`}},mM=async e=>{let{request:t}=await import(`node:http`);return new Promise((n,r)=>{let i=t({hostname:e.hostname,port:e.port,path:e.path,method:e.method,headers:e.headers,timeout:cM,signal:AbortSignal.timeout(cM)});i.on(`error`,e=>{r(e),i.destroy()}),i.on(`timeout`,()=>{r(/* @__PURE__ */ Error(`TimeoutError from instance metadata service`)),i.destroy()}),i.on(`response`,e=>{let{statusCode:t=400}=e;if(t<200||t>=300){r(Object.assign(/* @__PURE__ */ Error(`Error response received from instance metadata service`),{statusCode:t})),i.destroy();return}let a=[];e.on(`data`,e=>a.push(e)),e.on(`end`,()=>{n(Buffer.concat(a)),i.destroy()})}),i.end()})}})),gM,_M,vM,yM,bM=n((()=>{hM(),gM=`AWS_REGION`,_M=`region`,vM={environmentVariableSelector:e=>e[gM],configFileSelector:e=>e[_M],default:async()=>{let e=await dM();if(e)return e;throw Error(`Region is missing`)}},yM={preferredFile:`credentials`}})),xM,SM,sae=n((()=>{Vt(),xM=/* @__PURE__ */ new Set,SM=(e,t=Qt)=>{if(!xM.has(e)&&!t(e)){if(e===`*`)console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`);else throw Error(`Region not accepted: region="${e}" is not a valid hostname component.`)}else xM.add(e)}})),CM,wM=n((()=>{CM=e=>typeof e==`string`&&(e.startsWith(`fips-`)||e.endsWith(`-fips`))})),TM,cae=n((()=>{wM(),TM=e=>CM(e)?[`fips-aws-global`,`aws-fips`].includes(e)?`us-east-1`:e.replace(/fips-(dkr-|prod-)?|-fips/,``):e})),EM,lae=n((()=>{sae(),cae(),wM(),EM=e=>{let{region:t,useFipsEndpoint:n}=e;if(!t)throw Error(`Region is missing`);return Object.assign(e,{region:async()=>{let e=typeof t==`function`?await t():t,n=TM(e);return SM(n),n},useFipsEndpoint:async()=>{let e=typeof t==`string`?t:await t();return CM(e)?!0:typeof n==`function`?n():Promise.resolve(!!n)}})}})),DM,uae=n((()=>{DM=(e=[],{useFipsEndpoint:t,useDualstackEndpoint:n})=>e.find(({tags:e})=>t===e.includes(`fips`)&&n===e.includes(`dualstack`))?.hostname})),OM,dae=n((()=>{OM=(e,{regionHostname:t,partitionHostname:n})=>t||(n?n.replace(`{region}`,e):void 0)})),kM,fae=n((()=>{kM=(e,{partitionHash:t})=>Object.keys(t||{}).find(n=>t[n].regions.includes(e))??`aws`})),AM,pae=n((()=>{AM=(e,{signingRegion:t,regionRegex:n,useFipsEndpoint:r})=>{if(t)return t;if(r){let t=n.replace(`\\\\`,`\\`).replace(/^\^/g,`\\.`).replace(/\$$/g,`\\.`),r=e.match(t);if(r)return r[0].slice(1,-1)}}})),jM,mae=n((()=>{uae(),dae(),fae(),pae(),jM=(e,{useFipsEndpoint:t=!1,useDualstackEndpoint:n=!1,signingService:r,regionHash:i,partitionHash:a})=>{let o=kM(e,{partitionHash:a}),s=e in i?e:a[o]?.endpoint??e,c={useFipsEndpoint:t,useDualstackEndpoint:n},l=DM(i[s]?.variants,c),u=DM(a[o]?.variants,c),d=OM(s,{regionHostname:l,partitionHostname:u});if(d===void 0)throw Error(`Endpoint resolution failed for: [object Object]`);let f=AM(d,{signingRegion:i[s]?.signingRegion,regionRegex:a[o].regionRegex,useFipsEndpoint:t});return{partition:o,signingService:r,hostname:d,...f&&{signingRegion:f},...i[s]?.signingService&&{signingService:i[s].signingService}}}})),MM,NM,PM,hae=n((()=>{MM=`AWS_DEFAULTS_MODE`,NM=`defaults_mode`,PM={environmentVariableSelector:e=>e[MM],configFileSelector:e=>e[NM],default:`legacy`}})),FM,IM,LM,gae=n((()=>{bM(),hM(),Gj(),qA(),sM(),hae(),FM=({region:e=Wj(vM),defaultsMode:t=Wj(PM)}={})=>KA(async()=>{let n=typeof t==`function`?await t():t;switch(n?.toLowerCase()){case`auto`:return IM(e);case`in-region`:case`cross-region`:case`mobile`:case`standard`:case`legacy`:return Promise.resolve(n?.toLocaleLowerCase());case void 0:return Promise.resolve(`legacy`);default:throw Error(`Invalid parameter for "defaultsMode", expect ${iM.join(`, `)}, got ${n}`)}}),IM=async e=>{if(e){let t=typeof e==`function`?await e():e,n=await LM();return n?t===n?`in-region`:`cross-region`:`standard`}return`standard`},LM=async()=>process.env.AWS_EXECUTION_ENV&&(process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION)?process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION:dM()})),_ae=/* @__PURE__ */ i({CONFIG_PREFIX_SEPARATOR:()=>`.`,CONFIG_USE_DUALSTACK_ENDPOINT:()=>qj,CONFIG_USE_FIPS_ENDPOINT:()=>Zj,CredentialsProviderError:()=>zA,DEFAULT_PROFILE:()=>ij,DEFAULT_USE_DUALSTACK_ENDPOINT:()=>!1,DEFAULT_USE_FIPS_ENDPOINT:()=>!1,ENV_PROFILE:()=>rj,ENV_USE_DUALSTACK_ENDPOINT:()=>Kj,ENV_USE_FIPS_ENDPOINT:()=>Xj,NODE_REGION_CONFIG_FILE_OPTIONS:()=>yM,NODE_REGION_CONFIG_OPTIONS:()=>vM,NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS:()=>Jj,NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS:()=>Qj,ProviderError:()=>LA,REGION_ENV_NAME:()=>gM,REGION_INI_NAME:()=>_M,SelectorType:()=>ZA,TokenProviderError:()=>VA,booleanSelector:()=>JA,chain:()=>HA,externalDataInterceptor:()=>Ij,fromStatic:()=>Hj,fromValue:()=>WA,getHomeDir:()=>tj,getProfileName:()=>aj,getRegionInfo:()=>jM,getSSOTokenFilepath:()=>sj,getSSOTokenFromFile:()=>uj,loadConfig:()=>Wj,loadSharedConfigFiles:()=>Oj,loadSsoSessionData:()=>Nj,memoize:()=>KA,nodeDualstackConfigSelectors:()=>Yj,nodeFipsConfigSelectors:()=>$j,numberSelector:()=>XA,parseKnownFiles:()=>Fj,readFile:()=>Tj,resolveCustomEndpointsConfig:()=>tM,resolveDefaultsModeConfig:()=>FM,resolveEndpointsConfig:()=>rM,resolveRegionConfig:()=>EM}),vae=n((()=>{RA(),BA(),Gie(),UA(),GA(),qA(),YA(),Kie(),QA(),nj(),oj(),cj(),dj(),fj(),kj(),Xie(),Qie(),$ie(),Ej(),Gj(),Uj(),nae(),rae(),iae(),oae(),bM(),lae(),mae(),gae()})),RM,zM=n((()=>{fn(),RM=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return pn.mutate(e);if(!e)return pn.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return pn.mutate(await n)}}));function BM(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var VM=n((()=>{})),HM,UM=n((()=>{HM=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),WM,GM=n((()=>{Vt(),Jt(),UM(),WM=class extends HM{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new Xt(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return Bt}getResponseType(){return $t}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)mn(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)mn(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=Gt.of(t.input),i=gn(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!Kt(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-BIy_EUGs.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),KM,yae=n((()=>{Vt(),Jt(),fn(),GM(),zM(),VM(),KM=class extends WM{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=Gt.of(e?.input),l=[],u=[],d=!1,f,p=new Bt({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(p,s),this.setHostPrefix(p,e,r);let t=gn(e.traits);if(t.http){p.method=t.http[0];let[e,n]=t.http[1].split(`?`);p.path==`/`?p.path=e:p.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(p.path.includes(`{${e}+}`)||p.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(f=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):f=s:(i.write(t,s),f=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();p.path.includes(`{${e}+}`)?p.path=p.path.replace(`{${e}+}`,n.split(`/`).map(BM).join(`/`)):p.path.includes(`{${e}}`)&&(p.path=p.path.replace(`{${e}}`,BM(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!mn(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(d=!0,l.push(e),u.push(t))}if(d&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),l,u,void 0];n?a[6]=n:a.pop(),i.write(a,r),f=i.flush()}return p.headers=o,p.query=a,p.body=f,p}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(mn(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=Gt.of(e.output),a={};if(n.statusCode>=300){let i=await RM(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await RM(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await RM(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=Gt.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=tn(n.body);else if(n.body){let i=await RM(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?un(o,`,`,2):rn(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(mn(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),qM,bae=n((()=>{Vt(),Jt(),GM(),zM(),qM=class extends WM{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=Gt.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new Bt({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=Gt.of(e.output),a={};if(n.statusCode>=300){let i=await RM(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!mn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await RM(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),JM,YM=n((()=>{VM(),JM=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>BM(e)).join(`/`):BM(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function xae(e,t){return new XM(e,t)}var XM,Sae=n((()=>{Vt(),YM(),XM=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new Bt({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=JM(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function ZM(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var QM=n((()=>{})),$M,eN=n((()=>{Jt(),fn(),UM(),QM(),$M=class extends HM{settings;constructor(e){super(),this.settings=e}read(e,t){let n=Gt.of(e);if(n.isListSchema())return rn(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??sn)(t);if(n.isTimestampSchema())switch(ZM(n,this.settings)){case 5:return an(t);case 6:return en(t);case 7:return on(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=hn.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new ln(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??Ut)((this.serdeContext?.base64Decoder??sn)(e))}}})),tN,Cae=n((()=>{Jt(),fn(),UM(),eN(),tN=class extends HM{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new $M(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=Gt.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??Ut;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??cn;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),nN,rN=n((()=>{Jt(),fn(),UM(),QM(),nN=class extends HM{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=Gt.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(ZM(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Ht(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??Yt)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:nn(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=hn.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??Yt)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?dn():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),iN,wae=n((()=>{Jt(),rN(),iN=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new nN(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=Gt.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),aN,oN,Tae=n((()=>{aN=ct(),oN=class{name;kind;values;constructor({name:e,kind:t=aN.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),sN,Eae=n((()=>{sN=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),cN,lN,Dae=n((()=>{cN=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),lN=e=>({requestHandler:e.httpHandler()})}));function uN(e){return t=>async n=>{let r=n.request;if(Bt.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(dN)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[dN]:String(n)})}catch{}}return t({...n,request:r})}}var dN,fN,pN,Oae=n((()=>{Vt(),dN=`content-length`,fN={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},pN=e=>({applyToStack:t=>{t.add(uN(e.bodyLengthChecker),fN)}})})),mN,hN,gN=n((()=>{mN=e=>encodeURIComponent(e).replace(/[!'()*]/g,hN),hN=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),_N,kae=n((()=>{gN(),_N=e=>e.split(`/`).map(mN).join(`/`)}));function Aae(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=mN(n),Array.isArray(r))for(let e=0,i=r.length;e{gN()})),Mae=/* @__PURE__ */ i({Field:()=>oN,Fields:()=>sN,FromStringShapeDeserializer:()=>$M,HttpBindingProtocol:()=>KM,HttpInterceptingShapeDeserializer:()=>tN,HttpInterceptingShapeSerializer:()=>iN,HttpProtocol:()=>WM,HttpRequest:()=>Bt,HttpResponse:()=>$t,RequestBuilder:()=>XM,RpcProtocol:()=>qM,SerdeContext:()=>HM,ToStringShapeSerializer:()=>nN,buildQueryString:()=>Aae,collectBody:()=>RM,contentLengthMiddleware:()=>uN,contentLengthMiddlewareOptions:()=>fN,determineTimestampFormat:()=>ZM,escapeUri:()=>mN,escapeUriPath:()=>_N,extendedEncodeURIComponent:()=>BM,getContentLengthPlugin:()=>pN,getHttpHandlerExtensionConfiguration:()=>cN,isValidHostname:()=>Kt,parseQueryString:()=>Zt,parseUrl:()=>Wt,requestBuilder:()=>xae,resolveHttpHandlerRuntimeConfig:()=>lN,resolvedPath:()=>JM}),Nae=n((()=>{zM(),VM(),yae(),GM(),bae(),Sae(),YM(),eN(),Cae(),wae(),rN(),QM(),UM(),Tae(),Eae(),Vt(),Dae(),Oae(),gN(),kae(),jae()})),vN=/* @__PURE__ */ a((n=>{let{ProviderError:r,CredentialsProviderError:i,loadConfig:a}=(vae(),e(_ae)),o=t(`node:http`),{parseUrl:s}=(Nae(),e(Mae)),c=e=>!!e&&typeof e==`object`&&typeof e.AccessKeyId==`string`&&typeof e.SecretAccessKey==`string`&&typeof e.Token==`string`&&typeof e.Expiration==`string`,l=e=>({accessKeyId:e.AccessKeyId,secretAccessKey:e.SecretAccessKey,sessionToken:e.Token,expiration:new Date(e.Expiration),...e.AccountId&&{accountId:e.AccountId}}),u=1e3,d=({maxRetries:e=0,timeout:t=u})=>({maxRetries:e,timeout:t});function f(e){return new Promise((t,n)=>{let i=o.request({method:`GET`,...e,hostname:e.hostname?.replace(/^\[(.+)\]$/,`$1`)});i.on(`error`,e=>{n(Object.assign(new r(`Unable to connect to instance metadata service`),e)),i.destroy()}),i.on(`timeout`,()=>{n(new r(`TimeoutError from instance metadata service`)),i.destroy()}),i.on(`response`,e=>{let{statusCode:a=400}=e;(a<200||300<=a)&&(n(Object.assign(new r(`Error response received from instance metadata service`),{statusCode:a})),i.destroy());let o=[];e.on(`data`,e=>{o.push(e)}),e.on(`end`,()=>{t(Buffer.concat(o)),i.destroy()})}),i.end()})}let p=(e,t)=>{let n=e();for(let r=0;r{let{timeout:t,maxRetries:n}=d(e);return()=>p(async()=>{let n=await S({logger:e.logger}),r=JSON.parse(await y(t,n));if(!c(r))throw new i(`Invalid response received from instance metadata service.`,{logger:e.logger});return l(r)},n)},y=async(e,t)=>(process.env[g]&&(t.headers={...t.headers,Authorization:process.env[g]}),(await f({...t,timeout:e})).toString()),b=/* @__PURE__ */ new Set([`localhost`,`127.0.0.1`]),x=/* @__PURE__ */ new Set([`http:`,`https:`]),S=async({logger:e})=>{if(process.env[h])return{hostname:`169.254.170.2`,path:process.env[h]};if(process.env[m]){let t;try{t=new URL(process.env[m])}catch{throw new i(`${process.env[m]} is not a valid container metadata service URL`,{tryNextLink:!1,logger:e})}if(!t.hostname||!b.has(t.hostname))throw new i(`${t.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:e});if(!t.protocol||!x.has(t.protocol))throw new i(`${t.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:e});return{protocol:t.protocol,hostname:t.hostname,path:t.pathname+t.search,port:t.port?parseInt(t.port,10):void 0}}throw new i(`The container metadata credential provider cannot be used unless the ${h} or ${m} environment variable is set`,{tryNextLink:!1,logger:e})};var C=class e extends i{tryNextLink;name=`InstanceMetadataV1FallbackError`;constructor(t,n=!0){super(t,n),this.tryNextLink=n,Object.setPrototypeOf(this,e.prototype)}},w;(function(e){e.IPv4=`http://169.254.169.254`,e.IPv6=`http://[fd00:ec2::254]`})(w||={});let T={environmentVariableSelector:e=>e.AWS_EC2_METADATA_SERVICE_ENDPOINT,configFileSelector:e=>e.ec2_metadata_service_endpoint,default:void 0};var E;(function(e){e.IPv4=`IPv4`,e.IPv6=`IPv6`})(E||={});let D={environmentVariableSelector:e=>e.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE,configFileSelector:e=>e.ec2_metadata_service_endpoint_mode,default:E.IPv4},O=async()=>s(await k()||await A()),k=async()=>a(T)(),A=async()=>{let e=await a(D)();switch(e){case E.IPv4:return w.IPv4;case E.IPv6:return w.IPv6;default:throw Error(`Unsupported endpoint mode: ${e}. Select from ${Object.values(E)}`)}},j=(e,t)=>{let n=300+Math.floor(Math.random()*300),r=new Date(Date.now()+n*1e3);t.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(r)}.\nFor more information, please visit: https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html`);let i=e.originalExpiration??e.expiration;return{...e,...i?{originalExpiration:i}:{},expiration:r}},M=(e,t={})=>{let n=t?.logger||console,r;return async()=>{let t;try{t=await e(),t.expiration&&t.expiration.getTime()M(L(e),{logger:e.logger}),L=(e={})=>{let t=!1,{logger:n,profile:r}=e,{timeout:o,maxRetries:s}=d(e),c=async(n,o)=>{if(t||o.headers?.[I]==null){let t=!1,n=!1,o=await a({environmentVariableSelector:t=>{let r=t[P];if(n=!!r&&r!==`false`,r===void 0)throw new i(`${P} not set in env, checking config file next.`,{logger:e.logger});return n},configFileSelector:e=>{let n=e[F];return t=!!n&&n!==`false`,t},default:!1},{profile:r})();if(e.ec2MetadataV1Disabled||o){let r=[];throw e.ec2MetadataV1Disabled&&r.push(`credential provider initialization (runtime option ec2MetadataV1Disabled)`),t&&r.push(`config file profile (${F})`),n&&r.push(`process environment variable (${P})`),new C(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${r.join(`, `)}].`)}}let s=(await p(async()=>{let e;try{e=await te(o)}catch(e){throw e.statusCode===401&&(t=!1),e}return e},n)).trim();return p(async()=>{let n;try{n=await ne(s,o,e)}catch(e){throw e.statusCode===401&&(t=!1),e}return n},n)};return async()=>{let e=await O();if(t)return n?.debug(`AWS SDK Instance Metadata`,`using v1 fallback (no token fetch)`),c(s,{...e,timeout:o});{let r;try{r=(await R({...e,timeout:o})).toString()}catch(r){if(r?.statusCode===400)throw Object.assign(r,{message:`EC2 Metadata token request returned error`});return(r.message===`TimeoutError`||[403,404,405].includes(r.statusCode))&&(t=!0),n?.debug(`AWS SDK Instance Metadata`,`using v1 fallback (initial)`),c(s,{...e,timeout:o})}return c(s,{...e,headers:{[I]:r},timeout:o})}}},R=async e=>f({...e,path:`/latest/api/token`,method:`PUT`,headers:{"x-aws-ec2-metadata-token-ttl-seconds":`21600`}}),te=async e=>(await f({...e,path:N})).toString(),ne=async(e,t,n)=>{let r=JSON.parse((await f({...t,path:N+e})).toString());if(!c(r))throw new i(`Invalid response received from instance metadata service.`,{logger:n.logger});return l(r)};n.DEFAULT_MAX_RETRIES=0,n.DEFAULT_TIMEOUT=u,n.ENV_CMDS_AUTH_TOKEN=g,n.ENV_CMDS_FULL_URI=m,n.ENV_CMDS_RELATIVE_URI=h,n.Endpoint=w,n.fromContainerMetadata=v,n.fromInstanceMetadata=ee,n.getInstanceMetadataEndpoint=O,n.httpRequest=f,n.providerConfigFromInit=d})),yN,bN=n((()=>{Bn(),yN=async(e=/* @__PURE__ */ new Uint8Array,t)=>{if(e instanceof Uint8Array)return Hn.mutate(e);if(!e)return Hn.mutate(/* @__PURE__ */ new Uint8Array);let n=t.streamCollector(e);return Hn.mutate(await n)}}));function xN(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}var SN=n((()=>{})),CN,wN=n((()=>{CN=class{serdeContext;setSerdeContext(e){this.serdeContext=e}}})),TN,EN=n((()=>{Sn(),Vn(),wN(),TN=class extends CN{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=new Mn(e.defaultNamespace);for(let t of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(t)}getRequestType(){return bn}getResponseType(){return _n}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,t){if(`url`in t){e.protocol=t.url.protocol,e.hostname=t.url.hostname,e.port=t.url.port?Number(t.url.port):void 0,e.path=t.url.pathname,e.fragment=t.url.hash||void 0,e.username=t.url.username||void 0,e.password=t.url.password||void 0,e.query||={};for(let[n,r]of t.url.searchParams.entries())e.query[n]=r;if(t.headers)for(let n in t.headers)Dn(t.headers,n)&&(e.headers[n]=t.headers[n].join(`, `));return e}if(e.protocol=t.protocol,e.hostname=t.hostname,e.port=t.port?Number(t.port):void 0,e.path=t.path,e.query={...t.query},t.headers)for(let n in t.headers)Dn(t.headers,n)&&(e.headers[n]=t.headers[n]);return e}setHostPrefix(e,t,n){if(this.serdeContext?.disableHostPrefix)return;let r=Un.of(t.input),i=Rn(t.traits??{});if(i.endpoint){let t=i.endpoint?.[0];if(typeof t==`string`){for(let[e,i]of r.structIterator()){if(!i.getMergedTraits().hostLabel)continue;let r=n[e];if(typeof r!=`string`)throw Error(`@smithy/core/schema - ${e} in input must be a string as hostLabel.`);t=t.replace(`{${e}}`,r)}if(e.hostname=t+e.hostname,!Gn(e.hostname))throw Error(`[${e.hostname}] is not a valid hostname.`)}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers[`x-amzn-requestid`]??e.headers[`x-amzn-request-id`]??e.headers[`x-amz-request-id`],extendedRequestId:e.headers[`x-amz-id-2`],cfId:e.headers[`x-amz-cf-id`]}}resolveError(e,t,n){let r=[-3,``,`Error`,0,[],[],0],i;for(let r of n)for(let n of t)try{i=n===`*`?r.getSchema(e):r.getSchema(n+`#`+e);let t=r.getErrorCtor(i);if(t)return[i,t,`modeled`];{let e=r.getBaseException();if(e){let t=r.getErrorCtor(e);if(t)return[i,t,`synthetic`]}}}catch{}for(let e of n){let t=e.getBaseException();if(t){let n=e.getErrorCtor(t);if(n)return[t,n,`synthetic`]}}return[r,Error,`native`]}async serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:t,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:t,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e,eventStreamSerdeProvider:t}=await import(`./event-streams-B3wzXbv_.js`);return new e({marshaller:this.resolveEventStreamMarshaller(t),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType(),compositeErrorRegistry:this.compositeErrorRegistry})}getDefaultContentType(){throw Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,t,n,r,i){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw Error(`@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.`);return e.eventStreamMarshaller}resolveEventStreamMarshaller(e){let t=this.serdeContext;return t.eventStreamMarshaller?t.eventStreamMarshaller:e(this.serdeContext)}}})),DN,Pae=n((()=>{Sn(),Vn(),Bn(),EN(),bN(),SN(),DN=class extends TN{async serializeRequest(e,t,n){let r=t&&typeof t==`object`?t:{},i=this.serializer,a={},o={},s=await n.endpoint(),c=Un.of(e?.input),l=[],u=[],d=!1,f,p=new bn({protocol:``,hostname:``,port:void 0,path:``,fragment:void 0,query:a,headers:o,body:void 0});if(s){this.updateServiceEndpoint(p,s),this.setHostPrefix(p,e,r);let t=Rn(e.traits);if(t.http){p.method=t.http[0];let[e,n]=t.http[1].split(`?`);p.path==`/`?p.path=e:p.path+=e;let r=new URLSearchParams(n??``);for(let[e,t]of r)a[e]=t}}for(let[e,t]of c.structIterator()){let n=t.getMergedTraits()??{},s=r[e];if(s==null&&!t.isIdempotencyToken()){if(n.httpLabel&&(p.path.includes(`{${e}+}`)||p.path.includes(`{${e}}`)))throw Error(`No value provided for input HTTP label: ${e}.`)}else if(n.httpPayload)t.isStreaming()?t.isStructSchema()?r[e]&&(f=await this.serializeEventStream({eventStream:r[e],requestSchema:c})):f=s:(i.write(t,s),f=i.flush());else if(n.httpLabel){i.write(t,s);let n=i.flush();p.path.includes(`{${e}+}`)?p.path=p.path.replace(`{${e}+}`,n.split(`/`).map(xN).join(`/`)):p.path.includes(`{${e}}`)&&(p.path=p.path.replace(`{${e}}`,xN(n)))}else if(n.httpHeader)i.write(t,s),o[n.httpHeader.toLowerCase()]=String(i.flush());else if(typeof n.httpPrefixHeaders==`string`)for(let e in s){if(!Dn(s,e))continue;let r=s[e],a=n.httpPrefixHeaders+e;i.write([t.getValueSchema(),{httpHeader:a}],r),o[a.toLowerCase()]=i.flush()}else n.httpQuery||n.httpQueryParams?this.serializeQuery(t,s,a):(d=!0,l.push(e),u.push(t))}if(d&&r){let[e,t]=(c.getName(!0)??`#Unknown`).split(`#`),n=c.getSchema()[6],a=[3,e,t,c.getMergedTraits(),l,u,void 0];n?a[6]=n:a.pop(),i.write(a,r),f=i.flush()}return p.headers=o,p.query=a,p.body=f,p}serializeQuery(e,t,n){let r=this.serializer,i=e.getMergedTraits();if(i.httpQueryParams){for(let r in t)if(Dn(t,r)&&!(r in n)){let a=t[r],o=e.getValueSchema();Object.assign(o.getMergedTraits(),{...i,httpQuery:r,httpQueryParams:void 0}),this.serializeQuery(o,a,n)}}else if(e.isListSchema()){let a=!!e.getMergedTraits().sparse,o=[];for(let n of t){r.write([e.getValueSchema(),i],n);let t=r.flush();(a||t!==void 0)&&o.push(t)}n[i.httpQuery]=o}else r.write([e,i],t),n[i.httpQuery]=r.flush()}async deserializeResponse(e,t,n){let r=this.deserializer,i=Un.of(e.output),a={};if(n.statusCode>=300){let i=await yN(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - HTTP Protocol error handler failed to throw.`)}for(let e in n.headers){if(!Dn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=await this.deserializeHttpMessage(i,t,n,a);if(o.length){let e=await yN(n.body,t);if(e.byteLength>0){let t=await r.read(i,e);for(let e of o)t[e]!=null&&(a[e]=t[e])}}else o.discardResponseBody&&await yN(n.body,t);return a.$metadata=this.deserializeMetadata(n),a}async deserializeHttpMessage(e,t,n,r,i){let a;a=r instanceof Set?i:r;let o=!0,s=this.deserializer,c=Un.of(e),l=[];for(let[e,r]of c.structIterator()){let i=r.getMemberTraits();if(i.httpPayload){if(o=!1,r.isStreaming())r.isStructSchema()?a[e]=await this.deserializeEventStream({response:n,responseSchema:c}):a[e]=Ln(n.body);else if(n.body){let i=await yN(n.body,t);i.byteLength>0&&(a[e]=await s.read(r,i))}}else if(i.httpHeader){let t=String(i.httpHeader).toLowerCase(),o=n.headers[t];if(o!=null){if(r.isListSchema()){let n=r.getValueSchema();n.getMergedTraits().httpHeader=t;let i;i=n.isTimestampSchema()&&n.getSchema()===4?Tn(o,`,`,2):jn(o);let c=[];for(let e of i)c.push(await s.read(n,e.trim()));a[e]=c}else a[e]=await s.read(r,o)}}else if(i.httpPrefixHeaders!==void 0){a[e]={};for(let t in n.headers)if(Dn(n.headers,t)&&t.startsWith(i.httpPrefixHeaders)){let o=n.headers[t],c=r.getValueSchema();c.getMergedTraits().httpHeader=t,a[e][t.slice(i.httpPrefixHeaders.length)]=await s.read(c,o)}}else i.httpResponseCode?a[e]=n.statusCode:l.push(e)}return l.discardResponseBody=o,l}}})),ON,Fae=n((()=>{Sn(),Vn(),EN(),bN(),ON=class extends TN{async serializeRequest(e,t,n){let r=this.serializer,i={},a={},o=await n.endpoint(),s=Un.of(e?.input),c=s.getSchema(),l,u=t&&typeof t==`object`?t:{},d=new bn({protocol:``,hostname:``,port:void 0,path:`/`,fragment:void 0,query:i,headers:a,body:void 0});if(o&&(this.updateServiceEndpoint(d,o),this.setHostPrefix(d,e,u)),u){let e=s.getEventStreamMember();if(e){if(u[e]){let t={};for(let[n]of s.structIterator())n!==e&&u[n]!=null&&(t[n]=u[n]);l=await this.serializeEventStream({eventStream:u[e],requestSchema:s,initialRequest:t})}}else r.write(c,u),l=r.flush()}return d.headers=Object.assign(d.headers,a),d.query=i,d.body=l,d.method=`POST`,d}async deserializeResponse(e,t,n){let r=this.deserializer,i=Un.of(e.output),a={};if(n.statusCode>=300){let i=await yN(n.body,t);throw i.byteLength>0&&Object.assign(a,await r.read(15,i)),await this.handleError(e,t,n,a,this.deserializeMetadata(n)),Error(`@smithy/core/protocols - RPC Protocol error handler failed to throw.`)}for(let e in n.headers){if(!Dn(n.headers,e))continue;let t=n.headers[e];delete n.headers[e],n.headers[e.toLowerCase()]=t}let o=i.getEventStreamMember();if(o)a[o]=await this.deserializeEventStream({response:n,responseSchema:i,initialResponseContainer:a});else{let e=await yN(n.body,t);e.byteLength>0&&Object.assign(a,await r.read(i,e))}return a.$metadata=this.deserializeMetadata(n),a}}})),kN,AN=n((()=>{SN(),kN=(e,t,n,r,i,a)=>{if(t!=null&&t[n]!==void 0){let t=r();if(t==null||t.length<=0)throw Error(`Empty value provided for input HTTP label: `+n+`.`);e=e.replace(i,a?t.split(`/`).map(e=>xN(e)).join(`/`):xN(t))}else throw Error(`No value provided for input HTTP label: `+n+`.`);return e}}));function Iae(e,t){return new jN(e,t)}var jN,Lae=n((()=>{Sn(),AN(),jN=class{input;context;query={};method=``;headers={};path=``;body=null;hostname=``;resolvePathStack=[];constructor(e,t){this.input=e,this.context=t}async build(){let{hostname:e,protocol:t=`https`,port:n,path:r}=await this.context.endpoint();this.path=r;for(let e of this.resolvePathStack)e(this.path);return new bn({protocol:t,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(t=>{this.path=`${t?.endsWith(`/`)?t.slice(0,-1):t||``}`+e}),this}p(e,t,n,r){return this.resolvePathStack.push(i=>{this.path=kN(i,this.input,e,t,n,r)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}}));function MN(e,t){if(t.timestampFormat.useTrait&&e.isTimestampSchema()&&(e.getSchema()===5||e.getSchema()===6||e.getSchema()===7))return e.getSchema();let{httpLabel:n,httpPrefixHeaders:r,httpHeader:i,httpQuery:a}=e.getMergedTraits();return(t.httpBindings?typeof r==`string`||i?6:a||n?5:void 0:void 0)??t.timestampFormat.default}var NN=n((()=>{})),PN,FN=n((()=>{Vn(),Bn(),wN(),NN(),PN=class extends CN{settings;constructor(e){super(),this.settings=e}read(e,t){let n=Un.of(e);if(n.isListSchema())return jn(t).map(e=>this.read(n.getValueSchema(),e));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??wn)(t);if(n.isTimestampSchema())switch(MN(n,this.settings)){case 5:return Wn(t);case 6:return En(t);case 7:return vn(t);default:return console.warn(`Missing timestamp format, parsing value with Date constructor:`,t),new Date(t)}if(n.isStringSchema()){let e=n.getMergedTraits().mediaType,r=t;if(e)return n.getMergedTraits().httpHeader&&(r=this.base64ToUtf8(r)),(e===`application/json`||e.endsWith(`+json`))&&(r=Fn.from(r)),r}return n.isNumericSchema()?Number(t):n.isBigIntegerSchema()?BigInt(t):n.isBigDecimalSchema()?new An(t,`bigDecimal`):n.isBooleanSchema()?String(t).toLowerCase()===`true`:t}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??zn)((this.serdeContext?.base64Decoder??wn)(e))}}})),IN,Rae=n((()=>{Vn(),Bn(),wN(),FN(),IN=class extends CN{codecDeserializer;stringDeserializer;constructor(e,t){super(),this.codecDeserializer=e,this.stringDeserializer=new PN(t)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,t){let n=Un.of(e),r=n.getMergedTraits(),i=this.serdeContext?.utf8Encoder??zn;if(r.httpHeader||r.httpResponseCode)return this.stringDeserializer.read(n,i(t));if(r.httpPayload){if(n.isBlobSchema()){let e=this.serdeContext?.utf8Decoder??On;return typeof t==`string`?e(t):t}if(n.isStringSchema())return`byteLength`in t?i(t):t}return this.codecDeserializer.read(n,t)}}})),LN,RN=n((()=>{Vn(),Bn(),wN(),NN(),LN=class extends CN{settings;stringBuffer=``;constructor(e){super(),this.settings=e}write(e,t){let n=Un.of(e);switch(typeof t){case`object`:if(t===null){this.stringBuffer=`null`;return}if(n.isTimestampSchema()){if(!(t instanceof Date))throw Error(`@smithy/core/protocols - received non-Date value ${t} when schema expected Date in ${n.getName(!0)}`);switch(MN(n,this.settings)){case 5:this.stringBuffer=t.toISOString().replace(`.000Z`,`Z`);break;case 6:this.stringBuffer=Pn(t);break;case 7:this.stringBuffer=String(t.getTime()/1e3);break;default:console.warn(`Missing timestamp format, using epoch seconds`,t),this.stringBuffer=String(t.getTime()/1e3)}return}if(n.isBlobSchema()&&`byteLength`in t){this.stringBuffer=(this.serdeContext?.base64Encoder??kn)(t);return}if(n.isListSchema()&&Array.isArray(t)){let e=``;for(let r of t){this.write([n.getValueSchema(),n.getMergedTraits()],r);let t=this.flush(),i=n.getValueSchema().isTimestampSchema()?t:Cn(t);e!==``&&(e+=`, `),e+=i}this.stringBuffer=e;return}this.stringBuffer=JSON.stringify(t,null,2);break;case`string`:let e=n.getMergedTraits().mediaType,r=t;if(e&&((e===`application/json`||e.endsWith(`+json`))&&(r=Fn.from(r)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??kn)(r.toString());return}this.stringBuffer=t;break;default:this.stringBuffer=n.isIdempotencyToken()?In():String(t)}}flush(){let e=this.stringBuffer;return this.stringBuffer=``,e}}})),zN,zae=n((()=>{Vn(),RN(),zN=class{codecSerializer;stringSerializer;buffer;constructor(e,t,n=new LN(t)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,t){let n=Un.of(e),r=n.getMergedTraits();if(r.httpHeader||r.httpLabel||r.httpQuery)this.stringSerializer.write(n,t),this.buffer=this.stringSerializer.flush();else return this.codecSerializer.write(n,t)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}}})),BN,VN,Bae=n((()=>{BN=ct(),VN=class{name;kind;values;constructor({name:e,kind:t=BN.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=t,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(t=>t!==e)}toString(){return this.values.map(e=>e.includes(`,`)||e.includes(` `)?`"${e}"`:e).join(`, `)}get(){return this.values}}})),HN,Vae=n((()=>{HN=class{entries={};encoding;constructor({fields:e=[],encoding:t=`utf-8`}){e.forEach(this.setField.bind(this)),this.encoding=t}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(t=>t.kind===e)}}})),UN,WN,Hae=n((()=>{UN=e=>(e.logger&&e.logger.constructor?.name!==`NoOpLogger`&&e.requestHandler?.updateHttpClientConfig?.(Symbol.for(`logger`),e.logger),{setHttpHandler(t){e.requestHandler=t},httpHandler(){return e.requestHandler},updateHttpClientConfig(t,n){e.requestHandler?.updateHttpClientConfig(t,n)},httpHandlerConfigs(){return e.requestHandler.httpHandlerConfigs()}}),WN=e=>({requestHandler:e.httpHandler()})}));function GN(e){return t=>async n=>{let r=n.request;if(bn.isInstance(r)){let{body:t,headers:n}=r;if(t&&Object.keys(n).map(e=>e.toLowerCase()).indexOf(KN)===-1)try{let n=e(t);n!=null&&(r.headers={...r.headers,[KN]:String(n)})}catch{}}return t({...n,request:r})}}var KN,qN,JN,Uae=n((()=>{Sn(),KN=`content-length`,qN={step:`build`,tags:[`SET_CONTENT_LENGTH`,`CONTENT_LENGTH`],name:`contentLengthMiddleware`,override:!0},JN=e=>({applyToStack:t=>{t.add(GN(e.bodyLengthChecker),qN)}})})),YN,XN,ZN=n((()=>{YN=e=>encodeURIComponent(e).replace(/[!'()*]/g,XN),XN=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`})),QN,Wae=n((()=>{ZN(),QN=e=>e.split(`/`).map(YN).join(`/`)}));function Gae(e){let t=[];for(let n of Object.keys(e).sort()){let r=e[n];if(n=YN(n),Array.isArray(r))for(let e=0,i=r.length;e{ZN()})),qae=/* @__PURE__ */ i({Field:()=>VN,Fields:()=>HN,FromStringShapeDeserializer:()=>PN,HttpBindingProtocol:()=>DN,HttpInterceptingShapeDeserializer:()=>IN,HttpInterceptingShapeSerializer:()=>zN,HttpProtocol:()=>TN,HttpRequest:()=>bn,HttpResponse:()=>_n,RequestBuilder:()=>jN,RpcProtocol:()=>ON,SerdeContext:()=>CN,ToStringShapeSerializer:()=>LN,buildQueryString:()=>Gae,collectBody:()=>yN,contentLengthMiddleware:()=>GN,contentLengthMiddlewareOptions:()=>qN,determineTimestampFormat:()=>MN,escapeUri:()=>YN,escapeUriPath:()=>QN,extendedEncodeURIComponent:()=>xN,getContentLengthPlugin:()=>JN,getHttpHandlerExtensionConfiguration:()=>UN,isValidHostname:()=>Gn,parseQueryString:()=>xn,parseUrl:()=>yn,requestBuilder:()=>Iae,resolveHttpHandlerRuntimeConfig:()=>WN,resolvedPath:()=>kN}),Jae=n((()=>{bN(),SN(),Pae(),EN(),Fae(),Lae(),AN(),FN(),Rae(),zae(),RN(),NN(),wN(),Bae(),Vae(),Sn(),Hae(),Uae(),ZN(),Wae(),Kae()})),$N=/* @__PURE__ */ a((n=>{let{hasOwn:r}=(Bn(),e(Nn)),{streamCollector:i}=(Bn(),e(Nn));n.streamCollector=i;let{buildQueryString:a,HttpResponse:o}=(Jae(),e(qae)),s=t(`node:https`),{Readable:c}=t(`node:stream`),l=t(`node:http2`);function u(e){let t=e&&typeof e==`object`&&`reason`in e?e.reason:void 0;if(t){if(t instanceof Error){let e=/* @__PURE__ */ Error(`Request aborted`);return e.name=`AbortError`,e.cause=t,e}let e=Error(String(t));return e.name=`AbortError`,e}let n=/* @__PURE__ */ Error(`Request aborted`);return n.name=`AbortError`,n}let d=[`ECONNRESET`,`EPIPE`,`ETIMEDOUT`],f=e=>{let t={};for(let n in e){if(!r(e,n))continue;let i=e[n];t[n]=Array.isArray(i)?i.join(`,`):i}return t},p={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},m=1e3,h=(e,t,n=0)=>{if(!n)return-1;let r=r=>{let i=p.setTimeout(()=>{e.destroy(),t(Object.assign(/* @__PURE__ */ Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${n} ms.`),{name:`TimeoutError`}))},n-r),a=e=>{e?.connecting?e.on(`connect`,()=>{p.clearTimeout(i)}):p.clearTimeout(i)};e.socket?a(e.socket):e.on(`socket`,a)};return n<2e3?(r(0),0):p.setTimeout(r.bind(null,m),m)},g=(e,t,n=0,r,i)=>n?p.setTimeout(()=>{let a=`@smithy/node-http-handler - [${r?`ERROR`:`WARN`}] a request has exceeded the configured ${n} ms requestTimeout.`;if(r){let n=Object.assign(Error(a),{name:`TimeoutError`,code:`ETIMEDOUT`});e.destroy(n),t(n)}else a+=` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`,i?.warn?.(a)},n):-1,v=(e,{keepAlive:t,keepAliveMsecs:n},r=3e3)=>{if(t!==!0)return-1;let i=()=>{e.socket?e.socket.setKeepAlive(t,n||0):e.on(`socket`,e=>{e.setKeepAlive(t,n||0)})};return r===0?(i(),0):p.setTimeout(i,r)},y=3e3,b=(e,t,n=0)=>{let r=r=>{let i=n-r,a=()=>{e.destroy(),t(Object.assign(/* @__PURE__ */ Error(`@smithy/node-http-handler - the request socket timed out after ${n} ms of inactivity (configured by client requestHandler).`),{name:`TimeoutError`}))};e.socket?(e.socket.setTimeout(i,a),e.on(`close`,()=>e.socket?.removeListener(`timeout`,a))):e.setTimeout(i,a)};return 0{o=Number(p.setTimeout(()=>e(!0),Math.max(x,n)))}),new Promise(t=>{e.on(`continue`,()=>{p.clearTimeout(o),t(!0)}),e.on(`response`,()=>{p.clearTimeout(o),t(!1)}),e.on(`error`,()=>{p.clearTimeout(o),t(!1)})})])),s&&C(e,t.body)}function C(e,t){if(t instanceof c)t.pipe(e);else if(t){let n=Buffer.isBuffer(t);if(n||typeof t==`string`){n&&t.byteLength===0?e.end():e.end(t);return}let r=t;if(typeof r==`object`&&r.buffer&&typeof r.byteOffset==`number`&&typeof r.byteLength==`number`){e.end(Buffer.from(r.buffer,r.byteOffset,r.byteLength));return}e.end(Buffer.from(t))}else e.end()}let w,T;var E=class e{config;configProvider;socketWarningTimestamp=0;externalAgent=!1;metadata={handlerProtocol:`http/1.1`};static create(t){return typeof t?.handle==`function`?t:new e(t)}static checkSocketUsage(e,t,n=console){let{sockets:i,requests:a,maxSockets:o}=e;if(typeof o!=`number`||o===1/0||Date.now()-15e3=o&&s>=2*o)return n?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${t} and ${s} additional requests are enqueued. See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html -or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return t}constructor(e){this.configProvider=new Promise((t,n)=>{typeof e==`function`?e().then(e=>{t(this.resolveDefaultConfig(e))}).catch(n):t(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(t,{abortSignal:n,requestTimeout:r}={}){this.config||=await this.configProvider;let i=this.config,c=i.logger,l=t.protocol===`https:`;return!l&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((m,y)=>{let x,C=-1,E=-1,D=-1,O=-1,k=-1,A=()=>{p.clearTimeout(C),p.clearTimeout(E),p.clearTimeout(D),p.clearTimeout(O),p.clearTimeout(k)},j=async e=>{await x,A(),m(e)},M=async e=>{await x,A(),y(e)};if(n?.aborted){M(u(n));return}let N=t.headers,P=N?(N.Expect??N.expect)===`100-continue`:!1,F=l?i.httpsAgent:i.httpAgent;P&&!this.externalAgent&&(F=new(l?s.Agent:w)({keepAlive:!1,maxSockets:1/0})),C=p.setTimeout(()=>{this.socketWarningTimestamp=e.checkSocketUsage(F,this.socketWarningTimestamp,c)},i.socketAcquisitionWarningTimeout??(i.requestTimeout??2e3)+(i.connectionTimeout??1e3));let I=t.query?a(t.query):``,ee;(t.username!=null||t.password!=null)&&(ee=`${t.username??``}:${t.password??``}`);let L=t.path;I&&(L+=`?${I}`),t.fragment&&(L+=`#${t.fragment}`);let R=t.hostname??``;R=R[0]===`[`&&R.endsWith(`]`)?t.hostname.slice(1,-1):t.hostname;let te={headers:t.headers,host:R,method:t.method,path:L,port:t.port,agent:F,auth:ee},ne=(l?s.request:T)(te,e=>{let t=new o({statusCode:e.statusCode||-1,reason:e.statusMessage,headers:f(e.headers),body:e});j({response:t})});if(ne.on(`error`,e=>{d.includes(e.code)?M(Object.assign(e,{name:`TimeoutError`})):M(e)}),n){let e=()=>{ne.destroy();let e=u(n);M(e)};if(typeof n.addEventListener==`function`){let t=n;t.addEventListener(`abort`,e,{once:!0}),ne.once(`close`,()=>t.removeEventListener(`abort`,e))}else n.onabort=e}let re=r??i.requestTimeout;E=h(ne,M,i.connectionTimeout),D=g(ne,M,re,i.throwOnRequestTimeout,c??console),O=b(ne,M,i.socketTimeout);let ie=te.agent;typeof ie==`object`&&`keepAlive`in ie&&(k=v(ne,{keepAlive:ie.keepAlive,keepAliveMsecs:ie.keepAliveMsecs})),x=S(ne,t,re,this.externalAgent).catch(e=>(A(),y(e)))})}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then(n=>e===Symbol.for(`logger`)?{...n,logger:n.logger??t}:{...n,[e]:t})}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:n,connectionTimeout:r,socketTimeout:i,socketAcquisitionWarningTimeout:a,httpAgent:o,httpsAgent:c,throwOnRequestTimeout:l,logger:u}=e||{};return{connectionTimeout:r,requestTimeout:n,socketTimeout:i,socketAcquisitionWarningTimeout:a,throwOnRequestTimeout:l,httpAgentProvider:async()=>{let e=t(`node:http`),{Agent:n,request:r}=e.default??e;return T=r,w=n,o instanceof w||typeof o?.destroy==`function`?(this.externalAgent=!0,o):new w({keepAlive:!0,maxSockets:50,...o})},httpsAgent:c instanceof s.Agent||typeof c?.destroy==`function`?(this.externalAgent=!0,c):new s.Agent({keepAlive:!0,maxSockets:50,...c}),logger:u}}};let D=/* @__PURE__ */ new Uint16Array(1);var O=class{id=D[0]++;total=0;max=0;session;refs=0;constructor(e){e.unref(),this.session=e}retain(){if(this.session.destroyed)throw Error(`@smithy/node-http-handler - cannot acquire reference to destroyed session.`);this.refs+=1,this.total+=1,this.max=Math.max(this.refs,this.max),this.session.ref()}free(){if(!this.session.destroyed&&(--this.refs,this.refs===0&&this.session.unref(),this.refs<0))throw Error(`@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement.`)}deref(){return this.session}close(){this.session.closed||this.session.close()}destroy(){this.refs=0,this.session.destroyed||(this.session.setTimeout(0),this.session.destroy())}useCount(){return this.refs}},k=class{sessions=[];maxConcurrency=0;constructor(e){this.sessions=(e??[]).map(e=>new O(e))}poll(){let e=!1;for(let t of this.sessions)if(t.deref().destroyed)e=!0;else if(!this.maxConcurrency||t.useCount()-1&&this.sessions.splice(t,1)}[Symbol.iterator](){return this.sessions[Symbol.iterator]()}setMaxConcurrency(e){this.maxConcurrency=e}destroy(e){this.remove(e),e.destroy()}},A=class{config;connectOptions;connectionPools=/* @__PURE__ */ new Map;constructor(e){if(this.config=e,this.config.maxConcurrency&&this.config.maxConcurrency<=0)throw RangeError(`maxConcurrency must be greater than zero.`)}lease(e,t){let n=this.getUrlString(e),r=this.getPool(n);if(!this.config.disableConcurrency&&!t.isEventStream){let e=r.poll();if(e)return e.retain(),e}let i=new O(this.connect(n)),a=i.deref();this.config.maxConcurrency&&a.settings({maxConcurrentStreams:this.config.maxConcurrency},t=>{if(t)throw Error(`Fail to set maxConcurrentStreams to `+this.config.maxConcurrency+`when creating new session for `+e.destination.toString())});let o=()=>{this.removeFromPoolAndClose(n,i)},s=()=>{this.removeFromPoolAndCheckedDestroy(n,i)};return a.on(`goaway`,o),a.on(`error`,s),a.on(`frameError`,s),a.on(`close`,s),t.requestTimeout&&a.setTimeout(t.requestTimeout,s),r.offerLast(i),i.retain(),i}release(e,t){t.free()}createIsolatedSession(e,t){let n=this.getUrlString(e),r=new O(this.connect(n)),i=r.deref();i.settings({maxConcurrentStreams:1});let a=()=>{r.destroy()};i.on(`error`,a),i.on(`frameError`,a),i.on(`close`,a);let o=t.requestTimeout??3e5;return i.setTimeout(o,a),r.retain(),r}destroy(){for(let[e,t]of this.connectionPools){for(let e of[...t])e.destroy();this.connectionPools.delete(e)}}setMaxConcurrentStreams(e){if(e&&e<=0)throw RangeError(`maxConcurrentStreams must be greater than zero.`);this.config.maxConcurrency=e;for(let t of this.connectionPools.values())t.setMaxConcurrency(e)}setDisableConcurrentStreams(e){this.config.disableConcurrency=e}setNodeHttp2ConnectOptions(e){this.connectOptions=e}debug(){let e={};for(let[t,n]of this.connectionPools){let r=[];for(let e of n)r.push({id:e.id,active:e.useCount(),maxConcurrent:e.max,totalRequests:e.total});e[t]={sessions:r}}return e}removeFromPoolAndClose(e,t){this.connectionPools.get(e)?.remove(t),t.close()}removeFromPoolAndCheckedDestroy(e,t){this.connectionPools.get(e)?.remove(t),t.destroy()}getPool(e){if(!this.connectionPools.has(e)){let t=new k;this.config.maxConcurrency&&t.setMaxConcurrency(this.config.maxConcurrency),this.connectionPools.set(e,t)}return this.connectionPools.get(e)}getUrlString(e){return e.destination.toString()}connect(e){return this.connectOptions===void 0?l.connect(e):l.connect(e,this.connectOptions)}};let{constants:j}=l;var M=class e{config;configProvider;metadata={handlerProtocol:`h2`};connectionManager=new A({});static create(t){return typeof t?.handle==`function`?t:new e(t)}constructor(e){this.configProvider=new Promise((t,n)=>{typeof e==`function`?e().then(e=>{t(e||{})}).catch(n):t(e||{})})}destroy(){this.connectionManager.destroy()}async handle(e,{abortSignal:t,requestTimeout:n,isEventStream:r}={}){if(!this.config){this.config=await this.configProvider;let{disableConcurrentStreams:e,maxConcurrentStreams:t,nodeHttp2ConnectOptions:n}=this.config;this.connectionManager.setDisableConcurrentStreams(e??!1),t&&this.connectionManager.setMaxConcurrentStreams(t),n&&this.connectionManager.setNodeHttp2ConnectOptions(n)}let{requestTimeout:i,disableConcurrentStreams:s}=this.config,c=s||r,l=n??i;return new Promise((n,i)=>{let s=!1,d,p=async e=>{await d,n(e)},m=async e=>{await d,i(e)};if(t?.aborted){s=!0,m(u(t));return}let{hostname:h,method:g,port:v,protocol:y,query:b}=e,x=``;(e.username!=null||e.password!=null)&&(x=`${e.username??``}:${e.password??``}@`);let C=`${y}//${x}${h}${v?`:${v}`:``}`,w={destination:new URL(C)},T={requestTimeout:this.config?.sessionTimeout,isEventStream:r},E=c?this.connectionManager.createIsolatedSession(w,T):this.connectionManager.lease(w,T),D=E.deref(),O=e=>{c&&E.destroy(),s=!0,m(e)},k=b?a(b):``,A=e.path;k&&(A+=`?${k}`),e.fragment&&(A+=`#${e.fragment}`);let M=D.request({...e.headers,[j.HTTP2_HEADER_PATH]:A,[j.HTTP2_HEADER_METHOD]:g});if(l&&M.setTimeout(l,()=>{M.close();let e=/* @__PURE__ */ Error(`Stream timed out because of no activity for ${l} ms`);e.name=`TimeoutError`,O(e)}),t){let e=()=>{M.close();let e=u(t);O(e)};if(typeof t.addEventListener==`function`){let n=t;n.addEventListener(`abort`,e,{once:!0}),M.once(`close`,()=>n.removeEventListener(`abort`,e))}else t.onabort=e}M.on(`frameError`,(e,t,n)=>{O(/* @__PURE__ */ Error(`Frame type id ${e} in stream id ${n} has failed with code ${t}.`))}),M.on(`error`,O),M.on(`aborted`,()=>{O(/* @__PURE__ */ Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${M.rstCode}.`))}),M.on(`response`,e=>{let t=new o({statusCode:e[`:status`]??-1,headers:f(e),body:M});s=!0,p({response:t}),c&&(D.close(),M.on(`end`,()=>{E.destroy()}))}),M.on(`close`,()=>{if(c?E.destroy():this.connectionManager.release(w,E),!s){let e=/* @__PURE__ */ Error(`Unexpected error: http2 request did not get a response`);D.destroyed&&(e.name=`TimeoutError`),O(e)}}),d=S(M,e,l)})}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then(n=>({...n,[e]:t}))}httpHandlerConfigs(){return this.config??{}}};n.DEFAULT_REQUEST_TIMEOUT=0,n.NodeHttp2Handler=M,n.NodeHttpHandler=E})),kN=/* @__PURE__ */ a((n=>{let{setCredentialFeature:r}=(dT(),e(uT)),{CredentialsProviderError:i}=(nt(),e(he)),{NodeHttpHandler:a}=ON(),o=t(`node:fs/promises`),{HttpRequest:s}=(mS(),e(pS)),{sdkStreamMixin:c,parseRfc3339DateTime:l}=(x(),e(E)),u=(e,t)=>{if(e.protocol!==`https:`&&e.hostname!==`169.254.170.2`&&e.hostname!==`169.254.170.23`&&e.hostname!==`[fd00:ec2::23]`){if(e.hostname.includes(`[`)){if(e.hostname===`[::1]`||e.hostname===`[0000:0000:0000:0000:0000:0000:0000:0001]`)return}else{if(e.hostname===`localhost`)return;let t=e.hostname.split(`.`),n=e=>{let t=parseInt(e,10);return 0<=t&&t<=255};if(t[0]===`127`&&n(t[1])&&n(t[2])&&n(t[3])&&t.length===4)return}throw new i(`URL not accepted. It must either be HTTPS or match one of the following: +or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return t}constructor(e){this.configProvider=new Promise((t,n)=>{typeof e==`function`?e().then(e=>{t(this.resolveDefaultConfig(e))}).catch(n):t(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(t,{abortSignal:n,requestTimeout:r}={}){this.config||=await this.configProvider;let i=this.config,c=i.logger,l=t.protocol===`https:`;return!l&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((m,y)=>{let x,C=-1,E=-1,D=-1,O=-1,k=-1,A=()=>{p.clearTimeout(C),p.clearTimeout(E),p.clearTimeout(D),p.clearTimeout(O),p.clearTimeout(k)},j=async e=>{await x,A(),m(e)},M=async e=>{await x,A(),y(e)};if(n?.aborted){M(u(n));return}let N=t.headers,P=N?(N.Expect??N.expect)===`100-continue`:!1,F=l?i.httpsAgent:i.httpAgent;P&&!this.externalAgent&&(F=new(l?s.Agent:w)({keepAlive:!1,maxSockets:1/0})),C=p.setTimeout(()=>{this.socketWarningTimestamp=e.checkSocketUsage(F,this.socketWarningTimestamp,c)},i.socketAcquisitionWarningTimeout??(i.requestTimeout??2e3)+(i.connectionTimeout??1e3));let I=t.query?a(t.query):``,ee;(t.username!=null||t.password!=null)&&(ee=`${t.username??``}:${t.password??``}`);let L=t.path;I&&(L+=`?${I}`),t.fragment&&(L+=`#${t.fragment}`);let R=t.hostname??``;R=R[0]===`[`&&R.endsWith(`]`)?t.hostname.slice(1,-1):t.hostname;let te={headers:t.headers,host:R,method:t.method,path:L,port:t.port,agent:F,auth:ee},ne=(l?s.request:T)(te,e=>{let t=new o({statusCode:e.statusCode||-1,reason:e.statusMessage,headers:f(e.headers),body:e});j({response:t})});if(ne.on(`error`,e=>{d.includes(e.code)?M(Object.assign(e,{name:`TimeoutError`})):M(e)}),n){let e=()=>{ne.destroy();let e=u(n);M(e)};if(typeof n.addEventListener==`function`){let t=n;t.addEventListener(`abort`,e,{once:!0}),ne.once(`close`,()=>t.removeEventListener(`abort`,e))}else n.onabort=e}let re=r??i.requestTimeout;E=h(ne,M,i.connectionTimeout),D=g(ne,M,re,i.throwOnRequestTimeout,c??console),O=b(ne,M,i.socketTimeout);let ie=te.agent;typeof ie==`object`&&`keepAlive`in ie&&(k=v(ne,{keepAlive:ie.keepAlive,keepAliveMsecs:ie.keepAliveMsecs})),x=S(ne,t,re,this.externalAgent).catch(e=>(A(),y(e)))})}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then(n=>e===Symbol.for(`logger`)?{...n,logger:n.logger??t}:{...n,[e]:t})}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:n,connectionTimeout:r,socketTimeout:i,socketAcquisitionWarningTimeout:a,httpAgent:o,httpsAgent:c,throwOnRequestTimeout:l,logger:u}=e||{};return{connectionTimeout:r,requestTimeout:n,socketTimeout:i,socketAcquisitionWarningTimeout:a,throwOnRequestTimeout:l,httpAgentProvider:async()=>{let e=t(`node:http`),{Agent:n,request:r}=e.default??e;return T=r,w=n,o instanceof w||typeof o?.destroy==`function`?(this.externalAgent=!0,o):new w({keepAlive:!0,maxSockets:50,...o})},httpsAgent:c instanceof s.Agent||typeof c?.destroy==`function`?(this.externalAgent=!0,c):new s.Agent({keepAlive:!0,maxSockets:50,...c}),logger:u}}};let D=/* @__PURE__ */ new Uint16Array(1);var O=class{id=D[0]++;total=0;max=0;session;refs=0;constructor(e){e.unref(),this.session=e}retain(){if(this.session.destroyed)throw Error(`@smithy/node-http-handler - cannot acquire reference to destroyed session.`);this.refs+=1,this.total+=1,this.max=Math.max(this.refs,this.max),this.session.ref()}free(){if(!this.session.destroyed&&(--this.refs,this.refs===0&&this.session.unref(),this.refs<0))throw Error(`@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement.`)}deref(){return this.session}close(){this.session.closed||this.session.close()}destroy(){this.refs=0,this.session.destroyed||(this.session.setTimeout(0),this.session.destroy())}useCount(){return this.refs}},k=class{sessions=[];maxConcurrency=0;constructor(e){this.sessions=(e??[]).map(e=>new O(e))}poll(){let e=!1;for(let t of this.sessions)if(t.deref().destroyed)e=!0;else if(!this.maxConcurrency||t.useCount()-1&&this.sessions.splice(t,1)}[Symbol.iterator](){return this.sessions[Symbol.iterator]()}setMaxConcurrency(e){this.maxConcurrency=e}destroy(e){this.remove(e),e.destroy()}},A=class{config;connectOptions;connectionPools=/* @__PURE__ */ new Map;constructor(e){if(this.config=e,this.config.maxConcurrency&&this.config.maxConcurrency<=0)throw RangeError(`maxConcurrency must be greater than zero.`)}lease(e,t){let n=this.getUrlString(e),r=this.getPool(n);if(!this.config.disableConcurrency&&!t.isEventStream){let e=r.poll();if(e)return e.retain(),e}let i=new O(this.connect(n)),a=i.deref();this.config.maxConcurrency&&a.settings({maxConcurrentStreams:this.config.maxConcurrency},t=>{if(t)throw Error(`Fail to set maxConcurrentStreams to `+this.config.maxConcurrency+`when creating new session for `+e.destination.toString())});let o=()=>{this.removeFromPoolAndClose(n,i)},s=()=>{this.removeFromPoolAndCheckedDestroy(n,i)};return a.on(`goaway`,o),a.on(`error`,s),a.on(`frameError`,s),a.on(`close`,s),t.requestTimeout&&a.setTimeout(t.requestTimeout,s),r.offerLast(i),i.retain(),i}release(e,t){t.free()}createIsolatedSession(e,t){let n=this.getUrlString(e),r=new O(this.connect(n)),i=r.deref();i.settings({maxConcurrentStreams:1});let a=()=>{r.destroy()};i.on(`error`,a),i.on(`frameError`,a),i.on(`close`,a);let o=t.requestTimeout??3e5;return i.setTimeout(o,a),r.retain(),r}destroy(){for(let[e,t]of this.connectionPools){for(let e of[...t])e.destroy();this.connectionPools.delete(e)}}setMaxConcurrentStreams(e){if(e&&e<=0)throw RangeError(`maxConcurrentStreams must be greater than zero.`);this.config.maxConcurrency=e;for(let t of this.connectionPools.values())t.setMaxConcurrency(e)}setDisableConcurrentStreams(e){this.config.disableConcurrency=e}setNodeHttp2ConnectOptions(e){this.connectOptions=e}debug(){let e={};for(let[t,n]of this.connectionPools){let r=[];for(let e of n)r.push({id:e.id,active:e.useCount(),maxConcurrent:e.max,totalRequests:e.total});e[t]={sessions:r}}return e}removeFromPoolAndClose(e,t){this.connectionPools.get(e)?.remove(t),t.close()}removeFromPoolAndCheckedDestroy(e,t){this.connectionPools.get(e)?.remove(t),t.destroy()}getPool(e){if(!this.connectionPools.has(e)){let t=new k;this.config.maxConcurrency&&t.setMaxConcurrency(this.config.maxConcurrency),this.connectionPools.set(e,t)}return this.connectionPools.get(e)}getUrlString(e){return e.destination.toString()}connect(e){return this.connectOptions===void 0?l.connect(e):l.connect(e,this.connectOptions)}};let{constants:j}=l;var M=class e{config;configProvider;metadata={handlerProtocol:`h2`};connectionManager=new A({});static create(t){return typeof t?.handle==`function`?t:new e(t)}constructor(e){this.configProvider=new Promise((t,n)=>{typeof e==`function`?e().then(e=>{t(e||{})}).catch(n):t(e||{})})}destroy(){this.connectionManager.destroy()}async handle(e,{abortSignal:t,requestTimeout:n,isEventStream:r}={}){if(!this.config){this.config=await this.configProvider;let{disableConcurrentStreams:e,maxConcurrentStreams:t,nodeHttp2ConnectOptions:n}=this.config;this.connectionManager.setDisableConcurrentStreams(e??!1),t&&this.connectionManager.setMaxConcurrentStreams(t),n&&this.connectionManager.setNodeHttp2ConnectOptions(n)}let{requestTimeout:i,disableConcurrentStreams:s}=this.config,c=s||r,l=n??i;return new Promise((n,i)=>{let s=!1,d,p=async e=>{await d,n(e)},m=async e=>{await d,i(e)};if(t?.aborted){s=!0,m(u(t));return}let{hostname:h,method:g,port:v,protocol:y,query:b}=e,x=``;(e.username!=null||e.password!=null)&&(x=`${e.username??``}:${e.password??``}@`);let C=`${y}//${x}${h}${v?`:${v}`:``}`,w={destination:new URL(C)},T={requestTimeout:this.config?.sessionTimeout,isEventStream:r},E=c?this.connectionManager.createIsolatedSession(w,T):this.connectionManager.lease(w,T),D=E.deref(),O=e=>{c&&E.destroy(),s=!0,m(e)},k=b?a(b):``,A=e.path;k&&(A+=`?${k}`),e.fragment&&(A+=`#${e.fragment}`);let M=D.request({...e.headers,[j.HTTP2_HEADER_PATH]:A,[j.HTTP2_HEADER_METHOD]:g});if(l&&M.setTimeout(l,()=>{M.close();let e=/* @__PURE__ */ Error(`Stream timed out because of no activity for ${l} ms`);e.name=`TimeoutError`,O(e)}),t){let e=()=>{M.close();let e=u(t);O(e)};if(typeof t.addEventListener==`function`){let n=t;n.addEventListener(`abort`,e,{once:!0}),M.once(`close`,()=>n.removeEventListener(`abort`,e))}else t.onabort=e}M.on(`frameError`,(e,t,n)=>{O(/* @__PURE__ */ Error(`Frame type id ${e} in stream id ${n} has failed with code ${t}.`))}),M.on(`error`,O),M.on(`aborted`,()=>{O(/* @__PURE__ */ Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${M.rstCode}.`))}),M.on(`response`,e=>{let t=new o({statusCode:e[`:status`]??-1,headers:f(e),body:M});s=!0,p({response:t}),c&&(D.close(),M.on(`end`,()=>{E.destroy()}))}),M.on(`close`,()=>{if(c?E.destroy():this.connectionManager.release(w,E),!s){let e=/* @__PURE__ */ Error(`Unexpected error: http2 request did not get a response`);D.destroyed&&(e.name=`TimeoutError`),O(e)}}),d=S(M,e,l)})}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then(n=>({...n,[e]:t}))}httpHandlerConfigs(){return this.config??{}}};n.DEFAULT_REQUEST_TIMEOUT=0,n.NodeHttp2Handler=M,n.NodeHttpHandler=E})),eP=/* @__PURE__ */ a((n=>{let{setCredentialFeature:r}=(uT(),e(lT)),{CredentialsProviderError:i}=(nt(),e(he)),{NodeHttpHandler:a}=$N(),o=t(`node:fs/promises`),{HttpRequest:s}=(yS(),e(vS)),{sdkStreamMixin:c,parseRfc3339DateTime:l}=(x(),e(E)),u=(e,t)=>{if(e.protocol!==`https:`&&e.hostname!==`169.254.170.2`&&e.hostname!==`169.254.170.23`&&e.hostname!==`[fd00:ec2::23]`){if(e.hostname.includes(`[`)){if(e.hostname===`[::1]`||e.hostname===`[0000:0000:0000:0000:0000:0000:0000:0001]`)return}else{if(e.hostname===`localhost`)return;let t=e.hostname.split(`.`),n=e=>{let t=parseInt(e,10);return 0<=t&&t<=255};if(t[0]===`127`&&n(t[1])&&n(t[2])&&n(t[3])&&t.length===4)return}throw new i(`URL not accepted. It must either be HTTPS or match one of the following: - loopback CIDR 127.0.0.0/8 or [::1/128] - ECS container host 169.254.170.2 - EKS container host 169.254.170.23 or [fd00:ec2::23]`,{logger:t})}};function d(e){return new s({protocol:e.protocol,hostname:e.hostname,port:Number(e.port),path:e.pathname,query:Array.from(e.searchParams.entries()).reduce((e,[t,n])=>(e[t]=n,e),{}),fragment:e.hash})}async function f(e,t){let n=await c(e.body).transformToString();if(e.statusCode===200){let e=JSON.parse(n);if(typeof e.AccessKeyId!=`string`||typeof e.SecretAccessKey!=`string`||typeof e.Token!=`string`||typeof e.Expiration!=`string`)throw new i(`HTTP credential provider response not of the required format, an object matching: { AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }`,{logger:t});return{accessKeyId:e.AccessKeyId,secretAccessKey:e.SecretAccessKey,sessionToken:e.Token,expiration:l(e.Expiration)}}if(e.statusCode>=400&&e.statusCode<500){let r={};try{r=JSON.parse(n)}catch{}throw Object.assign(new i(`Server responded with status: ${e.statusCode}`,{logger:t}),{Code:r.Code,Message:r.Message})}throw new i(`Server responded with status: ${e.statusCode}`,{logger:t})}let p=(e,t,n)=>async()=>{for(let r=0;rsetTimeout(e,n))}return await e()},m=(e={})=>{e.logger?.debug(`@aws-sdk/credential-provider-http - fromHttp`);let t,n=e.awsContainerCredentialsRelativeUri??process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,s=e.awsContainerCredentialsFullUri??process.env.AWS_CONTAINER_CREDENTIALS_FULL_URI,c=e.awsContainerAuthorizationToken??process.env.AWS_CONTAINER_AUTHORIZATION_TOKEN,l=e.awsContainerAuthorizationTokenFile??process.env.AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE,m=e.logger?.constructor?.name===`NoOpLogger`||!e.logger?.warn?console.warn:e.logger.warn.bind(e.logger);if(n&&s&&(m(`@aws-sdk/credential-provider-http: you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.`),m(`awsContainerCredentialsRelativeUri will take precedence.`)),c&&l&&(m(`@aws-sdk/credential-provider-http: you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.`),m(`awsContainerAuthorizationTokenFile will take precedence.`)),n)t=`http://169.254.170.2${n}`;else if(s)t=s;else throw new i(`No HTTP credential provider host provided. Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`,{logger:e.logger});let g=new URL(t);u(g,e.logger);let v=a.create({connectionTimeout:e.timeout??1e3}),y=e.timeout??1e3,b=p(async()=>{let t=d(g);l?t.headers.Authorization=h((await o.readFile(l)).toString()):c&&(t.headers.Authorization=h(c));try{return f((await v.handle(t,{requestTimeout:y})).response).then(e=>r(e,`CREDENTIALS_HTTP`,`z`))}catch(t){throw new i(String(t),{logger:e.logger})}},e.maxRetries??3,e.timeout??1e3);return async()=>{try{return await b()}finally{v.destroy?.()}}},h=e=>{if(e.includes(`\r -`))throw new i(`Authorization token contains invalid \\r\\n sequence.`);return e};n.fromHttp=m}));function boe(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`sso-oauth`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function xoe(e){return{schemeId:`smithy.api#noAuth`}}var AN,jN,MN,NN=n((()=>{qA(),R(),AN=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),jN=e=>{let t=[];switch(e.operation){case`CreateToken`:t.push(xoe(e));break;default:t.push(boe(e))}return t},MN=e=>{let t=GA(e);return Object.assign(t,{authSchemePreference:Se(e.authSchemePreference??[])})}})),PN,FN,IN=n((()=>{PN=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:`sso-oauth`}),FN={UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),LN=`3.997.50`,RN,zN,BN,VN,HN,UN,WN,GN,KN,qN,JN,YN,XN,ZN,QN,Soe=n((()=>{Le(),RN=`ref`,zN=-1,BN=!0,VN=`isSet`,HN=`PartitionResult`,UN=`booleanEquals`,WN=`getAttr`,GN={[RN]:`Endpoint`},KN={[RN]:HN},qN={},JN=[{[RN]:`Region`}],YN={conditions:[[VN,[GN]],[VN,JN],[`aws.partition`,JN,HN],[UN,[{[RN]:`UseFIPS`},BN]],[UN,[{[RN]:`UseDualStack`},BN]],[UN,[{fn:WN,argv:[KN,`supportsDualStack`]},BN]],[UN,[{fn:WN,argv:[KN,`supportsFIPS`]},BN]],[`stringEquals`,[{fn:WN,argv:[KN,`name`]},`aws-us-gov`]]],results:[[zN],[zN,`Invalid Configuration: FIPS and custom endpoint are not supported`],[zN,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[GN,qN],[`https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,qN],[zN,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://oidc.{Region}.amazonaws.com`,qN],[`https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}`,qN],[zN,`FIPS is enabled but this partition does not support FIPS`],[`https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}`,qN],[zN,`DualStack is enabled but this partition does not support DualStack`],[`https://oidc.{Region}.{PartitionResult#dnsSuffix}`,qN],[zN,`Invalid Configuration: Missing Region`]]},XN=2,ZN=new Int32Array([-1,1,-1,0,13,3,1,4,100000012,2,5,100000012,3,8,6,4,7,100000011,5,100000009,100000010,4,11,9,6,10,100000008,7,100000006,100000007,5,12,100000005,6,100000004,100000005,3,100000001,14,4,100000002,100000003]),QN=Te.from(ZN,XN,YN.conditions,YN.results)})),$N,eP,Coe=n((()=>{dT(),Le(),Soe(),$N=new Ne({size:50,params:[`Endpoint`,`Region`,`UseDualStack`,`UseFIPS`]}),eP=(e,t={})=>$N.get(e,()=>Be(QN,{endpointParams:e,logger:t.logger})),Qe.aws=iT})),tP,nP=n((()=>{R(),tP=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.ssooidc#SSOOIDCServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),rP,iP,aP,oP,sP,cP,lP,uP,dP,fP,pP,mP=n((()=>{nP(),rP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#AccessDeniedException`;name=`AccessDeniedException`;$fault=`client`;error;reason;error_description;constructor(t){super({name:`AccessDeniedException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.reason=t.reason,this.error_description=t.error_description}},iP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#AuthorizationPendingException`;name=`AuthorizationPendingException`;$fault=`client`;error;error_description;constructor(t){super({name:`AuthorizationPendingException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},aP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#ExpiredTokenException`;name=`ExpiredTokenException`;$fault=`client`;error;error_description;constructor(t){super({name:`ExpiredTokenException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},oP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#InternalServerException`;name=`InternalServerException`;$fault=`server`;error;error_description;constructor(t){super({name:`InternalServerException`,$fault:`server`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},sP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#InvalidClientException`;name=`InvalidClientException`;$fault=`client`;error;error_description;constructor(t){super({name:`InvalidClientException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},cP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#InvalidGrantException`;name=`InvalidGrantException`;$fault=`client`;error;error_description;constructor(t){super({name:`InvalidGrantException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},lP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#InvalidRequestException`;name=`InvalidRequestException`;$fault=`client`;error;reason;error_description;constructor(t){super({name:`InvalidRequestException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.reason=t.reason,this.error_description=t.error_description}},uP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#InvalidScopeException`;name=`InvalidScopeException`;$fault=`client`;error;error_description;constructor(t){super({name:`InvalidScopeException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},dP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#SlowDownException`;name=`SlowDownException`;$fault=`client`;error;error_description;constructor(t){super({name:`SlowDownException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},fP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#UnauthorizedClientException`;name=`UnauthorizedClientException`;$fault=`client`;error;error_description;constructor(t){super({name:`UnauthorizedClientException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},pP=class e extends tP{static shapeId=`com.amazonaws.ssooidc#UnsupportedGrantTypeException`;name=`UnsupportedGrantTypeException`;$fault=`client`;error;error_description;constructor(t){super({name:`UnsupportedGrantTypeException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}}})),hP,gP,_P,vP,yP,bP,xP,SP,CP,wP,TP,EP,DP,OP,kP,AP,jP,MP,NP,PP,FP,IP,LP,RP,zP,BP,VP,HP,UP,WP,GP,KP,qP,JP,YP,XP,ZP,QP,$P,eF,tF,nF,rF,iF,aF,oF,sF,cF,lF,uF,dF,fF,pF,mF,hF,gF,_F,vF,yF,bF,xF,SF,CF,wF,TF=n((()=>{D(),mP(),nP(),hP=`AccessDeniedException`,gP=`AuthorizationPendingException`,_P=`AccessToken`,vP=`ClientSecret`,yP=`CreateToken`,bP=`CreateTokenRequest`,xP=`CreateTokenResponse`,SP=`CodeVerifier`,CP=`ExpiredTokenException`,wP=`InvalidClientException`,TP=`InvalidGrantException`,EP=`InvalidRequestException`,DP=`InternalServerException`,OP=`InvalidScopeException`,kP=`IdToken`,AP=`RefreshToken`,jP=`SlowDownException`,MP=`UnauthorizedClientException`,NP=`UnsupportedGrantTypeException`,PP=`accessToken`,FP=`client`,IP=`clientId`,LP=`clientSecret`,RP=`codeVerifier`,zP=`code`,BP=`deviceCode`,VP=`error`,HP=`expiresIn`,UP=`error_description`,WP=`grantType`,GP=`http`,KP=`httpError`,qP=`idToken`,JP=`reason`,YP=`refreshToken`,XP=`redirectUri`,ZP=`smithy.ts.sdk.synthetic.com.amazonaws.ssooidc`,QP=`scope`,$P=`server`,eF=`tokenType`,tF=`com.amazonaws.ssooidc`,nF=new T(ZP),rF=[-3,ZP,`SSOOIDCServiceException`,0,[],[]],nF.registerError(rF,tP),iF=new T(tF),aF=[-3,tF,hP,{[VP]:FP,[KP]:400},[VP,JP,UP],[0,0,0]],iF.registerError(aF,rP),oF=[-3,tF,gP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(oF,iP),sF=[-3,tF,CP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(sF,aP),cF=[-3,tF,DP,{[VP]:$P,[KP]:500},[VP,UP],[0,0]],iF.registerError(cF,oP),lF=[-3,tF,wP,{[VP]:FP,[KP]:401},[VP,UP],[0,0]],iF.registerError(lF,sP),uF=[-3,tF,TP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(uF,cP),dF=[-3,tF,EP,{[VP]:FP,[KP]:400},[VP,JP,UP],[0,0,0]],iF.registerError(dF,lP),fF=[-3,tF,OP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(fF,uP),pF=[-3,tF,jP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(pF,dP),mF=[-3,tF,MP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(mF,fP),hF=[-3,tF,NP,{[VP]:FP,[KP]:400},[VP,UP],[0,0]],iF.registerError(hF,pP),gF=[nF,iF],_F=[0,tF,_P,8,0],vF=[0,tF,vP,8,0],yF=[0,tF,SP,8,0],bF=[0,tF,kP,8,0],xF=[0,tF,AP,8,0],SF=[3,tF,bP,0,[IP,LP,WP,BP,zP,YP,QP,XP,RP],[0,[()=>vF,0],0,0,0,[()=>xF,0],64,0,[()=>yF,0]],3],CF=[3,tF,xP,0,[PP,eF,HP,YP,qP],[[()=>_F,0],0,1,[()=>xF,0],[()=>bF,0]]],wF=[9,tF,yP,{[GP]:[`POST`,`/token`,200]},()=>SF,()=>CF]})),EF,woe=n((()=>{qA(),hk(),_w(),C(),R(),mS(),x(),NN(),Coe(),TF(),EF=e=>({apiVersion:`2019-06-10`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??eP,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??jN,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new EA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new dw}],logger:e?.logger??new N,protocol:e?.protocol??XO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.ssooidc`,errorTypeRegistries:gF,version:`2019-06-10`,serviceTarget:`AWSSSOOIDCService`},serviceId:e?.serviceId??`SSO OIDC`,sha256:e?.sha256??k,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),DF,OF,Toe=n((()=>{dT(),qA(),R(),nt(),yC(),x(),DF=ON(),woe(),OF=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=EF(e);yb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(FA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Hw({serviceId:r.serviceId,clientVersion:LN}),maxAttempts:e?.maxAttempts??w(lC,e),region:e?.region??w(g,{...v,...i}),requestHandler:DF.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({...pC,default:async()=>(await n()).retryMode||WS},e),streamCollector:e?.streamCollector??DF.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(qw,i)}}})),kF,AF,Eoe=n((()=>{kF=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},AF=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),jF,Doe=n((()=>{dT(),R(),mS(),Eoe(),jF=(e,t)=>{let n=Object.assign(cT(e),j(e),tx(e),kF(e));return t.forEach(e=>e.configure(n)),Object.assign(e,lT(n),F(n),nx(n),AF(n))}})),MF,NF=n((()=>{dT(),_w(),R(),nt(),Le(),mS(),yC(),D(),NN(),IN(),Toe(),Doe(),MF=class extends De{config;constructor(...[e]){let t=OF(e||{});super(t),this.initConfig=t;let n=vw(PN(t)),r=uC(n),i=SC(te(r)),a=Ke(i),o=MN(a),s=jF(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Lw(this.config)),this.middlewareStack.use(vC(this.config)),this.middlewareStack.use(ox(this.config)),this.middlewareStack.use(TC(this.config)),this.middlewareStack.use(OC(this.config)),this.middlewareStack.use(WC(this.config)),this.middlewareStack.use(YC(this.config,{httpAuthSchemeParametersProvider:AN,identityProviderConfigProvider:async e=>new sw({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(rw(this.config))}destroy(){super.destroy()}}})),PF,FF,IF,Ooe=n((()=>{R(),Le(),IN(),PF=h(FN,`AWSSSOOIDCService`,`SSOOIDCClient`,Xe),FF={},IF=(e,t,n,r)=>[]})),LF,RF=n((()=>{Ooe(),TF(),LF=class extends PF(FF,IF,`CreateToken`,wF){}})),zF,BF,koe=n((()=>{R(),RF(),NF(),zF={CreateTokenCommand:LF},BF=class extends MF{},S(zF,BF)})),Aoe=n((()=>{RF()})),VF,HF,joe=n((()=>{VF={KMS_ACCESS_DENIED:`KMS_AccessDeniedException`},HF={KMS_DISABLED_KEY:`KMS_DisabledException`,KMS_INVALID_KEY_USAGE:`KMS_InvalidKeyUsageException`,KMS_INVALID_STATE:`KMS_InvalidStateException`,KMS_KEY_NOT_FOUND:`KMS_NotFoundException`}})),Moe=n((()=>{})),UF=/* @__PURE__ */ i({$Command:()=>oe,AccessDeniedException:()=>rP,AccessDeniedException$:()=>aF,AccessDeniedExceptionReason:()=>VF,AuthorizationPendingException:()=>iP,AuthorizationPendingException$:()=>oF,CreateToken$:()=>wF,CreateTokenCommand:()=>LF,CreateTokenRequest$:()=>SF,CreateTokenResponse$:()=>CF,ExpiredTokenException:()=>aP,ExpiredTokenException$:()=>sF,InternalServerException:()=>oP,InternalServerException$:()=>cF,InvalidClientException:()=>sP,InvalidClientException$:()=>lF,InvalidGrantException:()=>cP,InvalidGrantException$:()=>uF,InvalidRequestException:()=>lP,InvalidRequestException$:()=>dF,InvalidRequestExceptionReason:()=>HF,InvalidScopeException:()=>uP,InvalidScopeException$:()=>fF,SSOOIDC:()=>BF,SSOOIDCClient:()=>MF,SSOOIDCServiceException:()=>tP,SSOOIDCServiceException$:()=>rF,SlowDownException:()=>dP,SlowDownException$:()=>pF,UnauthorizedClientException:()=>fP,UnauthorizedClientException$:()=>mF,UnsupportedGrantTypeException:()=>pP,UnsupportedGrantTypeException$:()=>hF,__Client:()=>De,errorTypeRegistries:()=>gF}),WF=n((()=>{NF(),koe(),Aoe(),R(),TF(),joe(),mP(),Moe(),nP()})),Noe=/* @__PURE__ */ a((n=>{let{setTokenFeature:r}=(dT(),e(uT)),{getBearerTokenEnvKey:i}=(qA(),e(WA)),{TokenProviderError:a,getSSOTokenFilepath:o,parseKnownFiles:s,getProfileName:c,loadSsoSessionData:l,getSSOTokenFromFile:u,memoize:d,chain:f}=(nt(),e(he)),{promises:p}=t(`node:fs`),m=({logger:e,signingName:t}={})=>async()=>{if(e?.debug?.(`@aws-sdk/token-providers - fromEnvSigningName`),!t)throw new a(`Please pass 'signingName' to compute environment variable key`,{logger:e});let n=i(t);if(!(n in process.env))throw new a(`Token not present in '${n}' environment variable`,{logger:e});let o={token:process.env[n]};return r(o,`BEARER_SERVICE_ENV_VARS`,`3`),o},h=`To refresh this SSO session run 'aws sso login' with the corresponding profile.`,g=async(t,n={},r)=>{let{SSOOIDCClient:i}=(WF(),e(UF)),a=e=>n.clientConfig?.[e]??n.parentClientConfig?.[e]??r?.[e];return new i(Object.assign({},n.clientConfig??{},{region:t??n.clientConfig?.region,logger:a(`logger`),userAgentAppId:a(`userAgentAppId`)}))},v=async(t,n,r={},i)=>{let{CreateTokenCommand:a}=(WF(),e(UF));return(await g(n,r,i)).send(new a({clientId:t.clientId,clientSecret:t.clientSecret,refreshToken:t.refreshToken,grantType:`refresh_token`}))},y=e=>{if(e.expiration&&e.expiration.getTime(){if(t===void 0)throw new a(`Value not present for '${e}' in SSO Token${n?`. Cannot refresh`:``}. ${h}`,!1)},{writeFile:x}=p,S=(e,t)=>{let n=o(e),r=JSON.stringify(t,null,2);return x(n,r)},C=/* @__PURE__ */ new Map,w=/* @__PURE__ */ new Map,T=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/token-providers - fromSso`);let n=await s(e),r=c({profile:e.profile??t?.profile}),i=n[r];if(!i)throw new a(`Profile '${r}' could not be found in shared credentials file.`,!1);if(!i.sso_session)throw new a(`Profile '${r}' is missing required property 'sso_session'.`);let o=i.sso_session,d=w.get(o);if(d)return await d;let f=(await l(e))[o];if(!f)throw new a(`Sso session '${o}' could not be found in shared credentials file.`,!1);for(let e of[`sso_start_url`,`sso_region`])if(!f[e])throw new a(`Sso session '${o}' is missing required property '${e}'.`,!1);f.sso_start_url;let p=f.sso_region,m;try{m=await u(o)}catch{throw new a(`The SSO session token associated with profile=${r} was not found or is invalid. ${h}`,!1)}b(`accessToken`,m.accessToken),b(`expiresAt`,m.expiresAt);let{accessToken:g,expiresAt:x}=m,T={token:g,expiration:new Date(x)};if(T.expiration.getTime()-Date.now()>3e5)return T;let E=w.get(o);if(E)return await E;let D=C.get(o)??0;if(Date.now()-D<3e4)return y(T),T;b(`clientId`,m.clientId,!0),b(`clientSecret`,m.clientSecret,!0),b(`refreshToken`,m.refreshToken,!0);let O=(async()=>{try{C.set(o,Date.now());let n=await v(m,p,e,t);b(`accessToken`,n.accessToken),b(`expiresIn`,n.expiresIn);let r=new Date(Date.now()+n.expiresIn*1e3);try{await S(o,{...m,accessToken:n.accessToken,expiresAt:r.toISOString(),refreshToken:n.refreshToken})}catch{}return{token:n.accessToken,expiration:r}}catch{return y(T),T}})();w.set(o,O);try{return await O}finally{w.delete(o)}};n.fromEnvSigningName=m,n.fromSso=T,n.fromStatic=({token:e,logger:t})=>async()=>{if(t?.debug(`@aws-sdk/token-providers - fromStatic`),!e||!e.token)throw new a(`Please pass a valid token to fromStatic`,!1);return e},n.nodeProvider=(e={})=>d(f(T(e),async()=>{throw new a(`Could not load token from any providers`,!1)}),e=>e.expiration!==void 0&&e.expiration.getTime()-Date.now()<3e5,e=>e.expiration!==void 0)}));function Poe(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`awsssoportal`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Foe(e){return{schemeId:`smithy.api#noAuth`}}var GF,KF,qF,JF=n((()=>{qA(),R(),GF=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),KF=e=>{let t=[];switch(e.operation){case`GetRoleCredentials`:t.push(Foe(e));break;default:t.push(Poe(e))}return t},qF=e=>{let t=GA(e);return Object.assign(t,{authSchemePreference:Se(e.authSchemePreference??[])})}})),YF,XF,ZF=n((()=>{YF=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:`awsssoportal`}),XF={UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),QF,$F,eI,tI,nI,rI,iI,aI,oI,sI,cI,lI,uI,dI,fI,Ioe=n((()=>{Le(),QF=`ref`,$F=-1,eI=!0,tI=`isSet`,nI=`PartitionResult`,rI=`booleanEquals`,iI=`getAttr`,aI={[QF]:`Endpoint`},oI={[QF]:nI},sI={},cI=[{[QF]:`Region`}],lI={conditions:[[tI,[aI]],[tI,cI],[`aws.partition`,cI,nI],[rI,[{[QF]:`UseFIPS`},eI]],[rI,[{[QF]:`UseDualStack`},eI]],[rI,[{fn:iI,argv:[oI,`supportsDualStack`]},eI]],[rI,[{fn:iI,argv:[oI,`supportsFIPS`]},eI]],[`stringEquals`,[{fn:iI,argv:[oI,`name`]},`aws-us-gov`]]],results:[[$F],[$F,`Invalid Configuration: FIPS and custom endpoint are not supported`],[$F,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[aI,sI],[`https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,sI],[$F,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://portal.sso.{Region}.amazonaws.com`,sI],[`https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}`,sI],[$F,`FIPS is enabled but this partition does not support FIPS`],[`https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}`,sI],[$F,`DualStack is enabled but this partition does not support DualStack`],[`https://portal.sso.{Region}.{PartitionResult#dnsSuffix}`,sI],[$F,`Invalid Configuration: Missing Region`]]},uI=2,dI=new Int32Array([-1,1,-1,0,13,3,1,4,100000012,2,5,100000012,3,8,6,4,7,100000011,5,100000009,100000010,4,11,9,6,10,100000008,7,100000006,100000007,5,12,100000005,6,100000004,100000005,3,100000001,14,4,100000002,100000003]),fI=Te.from(dI,uI,lI.conditions,lI.results)})),pI,mI,Loe=n((()=>{dT(),Le(),Ioe(),pI=new Ne({size:50,params:[`Endpoint`,`Region`,`UseDualStack`,`UseFIPS`]}),mI=(e,t={})=>pI.get(e,()=>Be(fI,{endpointParams:e,logger:t.logger})),Qe.aws=iT})),hI,gI=n((()=>{R(),hI=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.sso#SSOServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),_I,vI,yI,bI,xI=n((()=>{gI(),_I=class e extends hI{static shapeId=`com.amazonaws.sso#InvalidRequestException`;name=`InvalidRequestException`;$fault=`client`;constructor(t){super({name:`InvalidRequestException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},vI=class e extends hI{static shapeId=`com.amazonaws.sso#ResourceNotFoundException`;name=`ResourceNotFoundException`;$fault=`client`;constructor(t){super({name:`ResourceNotFoundException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},yI=class e extends hI{static shapeId=`com.amazonaws.sso#TooManyRequestsException`;name=`TooManyRequestsException`;$fault=`client`;constructor(t){super({name:`TooManyRequestsException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},bI=class e extends hI{static shapeId=`com.amazonaws.sso#UnauthorizedException`;name=`UnauthorizedException`;$fault=`client`;constructor(t){super({name:`UnauthorizedException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}}})),SI,CI,wI,TI,EI,DI,OI,kI,AI,jI,MI,NI,PI,FI,II,LI,RI,zI,BI,VI,HI,UI,WI,GI,KI,qI,JI,YI,XI,ZI,QI,$I,eL,tL,nL,rL,iL,aL,oL,sL,cL,lL,uL,dL,fL,pL,mL=n((()=>{D(),xI(),gI(),SI=`AccessTokenType`,CI=`GetRoleCredentials`,wI=`GetRoleCredentialsRequest`,TI=`GetRoleCredentialsResponse`,EI=`InvalidRequestException`,DI=`RoleCredentials`,OI=`ResourceNotFoundException`,kI=`SecretAccessKeyType`,AI=`SessionTokenType`,jI=`TooManyRequestsException`,MI=`UnauthorizedException`,NI=`accountId`,PI=`accessKeyId`,FI=`accessToken`,II=`account_id`,LI=`client`,RI=`error`,zI=`expiration`,BI=`http`,VI=`httpError`,HI=`httpHeader`,UI=`httpQuery`,WI=`message`,GI=`roleCredentials`,KI=`roleName`,qI=`role_name`,JI=`smithy.ts.sdk.synthetic.com.amazonaws.sso`,YI=`secretAccessKey`,XI=`sessionToken`,ZI=`x-amz-sso_bearer_token`,QI=`com.amazonaws.sso`,$I=new T(JI),eL=[-3,JI,`SSOServiceException`,0,[],[]],$I.registerError(eL,hI),tL=new T(QI),nL=[-3,QI,EI,{[RI]:LI,[VI]:400},[WI],[0]],tL.registerError(nL,_I),rL=[-3,QI,OI,{[RI]:LI,[VI]:404},[WI],[0]],tL.registerError(rL,vI),iL=[-3,QI,jI,{[RI]:LI,[VI]:429},[WI],[0]],tL.registerError(iL,yI),aL=[-3,QI,MI,{[RI]:LI,[VI]:401},[WI],[0]],tL.registerError(aL,bI),oL=[$I,tL],sL=[0,QI,SI,8,0],cL=[0,QI,kI,8,0],lL=[0,QI,AI,8,0],uL=[3,QI,wI,0,[KI,NI,FI],[[0,{[UI]:qI}],[0,{[UI]:II}],[()=>sL,{[HI]:ZI}]],3],dL=[3,QI,TI,0,[GI],[[()=>fL,0]]],fL=[3,QI,DI,0,[PI,YI,XI,zI],[0,[()=>cL,0],[()=>lL,0],1]],pL=[9,QI,CI,{[BI]:[`GET`,`/federation/credentials`,200]},()=>uL,()=>dL]})),hL,Roe=n((()=>{qA(),hk(),_w(),C(),R(),mS(),x(),JF(),Loe(),mL(),hL=e=>({apiVersion:`2019-06-10`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??mI,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??KF,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new EA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new dw}],logger:e?.logger??new N,protocol:e?.protocol??XO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.sso`,errorTypeRegistries:oL,version:`2019-06-10`,serviceTarget:`SWBPortalService`},serviceId:e?.serviceId??`SSO`,sha256:e?.sha256??k,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),gL,_L,zoe=n((()=>{dT(),qA(),R(),nt(),yC(),x(),gL=ON(),Roe(),_L=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=hL(e);yb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(FA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Hw({serviceId:r.serviceId,clientVersion:LN}),maxAttempts:e?.maxAttempts??w(lC,e),region:e?.region??w(g,{...v,...i}),requestHandler:gL.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({...pC,default:async()=>(await n()).retryMode||WS},e),streamCollector:e?.streamCollector??gL.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(qw,i)}}})),vL,yL,Boe=n((()=>{vL=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},yL=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),bL,Voe=n((()=>{dT(),R(),mS(),Boe(),bL=(e,t)=>{let n=Object.assign(cT(e),j(e),tx(e),vL(e));return t.forEach(e=>e.configure(n)),Object.assign(e,lT(n),F(n),nx(n),yL(n))}})),xL,SL=n((()=>{dT(),_w(),R(),nt(),Le(),mS(),yC(),D(),JF(),ZF(),zoe(),Voe(),xL=class extends De{config;constructor(...[e]){let t=_L(e||{});super(t),this.initConfig=t;let n=vw(YF(t)),r=uC(n),i=SC(te(r)),a=Ke(i),o=qF(a),s=bL(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Lw(this.config)),this.middlewareStack.use(vC(this.config)),this.middlewareStack.use(ox(this.config)),this.middlewareStack.use(TC(this.config)),this.middlewareStack.use(OC(this.config)),this.middlewareStack.use(WC(this.config)),this.middlewareStack.use(YC(this.config,{httpAuthSchemeParametersProvider:GF,identityProviderConfigProvider:async e=>new sw({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(rw(this.config))}destroy(){super.destroy()}}})),CL,wL,TL,Hoe=n((()=>{R(),Le(),ZF(),CL=h(XF,`SWBPortalService`,`SSOClient`,Xe),wL={},TL=(e,t,n,r)=>[]})),EL,DL=n((()=>{Hoe(),mL(),EL=class extends CL(wL,TL,`GetRoleCredentials`,pL){}})),OL,kL,Uoe=n((()=>{R(),DL(),SL(),OL={GetRoleCredentialsCommand:EL},kL=class extends xL{},S(OL,kL)})),Woe=n((()=>{DL()})),Goe=n((()=>{})),Koe=/* @__PURE__ */ i({$Command:()=>oe,GetRoleCredentials$:()=>pL,GetRoleCredentialsCommand:()=>EL,GetRoleCredentialsRequest$:()=>uL,GetRoleCredentialsResponse$:()=>dL,InvalidRequestException:()=>_I,InvalidRequestException$:()=>nL,ResourceNotFoundException:()=>vI,ResourceNotFoundException$:()=>rL,RoleCredentials$:()=>fL,SSO:()=>kL,SSOClient:()=>xL,SSOServiceException:()=>hI,SSOServiceException$:()=>eL,TooManyRequestsException:()=>yI,TooManyRequestsException$:()=>iL,UnauthorizedException:()=>bI,UnauthorizedException$:()=>aL,__Client:()=>De,errorTypeRegistries:()=>oL}),qoe=n((()=>{SL(),Uoe(),Woe(),R(),mL(),xI(),Goe(),gI()})),Joe=/* @__PURE__ */ a((t=>{let{GetRoleCredentialsCommand:n,SSOClient:r}=(qoe(),e(Koe));t.GetRoleCredentialsCommand=n,t.SSOClient=r})),AL=/* @__PURE__ */ a((t=>{let{CredentialsProviderError:n,getSSOTokenFromFile:r,getProfileName:i,parseKnownFiles:a,loadSsoSessionData:o}=(nt(),e(he)),{setCredentialFeature:s}=(dT(),e(uT)),{fromSso:c}=Noe(),l=e=>e&&(typeof e.sso_start_url==`string`||typeof e.sso_account_id==`string`||typeof e.sso_session==`string`||typeof e.sso_region==`string`||typeof e.sso_role_name==`string`),u=async({ssoStartUrl:e,ssoSession:t,ssoAccountId:i,ssoRegion:a,ssoRoleName:o,ssoClient:l,clientConfig:u,parentClientConfig:d,callerClientConfig:f,profile:p,filepath:m,configFilepath:h,ignoreCache:g,logger:v})=>{let y,b=`To refresh this SSO session run aws sso login with the corresponding profile.`;if(t)try{let e=await c({profile:p,filepath:m,configFilepath:h,ignoreCache:g,clientConfig:u,parentClientConfig:d,logger:v})({callerClientConfig:f});y={accessToken:e.token,expiresAt:new Date(e.expiration).toISOString()}}catch(e){throw new n(e.message,{tryNextLink:!1,logger:v})}else try{y=await r(e)}catch{throw new n(`The SSO session associated with this profile is invalid. ${b}`,{tryNextLink:!1,logger:v})}if(new Date(y.expiresAt).getTime()-Date.now()<=0)throw new n(`The SSO session associated with this profile has expired. ${b}`,{tryNextLink:!1,logger:v});let{accessToken:x}=y,{SSOClient:S,GetRoleCredentialsCommand:C}=Joe(),w=l||new S(Object.assign({},u??{},{logger:u?.logger??f?.logger??d?.logger,region:u?.region??a,userAgentAppId:u?.userAgentAppId??f?.userAgentAppId??d?.userAgentAppId})),T;try{T=await w.send(new C({accountId:i,roleName:o,accessToken:x}))}catch(e){throw new n(e,{tryNextLink:!1,logger:v})}let{roleCredentials:{accessKeyId:E,secretAccessKey:D,sessionToken:O,expiration:k,credentialScope:A,accountId:j}={}}=T;if(!E||!D||!O||!k)throw new n(`SSO returns an invalid temporary credential.`,{tryNextLink:!1,logger:v});let M={accessKeyId:E,secretAccessKey:D,sessionToken:O,expiration:new Date(k),...A&&{credentialScope:A},...j&&{accountId:j}};return t?s(M,`CREDENTIALS_SSO`,`s`):s(M,`CREDENTIALS_SSO_LEGACY`,`u`),M},d=(e,t)=>{let{sso_start_url:r,sso_account_id:i,sso_region:a,sso_role_name:o}=e;if(!r||!i||!a||!o)throw new n(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(e).join(`, `)}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,{tryNextLink:!1,logger:t});return e};t.fromSSO=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/credential-provider-sso - fromSSO`);let{ssoStartUrl:r,ssoAccountId:s,ssoRegion:c,ssoRoleName:f,ssoSession:p}=e,{ssoClient:m}=e,h=i({profile:e.profile??t?.profile});if(!r&&!s&&!c&&!f&&!p){let t=(await a(e))[h];if(!t)throw new n(`Profile ${h} was not found.`,{logger:e.logger});if(!l(t))throw new n(`Profile ${h} is not configured with SSO credentials.`,{logger:e.logger});if(t?.sso_session){let i=(await o(e))[t.sso_session],a=` configurations in profile ${h} and sso-session ${t.sso_session}`;if(c&&c!==i.sso_region)throw new n(`Conflicting SSO region`+a,{tryNextLink:!1,logger:e.logger});if(r&&r!==i.sso_start_url)throw new n(`Conflicting SSO start_url`+a,{tryNextLink:!1,logger:e.logger});t.sso_region=i.sso_region,t.sso_start_url=i.sso_start_url}let{sso_start_url:i,sso_account_id:s,sso_region:f,sso_role_name:p,sso_session:g}=d(t,e.logger);return u({ssoStartUrl:i,ssoSession:g,ssoAccountId:s,ssoRegion:f,ssoRoleName:p,ssoClient:m,clientConfig:e.clientConfig,parentClientConfig:e.parentClientConfig,callerClientConfig:e.callerClientConfig,profile:h,filepath:e.filepath,configFilepath:e.configFilepath,ignoreCache:e.ignoreCache,logger:e.logger})}if(!r||!s||!c||!f)throw new n(`Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"`,{tryNextLink:!1,logger:e.logger});return u({ssoStartUrl:r,ssoSession:p,ssoAccountId:s,ssoRegion:c,ssoRoleName:f,ssoClient:m,clientConfig:e.clientConfig,parentClientConfig:e.parentClientConfig,callerClientConfig:e.callerClientConfig,profile:h,filepath:e.filepath,configFilepath:e.configFilepath,ignoreCache:e.ignoreCache,logger:e.logger})},t.isSsoProfile=l,t.validateSsoProfile=d})),jL,ML,NL,PL,FL,IL,LL,RL,zL,BL,VL,HL,UL,WL,GL,KL,qL,JL,YL,XL,ZL,Yoe=n((()=>{Le(),jL=`ref`,ML=-1,NL=!0,PL=`isSet`,FL=`PartitionResult`,IL=`booleanEquals`,LL=`stringEquals`,RL=`getAttr`,zL=`us-east-1`,BL=`sigv4`,VL=`sts`,HL=`https://sts.{Region}.{PartitionResult#dnsSuffix}`,UL={[jL]:`Endpoint`},WL={[jL]:`Region`},GL={[jL]:FL},KL={},qL=[WL],JL={conditions:[[PL,[UL]],[PL,qL],[`aws.partition`,qL,FL],[IL,[{[jL]:`UseFIPS`},NL]],[IL,[{[jL]:`UseDualStack`},NL]],[LL,[WL,`aws-global`]],[IL,[{[jL]:`UseGlobalEndpoint`},NL]],[LL,[WL,`eu-central-1`]],[IL,[{fn:RL,argv:[GL,`supportsDualStack`]},NL]],[IL,[{fn:RL,argv:[GL,`supportsFIPS`]},NL]],[LL,[WL,`ap-south-1`]],[LL,[WL,`eu-north-1`]],[LL,[WL,`eu-west-1`]],[LL,[WL,`eu-west-2`]],[LL,[WL,`eu-west-3`]],[LL,[WL,`sa-east-1`]],[LL,[WL,zL]],[LL,[WL,`us-east-2`]],[LL,[WL,`us-west-2`]],[LL,[WL,`us-west-1`]],[LL,[WL,`ca-central-1`]],[LL,[WL,`ap-southeast-1`]],[LL,[WL,`ap-northeast-1`]],[LL,[WL,`ap-southeast-2`]],[LL,[{fn:RL,argv:[GL,`name`]},`aws-us-gov`]]],results:[[ML],[`https://sts.amazonaws.com`,{authSchemes:[{name:BL,signingName:VL,signingRegion:zL}]}],[HL,{authSchemes:[{name:BL,signingName:VL,signingRegion:`{Region}`}]}],[ML,`Invalid Configuration: FIPS and custom endpoint are not supported`],[ML,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[UL,KL],[`https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,KL],[ML,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://sts.{Region}.amazonaws.com`,KL],[`https://sts-fips.{Region}.{PartitionResult#dnsSuffix}`,KL],[ML,`FIPS is enabled but this partition does not support FIPS`],[`https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}`,KL],[ML,`DualStack is enabled but this partition does not support DualStack`],[HL,KL],[ML,`Invalid Configuration: Missing Region`]]},YL=2,XL=new Int32Array([-1,1,-1,0,30,3,1,4,100000014,2,5,100000014,3,25,6,4,24,7,5,100000001,8,6,9,100000013,7,100000001,10,10,100000001,11,11,100000001,12,12,100000001,13,13,100000001,14,14,100000001,15,15,100000001,16,16,100000001,17,17,100000001,18,18,100000001,19,19,100000001,20,20,100000001,21,21,100000001,22,22,100000001,23,23,100000001,100000002,8,100000011,100000012,4,28,26,9,27,100000010,24,100000008,100000009,8,29,100000007,9,100000006,100000007,3,100000003,31,4,100000004,100000005]),ZL=Te.from(XL,YL,JL.conditions,JL.results)})),QL,$L,eR=n((()=>{dT(),Le(),Yoe(),QL=new Ne({size:50,params:[`Endpoint`,`Region`,`UseDualStack`,`UseFIPS`,`UseGlobalEndpoint`]}),$L=(e,t={})=>QL.get(e,()=>Be(ZL,{endpointParams:e,logger:t.logger})),Qe.aws=iT}));function tR(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`sts`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function nR(e){return{schemeId:`aws.auth#sigv4a`,signingProperties:{name:`sts`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function rR(e){return{schemeId:`smithy.api#noAuth`}}var iR,aR,oR,sR,cR,lR,uR,dR,fR=n((()=>{qA(),iR=_O(),R(),Le(),eR(),aR=e=>async(t,n,r)=>{if(!r)throw Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let i=await e(t,n,r),a=p(n)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!a)throw Error(`getEndpointParameterInstructions() is not defined on '${n.commandName}'`);let o=await it(r,{getEndpointParameterInstructions:a},t);return Object.assign(i,o)},oR=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),sR=aR(oR),cR=(e,t,n)=>r=>{let i=e(r).properties?.authSchemes;if(!i)return t(r);let a=[];for(let e of i){let{name:t,properties:o={},...s}=e,c=t.toLowerCase();t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${t}' to '${c}'`);let l;if(c===`sigv4a`){l=`aws.auth#sigv4a`;let e=i.find(e=>{let t=e.name.toLowerCase();return t!==`sigv4a`&&t.startsWith(`sigv4`)});if(iR.SignatureV4MultiRegion.sigv4aDependency()===`none`&&e)continue}else if(c.startsWith(`sigv4`))l=`aws.auth#sigv4`;else throw Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${c}'`);let u=n[l];if(!u)throw Error(`Could not find HttpAuthOption create function for '${l}'`);let d=u(r);d.schemeId=l,d.signingProperties={...d.signingProperties||{},...s,...o},a.push(d)}return a},lR=e=>{let t=[];switch(e.operation){case`AssumeRoleWithWebIdentity`:t.push(rR(e)),t.push(nR(e));break;default:t.push(tR(e)),t.push(nR(e))}return t},uR=cR($L,lR,{"aws.auth#sigv4":tR,"aws.auth#sigv4a":nR,"smithy.api#noAuth":rR}),dR=e=>{let t=GA(e),n=IA(t);return Object.assign(n,{authSchemePreference:Se(e.authSchemePreference??[])})}})),pR,mR,hR=n((()=>{pR=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,useGlobalEndpoint:e.useGlobalEndpoint??!1,defaultSigningName:`sts`}),mR={UseGlobalEndpoint:{type:`builtInParams`,name:`useGlobalEndpoint`},UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),gR,_R=n((()=>{R(),gR=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.sts#STSServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),vR,yR,bR,xR,SR,CR,wR,TR=n((()=>{_R(),vR=class e extends gR{static shapeId=`com.amazonaws.sts#ExpiredTokenException`;name=`ExpiredTokenException`;$fault=`client`;constructor(t){super({name:`ExpiredTokenException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},yR=class e extends gR{static shapeId=`com.amazonaws.sts#MalformedPolicyDocumentException`;name=`MalformedPolicyDocumentException`;$fault=`client`;constructor(t){super({name:`MalformedPolicyDocumentException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},bR=class e extends gR{static shapeId=`com.amazonaws.sts#PackedPolicyTooLargeException`;name=`PackedPolicyTooLargeException`;$fault=`client`;constructor(t){super({name:`PackedPolicyTooLargeException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},xR=class e extends gR{static shapeId=`com.amazonaws.sts#RegionDisabledException`;name=`RegionDisabledException`;$fault=`client`;constructor(t){super({name:`RegionDisabledException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},SR=class e extends gR{static shapeId=`com.amazonaws.sts#IDPRejectedClaimException`;name=`IDPRejectedClaimException`;$fault=`client`;constructor(t){super({name:`IDPRejectedClaimException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},CR=class e extends gR{static shapeId=`com.amazonaws.sts#InvalidIdentityTokenException`;name=`InvalidIdentityTokenException`;$fault=`client`;constructor(t){super({name:`InvalidIdentityTokenException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},wR=class e extends gR{static shapeId=`com.amazonaws.sts#IDPCommunicationErrorException`;name=`IDPCommunicationErrorException`;$fault=`client`;$retryable={};constructor(t){super({name:`IDPCommunicationErrorException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}}})),ER,DR,OR,kR,AR,jR,MR,NR,PR,FR,IR,LR,RR,zR,BR,VR,HR,UR,WR,GR,KR,qR,JR,YR,XR,ZR,QR,$R,ez,tz,nz,rz,iz,az,oz,sz,cz,lz,uz,dz,fz,pz,mz,hz,gz,_z,vz,yz,bz,xz,Sz,Cz,wz,Tz,Ez,Dz,Oz,kz,Az,jz,Mz,Nz,Pz,Fz,Iz,Lz,Rz,zz,Bz,Vz,Hz,Uz,Wz,Gz,Kz,qz,Jz,Yz,Xz,Zz,Qz,$z,eB,tB,nB,rB,iB,aB,oB,sB=n((()=>{D(),TR(),_R(),ER=`Arn`,DR=`AccessKeyId`,OR=`AssumeRole`,kR=`AssumedRoleId`,AR=`AssumeRoleRequest`,jR=`AssumeRoleResponse`,MR=`AssumedRoleUser`,NR=`AssumeRoleWithWebIdentity`,PR=`AssumeRoleWithWebIdentityRequest`,FR=`AssumeRoleWithWebIdentityResponse`,IR=`Audience`,LR=`Credentials`,RR=`ContextAssertion`,zR=`DurationSeconds`,BR=`Expiration`,VR=`ExternalId`,HR=`ExpiredTokenException`,UR=`IDPCommunicationErrorException`,WR=`IDPRejectedClaimException`,GR=`InvalidIdentityTokenException`,KR=`Key`,qR=`MalformedPolicyDocumentException`,JR=`MinimumSessionTokenSize`,YR=`Policy`,XR=`PolicyArns`,ZR=`ProviderArn`,QR=`ProvidedContexts`,$R=`ProvidedContextsListType`,ez=`ProvidedContext`,tz=`PolicyDescriptorType`,nz=`ProviderId`,rz=`PackedPolicySize`,iz=`PackedPolicyTooLargeException`,az=`Provider`,oz=`RoleArn`,sz=`RegionDisabledException`,cz=`RoleSessionName`,lz=`SecretAccessKey`,uz=`SubjectFromWebIdentityToken`,dz=`SourceIdentity`,fz=`SerialNumber`,pz=`SessionToken`,mz=`SessionTokenSize`,hz=`SessionTokenUtilization`,gz=`Tags`,_z=`TokenCode`,vz=`TransitiveTagKeys`,yz=`Tag`,bz=`Value`,xz=`WebIdentityToken`,Sz=`arn`,Cz=`accessKeySecretType`,wz=`awsQueryError`,Tz=`client`,Ez=`clientTokenType`,Dz=`error`,Oz=`httpError`,kz=`message`,Az=`policyDescriptorListType`,jz=`smithy.ts.sdk.synthetic.com.amazonaws.sts`,Mz=`tagListType`,Nz=`com.amazonaws.sts`,Pz=new T(jz),Fz=[-3,jz,`STSServiceException`,0,[],[]],Pz.registerError(Fz,gR),Iz=new T(Nz),Lz=[-3,Nz,HR,{[wz]:[`ExpiredTokenException`,400],[Dz]:Tz,[Oz]:400},[kz],[0]],Iz.registerError(Lz,vR),Rz=[-3,Nz,UR,{[wz]:[`IDPCommunicationError`,400],[Dz]:Tz,[Oz]:400},[kz],[0]],Iz.registerError(Rz,wR),zz=[-3,Nz,WR,{[wz]:[`IDPRejectedClaim`,403],[Dz]:Tz,[Oz]:403},[kz],[0]],Iz.registerError(zz,SR),Bz=[-3,Nz,GR,{[wz]:[`InvalidIdentityToken`,400],[Dz]:Tz,[Oz]:400},[kz],[0]],Iz.registerError(Bz,CR),Vz=[-3,Nz,qR,{[wz]:[`MalformedPolicyDocument`,400],[Dz]:Tz,[Oz]:400},[kz],[0]],Iz.registerError(Vz,yR),Hz=[-3,Nz,iz,{[wz]:[`PackedPolicyTooLarge`,400],[Dz]:Tz,[Oz]:400},[kz],[0]],Iz.registerError(Hz,bR),Uz=[-3,Nz,sz,{[wz]:[`RegionDisabledException`,403],[Dz]:Tz,[Oz]:403},[kz],[0]],Iz.registerError(Uz,xR),Wz=[Pz,Iz],Gz=[0,Nz,Cz,8,0],Kz=[0,Nz,Ez,8,0],qz=[3,Nz,MR,0,[kR,ER],[0,0],2],Jz=[3,Nz,AR,0,[oz,cz,XR,YR,zR,gz,vz,VR,fz,_z,dz,QR,JR],[0,0,()=>nB,0,1,()=>iB,64,0,0,0,0,()=>rB,1],2],Yz=[3,Nz,jR,0,[LR,MR,rz,dz,hz,mz],[[()=>Qz,0],()=>qz,1,0,1,1]],Xz=[3,Nz,PR,0,[oz,cz,xz,nz,XR,YR,zR,JR],[0,0,[()=>Kz,0],0,()=>nB,0,1,1],3],Zz=[3,Nz,FR,0,[LR,uz,MR,rz,az,IR,dz,hz,mz],[[()=>Qz,0],0,()=>qz,1,0,0,0,1,1]],Qz=[3,Nz,LR,0,[DR,lz,pz,BR],[0,[()=>Gz,0],0,4],4],$z=[3,Nz,tz,0,[Sz],[0]],eB=[3,Nz,ez,0,[ZR,RR],[0,0]],tB=[3,Nz,yz,0,[KR,bz],[0,0],2],nB=[1,Nz,Az,0,()=>$z],rB=[1,Nz,$R,0,()=>eB],iB=[1,Nz,Mz,0,()=>tB],aB=[9,Nz,OR,0,()=>Jz,()=>Yz],oB=[9,Nz,NR,0,()=>Xz,()=>Zz]})),cB,lB,Xoe=n((()=>{qA(),hk(),cB=_O(),_w(),C(),R(),mS(),x(),fR(),eR(),sB(),lB=e=>({apiVersion:`2011-06-15`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??$L,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??uR,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new EA},{schemeId:`aws.auth#sigv4a`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4a`),signer:new kA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new dw}],logger:e?.logger??new N,protocol:e?.protocol??ok,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.sts`,errorTypeRegistries:Wz,xmlNamespace:`https://sts.amazonaws.com/doc/2011-06-15/`,version:`2011-06-15`,serviceTarget:`AWSSecurityTokenServiceV20110615`},serviceId:e?.serviceId??`STS`,sha256:e?.sha256??k,signerConstructor:e?.signerConstructor??cB.SignatureV4MultiRegion,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),uB,dB,Zoe=n((()=>{dT(),qA(),_w(),R(),nt(),yC(),x(),uB=ON(),Xoe(),dB=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=lB(e);yb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(FA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Hw({serviceId:r.serviceId,clientVersion:LN}),httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:t=>t.getIdentityProvider(`aws.auth#sigv4`)||(async t=>await e.credentialDefaultProvider(t?.__config||{})()),signer:new EA},{schemeId:`aws.auth#sigv4a`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4a`),signer:new kA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new dw}],maxAttempts:e?.maxAttempts??w(lC,e),region:e?.region??w(g,{...v,...i}),requestHandler:uB.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({...pC,default:async()=>(await n()).retryMode||WS},e),sigv4aSigningRegionSet:e?.sigv4aSigningRegionSet??w(LA,i),streamCollector:e?.streamCollector??uB.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(qw,i)}}})),fB,pB,Qoe=n((()=>{fB=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},pB=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),mB,$oe=n((()=>{dT(),R(),mS(),Qoe(),mB=(e,t)=>{let n=Object.assign(cT(e),j(e),tx(e),fB(e));return t.forEach(e=>e.configure(n)),Object.assign(e,lT(n),F(n),nx(n),pB(n))}})),hB,gB=n((()=>{dT(),_w(),R(),nt(),Le(),mS(),yC(),D(),fR(),hR(),Zoe(),$oe(),hB=class extends De{config;constructor(...[e]){let t=dB(e||{});super(t),this.initConfig=t;let n=vw(pR(t)),r=uC(n),i=SC(te(r)),a=Ke(i),o=dR(a),s=mB(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Lw(this.config)),this.middlewareStack.use(vC(this.config)),this.middlewareStack.use(ox(this.config)),this.middlewareStack.use(TC(this.config)),this.middlewareStack.use(OC(this.config)),this.middlewareStack.use(WC(this.config)),this.middlewareStack.use(YC(this.config,{httpAuthSchemeParametersProvider:sR,identityProviderConfigProvider:async e=>new sw({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(rw(this.config))}destroy(){super.destroy()}}})),_B,vB,yB,bB=n((()=>{R(),Le(),hR(),_B=h(mR,`AWSSecurityTokenServiceV20110615`,`STSClient`,Xe),vB={},yB=(e,t,n,r)=>[]})),xB,SB=n((()=>{bB(),sB(),xB=class extends _B(vB,yB,`AssumeRole`,aB){}})),CB,wB=n((()=>{bB(),sB(),CB=class extends _B(vB,yB,`AssumeRoleWithWebIdentity`,oB){}})),TB,EB,ese=n((()=>{R(),SB(),wB(),gB(),TB={AssumeRoleCommand:xB,AssumeRoleWithWebIdentityCommand:CB},EB=class extends hB{},S(TB,EB)})),tse=n((()=>{SB(),wB()})),nse=n((()=>{})),DB,OB,kB,AB,jB,rse=n((()=>{dT(),SB(),wB(),DB=e=>{if(typeof e?.Arn==`string`){let t=e.Arn.split(`:`);if(t.length>4&&t[4]!==``)return t[4]}},OB=async(e,t,n,r={})=>{let i=typeof e==`function`?await e():e,a=typeof t==`function`?await t():t,o=``,s=i??a??(o=await Nne(r)());return n?.debug?.(`@aws-sdk/client-sts::resolveRegion`,`accepting first of:`,`${i} (credential provider clientConfig)`,`${a} (contextual client)`,`${o} (STS default: AWS_REGION, profile region, or us-east-1)`),s},kB=(e,t)=>{let n,r;return async(i,a)=>{if(r=i,!n){let{logger:i=e?.parentClientConfig?.logger,profile:a=e?.parentClientConfig?.profile,region:o,requestHandler:s=e?.parentClientConfig?.requestHandler,credentialProviderLogger:c,userAgentAppId:l=e?.parentClientConfig?.userAgentAppId}=e,u=await OB(o,e?.parentClientConfig?.region,c,{logger:i,profile:a}),d=!jB(s);n=new t({...e,userAgentAppId:l,profile:a,credentialDefaultProvider:()=>async()=>r,region:u,requestHandler:d?s:void 0,logger:i})}let{Credentials:o,AssumedRoleUser:s}=await n.send(new xB(a));if(!o||!o.AccessKeyId||!o.SecretAccessKey)throw Error(`Invalid response from STS.assumeRole call with role ${a.RoleArn}`);let c=DB(s),l={accessKeyId:o.AccessKeyId,secretAccessKey:o.SecretAccessKey,sessionToken:o.SessionToken,expiration:o.Expiration,...o.CredentialScope&&{credentialScope:o.CredentialScope},...c&&{accountId:c}};return Tb(l,`CREDENTIALS_STS_ASSUME_ROLE`,`i`),l}},AB=(e,t)=>{let n;return async r=>{if(!n){let{logger:r=e?.parentClientConfig?.logger,profile:i=e?.parentClientConfig?.profile,region:a,requestHandler:o=e?.parentClientConfig?.requestHandler,credentialProviderLogger:s,userAgentAppId:c=e?.parentClientConfig?.userAgentAppId}=e,l=await OB(a,e?.parentClientConfig?.region,s,{logger:r,profile:i}),u=!jB(o);n=new t({...e,userAgentAppId:c,profile:i,region:l,requestHandler:u?o:void 0,logger:r})}let{Credentials:i,AssumedRoleUser:a}=await n.send(new CB(r));if(!i||!i.AccessKeyId||!i.SecretAccessKey)throw Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${r.RoleArn}`);let o=DB(a),s={accessKeyId:i.AccessKeyId,secretAccessKey:i.SecretAccessKey,sessionToken:i.SessionToken,expiration:i.Expiration,...i.CredentialScope&&{credentialScope:i.CredentialScope},...o&&{accountId:o}};return o&&Tb(s,`RESOLVED_ACCOUNT_ID`,`T`),Tb(s,`CREDENTIALS_STS_ASSUME_ROLE_WEB_ID`,`k`),s}},jB=e=>e?.metadata?.handlerProtocol===`h2`})),MB,NB,PB,FB,ise=n((()=>{rse(),gB(),MB=(e,t)=>t?class extends e{constructor(e){super(e);for(let e of t)this.middlewareStack.use(e)}}:e,NB=(e={},t)=>kB(e,MB(hB,t)),PB=(e={},t)=>AB(e,MB(hB,t)),FB=e=>t=>e({roleAssumer:NB(t),roleAssumerWithWebIdentity:PB(t),...t})})),IB=/* @__PURE__ */ i({$Command:()=>oe,AssumeRole$:()=>aB,AssumeRoleCommand:()=>xB,AssumeRoleRequest$:()=>Jz,AssumeRoleResponse$:()=>Yz,AssumeRoleWithWebIdentity$:()=>oB,AssumeRoleWithWebIdentityCommand:()=>CB,AssumeRoleWithWebIdentityRequest$:()=>Xz,AssumeRoleWithWebIdentityResponse$:()=>Zz,AssumedRoleUser$:()=>qz,Credentials$:()=>Qz,ExpiredTokenException:()=>vR,ExpiredTokenException$:()=>Lz,IDPCommunicationErrorException:()=>wR,IDPCommunicationErrorException$:()=>Rz,IDPRejectedClaimException:()=>SR,IDPRejectedClaimException$:()=>zz,InvalidIdentityTokenException:()=>CR,InvalidIdentityTokenException$:()=>Bz,MalformedPolicyDocumentException:()=>yR,MalformedPolicyDocumentException$:()=>Vz,PackedPolicyTooLargeException:()=>bR,PackedPolicyTooLargeException$:()=>Hz,PolicyDescriptorType$:()=>$z,ProvidedContext$:()=>eB,RegionDisabledException:()=>xR,RegionDisabledException$:()=>Uz,STS:()=>EB,STSClient:()=>hB,STSServiceException:()=>gR,STSServiceException$:()=>Fz,Tag$:()=>tB,__Client:()=>De,decorateDefaultCredentialProvider:()=>FB,errorTypeRegistries:()=>Wz,getDefaultRoleAssumer:()=>NB,getDefaultRoleAssumerWithWebIdentity:()=>PB}),LB=n((()=>{gB(),ese(),tse(),R(),sB(),TR(),nse(),ise(),_R()}));function ase(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`signin`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function ose(e){return{schemeId:`smithy.api#noAuth`}}var RB,zB,BB,VB=n((()=>{qA(),R(),RB=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),zB=e=>{let t=[];switch(e.operation){case`CreateOAuth2Token`:t.push(ose(e));break;default:t.push(ase(e))}return t},BB=e=>{let t=GA(e);return Object.assign(t,{authSchemePreference:Se(e.authSchemePreference??[])})}})),HB,UB,WB=n((()=>{HB=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:`signin`}),UB={UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),GB,KB,qB,JB,YB,XB,ZB,QB,$B,eV,tV,nV,rV,iV,aV,oV,sV,cV,lV,uV,dV,fV,sse=n((()=>{Le(),GB=`ref`,KB=-1,qB=!1,JB=!0,YB=`isSet`,XB=`booleanEquals`,ZB=`coalesce`,QB=`PartitionResult`,$B=`stringEquals`,eV=`getAttr`,tV=`https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}`,nV={[GB]:`Endpoint`},rV={fn:eV,argv:[{[GB]:QB},`name`]},iV={[GB]:`Region`},aV={[GB]:QB},oV={authSchemes:[{name:`sigv4`,signingName:`signin`,signingRegion:`{Region}`}]},sV={},cV=[iV],lV={conditions:[[YB,cV],[XB,[{fn:ZB,argv:[{[GB]:`IsControlPlane`},qB]},JB]],[YB,[nV]],[`aws.partition`,cV,QB],[XB,[{[GB]:`UseFIPS`},JB]],[$B,[rV,`aws`]],[XB,[{fn:ZB,argv:[{[GB]:`IsOAuthEndpoint`},qB]},JB]],[XB,[{[GB]:`UseDualStack`},JB]],[$B,[rV,`aws-cn`]],[$B,[iV,`us-gov-west-1`]],[$B,[rV,`aws-us-gov`]],[XB,[{fn:eV,argv:[aV,`supportsFIPS`]},JB]],[$B,[rV,`aws-iso`]],[$B,[rV,`aws-iso-b`]],[$B,[rV,`aws-iso-f`]],[$B,[rV,`aws-iso-e`]],[$B,[rV,`aws-eusc`]],[XB,[{fn:eV,argv:[aV,`supportsDualStack`]},JB]]],results:[[KB],[`https://signin.{Region}.api.aws`,oV],[`https://signin.{Region}.api.amazonwebservices.com.cn`,oV],[tV,oV],[KB,`FIPS endpoints are not supported for OAuth operations. Disable FIPS or use a non-OAuth operation.`],[`https://{Region}.oauth.signin.aws`,oV],[`https://{Region}.signin.aws.amazon.com`,sV],[`https://{Region}.signin.amazonaws.cn`,sV],[`https://{Region}.signin.amazonaws-us-gov.com`,sV],[`https://{Region}.signin.c2shome.ic.gov`,sV],[`https://{Region}.signin.sc2shome.sgov.gov`,sV],[`https://{Region}.signin.csphome.hci.ic.gov`,sV],[`https://{Region}.signin.csphome.adc-e.uk`,sV],[`https://{Region}.signin.amazonaws-eusc.eu`,sV],[`https://signin-fips.amazonaws-us-gov.com`,sV],[`https://{Region}.signin-fips.amazonaws-us-gov.com`,sV],[`https://{Region}.signin.{PartitionResult#dnsSuffix}`,sV],[KB,`Invalid Configuration: FIPS and custom endpoint are not supported`],[KB,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[nV,sV],[`https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,sV],[KB,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://signin-fips.{Region}.{PartitionResult#dnsSuffix}`,sV],[KB,`FIPS is enabled but this partition does not support FIPS`],[tV,sV],[KB,`DualStack is enabled but this partition does not support DualStack`],[`https://signin.{Region}.{PartitionResult#dnsSuffix}`,sV],[KB,`Invalid Configuration: Missing Region`]]},uV=2,dV=new Int32Array([-1,1,-1,0,6,3,2,36,4,4,5,100000027,6,100000004,100000027,1,29,7,2,36,8,3,9,31,4,22,10,5,19,11,7,21,12,8,100000007,13,10,100000008,14,12,100000009,15,13,100000010,16,14,100000011,17,15,100000012,18,16,100000013,100000016,6,100000005,20,7,21,100000006,17,100000024,100000025,6,100000004,23,7,27,24,9,100000014,25,10,100000015,26,11,100000022,100000023,11,28,100000021,17,100000020,100000021,2,35,30,3,39,31,4,32,100000027,6,100000004,33,7,100000027,34,9,100000014,100000027,3,39,36,4,38,37,7,100000018,100000019,6,100000004,100000017,5,100000001,40,8,100000002,100000003]),fV=Te.from(dV,uV,lV.conditions,lV.results)})),pV,mV,cse=n((()=>{dT(),Le(),sse(),pV=new Ne({size:50,params:[`Endpoint`,`IsControlPlane`,`IsOAuthEndpoint`,`Region`,`UseDualStack`,`UseFIPS`]}),mV=(e,t={})=>pV.get(e,()=>Be(fV,{endpointParams:e,logger:t.logger})),Qe.aws=iT})),hV,gV=n((()=>{R(),hV=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.signin#SigninServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),_V,vV,yV,bV,xV=n((()=>{gV(),_V=class e extends hV{static shapeId=`com.amazonaws.signin#AccessDeniedException`;name=`AccessDeniedException`;$fault=`client`;error;constructor(t){super({name:`AccessDeniedException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}},vV=class e extends hV{static shapeId=`com.amazonaws.signin#InternalServerException`;name=`InternalServerException`;$fault=`server`;error;constructor(t){super({name:`InternalServerException`,$fault:`server`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}},yV=class e extends hV{static shapeId=`com.amazonaws.signin#TooManyRequestsError`;name=`TooManyRequestsError`;$fault=`client`;error;constructor(t){super({name:`TooManyRequestsError`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}},bV=class e extends hV{static shapeId=`com.amazonaws.signin#ValidationException`;name=`ValidationException`;$fault=`client`;error;constructor(t){super({name:`ValidationException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}}})),SV,CV,wV,TV,EV,DV,OV,kV,AV,jV,MV,NV,PV,FV,IV,LV,RV,zV,BV,VV,HV,UV,WV,GV,KV,qV,JV,YV,XV,ZV,QV,$V,eH,tH,nH,rH,iH,aH,oH,sH,cH,lH,uH,dH,fH,pH,mH,hH,gH,_H,vH,yH,bH,xH,SH,CH,wH,TH,EH,DH,OH,kH,AH,jH=n((()=>{D(),xV(),gV(),SV=`AccessDeniedException`,CV=`AccessToken`,wV=`CreateOAuth2Token`,TV=`CreateOAuth2TokenRequest`,EV=`CreateOAuth2TokenRequestBody`,DV=`CreateOAuth2TokenResponseBody`,OV=`CreateOAuth2TokenResponse`,kV=`CreateOAuth2TokenWithIAM`,AV=`CreateOAuth2TokenWithIAMRequest`,jV=`CreateOAuth2TokenWithIAMResponse`,MV=`InternalServerException`,NV=`OAuthAccessToken`,PV=`RefreshToken`,FV=`TooManyRequestsError`,IV=`ValidationException`,LV=`accessKeyId`,RV=`accessToken`,zV=`access_token`,BV=`client`,VV=`clientId`,HV=`codeVerifier`,UV=`code`,WV=`error`,GV=`expiresIn`,KV=`expires_in`,qV=`grantType`,JV=`grant_type`,YV=`http`,XV=`httpError`,ZV=`idToken`,QV=`jsonName`,$V=`message`,eH=`resource`,tH=`refreshToken`,nH=`redirectUri`,rH=`smithy.ts.sdk.synthetic.com.amazonaws.signin`,iH=`secretAccessKey`,aH=`sessionToken`,oH=`server`,sH=`tokenInput`,cH=`tokenOutput`,lH=`tokenType`,uH=`token_type`,dH=`com.amazonaws.signin`,fH=new T(rH),pH=[-3,rH,`SigninServiceException`,0,[],[]],fH.registerError(pH,hV),mH=new T(dH),hH=[-3,dH,SV,{[WV]:BV},[WV,$V],[0,0],2],mH.registerError(hH,_V),gH=[-3,dH,MV,{[WV]:oH,[XV]:500},[WV,$V],[0,0],2],mH.registerError(gH,vV),_H=[-3,dH,FV,{[WV]:BV,[XV]:429},[WV,$V],[0,0],2],mH.registerError(_H,yV),vH=[-3,dH,IV,{[WV]:BV,[XV]:400},[WV,$V],[0,0],2],mH.registerError(vH,bV),yH=[fH,mH],bH=[0,dH,NV,8,0],xH=[0,dH,PV,8,0],SH=[3,dH,CV,8,[LV,iH,aH],[[0,{[QV]:LV}],[0,{[QV]:iH}],[0,{[QV]:aH}]],3],CH=[3,dH,TV,0,[sH],[[()=>wH,16]],1],wH=[3,dH,EV,0,[VV,qV,UV,nH,HV,tH],[[0,{[QV]:VV}],[0,{[QV]:qV}],0,[0,{[QV]:nH}],[0,{[QV]:HV}],[()=>xH,{[QV]:tH}]],2],TH=[3,dH,OV,0,[cH],[[()=>EH,16]],1],EH=[3,dH,DV,0,[RV,lH,GV,tH,ZV],[[()=>SH,{[QV]:RV}],[0,{[QV]:lH}],[1,{[QV]:GV}],[()=>xH,{[QV]:tH}],[0,{[QV]:ZV}]],4],DH=[3,dH,AV,0,[qV,eH],[[0,{[QV]:JV}],0],2],OH=[3,dH,jV,0,[RV,lH,GV],[[()=>bH,{[QV]:zV}],[0,{[QV]:uH}],[1,{[QV]:KV}]],3],kH=[9,dH,wV,{[YV]:[`POST`,`/v1/token`,200]},()=>CH,()=>TH],AH=[9,dH,kV,{[YV]:[`POST`,`/v1/token?x-amz-client-auth-method=iam`,200]},()=>DH,()=>OH]})),MH,lse=n((()=>{qA(),hk(),_w(),C(),R(),mS(),x(),VB(),cse(),jH(),MH=e=>({apiVersion:`2023-01-01`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??mV,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??zB,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new EA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new dw}],logger:e?.logger??new N,protocol:e?.protocol??XO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.signin`,errorTypeRegistries:yH,version:`2023-01-01`,serviceTarget:`Signin`},serviceId:e?.serviceId??`Signin`,sha256:e?.sha256??k,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),NH,PH,use=n((()=>{dT(),qA(),R(),nt(),yC(),x(),NH=ON(),lse(),PH=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=MH(e);yb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(FA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Hw({serviceId:r.serviceId,clientVersion:LN}),maxAttempts:e?.maxAttempts??w(lC,e),region:e?.region??w(g,{...v,...i}),requestHandler:NH.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({...pC,default:async()=>(await n()).retryMode||WS},e),streamCollector:e?.streamCollector??NH.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(qw,i)}}})),FH,IH,dse=n((()=>{FH=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},IH=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),LH,fse=n((()=>{dT(),R(),mS(),dse(),LH=(e,t)=>{let n=Object.assign(cT(e),j(e),tx(e),FH(e));return t.forEach(e=>e.configure(n)),Object.assign(e,lT(n),F(n),nx(n),IH(n))}})),RH,zH=n((()=>{dT(),_w(),R(),nt(),Le(),mS(),yC(),D(),VB(),WB(),use(),fse(),RH=class extends De{config;constructor(...[e]){let t=PH(e||{});super(t),this.initConfig=t;let n=vw(HB(t)),r=uC(n),i=SC(te(r)),a=Ke(i),o=BB(a),s=LH(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Lw(this.config)),this.middlewareStack.use(vC(this.config)),this.middlewareStack.use(ox(this.config)),this.middlewareStack.use(TC(this.config)),this.middlewareStack.use(OC(this.config)),this.middlewareStack.use(WC(this.config)),this.middlewareStack.use(YC(this.config,{httpAuthSchemeParametersProvider:RB,identityProviderConfigProvider:async e=>new sw({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(rw(this.config))}destroy(){super.destroy()}}})),BH,VH,HH,UH,WH=n((()=>{R(),Le(),WB(),BH=h(UB,`Signin`,`SigninClient`,Xe),VH={IsControlPlane:{type:`staticContextParams`,value:!1}},HH={IsOAuthEndpoint:{type:`staticContextParams`,value:!0}},UH=(e,t,n,r)=>[]})),GH,KH=n((()=>{WH(),jH(),GH=class extends BH(VH,UH,`CreateOAuth2Token`,kH){}})),qH,JH=n((()=>{WH(),jH(),qH=class extends BH(HH,UH,`CreateOAuth2TokenWithIAM`,AH){}})),YH,XH,pse=n((()=>{R(),KH(),JH(),zH(),YH={CreateOAuth2TokenCommand:GH,CreateOAuth2TokenWithIAMCommand:qH},XH=class extends RH{},S(YH,XH)})),mse=n((()=>{KH(),JH()})),ZH,hse=n((()=>{ZH={AUTHCODE_EXPIRED:`AUTHCODE_EXPIRED`,CONFLICT:`CONFLICT`,INSUFFICIENT_PERMISSIONS:`INSUFFICIENT_PERMISSIONS`,INVALID_REQUEST:`INVALID_REQUEST`,RESOURCE_NOT_FOUND:`RESOURCE_NOT_FOUND`,SERVER_ERROR:`server_error`,SERVICE_QUOTA_EXCEEDED:`SERVICE_QUOTA_EXCEEDED`,TOKEN_EXPIRED:`TOKEN_EXPIRED`,USER_CREDENTIALS_CHANGED:`USER_CREDENTIALS_CHANGED`}})),gse=n((()=>{})),_se=/* @__PURE__ */ i({$Command:()=>oe,AccessDeniedException:()=>_V,AccessDeniedException$:()=>hH,AccessToken$:()=>SH,CreateOAuth2Token$:()=>kH,CreateOAuth2TokenCommand:()=>GH,CreateOAuth2TokenRequest$:()=>CH,CreateOAuth2TokenRequestBody$:()=>wH,CreateOAuth2TokenResponse$:()=>TH,CreateOAuth2TokenResponseBody$:()=>EH,CreateOAuth2TokenWithIAM$:()=>AH,CreateOAuth2TokenWithIAMCommand:()=>qH,CreateOAuth2TokenWithIAMRequest$:()=>DH,CreateOAuth2TokenWithIAMResponse$:()=>OH,InternalServerException:()=>vV,InternalServerException$:()=>gH,OAuth2ErrorCode:()=>ZH,Signin:()=>XH,SigninClient:()=>RH,SigninServiceException:()=>hV,SigninServiceException$:()=>pH,TooManyRequestsError:()=>yV,TooManyRequestsError$:()=>_H,ValidationException:()=>bV,ValidationException$:()=>vH,__Client:()=>De,errorTypeRegistries:()=>yH}),vse=n((()=>{zH(),pse(),mse(),R(),jH(),hse(),xV(),gse(),gV()})),yse=/* @__PURE__ */ a((n=>{let{setCredentialFeature:r}=(dT(),e(uT)),{CredentialsProviderError:i,parseKnownFiles:a,getProfileName:o}=(nt(),e(he)),{HttpRequest:s}=(mS(),e(pS)),{createHash:c,createPrivateKey:l,createPublicKey:u,sign:d}=t(`node:crypto`),{promises:f}=t(`node:fs`),{homedir:p}=t(`node:os`),{dirname:m,join:h}=t(`node:path`);var g=class t{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=3e5;constructor(e,t,n){this.profileData=e,this.init=t,this.callerClientConfig=n}async loadCredentials(){let e=await this.loadToken();if(!e)throw new i(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let n=e.accessToken,r=Date.now();return new Date(n.expiresAt).getTime()-r<=t.REFRESH_THRESHOLD?this.refresh(e):this.toCredentials(e.accessToken)}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}toCredentials(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken,accountId:e.accountId,expiration:new Date(e.expiresAt)}}async refresh(n){let r=await this.loadToken().catch(()=>n),a=Date.now(),o=new Date(r.accessToken.expiresAt).getTime(),s=new Date(n.accessToken.expiresAt).getTime(),c=o<=a&&s>a?n:r;if(new Date(c.accessToken.expiresAt).getTime()-Date.now()>t.REFRESH_THRESHOLD)return this.toCredentials(c.accessToken);let{SigninClient:l,CreateOAuth2TokenCommand:u}=(vse(),e(_se)),{logger:d,userAgentAppId:f}=this.callerClientConfig??{},p=(e=>e?.metadata?.handlerProtocol===`h2`)(this.callerClientConfig?.requestHandler)?void 0:this.callerClientConfig?.requestHandler,m=new l({credentials:{accessKeyId:``,secretAccessKey:``},region:this.profileData.region??await this.callerClientConfig?.region?.()??process.env.AWS_REGION,requestHandler:p,logger:d,userAgentAppId:f,...this.init?.clientConfig});this.createDPoPInterceptor(m.middlewareStack);let h={tokenInput:{clientId:c.clientId,refreshToken:c.refreshToken,grantType:`refresh_token`}};try{let e=await m.send(new u(h)),{accessKeyId:t,secretAccessKey:n,sessionToken:r}=e.tokenOutput?.accessToken??{},{refreshToken:a,expiresIn:o}=e.tokenOutput??{};if(!t||!n||!r||!a)throw new i(`Token refresh response missing required fields`,{logger:this.logger,tryNextLink:!1});let s=(o??900)*1e3,l=new Date(Date.now()+s),d={...c,accessToken:{...c.accessToken,accessKeyId:t,secretAccessKey:n,sessionToken:r,expiresAt:l.toISOString()},refreshToken:a};return await this.saveToken(d),this.toCredentials(d.accessToken)}catch(e){if(e.name===`AccessDeniedException`){let t=e.error,n;switch(t){case`TOKEN_EXPIRED`:n=`Your session has expired. Please reauthenticate.`;break;case`USER_CREDENTIALS_CHANGED`:n=`Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.`;break;case`INSUFFICIENT_PERMISSIONS`:n=`Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.`;break;default:n=`Failed to refresh token: ${String(e)}. Please re-authenticate using \`aws login\``}throw new i(n,{logger:this.logger,tryNextLink:!1})}if(new Date(c.accessToken.expiresAt).getTime()>Date.now())return this.logger?.warn?.(`Failed to refresh token: ${String(e)}. Using existing token until expiry.`),this.toCredentials(c.accessToken);throw new i(`Failed to refresh token: ${String(e)}. Please re-authenticate using aws login`,{logger:this.logger})}}async loadToken(){let e=this.getTokenFilePath();try{let t=await f.readFile(e,`utf8`),n=JSON.parse(t),r=[`accessToken`,`clientId`,`refreshToken`,`dpopKey`].filter(e=>!n[e]);if(n.accessToken?.accountId||r.push(`accountId`),r.length>0)throw new i(`Token validation failed, missing fields: ${r.join(`, `)}`,{logger:this.logger,tryNextLink:!1});return n}catch(t){throw new i(`Failed to load token from ${e}: ${String(t)}`,{logger:this.logger,tryNextLink:!1})}}async saveToken(e){let t=this.getTokenFilePath(),n=m(t);try{await f.mkdir(n,{recursive:!0})}catch{}await f.writeFile(t,JSON.stringify(e,null,2),`utf8`)}getTokenFilePath(){let e=process.env.AWS_LOGIN_CACHE_DIRECTORY??h(p(),`.aws`,`login`,`cache`),t=Buffer.from(this.loginSession,`utf8`),n=c(`sha256`).update(t).digest(`hex`);return h(e,`${n}.json`)}derToRawSignature(e){let t=2;if(e[t]!==2)throw Error(`Invalid DER signature`);t++;let n=e[t++],r=e.subarray(t,t+n);if(t+=n,e[t]!==2)throw Error(`Invalid DER signature`);t++;let i=e[t++],a=e.subarray(t,t+i);r=r[0]===0?r.subarray(1):r,a=a[0]===0?a.subarray(1):a;let o=Buffer.concat([Buffer.alloc(32-r.length),r]),s=Buffer.concat([Buffer.alloc(32-a.length),a]);return Buffer.concat([o,s])}createDPoPInterceptor(e){e.add(e=>async t=>{if(s.isInstance(t.request)){let e=t.request,n=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:``}${e.path}`,r=await this.generateDpop(e.method,n);e.headers={...e.headers,DPoP:r}}return e(t)},{step:`finalizeRequest`,name:`dpopInterceptor`,override:!0})}async generateDpop(e=`POST`,t){let n=await this.loadToken();try{let r=l({key:n.dpopKey,format:`pem`,type:`sec1`}),i=u(r).export({format:`der`,type:`spki`}),a=-1;for(let e=0;easync({callerClientConfig:t}={})=>{e?.logger?.debug?.(`@aws-sdk/credential-providers - fromLoginCredentials`);let n=await a(e||{}),s=o({profile:e?.profile??t?.profile}),c=n[s];if(!c?.login_session)throw new i(`Profile ${s} does not contain login_session.`,{tryNextLink:!0,logger:e?.logger});let l=await new g(c,e,t).loadCredentials();return r(l,`CREDENTIALS_LOGIN`,`AD`)}})),QH=/* @__PURE__ */ a((n=>{let{externalDataInterceptor:r,CredentialsProviderError:i,parseKnownFiles:a,getProfileName:o}=(nt(),e(he)),{exec:s}=t(`node:child_process`),{promisify:c}=t(`node:util`),{setCredentialFeature:l}=(dT(),e(uT)),u=(e,t,n)=>{if(t.Version!==1)throw Error(`Profile ${e} credential_process did not return Version 1.`);if(t.AccessKeyId===void 0||t.SecretAccessKey===void 0)throw Error(`Profile ${e} credential_process returned invalid credentials.`);if(t.Expiration){let n=/* @__PURE__ */ new Date;if(new Date(t.Expiration){let a=t[e];if(t[e]){let o=a.credential_process;if(o!==void 0){let a=c(r?.getTokenRecord?.().exec??s);try{let{stdout:n}=await a(o),r;try{r=JSON.parse(n.trim())}catch{throw Error(`Profile ${e} credential_process returned invalid JSON.`)}return u(e,r,t)}catch(e){throw new i(e.message,{logger:n})}}throw new i(`Profile ${e} did not contain credential_process.`,{logger:n})}throw new i(`Profile ${e} could not be found in shared credentials file.`,{logger:n})};n.fromProcess=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/credential-provider-process - fromProcess`);let n=await a(e);return d(o({profile:e.profile??t?.profile}),n,e.logger)}})),$H=/* @__PURE__ */ a((n=>{let{setCredentialFeature:r}=(dT(),e(uT)),{CredentialsProviderError:i,externalDataInterceptor:a}=(nt(),e(he)),{readFileSync:o}=t(`node:fs`),s=t=>async n=>{t.logger?.debug(`@aws-sdk/credential-provider-web-identity - fromWebToken`);let{roleArn:r,roleSessionName:i,webIdentityToken:a,providerId:o,policyArns:s,policy:c,durationSeconds:l}=t,{roleAssumerWithWebIdentity:u}=t;if(!u){let{getDefaultRoleAssumerWithWebIdentity:r}=(LB(),e(IB));u=r({...t.clientConfig,credentialProviderLogger:t.logger,parentClientConfig:{...n?.callerClientConfig,...t.parentClientConfig}},t.clientPlugins)}return u({RoleArn:r,RoleSessionName:i??`aws-sdk-js-session-${Date.now()}`,WebIdentityToken:a,ProviderId:o,PolicyArns:s,Policy:c,DurationSeconds:l})},c=`AWS_WEB_IDENTITY_TOKEN_FILE`;n.fromTokenFile=(e={})=>async t=>{e.logger?.debug(`@aws-sdk/credential-provider-web-identity - fromTokenFile`);let n=e?.webIdentityTokenFile??process.env[c],l=e?.roleArn??process.env.AWS_ROLE_ARN,u=e?.roleSessionName??process.env.AWS_ROLE_SESSION_NAME;if(!n||!l)throw new i(`Web identity configuration not specified`,{logger:e.logger});let d=await s({...e,webIdentityToken:a?.getTokenRecord?.()[n]??o(n,{encoding:`ascii`}),roleArn:l,roleSessionName:u})(t);return n===process.env[c]&&r(d,`CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN`,`h`),d},n.fromWebToken=s})),bse=/* @__PURE__ */ a((t=>{let{CredentialsProviderError:n,chain:r,getProfileName:i,parseKnownFiles:a}=(nt(),e(he)),{setCredentialFeature:o}=(dT(),e(uT)),s=(e,t,i)=>{let a={EcsContainer:async e=>{let{fromHttp:t}=kN(),{fromContainerMetadata:n}=qM();return i?.debug(`@aws-sdk/credential-provider-ini - credential_source is EcsContainer`),async()=>r(t(e??{}),n(e))().then(c)},Ec2InstanceMetadata:async e=>{i?.debug(`@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata`);let{fromInstanceMetadata:t}=qM();return async()=>t(e)().then(c)},Environment:async e=>{i?.debug(`@aws-sdk/credential-provider-ini - credential_source is Environment`);let{fromEnv:t}=JA();return async()=>t(e)().then(c)}};if(e in a)return a[e];throw new n(`Unsupported credential source in profile ${t}. Got ${e}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,{logger:i})},c=e=>o(e,`CREDENTIALS_PROFILE_NAMED_PROVIDER`,`p`),l=(e,{profile:t=`default`,logger:n}={})=>!!e&&typeof e==`object`&&typeof e.role_arn==`string`&&[`undefined`,`string`].indexOf(typeof e.role_session_name)>-1&&[`undefined`,`string`].indexOf(typeof e.external_id)>-1&&[`undefined`,`string`].indexOf(typeof e.mfa_serial)>-1&&(u(e,{profile:t,logger:n})||d(e,{profile:t,logger:n})),u=(e,{profile:t,logger:n})=>{let r=typeof e.source_profile==`string`&&e.credential_source===void 0;return r&&n?.debug?.(` ${t} isAssumeRoleWithSourceProfile source_profile=${e.source_profile}`),r},d=(e,{profile:t,logger:n})=>{let r=typeof e.credential_source==`string`&&e.source_profile===void 0;return r&&n?.debug?.(` ${t} isCredentialSourceProfile credential_source=${e.credential_source}`),r},f=async(t,r,a,c,l={},u)=>{a.logger?.debug(`@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)`);let d=r[t],{source_profile:f,region:m}=d;if(!a.roleAssumer){let{getDefaultRoleAssumer:t}=(LB(),e(IB));a.roleAssumer=t({...a.clientConfig,credentialProviderLogger:a.logger,parentClientConfig:{...c,...a?.parentClientConfig,region:m??a?.parentClientConfig?.region??c?.region}},a.clientPlugins)}if(f&&f in l)throw new n(`Detected a cycle attempting to resolve credentials for profile ${i(a)}. Profiles visited: `+Object.keys(l).join(`, `),{logger:a.logger});a.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${f?`source_profile=[${f}]`:`profile=[${t}]`}`);let h=f?u(f,r,a,c,{...l,[f]:!0},p(r[f]??{})):(await s(d.credential_source,t,a.logger)(a))();if(p(d))return h.then(e=>o(e,`CREDENTIALS_PROFILE_SOURCE_PROFILE`,`o`));{let e={RoleArn:d.role_arn,RoleSessionName:d.role_session_name||`aws-sdk-js-${Date.now()}`,ExternalId:d.external_id,DurationSeconds:parseInt(d.duration_seconds||`3600`,10)},{mfa_serial:r}=d;if(r){if(!a.mfaCodeProvider)throw new n(`Profile ${t} requires multi-factor authentication, but no MFA code callback was provided.`,{logger:a.logger,tryNextLink:!1});e.SerialNumber=r,e.TokenCode=await a.mfaCodeProvider(r)}let i=await h;return a.roleAssumer(i,e).then(e=>o(e,`CREDENTIALS_PROFILE_SOURCE_PROFILE`,`o`))}},p=e=>!e.role_arn&&!!e.credential_source,m=e=>!!(e&&e.login_session),h=async(e,t,n)=>{let{fromLoginCredentials:r}=yse(),i=await r({...t,profile:e})({callerClientConfig:n});return o(i,`CREDENTIALS_PROFILE_LOGIN`,`AC`)},g=e=>!!e&&typeof e==`object`&&typeof e.credential_process==`string`,v=async(e,t)=>{let{fromProcess:n}=QH(),r=await n({...e,profile:t})();return o(r,`CREDENTIALS_PROFILE_PROCESS`,`v`)},y=async(e,t,n={},r)=>{let{fromSSO:i}=AL();return i({profile:e,logger:n.logger,parentClientConfig:n.parentClientConfig,clientConfig:n.clientConfig})({callerClientConfig:r}).then(e=>t.sso_session?o(e,`CREDENTIALS_PROFILE_SSO`,`r`):o(e,`CREDENTIALS_PROFILE_SSO_LEGACY`,`t`))},b=e=>e&&(typeof e.sso_start_url==`string`||typeof e.sso_account_id==`string`||typeof e.sso_session==`string`||typeof e.sso_region==`string`||typeof e.sso_role_name==`string`),x=e=>!!e&&typeof e==`object`&&typeof e.aws_access_key_id==`string`&&typeof e.aws_secret_access_key==`string`&&[`undefined`,`string`].indexOf(typeof e.aws_session_token)>-1&&[`undefined`,`string`].indexOf(typeof e.aws_account_id)>-1,S=async(e,t)=>{t?.logger?.debug(`@aws-sdk/credential-provider-ini - resolveStaticCredentials`);let n={accessKeyId:e.aws_access_key_id,secretAccessKey:e.aws_secret_access_key,sessionToken:e.aws_session_token,...e.aws_credential_scope&&{credentialScope:e.aws_credential_scope},...e.aws_account_id&&{accountId:e.aws_account_id}};return o(n,`CREDENTIALS_PROFILE`,`n`)},C=e=>!!e&&typeof e==`object`&&typeof e.web_identity_token_file==`string`&&typeof e.role_arn==`string`&&[`undefined`,`string`].indexOf(typeof e.role_session_name)>-1,w=async(e,t,n)=>{let{fromTokenFile:r}=$H(),i=await r({webIdentityTokenFile:e.web_identity_token_file,roleArn:e.role_arn,roleSessionName:e.role_session_name,roleAssumerWithWebIdentity:t.roleAssumerWithWebIdentity,logger:t.logger,parentClientConfig:t.parentClientConfig})({callerClientConfig:n});return o(i,`CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN`,`q`)},T=async(e,t,r,i,a={},o=!1)=>{let s=t[e];if(Object.keys(a).length>0&&x(s))return S(s,r);if(o||l(s,{profile:e,logger:r.logger}))return f(e,t,r,i,a,T);if(x(s))return S(s,r);if(C(s))return w(s,r,i);if(g(s))return v(r,e);if(b(s))return await y(e,s,r,i);if(m(s))return h(e,r,i);throw new n(`Could not resolve credentials using profile: [${e}] in configuration/credentials file(s).`,{logger:r.logger})};t.fromIni=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/credential-provider-ini - fromIni`);let n=await a(e);return T(i({profile:e.profile??t?.profile}),n,e,t)}})),xse=/* @__PURE__ */ a((t=>{let{ENV_KEY:n,ENV_SECRET:r,fromEnv:i}=JA(),{chain:a,CredentialsProviderError:o,ENV_PROFILE:s}=(nt(),e(he)),c=`AWS_EC2_METADATA_DISABLED`,l=async e=>{let{ENV_CMDS_FULL_URI:t,ENV_CMDS_RELATIVE_URI:n,fromContainerMetadata:r,fromInstanceMetadata:i}=qM();if(process.env[n]||process.env[t]){e.logger?.debug(`@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata`);let{fromHttp:t}=kN();return a(t(e),r(e))}return process.env[c]&&process.env[c]!==`false`?async()=>{throw new o(`EC2 Instance Metadata Service access disabled`,{logger:e.logger})}:(e.logger?.debug(`@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata`),i(e))};function u(e,t){let n=d(e),r,i,a,o,s=async e=>{if(e?.forceRefresh)return o||=n(e).then(e=>{a=e}).finally(()=>{o=void 0}),await o,a;if(a?.expiration&&a?.expiration?.getTime(){a=e}).catch(()=>{}).finally(()=>{i=void 0});else return r=n(e).then(e=>{a=e}).finally(()=>{r=void 0}),s(e)}return a};return s}let d=e=>async t=>{let n;for(let r of e)try{return await r(t)}catch(e){if(n=e,e?.tryNextLink)continue;throw e}throw n},f=!1,p=(e={})=>u([async()=>{if(e.profile??process.env[s])throw process.env[n]&&process.env[r]&&(f||=((e.logger?.warn&&e.logger?.constructor?.name!==`NoOpLogger`?e.logger.warn.bind(e.logger):console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: +`))throw new i(`Authorization token contains invalid \\r\\n sequence.`);return e};n.fromHttp=m}));function Yae(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`sso-oauth`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Xae(e){return{schemeId:`smithy.api#noAuth`}}var tP,nP,rP,iP=n((()=>{FA(),R(),tP=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),nP=e=>{let t=[];switch(e.operation){case`CreateToken`:t.push(Xae(e));break;default:t.push(Yae(e))}return t},rP=e=>{let t=NA(e);return Object.assign(t,{authSchemePreference:Se(e.authSchemePreference??[])})}})),aP,oP,sP=n((()=>{aP=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:`sso-oauth`}),oP={UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),cP=`3.997.50`,lP,uP,dP,fP,pP,mP,hP,gP,_P,vP,yP,bP,xP,SP,CP,Zae=n((()=>{Le(),lP=`ref`,uP=-1,dP=!0,fP=`isSet`,pP=`PartitionResult`,mP=`booleanEquals`,hP=`getAttr`,gP={[lP]:`Endpoint`},_P={[lP]:pP},vP={},yP=[{[lP]:`Region`}],bP={conditions:[[fP,[gP]],[fP,yP],[`aws.partition`,yP,pP],[mP,[{[lP]:`UseFIPS`},dP]],[mP,[{[lP]:`UseDualStack`},dP]],[mP,[{fn:hP,argv:[_P,`supportsDualStack`]},dP]],[mP,[{fn:hP,argv:[_P,`supportsFIPS`]},dP]],[`stringEquals`,[{fn:hP,argv:[_P,`name`]},`aws-us-gov`]]],results:[[uP],[uP,`Invalid Configuration: FIPS and custom endpoint are not supported`],[uP,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[gP,vP],[`https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,vP],[uP,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://oidc.{Region}.amazonaws.com`,vP],[`https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}`,vP],[uP,`FIPS is enabled but this partition does not support FIPS`],[`https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}`,vP],[uP,`DualStack is enabled but this partition does not support DualStack`],[`https://oidc.{Region}.{PartitionResult#dnsSuffix}`,vP],[uP,`Invalid Configuration: Missing Region`]]},xP=2,SP=new Int32Array([-1,1,-1,0,13,3,1,4,100000012,2,5,100000012,3,8,6,4,7,100000011,5,100000009,100000010,4,11,9,6,10,100000008,7,100000006,100000007,5,12,100000005,6,100000004,100000005,3,100000001,14,4,100000002,100000003]),CP=Te.from(SP,xP,bP.conditions,bP.results)})),wP,TP,Qae=n((()=>{uT(),Le(),Zae(),wP=new Ne({size:50,params:[`Endpoint`,`Region`,`UseDualStack`,`UseFIPS`]}),TP=(e,t={})=>wP.get(e,()=>Be(CP,{endpointParams:e,logger:t.logger})),Qe.aws=nT})),EP,DP=n((()=>{R(),EP=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.ssooidc#SSOOIDCServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),OP,kP,AP,jP,MP,NP,PP,FP,IP,LP,RP,zP=n((()=>{DP(),OP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#AccessDeniedException`;name=`AccessDeniedException`;$fault=`client`;error;reason;error_description;constructor(t){super({name:`AccessDeniedException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.reason=t.reason,this.error_description=t.error_description}},kP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#AuthorizationPendingException`;name=`AuthorizationPendingException`;$fault=`client`;error;error_description;constructor(t){super({name:`AuthorizationPendingException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},AP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#ExpiredTokenException`;name=`ExpiredTokenException`;$fault=`client`;error;error_description;constructor(t){super({name:`ExpiredTokenException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},jP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#InternalServerException`;name=`InternalServerException`;$fault=`server`;error;error_description;constructor(t){super({name:`InternalServerException`,$fault:`server`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},MP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#InvalidClientException`;name=`InvalidClientException`;$fault=`client`;error;error_description;constructor(t){super({name:`InvalidClientException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},NP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#InvalidGrantException`;name=`InvalidGrantException`;$fault=`client`;error;error_description;constructor(t){super({name:`InvalidGrantException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},PP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#InvalidRequestException`;name=`InvalidRequestException`;$fault=`client`;error;reason;error_description;constructor(t){super({name:`InvalidRequestException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.reason=t.reason,this.error_description=t.error_description}},FP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#InvalidScopeException`;name=`InvalidScopeException`;$fault=`client`;error;error_description;constructor(t){super({name:`InvalidScopeException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},IP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#SlowDownException`;name=`SlowDownException`;$fault=`client`;error;error_description;constructor(t){super({name:`SlowDownException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},LP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#UnauthorizedClientException`;name=`UnauthorizedClientException`;$fault=`client`;error;error_description;constructor(t){super({name:`UnauthorizedClientException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}},RP=class e extends EP{static shapeId=`com.amazonaws.ssooidc#UnsupportedGrantTypeException`;name=`UnsupportedGrantTypeException`;$fault=`client`;error;error_description;constructor(t){super({name:`UnsupportedGrantTypeException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error,this.error_description=t.error_description}}})),BP,$ae,eoe,toe,noe,roe,ioe,aoe,ooe,soe,coe,loe,uoe,doe,foe,poe,moe,hoe,goe,_oe,VP,voe,yoe,boe,xoe,Soe,HP,Coe,UP,woe,Toe,WP,Eoe,GP,KP,Doe,qP,Ooe,koe,Aoe,JP,YP,XP,ZP,QP,$P,eF,tF,nF,rF,iF,aF,oF,sF,cF,lF,joe,Moe,Noe,Poe,uF,dF,fF,pF,mF=n((()=>{D(),zP(),DP(),BP=`AccessDeniedException`,$ae=`AuthorizationPendingException`,eoe=`AccessToken`,toe=`ClientSecret`,noe=`CreateToken`,roe=`CreateTokenRequest`,ioe=`CreateTokenResponse`,aoe=`CodeVerifier`,ooe=`ExpiredTokenException`,soe=`InvalidClientException`,coe=`InvalidGrantException`,loe=`InvalidRequestException`,uoe=`InternalServerException`,doe=`InvalidScopeException`,foe=`IdToken`,poe=`RefreshToken`,moe=`SlowDownException`,hoe=`UnauthorizedClientException`,goe=`UnsupportedGrantTypeException`,_oe=`accessToken`,VP=`client`,voe=`clientId`,yoe=`clientSecret`,boe=`codeVerifier`,xoe=`code`,Soe=`deviceCode`,HP=`error`,Coe=`expiresIn`,UP=`error_description`,woe=`grantType`,Toe=`http`,WP=`httpError`,Eoe=`idToken`,GP=`reason`,KP=`refreshToken`,Doe=`redirectUri`,qP=`smithy.ts.sdk.synthetic.com.amazonaws.ssooidc`,Ooe=`scope`,koe=`server`,Aoe=`tokenType`,JP=`com.amazonaws.ssooidc`,YP=new T(qP),XP=[-3,qP,`SSOOIDCServiceException`,0,[],[]],YP.registerError(XP,EP),ZP=new T(JP),QP=[-3,JP,BP,{[HP]:VP,[WP]:400},[HP,GP,UP],[0,0,0]],ZP.registerError(QP,OP),$P=[-3,JP,$ae,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError($P,kP),eF=[-3,JP,ooe,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError(eF,AP),tF=[-3,JP,uoe,{[HP]:koe,[WP]:500},[HP,UP],[0,0]],ZP.registerError(tF,jP),nF=[-3,JP,soe,{[HP]:VP,[WP]:401},[HP,UP],[0,0]],ZP.registerError(nF,MP),rF=[-3,JP,coe,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError(rF,NP),iF=[-3,JP,loe,{[HP]:VP,[WP]:400},[HP,GP,UP],[0,0,0]],ZP.registerError(iF,PP),aF=[-3,JP,doe,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError(aF,FP),oF=[-3,JP,moe,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError(oF,IP),sF=[-3,JP,hoe,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError(sF,LP),cF=[-3,JP,goe,{[HP]:VP,[WP]:400},[HP,UP],[0,0]],ZP.registerError(cF,RP),lF=[YP,ZP],joe=[0,JP,eoe,8,0],Moe=[0,JP,toe,8,0],Noe=[0,JP,aoe,8,0],Poe=[0,JP,foe,8,0],uF=[0,JP,poe,8,0],dF=[3,JP,roe,0,[voe,yoe,woe,Soe,xoe,KP,Ooe,Doe,boe],[0,[()=>Moe,0],0,0,0,[()=>uF,0],64,0,[()=>Noe,0]],3],fF=[3,JP,ioe,0,[_oe,Aoe,Coe,KP,Eoe],[[()=>joe,0],0,1,[()=>uF,0],[()=>Poe,0]]],pF=[9,JP,noe,{[Toe]:[`POST`,`/token`,200]},()=>dF,()=>fF]})),Foe,Ioe=n((()=>{FA(),rk(),yw(),C(),R(),yS(),x(),iP(),Qae(),mF(),Foe=e=>({apiVersion:`2019-06-10`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??TP,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??nP,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new mA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new pw}],logger:e?.logger??new N,protocol:e?.protocol??RO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.ssooidc`,errorTypeRegistries:lF,version:`2019-06-10`,serviceTarget:`AWSSSOOIDCService`},serviceId:e?.serviceId??`SSO OIDC`,sha256:e?.sha256??k,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),hF,Loe,Roe=n((()=>{uT(),FA(),R(),nt(),xC(),x(),hF=$N(),Ioe(),Loe=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=Foe(e);wb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(CA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Bw({serviceId:r.serviceId,clientVersion:cP}),maxAttempts:e?.maxAttempts??w(pC,e),region:e?.region??w(g,{...v,...i}),requestHandler:hF.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({..._C,default:async()=>(await n()).retryMode||JS},e),streamCollector:e?.streamCollector??hF.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(Gw,i)}}})),zoe,Boe,Voe=n((()=>{zoe=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},Boe=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),Hoe,Uoe=n((()=>{uT(),R(),yS(),Voe(),Hoe=(e,t)=>{let n=Object.assign(sT(e),j(e),ox(e),zoe(e));return t.forEach(e=>e.configure(n)),Object.assign(e,cT(n),F(n),sx(n),Boe(n))}})),gF,Woe=n((()=>{uT(),yw(),R(),nt(),Le(),yS(),xC(),D(),iP(),sP(),Roe(),Uoe(),gF=class extends De{config;constructor(...[e]){let t=Loe(e||{});super(t),this.initConfig=t;let n=bw(aP(t)),r=mC(n),i=CC(te(r)),a=Ke(i),o=rP(a),s=Hoe(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Fw(this.config)),this.middlewareStack.use(bC(this.config)),this.middlewareStack.use(dx(this.config)),this.middlewareStack.use(EC(this.config)),this.middlewareStack.use(kC(this.config)),this.middlewareStack.use(KC(this.config)),this.middlewareStack.use(ZC(this.config,{httpAuthSchemeParametersProvider:tP,identityProviderConfigProvider:async e=>new lw({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(aw(this.config))}destroy(){super.destroy()}}})),Goe,Koe,qoe,Joe=n((()=>{R(),Le(),sP(),Goe=h(oP,`AWSSSOOIDCService`,`SSOOIDCClient`,Xe),Koe={},qoe=(e,t,n,r)=>[]})),_F,Yoe=n((()=>{Joe(),mF(),_F=class extends Goe(Koe,qoe,`CreateToken`,pF){}})),Xoe,vF,Zoe=n((()=>{R(),Yoe(),Woe(),Xoe={CreateTokenCommand:_F},vF=class extends gF{},S(Xoe,vF)})),Qoe=n((()=>{Yoe()})),$oe,ese,tse=n((()=>{$oe={KMS_ACCESS_DENIED:`KMS_AccessDeniedException`},ese={KMS_DISABLED_KEY:`KMS_DisabledException`,KMS_INVALID_KEY_USAGE:`KMS_InvalidKeyUsageException`,KMS_INVALID_STATE:`KMS_InvalidStateException`,KMS_KEY_NOT_FOUND:`KMS_NotFoundException`}})),nse=n((()=>{})),rse=/* @__PURE__ */ i({$Command:()=>oe,AccessDeniedException:()=>OP,AccessDeniedException$:()=>QP,AccessDeniedExceptionReason:()=>$oe,AuthorizationPendingException:()=>kP,AuthorizationPendingException$:()=>$P,CreateToken$:()=>pF,CreateTokenCommand:()=>_F,CreateTokenRequest$:()=>dF,CreateTokenResponse$:()=>fF,ExpiredTokenException:()=>AP,ExpiredTokenException$:()=>eF,InternalServerException:()=>jP,InternalServerException$:()=>tF,InvalidClientException:()=>MP,InvalidClientException$:()=>nF,InvalidGrantException:()=>NP,InvalidGrantException$:()=>rF,InvalidRequestException:()=>PP,InvalidRequestException$:()=>iF,InvalidRequestExceptionReason:()=>ese,InvalidScopeException:()=>FP,InvalidScopeException$:()=>aF,SSOOIDC:()=>vF,SSOOIDCClient:()=>gF,SSOOIDCServiceException:()=>EP,SSOOIDCServiceException$:()=>XP,SlowDownException:()=>IP,SlowDownException$:()=>oF,UnauthorizedClientException:()=>LP,UnauthorizedClientException$:()=>sF,UnsupportedGrantTypeException:()=>RP,UnsupportedGrantTypeException$:()=>cF,__Client:()=>De,errorTypeRegistries:()=>lF}),ise=n((()=>{Woe(),Zoe(),Qoe(),R(),mF(),tse(),zP(),nse(),DP()})),ase=/* @__PURE__ */ a((n=>{let{setTokenFeature:r}=(uT(),e(lT)),{getBearerTokenEnvKey:i}=(FA(),e(MA)),{TokenProviderError:a,getSSOTokenFilepath:o,parseKnownFiles:s,getProfileName:c,loadSsoSessionData:l,getSSOTokenFromFile:u,memoize:d,chain:f}=(nt(),e(he)),{promises:p}=t(`node:fs`),m=({logger:e,signingName:t}={})=>async()=>{if(e?.debug?.(`@aws-sdk/token-providers - fromEnvSigningName`),!t)throw new a(`Please pass 'signingName' to compute environment variable key`,{logger:e});let n=i(t);if(!(n in process.env))throw new a(`Token not present in '${n}' environment variable`,{logger:e});let o={token:process.env[n]};return r(o,`BEARER_SERVICE_ENV_VARS`,`3`),o},h=`To refresh this SSO session run 'aws sso login' with the corresponding profile.`,g=async(t,n={},r)=>{let{SSOOIDCClient:i}=(ise(),e(rse)),a=e=>n.clientConfig?.[e]??n.parentClientConfig?.[e]??r?.[e];return new i(Object.assign({},n.clientConfig??{},{region:t??n.clientConfig?.region,logger:a(`logger`),userAgentAppId:a(`userAgentAppId`)}))},v=async(t,n,r={},i)=>{let{CreateTokenCommand:a}=(ise(),e(rse));return(await g(n,r,i)).send(new a({clientId:t.clientId,clientSecret:t.clientSecret,refreshToken:t.refreshToken,grantType:`refresh_token`}))},y=e=>{if(e.expiration&&e.expiration.getTime(){if(t===void 0)throw new a(`Value not present for '${e}' in SSO Token${n?`. Cannot refresh`:``}. ${h}`,!1)},{writeFile:x}=p,S=(e,t)=>{let n=o(e),r=JSON.stringify(t,null,2);return x(n,r)},C=/* @__PURE__ */ new Map,w=/* @__PURE__ */ new Map,T=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/token-providers - fromSso`);let n=await s(e),r=c({profile:e.profile??t?.profile}),i=n[r];if(!i)throw new a(`Profile '${r}' could not be found in shared credentials file.`,!1);if(!i.sso_session)throw new a(`Profile '${r}' is missing required property 'sso_session'.`);let o=i.sso_session,d=w.get(o);if(d)return await d;let f=(await l(e))[o];if(!f)throw new a(`Sso session '${o}' could not be found in shared credentials file.`,!1);for(let e of[`sso_start_url`,`sso_region`])if(!f[e])throw new a(`Sso session '${o}' is missing required property '${e}'.`,!1);f.sso_start_url;let p=f.sso_region,m;try{m=await u(o)}catch{throw new a(`The SSO session token associated with profile=${r} was not found or is invalid. ${h}`,!1)}b(`accessToken`,m.accessToken),b(`expiresAt`,m.expiresAt);let{accessToken:g,expiresAt:x}=m,T={token:g,expiration:new Date(x)};if(T.expiration.getTime()-Date.now()>3e5)return T;let E=w.get(o);if(E)return await E;let D=C.get(o)??0;if(Date.now()-D<3e4)return y(T),T;b(`clientId`,m.clientId,!0),b(`clientSecret`,m.clientSecret,!0),b(`refreshToken`,m.refreshToken,!0);let O=(async()=>{try{C.set(o,Date.now());let n=await v(m,p,e,t);b(`accessToken`,n.accessToken),b(`expiresIn`,n.expiresIn);let r=new Date(Date.now()+n.expiresIn*1e3);try{await S(o,{...m,accessToken:n.accessToken,expiresAt:r.toISOString(),refreshToken:n.refreshToken})}catch{}return{token:n.accessToken,expiration:r}}catch{return y(T),T}})();w.set(o,O);try{return await O}finally{w.delete(o)}};n.fromEnvSigningName=m,n.fromSso=T,n.fromStatic=({token:e,logger:t})=>async()=>{if(t?.debug(`@aws-sdk/token-providers - fromStatic`),!e||!e.token)throw new a(`Please pass a valid token to fromStatic`,!1);return e},n.nodeProvider=(e={})=>d(f(T(e),async()=>{throw new a(`Could not load token from any providers`,!1)}),e=>e.expiration!==void 0&&e.expiration.getTime()-Date.now()<3e5,e=>e.expiration!==void 0)}));function ose(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`awsssoportal`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function sse(e){return{schemeId:`smithy.api#noAuth`}}var cse,lse,use,yF=n((()=>{FA(),R(),cse=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),lse=e=>{let t=[];switch(e.operation){case`GetRoleCredentials`:t.push(sse(e));break;default:t.push(ose(e))}return t},use=e=>{let t=NA(e);return Object.assign(t,{authSchemePreference:Se(e.authSchemePreference??[])})}})),bF,xF,SF=n((()=>{bF=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:`awsssoportal`}),xF={UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),CF,wF,TF,EF,DF,OF,kF,AF,jF,MF,NF,PF,FF,IF,LF,dse=n((()=>{Le(),CF=`ref`,wF=-1,TF=!0,EF=`isSet`,DF=`PartitionResult`,OF=`booleanEquals`,kF=`getAttr`,AF={[CF]:`Endpoint`},jF={[CF]:DF},MF={},NF=[{[CF]:`Region`}],PF={conditions:[[EF,[AF]],[EF,NF],[`aws.partition`,NF,DF],[OF,[{[CF]:`UseFIPS`},TF]],[OF,[{[CF]:`UseDualStack`},TF]],[OF,[{fn:kF,argv:[jF,`supportsDualStack`]},TF]],[OF,[{fn:kF,argv:[jF,`supportsFIPS`]},TF]],[`stringEquals`,[{fn:kF,argv:[jF,`name`]},`aws-us-gov`]]],results:[[wF],[wF,`Invalid Configuration: FIPS and custom endpoint are not supported`],[wF,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[AF,MF],[`https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,MF],[wF,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://portal.sso.{Region}.amazonaws.com`,MF],[`https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}`,MF],[wF,`FIPS is enabled but this partition does not support FIPS`],[`https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}`,MF],[wF,`DualStack is enabled but this partition does not support DualStack`],[`https://portal.sso.{Region}.{PartitionResult#dnsSuffix}`,MF],[wF,`Invalid Configuration: Missing Region`]]},FF=2,IF=new Int32Array([-1,1,-1,0,13,3,1,4,100000012,2,5,100000012,3,8,6,4,7,100000011,5,100000009,100000010,4,11,9,6,10,100000008,7,100000006,100000007,5,12,100000005,6,100000004,100000005,3,100000001,14,4,100000002,100000003]),LF=Te.from(IF,FF,PF.conditions,PF.results)})),RF,zF,fse=n((()=>{uT(),Le(),dse(),RF=new Ne({size:50,params:[`Endpoint`,`Region`,`UseDualStack`,`UseFIPS`]}),zF=(e,t={})=>RF.get(e,()=>Be(LF,{endpointParams:e,logger:t.logger})),Qe.aws=nT})),BF,VF=n((()=>{R(),BF=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.sso#SSOServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),HF,UF,WF,GF,KF=n((()=>{VF(),HF=class e extends BF{static shapeId=`com.amazonaws.sso#InvalidRequestException`;name=`InvalidRequestException`;$fault=`client`;constructor(t){super({name:`InvalidRequestException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},UF=class e extends BF{static shapeId=`com.amazonaws.sso#ResourceNotFoundException`;name=`ResourceNotFoundException`;$fault=`client`;constructor(t){super({name:`ResourceNotFoundException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},WF=class e extends BF{static shapeId=`com.amazonaws.sso#TooManyRequestsException`;name=`TooManyRequestsException`;$fault=`client`;constructor(t){super({name:`TooManyRequestsException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},GF=class e extends BF{static shapeId=`com.amazonaws.sso#UnauthorizedException`;name=`UnauthorizedException`;$fault=`client`;constructor(t){super({name:`UnauthorizedException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}}})),qF,JF,YF,XF,ZF,QF,$F,eI,tI,nI,rI,iI,aI,oI,sI,cI,lI,uI,dI,fI,pI,mI,hI,gI,_I,vI,yI,bI,xI,SI,CI,wI,TI,EI,DI,OI,kI,AI,jI,MI,NI,PI,FI,II,LI,RI,zI=n((()=>{D(),KF(),VF(),qF=`AccessTokenType`,JF=`GetRoleCredentials`,YF=`GetRoleCredentialsRequest`,XF=`GetRoleCredentialsResponse`,ZF=`InvalidRequestException`,QF=`RoleCredentials`,$F=`ResourceNotFoundException`,eI=`SecretAccessKeyType`,tI=`SessionTokenType`,nI=`TooManyRequestsException`,rI=`UnauthorizedException`,iI=`accountId`,aI=`accessKeyId`,oI=`accessToken`,sI=`account_id`,cI=`client`,lI=`error`,uI=`expiration`,dI=`http`,fI=`httpError`,pI=`httpHeader`,mI=`httpQuery`,hI=`message`,gI=`roleCredentials`,_I=`roleName`,vI=`role_name`,yI=`smithy.ts.sdk.synthetic.com.amazonaws.sso`,bI=`secretAccessKey`,xI=`sessionToken`,SI=`x-amz-sso_bearer_token`,CI=`com.amazonaws.sso`,wI=new T(yI),TI=[-3,yI,`SSOServiceException`,0,[],[]],wI.registerError(TI,BF),EI=new T(CI),DI=[-3,CI,ZF,{[lI]:cI,[fI]:400},[hI],[0]],EI.registerError(DI,HF),OI=[-3,CI,$F,{[lI]:cI,[fI]:404},[hI],[0]],EI.registerError(OI,UF),kI=[-3,CI,nI,{[lI]:cI,[fI]:429},[hI],[0]],EI.registerError(kI,WF),AI=[-3,CI,rI,{[lI]:cI,[fI]:401},[hI],[0]],EI.registerError(AI,GF),jI=[wI,EI],MI=[0,CI,qF,8,0],NI=[0,CI,eI,8,0],PI=[0,CI,tI,8,0],FI=[3,CI,YF,0,[_I,iI,oI],[[0,{[mI]:vI}],[0,{[mI]:sI}],[()=>MI,{[pI]:SI}]],3],II=[3,CI,XF,0,[gI],[[()=>LI,0]]],LI=[3,CI,QF,0,[aI,bI,xI,uI],[0,[()=>NI,0],[()=>PI,0],1]],RI=[9,CI,JF,{[dI]:[`GET`,`/federation/credentials`,200]},()=>FI,()=>II]})),BI,pse=n((()=>{FA(),rk(),yw(),C(),R(),yS(),x(),yF(),fse(),zI(),BI=e=>({apiVersion:`2019-06-10`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??zF,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??lse,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new mA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new pw}],logger:e?.logger??new N,protocol:e?.protocol??RO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.sso`,errorTypeRegistries:jI,version:`2019-06-10`,serviceTarget:`SWBPortalService`},serviceId:e?.serviceId??`SSO`,sha256:e?.sha256??k,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),VI,HI,mse=n((()=>{uT(),FA(),R(),nt(),xC(),x(),VI=$N(),pse(),HI=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=BI(e);wb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(CA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Bw({serviceId:r.serviceId,clientVersion:cP}),maxAttempts:e?.maxAttempts??w(pC,e),region:e?.region??w(g,{...v,...i}),requestHandler:VI.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({..._C,default:async()=>(await n()).retryMode||JS},e),streamCollector:e?.streamCollector??VI.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(Gw,i)}}})),UI,WI,hse=n((()=>{UI=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},WI=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),GI,gse=n((()=>{uT(),R(),yS(),hse(),GI=(e,t)=>{let n=Object.assign(sT(e),j(e),ox(e),UI(e));return t.forEach(e=>e.configure(n)),Object.assign(e,cT(n),F(n),sx(n),WI(n))}})),KI,qI=n((()=>{uT(),yw(),R(),nt(),Le(),yS(),xC(),D(),yF(),SF(),mse(),gse(),KI=class extends De{config;constructor(...[e]){let t=HI(e||{});super(t),this.initConfig=t;let n=bw(bF(t)),r=mC(n),i=CC(te(r)),a=Ke(i),o=use(a),s=GI(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Fw(this.config)),this.middlewareStack.use(bC(this.config)),this.middlewareStack.use(dx(this.config)),this.middlewareStack.use(EC(this.config)),this.middlewareStack.use(kC(this.config)),this.middlewareStack.use(KC(this.config)),this.middlewareStack.use(ZC(this.config,{httpAuthSchemeParametersProvider:cse,identityProviderConfigProvider:async e=>new lw({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(aw(this.config))}destroy(){super.destroy()}}})),JI,YI,XI,_se=n((()=>{R(),Le(),SF(),JI=h(xF,`SWBPortalService`,`SSOClient`,Xe),YI={},XI=(e,t,n,r)=>[]})),ZI,QI=n((()=>{_se(),zI(),ZI=class extends JI(YI,XI,`GetRoleCredentials`,RI){}})),$I,eL,vse=n((()=>{R(),QI(),qI(),$I={GetRoleCredentialsCommand:ZI},eL=class extends KI{},S($I,eL)})),yse=n((()=>{QI()})),bse=n((()=>{})),xse=/* @__PURE__ */ i({$Command:()=>oe,GetRoleCredentials$:()=>RI,GetRoleCredentialsCommand:()=>ZI,GetRoleCredentialsRequest$:()=>FI,GetRoleCredentialsResponse$:()=>II,InvalidRequestException:()=>HF,InvalidRequestException$:()=>DI,ResourceNotFoundException:()=>UF,ResourceNotFoundException$:()=>OI,RoleCredentials$:()=>LI,SSO:()=>eL,SSOClient:()=>KI,SSOServiceException:()=>BF,SSOServiceException$:()=>TI,TooManyRequestsException:()=>WF,TooManyRequestsException$:()=>kI,UnauthorizedException:()=>GF,UnauthorizedException$:()=>AI,__Client:()=>De,errorTypeRegistries:()=>jI}),Sse=n((()=>{qI(),vse(),yse(),R(),zI(),KF(),bse(),VF()})),Cse=/* @__PURE__ */ a((t=>{let{GetRoleCredentialsCommand:n,SSOClient:r}=(Sse(),e(xse));t.GetRoleCredentialsCommand=n,t.SSOClient=r})),tL=/* @__PURE__ */ a((t=>{let{CredentialsProviderError:n,getSSOTokenFromFile:r,getProfileName:i,parseKnownFiles:a,loadSsoSessionData:o}=(nt(),e(he)),{setCredentialFeature:s}=(uT(),e(lT)),{fromSso:c}=ase(),l=e=>e&&(typeof e.sso_start_url==`string`||typeof e.sso_account_id==`string`||typeof e.sso_session==`string`||typeof e.sso_region==`string`||typeof e.sso_role_name==`string`),u=async({ssoStartUrl:e,ssoSession:t,ssoAccountId:i,ssoRegion:a,ssoRoleName:o,ssoClient:l,clientConfig:u,parentClientConfig:d,callerClientConfig:f,profile:p,filepath:m,configFilepath:h,ignoreCache:g,logger:v})=>{let y,b=`To refresh this SSO session run aws sso login with the corresponding profile.`;if(t)try{let e=await c({profile:p,filepath:m,configFilepath:h,ignoreCache:g,clientConfig:u,parentClientConfig:d,logger:v})({callerClientConfig:f});y={accessToken:e.token,expiresAt:new Date(e.expiration).toISOString()}}catch(e){throw new n(e.message,{tryNextLink:!1,logger:v})}else try{y=await r(e)}catch{throw new n(`The SSO session associated with this profile is invalid. ${b}`,{tryNextLink:!1,logger:v})}if(new Date(y.expiresAt).getTime()-Date.now()<=0)throw new n(`The SSO session associated with this profile has expired. ${b}`,{tryNextLink:!1,logger:v});let{accessToken:x}=y,{SSOClient:S,GetRoleCredentialsCommand:C}=Cse(),w=l||new S(Object.assign({},u??{},{logger:u?.logger??f?.logger??d?.logger,region:u?.region??a,userAgentAppId:u?.userAgentAppId??f?.userAgentAppId??d?.userAgentAppId})),T;try{T=await w.send(new C({accountId:i,roleName:o,accessToken:x}))}catch(e){throw new n(e,{tryNextLink:!1,logger:v})}let{roleCredentials:{accessKeyId:E,secretAccessKey:D,sessionToken:O,expiration:k,credentialScope:A,accountId:j}={}}=T;if(!E||!D||!O||!k)throw new n(`SSO returns an invalid temporary credential.`,{tryNextLink:!1,logger:v});let M={accessKeyId:E,secretAccessKey:D,sessionToken:O,expiration:new Date(k),...A&&{credentialScope:A},...j&&{accountId:j}};return t?s(M,`CREDENTIALS_SSO`,`s`):s(M,`CREDENTIALS_SSO_LEGACY`,`u`),M},d=(e,t)=>{let{sso_start_url:r,sso_account_id:i,sso_region:a,sso_role_name:o}=e;if(!r||!i||!a||!o)throw new n(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(e).join(`, `)}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,{tryNextLink:!1,logger:t});return e};t.fromSSO=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/credential-provider-sso - fromSSO`);let{ssoStartUrl:r,ssoAccountId:s,ssoRegion:c,ssoRoleName:f,ssoSession:p}=e,{ssoClient:m}=e,h=i({profile:e.profile??t?.profile});if(!r&&!s&&!c&&!f&&!p){let t=(await a(e))[h];if(!t)throw new n(`Profile ${h} was not found.`,{logger:e.logger});if(!l(t))throw new n(`Profile ${h} is not configured with SSO credentials.`,{logger:e.logger});if(t?.sso_session){let i=(await o(e))[t.sso_session],a=` configurations in profile ${h} and sso-session ${t.sso_session}`;if(c&&c!==i.sso_region)throw new n(`Conflicting SSO region`+a,{tryNextLink:!1,logger:e.logger});if(r&&r!==i.sso_start_url)throw new n(`Conflicting SSO start_url`+a,{tryNextLink:!1,logger:e.logger});t.sso_region=i.sso_region,t.sso_start_url=i.sso_start_url}let{sso_start_url:i,sso_account_id:s,sso_region:f,sso_role_name:p,sso_session:g}=d(t,e.logger);return u({ssoStartUrl:i,ssoSession:g,ssoAccountId:s,ssoRegion:f,ssoRoleName:p,ssoClient:m,clientConfig:e.clientConfig,parentClientConfig:e.parentClientConfig,callerClientConfig:e.callerClientConfig,profile:h,filepath:e.filepath,configFilepath:e.configFilepath,ignoreCache:e.ignoreCache,logger:e.logger})}if(!r||!s||!c||!f)throw new n(`Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"`,{tryNextLink:!1,logger:e.logger});return u({ssoStartUrl:r,ssoSession:p,ssoAccountId:s,ssoRegion:c,ssoRoleName:f,ssoClient:m,clientConfig:e.clientConfig,parentClientConfig:e.parentClientConfig,callerClientConfig:e.callerClientConfig,profile:h,filepath:e.filepath,configFilepath:e.configFilepath,ignoreCache:e.ignoreCache,logger:e.logger})},t.isSsoProfile=l,t.validateSsoProfile=d})),nL,rL,iL,aL,oL,sL,cL,lL,uL,dL,fL,pL,mL,hL,gL,_L,vL,yL,bL,xL,SL,wse=n((()=>{Le(),nL=`ref`,rL=-1,iL=!0,aL=`isSet`,oL=`PartitionResult`,sL=`booleanEquals`,cL=`stringEquals`,lL=`getAttr`,uL=`us-east-1`,dL=`sigv4`,fL=`sts`,pL=`https://sts.{Region}.{PartitionResult#dnsSuffix}`,mL={[nL]:`Endpoint`},hL={[nL]:`Region`},gL={[nL]:oL},_L={},vL=[hL],yL={conditions:[[aL,[mL]],[aL,vL],[`aws.partition`,vL,oL],[sL,[{[nL]:`UseFIPS`},iL]],[sL,[{[nL]:`UseDualStack`},iL]],[cL,[hL,`aws-global`]],[sL,[{[nL]:`UseGlobalEndpoint`},iL]],[cL,[hL,`eu-central-1`]],[sL,[{fn:lL,argv:[gL,`supportsDualStack`]},iL]],[sL,[{fn:lL,argv:[gL,`supportsFIPS`]},iL]],[cL,[hL,`ap-south-1`]],[cL,[hL,`eu-north-1`]],[cL,[hL,`eu-west-1`]],[cL,[hL,`eu-west-2`]],[cL,[hL,`eu-west-3`]],[cL,[hL,`sa-east-1`]],[cL,[hL,uL]],[cL,[hL,`us-east-2`]],[cL,[hL,`us-west-2`]],[cL,[hL,`us-west-1`]],[cL,[hL,`ca-central-1`]],[cL,[hL,`ap-southeast-1`]],[cL,[hL,`ap-northeast-1`]],[cL,[hL,`ap-southeast-2`]],[cL,[{fn:lL,argv:[gL,`name`]},`aws-us-gov`]]],results:[[rL],[`https://sts.amazonaws.com`,{authSchemes:[{name:dL,signingName:fL,signingRegion:uL}]}],[pL,{authSchemes:[{name:dL,signingName:fL,signingRegion:`{Region}`}]}],[rL,`Invalid Configuration: FIPS and custom endpoint are not supported`],[rL,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[mL,_L],[`https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,_L],[rL,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://sts.{Region}.amazonaws.com`,_L],[`https://sts-fips.{Region}.{PartitionResult#dnsSuffix}`,_L],[rL,`FIPS is enabled but this partition does not support FIPS`],[`https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}`,_L],[rL,`DualStack is enabled but this partition does not support DualStack`],[pL,_L],[rL,`Invalid Configuration: Missing Region`]]},bL=2,xL=new Int32Array([-1,1,-1,0,30,3,1,4,100000014,2,5,100000014,3,25,6,4,24,7,5,100000001,8,6,9,100000013,7,100000001,10,10,100000001,11,11,100000001,12,12,100000001,13,13,100000001,14,14,100000001,15,15,100000001,16,16,100000001,17,17,100000001,18,18,100000001,19,19,100000001,20,20,100000001,21,21,100000001,22,22,100000001,23,23,100000001,100000002,8,100000011,100000012,4,28,26,9,27,100000010,24,100000008,100000009,8,29,100000007,9,100000006,100000007,3,100000003,31,4,100000004,100000005]),SL=Te.from(xL,bL,yL.conditions,yL.results)})),CL,wL,TL=n((()=>{uT(),Le(),wse(),CL=new Ne({size:50,params:[`Endpoint`,`Region`,`UseDualStack`,`UseFIPS`,`UseGlobalEndpoint`]}),wL=(e,t={})=>CL.get(e,()=>Be(SL,{endpointParams:e,logger:t.logger})),Qe.aws=nT}));function EL(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`sts`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function DL(e){return{schemeId:`aws.auth#sigv4a`,signingProperties:{name:`sts`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function OL(e){return{schemeId:`smithy.api#noAuth`}}var kL,AL,jL,ML,NL,PL,FL,IL,LL=n((()=>{FA(),kL=aO(),R(),Le(),TL(),AL=e=>async(t,n,r)=>{if(!r)throw Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let i=await e(t,n,r),a=p(n)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!a)throw Error(`getEndpointParameterInstructions() is not defined on '${n.commandName}'`);let o=await it(r,{getEndpointParameterInstructions:a},t);return Object.assign(i,o)},jL=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),ML=AL(jL),NL=(e,t,n)=>r=>{let i=e(r).properties?.authSchemes;if(!i)return t(r);let a=[];for(let e of i){let{name:t,properties:o={},...s}=e,c=t.toLowerCase();t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${t}' to '${c}'`);let l;if(c===`sigv4a`){l=`aws.auth#sigv4a`;let e=i.find(e=>{let t=e.name.toLowerCase();return t!==`sigv4a`&&t.startsWith(`sigv4`)});if(kL.SignatureV4MultiRegion.sigv4aDependency()===`none`&&e)continue}else if(c.startsWith(`sigv4`))l=`aws.auth#sigv4`;else throw Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${c}'`);let u=n[l];if(!u)throw Error(`Could not find HttpAuthOption create function for '${l}'`);let d=u(r);d.schemeId=l,d.signingProperties={...d.signingProperties||{},...s,...o},a.push(d)}return a},PL=e=>{let t=[];switch(e.operation){case`AssumeRoleWithWebIdentity`:t.push(OL(e)),t.push(DL(e));break;default:t.push(EL(e)),t.push(DL(e))}return t},FL=NL(wL,PL,{"aws.auth#sigv4":EL,"aws.auth#sigv4a":DL,"smithy.api#noAuth":OL}),IL=e=>{let t=NA(e),n=wA(t);return Object.assign(n,{authSchemePreference:Se(e.authSchemePreference??[])})}})),RL,zL,BL=n((()=>{RL=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,useGlobalEndpoint:e.useGlobalEndpoint??!1,defaultSigningName:`sts`}),zL={UseGlobalEndpoint:{type:`builtInParams`,name:`useGlobalEndpoint`},UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),VL,HL=n((()=>{R(),VL=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.sts#STSServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),UL,WL,GL,KL,qL,JL,YL,XL=n((()=>{HL(),UL=class e extends VL{static shapeId=`com.amazonaws.sts#ExpiredTokenException`;name=`ExpiredTokenException`;$fault=`client`;constructor(t){super({name:`ExpiredTokenException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},WL=class e extends VL{static shapeId=`com.amazonaws.sts#MalformedPolicyDocumentException`;name=`MalformedPolicyDocumentException`;$fault=`client`;constructor(t){super({name:`MalformedPolicyDocumentException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},GL=class e extends VL{static shapeId=`com.amazonaws.sts#PackedPolicyTooLargeException`;name=`PackedPolicyTooLargeException`;$fault=`client`;constructor(t){super({name:`PackedPolicyTooLargeException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},KL=class e extends VL{static shapeId=`com.amazonaws.sts#RegionDisabledException`;name=`RegionDisabledException`;$fault=`client`;constructor(t){super({name:`RegionDisabledException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},qL=class e extends VL{static shapeId=`com.amazonaws.sts#IDPRejectedClaimException`;name=`IDPRejectedClaimException`;$fault=`client`;constructor(t){super({name:`IDPRejectedClaimException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},JL=class e extends VL{static shapeId=`com.amazonaws.sts#InvalidIdentityTokenException`;name=`InvalidIdentityTokenException`;$fault=`client`;constructor(t){super({name:`InvalidIdentityTokenException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},YL=class e extends VL{static shapeId=`com.amazonaws.sts#IDPCommunicationErrorException`;name=`IDPCommunicationErrorException`;$fault=`client`;$retryable={};constructor(t){super({name:`IDPCommunicationErrorException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}}})),ZL,QL,$L,eR,tR,nR,rR,iR,aR,oR,sR,cR,lR,uR,dR,fR,pR,mR,hR,gR,_R,vR,yR,bR,xR,SR,CR,wR,TR,ER,DR,OR,kR,AR,jR,MR,NR,PR,FR,IR,LR,RR,zR,BR,VR,HR,UR,WR,GR,KR,qR,JR,YR,XR,ZR,QR,$R,ez,tz,nz,rz,iz,az,oz,sz,cz,lz,uz,dz,fz,pz,mz,hz,gz,_z,vz,yz,bz,xz,Sz,Cz,wz,Tz,Ez,Dz,Oz,kz,Az,jz,Mz=n((()=>{D(),XL(),HL(),ZL=`Arn`,QL=`AccessKeyId`,$L=`AssumeRole`,eR=`AssumedRoleId`,tR=`AssumeRoleRequest`,nR=`AssumeRoleResponse`,rR=`AssumedRoleUser`,iR=`AssumeRoleWithWebIdentity`,aR=`AssumeRoleWithWebIdentityRequest`,oR=`AssumeRoleWithWebIdentityResponse`,sR=`Audience`,cR=`Credentials`,lR=`ContextAssertion`,uR=`DurationSeconds`,dR=`Expiration`,fR=`ExternalId`,pR=`ExpiredTokenException`,mR=`IDPCommunicationErrorException`,hR=`IDPRejectedClaimException`,gR=`InvalidIdentityTokenException`,_R=`Key`,vR=`MalformedPolicyDocumentException`,yR=`MinimumSessionTokenSize`,bR=`Policy`,xR=`PolicyArns`,SR=`ProviderArn`,CR=`ProvidedContexts`,wR=`ProvidedContextsListType`,TR=`ProvidedContext`,ER=`PolicyDescriptorType`,DR=`ProviderId`,OR=`PackedPolicySize`,kR=`PackedPolicyTooLargeException`,AR=`Provider`,jR=`RoleArn`,MR=`RegionDisabledException`,NR=`RoleSessionName`,PR=`SecretAccessKey`,FR=`SubjectFromWebIdentityToken`,IR=`SourceIdentity`,LR=`SerialNumber`,RR=`SessionToken`,zR=`SessionTokenSize`,BR=`SessionTokenUtilization`,VR=`Tags`,HR=`TokenCode`,UR=`TransitiveTagKeys`,WR=`Tag`,GR=`Value`,KR=`WebIdentityToken`,qR=`arn`,JR=`accessKeySecretType`,YR=`awsQueryError`,XR=`client`,ZR=`clientTokenType`,QR=`error`,$R=`httpError`,ez=`message`,tz=`policyDescriptorListType`,nz=`smithy.ts.sdk.synthetic.com.amazonaws.sts`,rz=`tagListType`,iz=`com.amazonaws.sts`,az=new T(nz),oz=[-3,nz,`STSServiceException`,0,[],[]],az.registerError(oz,VL),sz=new T(iz),cz=[-3,iz,pR,{[YR]:[`ExpiredTokenException`,400],[QR]:XR,[$R]:400},[ez],[0]],sz.registerError(cz,UL),lz=[-3,iz,mR,{[YR]:[`IDPCommunicationError`,400],[QR]:XR,[$R]:400},[ez],[0]],sz.registerError(lz,YL),uz=[-3,iz,hR,{[YR]:[`IDPRejectedClaim`,403],[QR]:XR,[$R]:403},[ez],[0]],sz.registerError(uz,qL),dz=[-3,iz,gR,{[YR]:[`InvalidIdentityToken`,400],[QR]:XR,[$R]:400},[ez],[0]],sz.registerError(dz,JL),fz=[-3,iz,vR,{[YR]:[`MalformedPolicyDocument`,400],[QR]:XR,[$R]:400},[ez],[0]],sz.registerError(fz,WL),pz=[-3,iz,kR,{[YR]:[`PackedPolicyTooLarge`,400],[QR]:XR,[$R]:400},[ez],[0]],sz.registerError(pz,GL),mz=[-3,iz,MR,{[YR]:[`RegionDisabledException`,403],[QR]:XR,[$R]:403},[ez],[0]],sz.registerError(mz,KL),hz=[az,sz],gz=[0,iz,JR,8,0],_z=[0,iz,ZR,8,0],vz=[3,iz,rR,0,[eR,ZL],[0,0],2],yz=[3,iz,tR,0,[jR,NR,xR,bR,uR,VR,UR,fR,LR,HR,IR,CR,yR],[0,0,()=>Dz,0,1,()=>kz,64,0,0,0,0,()=>Oz,1],2],bz=[3,iz,nR,0,[cR,rR,OR,IR,BR,zR],[[()=>Cz,0],()=>vz,1,0,1,1]],xz=[3,iz,aR,0,[jR,NR,KR,DR,xR,bR,uR,yR],[0,0,[()=>_z,0],0,()=>Dz,0,1,1],3],Sz=[3,iz,oR,0,[cR,FR,rR,OR,AR,sR,IR,BR,zR],[[()=>Cz,0],0,()=>vz,1,0,0,0,1,1]],Cz=[3,iz,cR,0,[QL,PR,RR,dR],[0,[()=>gz,0],0,4],4],wz=[3,iz,ER,0,[qR],[0]],Tz=[3,iz,TR,0,[SR,lR],[0,0]],Ez=[3,iz,WR,0,[_R,GR],[0,0],2],Dz=[1,iz,tz,0,()=>wz],Oz=[1,iz,wR,0,()=>Tz],kz=[1,iz,rz,0,()=>Ez],Az=[9,iz,$L,0,()=>yz,()=>bz],jz=[9,iz,iR,0,()=>xz,()=>Sz]})),Nz,Pz,Tse=n((()=>{FA(),rk(),Nz=aO(),yw(),C(),R(),yS(),x(),LL(),TL(),Mz(),Pz=e=>({apiVersion:`2011-06-15`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??wL,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??FL,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new mA},{schemeId:`aws.auth#sigv4a`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4a`),signer:new _A},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new pw}],logger:e?.logger??new N,protocol:e?.protocol??JO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.sts`,errorTypeRegistries:hz,xmlNamespace:`https://sts.amazonaws.com/doc/2011-06-15/`,version:`2011-06-15`,serviceTarget:`AWSSecurityTokenServiceV20110615`},serviceId:e?.serviceId??`STS`,sha256:e?.sha256??k,signerConstructor:e?.signerConstructor??Nz.SignatureV4MultiRegion,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),Fz,Iz,Ese=n((()=>{uT(),FA(),yw(),R(),nt(),xC(),x(),Fz=$N(),Tse(),Iz=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=Pz(e);wb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(CA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Bw({serviceId:r.serviceId,clientVersion:cP}),httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:t=>t.getIdentityProvider(`aws.auth#sigv4`)||(async t=>await e.credentialDefaultProvider(t?.__config||{})()),signer:new mA},{schemeId:`aws.auth#sigv4a`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4a`),signer:new _A},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new pw}],maxAttempts:e?.maxAttempts??w(pC,e),region:e?.region??w(g,{...v,...i}),requestHandler:Fz.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({..._C,default:async()=>(await n()).retryMode||JS},e),sigv4aSigningRegionSet:e?.sigv4aSigningRegionSet??w(TA,i),streamCollector:e?.streamCollector??Fz.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(Gw,i)}}})),Lz,Rz,Dse=n((()=>{Lz=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},Rz=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),zz,Ose=n((()=>{uT(),R(),yS(),Dse(),zz=(e,t)=>{let n=Object.assign(sT(e),j(e),ox(e),Lz(e));return t.forEach(e=>e.configure(n)),Object.assign(e,cT(n),F(n),sx(n),Rz(n))}})),Bz,Vz=n((()=>{uT(),yw(),R(),nt(),Le(),yS(),xC(),D(),LL(),BL(),Ese(),Ose(),Bz=class extends De{config;constructor(...[e]){let t=Iz(e||{});super(t),this.initConfig=t;let n=bw(RL(t)),r=mC(n),i=CC(te(r)),a=Ke(i),o=IL(a),s=zz(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Fw(this.config)),this.middlewareStack.use(bC(this.config)),this.middlewareStack.use(dx(this.config)),this.middlewareStack.use(EC(this.config)),this.middlewareStack.use(kC(this.config)),this.middlewareStack.use(KC(this.config)),this.middlewareStack.use(ZC(this.config,{httpAuthSchemeParametersProvider:ML,identityProviderConfigProvider:async e=>new lw({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(aw(this.config))}destroy(){super.destroy()}}})),Hz,Uz,Wz,Gz=n((()=>{R(),Le(),BL(),Hz=h(zL,`AWSSecurityTokenServiceV20110615`,`STSClient`,Xe),Uz={},Wz=(e,t,n,r)=>[]})),Kz,qz=n((()=>{Gz(),Mz(),Kz=class extends Hz(Uz,Wz,`AssumeRole`,Az){}})),Jz,Yz=n((()=>{Gz(),Mz(),Jz=class extends Hz(Uz,Wz,`AssumeRoleWithWebIdentity`,jz){}})),Xz,Zz,kse=n((()=>{R(),qz(),Yz(),Vz(),Xz={AssumeRoleCommand:Kz,AssumeRoleWithWebIdentityCommand:Jz},Zz=class extends Bz{},S(Xz,Zz)})),Ase=n((()=>{qz(),Yz()})),jse=n((()=>{})),Qz,$z,eB,tB,nB,Mse=n((()=>{uT(),qz(),Yz(),Qz=e=>{if(typeof e?.Arn==`string`){let t=e.Arn.split(`:`);if(t.length>4&&t[4]!==``)return t[4]}},$z=async(e,t,n,r={})=>{let i=typeof e==`function`?await e():e,a=typeof t==`function`?await t():t,o=``,s=i??a??(o=await aT(r)());return n?.debug?.(`@aws-sdk/client-sts::resolveRegion`,`accepting first of:`,`${i} (credential provider clientConfig)`,`${a} (contextual client)`,`${o} (STS default: AWS_REGION, profile region, or us-east-1)`),s},eB=(e,t)=>{let n,r;return async(i,a)=>{if(r=i,!n){let{logger:i=e?.parentClientConfig?.logger,profile:a=e?.parentClientConfig?.profile,region:o,requestHandler:s=e?.parentClientConfig?.requestHandler,credentialProviderLogger:c,userAgentAppId:l=e?.parentClientConfig?.userAgentAppId}=e,u=await $z(o,e?.parentClientConfig?.region,c,{logger:i,profile:a}),d=!nB(s);n=new t({...e,userAgentAppId:l,profile:a,credentialDefaultProvider:()=>async()=>r,region:u,requestHandler:d?s:void 0,logger:i})}let{Credentials:o,AssumedRoleUser:s}=await n.send(new Kz(a));if(!o||!o.AccessKeyId||!o.SecretAccessKey)throw Error(`Invalid response from STS.assumeRole call with role ${a.RoleArn}`);let c=Qz(s),l={accessKeyId:o.AccessKeyId,secretAccessKey:o.SecretAccessKey,sessionToken:o.SessionToken,expiration:o.Expiration,...o.CredentialScope&&{credentialScope:o.CredentialScope},...c&&{accountId:c}};return Ab(l,`CREDENTIALS_STS_ASSUME_ROLE`,`i`),l}},tB=(e,t)=>{let n;return async r=>{if(!n){let{logger:r=e?.parentClientConfig?.logger,profile:i=e?.parentClientConfig?.profile,region:a,requestHandler:o=e?.parentClientConfig?.requestHandler,credentialProviderLogger:s,userAgentAppId:c=e?.parentClientConfig?.userAgentAppId}=e,l=await $z(a,e?.parentClientConfig?.region,s,{logger:r,profile:i}),u=!nB(o);n=new t({...e,userAgentAppId:c,profile:i,region:l,requestHandler:u?o:void 0,logger:r})}let{Credentials:i,AssumedRoleUser:a}=await n.send(new Jz(r));if(!i||!i.AccessKeyId||!i.SecretAccessKey)throw Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${r.RoleArn}`);let o=Qz(a),s={accessKeyId:i.AccessKeyId,secretAccessKey:i.SecretAccessKey,sessionToken:i.SessionToken,expiration:i.Expiration,...i.CredentialScope&&{credentialScope:i.CredentialScope},...o&&{accountId:o}};return o&&Ab(s,`RESOLVED_ACCOUNT_ID`,`T`),Ab(s,`CREDENTIALS_STS_ASSUME_ROLE_WEB_ID`,`k`),s}},nB=e=>e?.metadata?.handlerProtocol===`h2`})),rB,iB,aB,oB,Nse=n((()=>{Mse(),Vz(),rB=(e,t)=>t?class extends e{constructor(e){super(e);for(let e of t)this.middlewareStack.use(e)}}:e,iB=(e={},t)=>eB(e,rB(Bz,t)),aB=(e={},t)=>tB(e,rB(Bz,t)),oB=e=>t=>e({roleAssumer:iB(t),roleAssumerWithWebIdentity:aB(t),...t})})),sB=/* @__PURE__ */ i({$Command:()=>oe,AssumeRole$:()=>Az,AssumeRoleCommand:()=>Kz,AssumeRoleRequest$:()=>yz,AssumeRoleResponse$:()=>bz,AssumeRoleWithWebIdentity$:()=>jz,AssumeRoleWithWebIdentityCommand:()=>Jz,AssumeRoleWithWebIdentityRequest$:()=>xz,AssumeRoleWithWebIdentityResponse$:()=>Sz,AssumedRoleUser$:()=>vz,Credentials$:()=>Cz,ExpiredTokenException:()=>UL,ExpiredTokenException$:()=>cz,IDPCommunicationErrorException:()=>YL,IDPCommunicationErrorException$:()=>lz,IDPRejectedClaimException:()=>qL,IDPRejectedClaimException$:()=>uz,InvalidIdentityTokenException:()=>JL,InvalidIdentityTokenException$:()=>dz,MalformedPolicyDocumentException:()=>WL,MalformedPolicyDocumentException$:()=>fz,PackedPolicyTooLargeException:()=>GL,PackedPolicyTooLargeException$:()=>pz,PolicyDescriptorType$:()=>wz,ProvidedContext$:()=>Tz,RegionDisabledException:()=>KL,RegionDisabledException$:()=>mz,STS:()=>Zz,STSClient:()=>Bz,STSServiceException:()=>VL,STSServiceException$:()=>oz,Tag$:()=>Ez,__Client:()=>De,decorateDefaultCredentialProvider:()=>oB,errorTypeRegistries:()=>hz,getDefaultRoleAssumer:()=>iB,getDefaultRoleAssumerWithWebIdentity:()=>aB}),cB=n((()=>{Vz(),kse(),Ase(),R(),Mz(),XL(),jse(),Nse(),HL()}));function Pse(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`signin`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Fse(e){return{schemeId:`smithy.api#noAuth`}}var lB,uB,dB,fB=n((()=>{FA(),R(),lB=async(e,t,n)=>({operation:p(t).operation,region:await Se(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),uB=e=>{let t=[];switch(e.operation){case`CreateOAuth2Token`:t.push(Fse(e));break;default:t.push(Pse(e))}return t},dB=e=>{let t=NA(e);return Object.assign(t,{authSchemePreference:Se(e.authSchemePreference??[])})}})),pB,mB,hB=n((()=>{pB=e=>Object.assign(e,{useDualstackEndpoint:e.useDualstackEndpoint??!1,useFipsEndpoint:e.useFipsEndpoint??!1,defaultSigningName:`signin`}),mB={UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}}})),gB,_B,vB,yB,bB,xB,SB,CB,wB,TB,EB,DB,OB,kB,AB,jB,MB,NB,PB,FB,IB,LB,Ise=n((()=>{Le(),gB=`ref`,_B=-1,vB=!1,yB=!0,bB=`isSet`,xB=`booleanEquals`,SB=`coalesce`,CB=`PartitionResult`,wB=`stringEquals`,TB=`getAttr`,EB=`https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}`,DB={[gB]:`Endpoint`},OB={fn:TB,argv:[{[gB]:CB},`name`]},kB={[gB]:`Region`},AB={[gB]:CB},jB={authSchemes:[{name:`sigv4`,signingName:`signin`,signingRegion:`{Region}`}]},MB={},NB=[kB],PB={conditions:[[bB,NB],[xB,[{fn:SB,argv:[{[gB]:`IsControlPlane`},vB]},yB]],[bB,[DB]],[`aws.partition`,NB,CB],[xB,[{[gB]:`UseFIPS`},yB]],[wB,[OB,`aws`]],[xB,[{fn:SB,argv:[{[gB]:`IsOAuthEndpoint`},vB]},yB]],[xB,[{[gB]:`UseDualStack`},yB]],[wB,[OB,`aws-cn`]],[wB,[kB,`us-gov-west-1`]],[wB,[OB,`aws-us-gov`]],[xB,[{fn:TB,argv:[AB,`supportsFIPS`]},yB]],[wB,[OB,`aws-iso`]],[wB,[OB,`aws-iso-b`]],[wB,[OB,`aws-iso-f`]],[wB,[OB,`aws-iso-e`]],[wB,[OB,`aws-eusc`]],[xB,[{fn:TB,argv:[AB,`supportsDualStack`]},yB]]],results:[[_B],[`https://signin.{Region}.api.aws`,jB],[`https://signin.{Region}.api.amazonwebservices.com.cn`,jB],[EB,jB],[_B,`FIPS endpoints are not supported for OAuth operations. Disable FIPS or use a non-OAuth operation.`],[`https://{Region}.oauth.signin.aws`,jB],[`https://{Region}.signin.aws.amazon.com`,MB],[`https://{Region}.signin.amazonaws.cn`,MB],[`https://{Region}.signin.amazonaws-us-gov.com`,MB],[`https://{Region}.signin.c2shome.ic.gov`,MB],[`https://{Region}.signin.sc2shome.sgov.gov`,MB],[`https://{Region}.signin.csphome.hci.ic.gov`,MB],[`https://{Region}.signin.csphome.adc-e.uk`,MB],[`https://{Region}.signin.amazonaws-eusc.eu`,MB],[`https://signin-fips.amazonaws-us-gov.com`,MB],[`https://{Region}.signin-fips.amazonaws-us-gov.com`,MB],[`https://{Region}.signin.{PartitionResult#dnsSuffix}`,MB],[_B,`Invalid Configuration: FIPS and custom endpoint are not supported`],[_B,`Invalid Configuration: Dualstack and custom endpoint are not supported`],[DB,MB],[`https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}`,MB],[_B,`FIPS and DualStack are enabled, but this partition does not support one or both`],[`https://signin-fips.{Region}.{PartitionResult#dnsSuffix}`,MB],[_B,`FIPS is enabled but this partition does not support FIPS`],[EB,MB],[_B,`DualStack is enabled but this partition does not support DualStack`],[`https://signin.{Region}.{PartitionResult#dnsSuffix}`,MB],[_B,`Invalid Configuration: Missing Region`]]},FB=2,IB=new Int32Array([-1,1,-1,0,6,3,2,36,4,4,5,100000027,6,100000004,100000027,1,29,7,2,36,8,3,9,31,4,22,10,5,19,11,7,21,12,8,100000007,13,10,100000008,14,12,100000009,15,13,100000010,16,14,100000011,17,15,100000012,18,16,100000013,100000016,6,100000005,20,7,21,100000006,17,100000024,100000025,6,100000004,23,7,27,24,9,100000014,25,10,100000015,26,11,100000022,100000023,11,28,100000021,17,100000020,100000021,2,35,30,3,39,31,4,32,100000027,6,100000004,33,7,100000027,34,9,100000014,100000027,3,39,36,4,38,37,7,100000018,100000019,6,100000004,100000017,5,100000001,40,8,100000002,100000003]),LB=Te.from(IB,FB,PB.conditions,PB.results)})),RB,zB,Lse=n((()=>{uT(),Le(),Ise(),RB=new Ne({size:50,params:[`Endpoint`,`IsControlPlane`,`IsOAuthEndpoint`,`Region`,`UseDualStack`,`UseFIPS`]}),zB=(e,t={})=>RB.get(e,()=>Be(LB,{endpointParams:e,logger:t.logger})),Qe.aws=nT})),BB,VB=n((()=>{R(),BB=class e extends ot{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.signin#SigninServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}}})),HB,UB,WB,GB,KB=n((()=>{VB(),HB=class e extends BB{static shapeId=`com.amazonaws.signin#AccessDeniedException`;name=`AccessDeniedException`;$fault=`client`;error;constructor(t){super({name:`AccessDeniedException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}},UB=class e extends BB{static shapeId=`com.amazonaws.signin#InternalServerException`;name=`InternalServerException`;$fault=`server`;error;constructor(t){super({name:`InternalServerException`,$fault:`server`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}},WB=class e extends BB{static shapeId=`com.amazonaws.signin#TooManyRequestsError`;name=`TooManyRequestsError`;$fault=`client`;error;constructor(t){super({name:`TooManyRequestsError`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}},GB=class e extends BB{static shapeId=`com.amazonaws.signin#ValidationException`;name=`ValidationException`;$fault=`client`;error;constructor(t){super({name:`ValidationException`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.error=t.error}}})),qB,JB,YB,XB,ZB,QB,$B,eV,tV,nV,rV,iV,aV,oV,sV,cV,lV,uV,dV,fV,pV,mV,hV,gV,_V,vV,yV,bV,xV,SV,CV,wV,TV,EV,DV,OV,kV,AV,jV,MV,NV,PV,FV,IV,LV,RV,zV,BV,VV,HV,UV,WV,GV,KV,qV,JV,YV,XV,ZV,QV,$V,eH,tH,nH=n((()=>{D(),KB(),VB(),qB=`AccessDeniedException`,JB=`AccessToken`,YB=`CreateOAuth2Token`,XB=`CreateOAuth2TokenRequest`,ZB=`CreateOAuth2TokenRequestBody`,QB=`CreateOAuth2TokenResponseBody`,$B=`CreateOAuth2TokenResponse`,eV=`CreateOAuth2TokenWithIAM`,tV=`CreateOAuth2TokenWithIAMRequest`,nV=`CreateOAuth2TokenWithIAMResponse`,rV=`InternalServerException`,iV=`OAuthAccessToken`,aV=`RefreshToken`,oV=`TooManyRequestsError`,sV=`ValidationException`,cV=`accessKeyId`,lV=`accessToken`,uV=`access_token`,dV=`client`,fV=`clientId`,pV=`codeVerifier`,mV=`code`,hV=`error`,gV=`expiresIn`,_V=`expires_in`,vV=`grantType`,yV=`grant_type`,bV=`http`,xV=`httpError`,SV=`idToken`,CV=`jsonName`,wV=`message`,TV=`resource`,EV=`refreshToken`,DV=`redirectUri`,OV=`smithy.ts.sdk.synthetic.com.amazonaws.signin`,kV=`secretAccessKey`,AV=`sessionToken`,jV=`server`,MV=`tokenInput`,NV=`tokenOutput`,PV=`tokenType`,FV=`token_type`,IV=`com.amazonaws.signin`,LV=new T(OV),RV=[-3,OV,`SigninServiceException`,0,[],[]],LV.registerError(RV,BB),zV=new T(IV),BV=[-3,IV,qB,{[hV]:dV},[hV,wV],[0,0],2],zV.registerError(BV,HB),VV=[-3,IV,rV,{[hV]:jV,[xV]:500},[hV,wV],[0,0],2],zV.registerError(VV,UB),HV=[-3,IV,oV,{[hV]:dV,[xV]:429},[hV,wV],[0,0],2],zV.registerError(HV,WB),UV=[-3,IV,sV,{[hV]:dV,[xV]:400},[hV,wV],[0,0],2],zV.registerError(UV,GB),WV=[LV,zV],GV=[0,IV,iV,8,0],KV=[0,IV,aV,8,0],qV=[3,IV,JB,8,[cV,kV,AV],[[0,{[CV]:cV}],[0,{[CV]:kV}],[0,{[CV]:AV}]],3],JV=[3,IV,XB,0,[MV],[[()=>YV,16]],1],YV=[3,IV,ZB,0,[fV,vV,mV,DV,pV,EV],[[0,{[CV]:fV}],[0,{[CV]:vV}],0,[0,{[CV]:DV}],[0,{[CV]:pV}],[()=>KV,{[CV]:EV}]],2],XV=[3,IV,$B,0,[NV],[[()=>ZV,16]],1],ZV=[3,IV,QB,0,[lV,PV,gV,EV,SV],[[()=>qV,{[CV]:lV}],[0,{[CV]:PV}],[1,{[CV]:gV}],[()=>KV,{[CV]:EV}],[0,{[CV]:SV}]],4],QV=[3,IV,tV,0,[vV,TV],[[0,{[CV]:yV}],0],2],$V=[3,IV,nV,0,[lV,PV,gV],[[()=>GV,{[CV]:uV}],[0,{[CV]:FV}],[1,{[CV]:_V}]],3],eH=[9,IV,YB,{[bV]:[`POST`,`/v1/token`,200]},()=>JV,()=>XV],tH=[9,IV,eV,{[bV]:[`POST`,`/v1/token?x-amz-client-auth-method=iam`,200]},()=>QV,()=>$V]})),rH,Rse=n((()=>{FA(),rk(),yw(),C(),R(),yS(),x(),fB(),Lse(),nH(),rH=e=>({apiVersion:`2023-01-01`,base64Decoder:e?.base64Decoder??me,base64Encoder:e?.base64Encoder??de,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??zB,extensions:e?.extensions??[],httpAuthSchemeProvider:e?.httpAuthSchemeProvider??uB,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new mA},{schemeId:`smithy.api#noAuth`,identityProvider:e=>e.getIdentityProvider(`smithy.api#noAuth`)||(async()=>({})),signer:new pw}],logger:e?.logger??new N,protocol:e?.protocol??RO,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.signin`,errorTypeRegistries:WV,version:`2023-01-01`,serviceTarget:`Signin`},serviceId:e?.serviceId??`Signin`,sha256:e?.sha256??k,urlParser:e?.urlParser??ge,utf8Decoder:e?.utf8Decoder??$e,utf8Encoder:e?.utf8Encoder??Ee})})),iH,aH,zse=n((()=>{uT(),FA(),R(),nt(),xC(),x(),iH=$N(),Rse(),aH=e=>{b(process.version);let t=m(e),n=()=>t().then(L),r=rH(e);wb(process.version);let i={profile:e?.profile,logger:r.logger};return{...r,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??w(CA,i),bodyLengthChecker:e?.bodyLengthChecker??We,defaultUserAgentProvider:e?.defaultUserAgentProvider??Bw({serviceId:r.serviceId,clientVersion:cP}),maxAttempts:e?.maxAttempts??w(pC,e),region:e?.region??w(g,{...v,...i}),requestHandler:iH.NodeHttpHandler.create(e?.requestHandler??n),retryMode:e?.retryMode??w({..._C,default:async()=>(await n()).retryMode||JS},e),streamCollector:e?.streamCollector??iH.streamCollector,useDualstackEndpoint:e?.useDualstackEndpoint??w(M,i),useFipsEndpoint:e?.useFipsEndpoint??w(Oe,i),userAgentAppId:e?.userAgentAppId??w(Gw,i)}}})),oH,sH,Bse=n((()=>{oH=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},sH=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()})})),cH,Vse=n((()=>{uT(),R(),yS(),Bse(),cH=(e,t)=>{let n=Object.assign(sT(e),j(e),ox(e),oH(e));return t.forEach(e=>e.configure(n)),Object.assign(e,cT(n),F(n),sx(n),sH(n))}})),lH,uH=n((()=>{uT(),yw(),R(),nt(),Le(),yS(),xC(),D(),fB(),hB(),zse(),Vse(),lH=class extends De{config;constructor(...[e]){let t=aH(e||{});super(t),this.initConfig=t;let n=bw(pB(t)),r=mC(n),i=CC(te(r)),a=Ke(i),o=dB(a),s=cH(o,e?.extensions||[]);this.config=s,this.middlewareStack.use(ye(this.config)),this.middlewareStack.use(Fw(this.config)),this.middlewareStack.use(bC(this.config)),this.middlewareStack.use(dx(this.config)),this.middlewareStack.use(EC(this.config)),this.middlewareStack.use(kC(this.config)),this.middlewareStack.use(KC(this.config)),this.middlewareStack.use(ZC(this.config,{httpAuthSchemeParametersProvider:lB,identityProviderConfigProvider:async e=>new lw({"aws.auth#sigv4":e.credentials})})),this.middlewareStack.use(aw(this.config))}destroy(){super.destroy()}}})),dH,fH,pH,mH,hH=n((()=>{R(),Le(),hB(),dH=h(mB,`Signin`,`SigninClient`,Xe),fH={IsControlPlane:{type:`staticContextParams`,value:!1}},pH={IsOAuthEndpoint:{type:`staticContextParams`,value:!0}},mH=(e,t,n,r)=>[]})),gH,_H=n((()=>{hH(),nH(),gH=class extends dH(fH,mH,`CreateOAuth2Token`,eH){}})),vH,yH=n((()=>{hH(),nH(),vH=class extends dH(pH,mH,`CreateOAuth2TokenWithIAM`,tH){}})),bH,xH,Hse=n((()=>{R(),_H(),yH(),uH(),bH={CreateOAuth2TokenCommand:gH,CreateOAuth2TokenWithIAMCommand:vH},xH=class extends lH{},S(bH,xH)})),Use=n((()=>{_H(),yH()})),SH,Wse=n((()=>{SH={AUTHCODE_EXPIRED:`AUTHCODE_EXPIRED`,CONFLICT:`CONFLICT`,INSUFFICIENT_PERMISSIONS:`INSUFFICIENT_PERMISSIONS`,INVALID_REQUEST:`INVALID_REQUEST`,RESOURCE_NOT_FOUND:`RESOURCE_NOT_FOUND`,SERVER_ERROR:`server_error`,SERVICE_QUOTA_EXCEEDED:`SERVICE_QUOTA_EXCEEDED`,TOKEN_EXPIRED:`TOKEN_EXPIRED`,USER_CREDENTIALS_CHANGED:`USER_CREDENTIALS_CHANGED`}})),Gse=n((()=>{})),Kse=/* @__PURE__ */ i({$Command:()=>oe,AccessDeniedException:()=>HB,AccessDeniedException$:()=>BV,AccessToken$:()=>qV,CreateOAuth2Token$:()=>eH,CreateOAuth2TokenCommand:()=>gH,CreateOAuth2TokenRequest$:()=>JV,CreateOAuth2TokenRequestBody$:()=>YV,CreateOAuth2TokenResponse$:()=>XV,CreateOAuth2TokenResponseBody$:()=>ZV,CreateOAuth2TokenWithIAM$:()=>tH,CreateOAuth2TokenWithIAMCommand:()=>vH,CreateOAuth2TokenWithIAMRequest$:()=>QV,CreateOAuth2TokenWithIAMResponse$:()=>$V,InternalServerException:()=>UB,InternalServerException$:()=>VV,OAuth2ErrorCode:()=>SH,Signin:()=>xH,SigninClient:()=>lH,SigninServiceException:()=>BB,SigninServiceException$:()=>RV,TooManyRequestsError:()=>WB,TooManyRequestsError$:()=>HV,ValidationException:()=>GB,ValidationException$:()=>UV,__Client:()=>De,errorTypeRegistries:()=>WV}),qse=n((()=>{uH(),Hse(),Use(),R(),nH(),Wse(),KB(),Gse(),VB()})),Jse=/* @__PURE__ */ a((n=>{let{setCredentialFeature:r}=(uT(),e(lT)),{CredentialsProviderError:i,parseKnownFiles:a,getProfileName:o}=(nt(),e(he)),{HttpRequest:s}=(yS(),e(vS)),{createHash:c,createPrivateKey:l,createPublicKey:u,sign:d}=t(`node:crypto`),{promises:f}=t(`node:fs`),{homedir:p}=t(`node:os`),{dirname:m,join:h}=t(`node:path`);var g=class t{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=3e5;constructor(e,t,n){this.profileData=e,this.init=t,this.callerClientConfig=n}async loadCredentials(){let e=await this.loadToken();if(!e)throw new i(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let n=e.accessToken,r=Date.now();return new Date(n.expiresAt).getTime()-r<=t.REFRESH_THRESHOLD?this.refresh(e):this.toCredentials(e.accessToken)}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}toCredentials(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken,accountId:e.accountId,expiration:new Date(e.expiresAt)}}async refresh(n){let r=await this.loadToken().catch(()=>n),a=Date.now(),o=new Date(r.accessToken.expiresAt).getTime(),s=new Date(n.accessToken.expiresAt).getTime(),c=o<=a&&s>a?n:r;if(new Date(c.accessToken.expiresAt).getTime()-Date.now()>t.REFRESH_THRESHOLD)return this.toCredentials(c.accessToken);let{SigninClient:l,CreateOAuth2TokenCommand:u}=(qse(),e(Kse)),{logger:d,userAgentAppId:f}=this.callerClientConfig??{},p=(e=>e?.metadata?.handlerProtocol===`h2`)(this.callerClientConfig?.requestHandler)?void 0:this.callerClientConfig?.requestHandler,m=new l({credentials:{accessKeyId:``,secretAccessKey:``},region:this.profileData.region??await this.callerClientConfig?.region?.()??process.env.AWS_REGION,requestHandler:p,logger:d,userAgentAppId:f,...this.init?.clientConfig});this.createDPoPInterceptor(m.middlewareStack);let h={tokenInput:{clientId:c.clientId,refreshToken:c.refreshToken,grantType:`refresh_token`}};try{let e=await m.send(new u(h)),{accessKeyId:t,secretAccessKey:n,sessionToken:r}=e.tokenOutput?.accessToken??{},{refreshToken:a,expiresIn:o}=e.tokenOutput??{};if(!t||!n||!r||!a)throw new i(`Token refresh response missing required fields`,{logger:this.logger,tryNextLink:!1});let s=(o??900)*1e3,l=new Date(Date.now()+s),d={...c,accessToken:{...c.accessToken,accessKeyId:t,secretAccessKey:n,sessionToken:r,expiresAt:l.toISOString()},refreshToken:a};return await this.saveToken(d),this.toCredentials(d.accessToken)}catch(e){if(e.name===`AccessDeniedException`){let t=e.error,n;switch(t){case`TOKEN_EXPIRED`:n=`Your session has expired. Please reauthenticate.`;break;case`USER_CREDENTIALS_CHANGED`:n=`Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.`;break;case`INSUFFICIENT_PERMISSIONS`:n=`Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.`;break;default:n=`Failed to refresh token: ${String(e)}. Please re-authenticate using \`aws login\``}throw new i(n,{logger:this.logger,tryNextLink:!1})}if(new Date(c.accessToken.expiresAt).getTime()>Date.now())return this.logger?.warn?.(`Failed to refresh token: ${String(e)}. Using existing token until expiry.`),this.toCredentials(c.accessToken);throw new i(`Failed to refresh token: ${String(e)}. Please re-authenticate using aws login`,{logger:this.logger})}}async loadToken(){let e=this.getTokenFilePath();try{let t=await f.readFile(e,`utf8`),n=JSON.parse(t),r=[`accessToken`,`clientId`,`refreshToken`,`dpopKey`].filter(e=>!n[e]);if(n.accessToken?.accountId||r.push(`accountId`),r.length>0)throw new i(`Token validation failed, missing fields: ${r.join(`, `)}`,{logger:this.logger,tryNextLink:!1});return n}catch(t){throw new i(`Failed to load token from ${e}: ${String(t)}`,{logger:this.logger,tryNextLink:!1})}}async saveToken(e){let t=this.getTokenFilePath(),n=m(t);try{await f.mkdir(n,{recursive:!0})}catch{}await f.writeFile(t,JSON.stringify(e,null,2),`utf8`)}getTokenFilePath(){let e=process.env.AWS_LOGIN_CACHE_DIRECTORY??h(p(),`.aws`,`login`,`cache`),t=Buffer.from(this.loginSession,`utf8`),n=c(`sha256`).update(t).digest(`hex`);return h(e,`${n}.json`)}derToRawSignature(e){let t=2;if(e[t]!==2)throw Error(`Invalid DER signature`);t++;let n=e[t++],r=e.subarray(t,t+n);if(t+=n,e[t]!==2)throw Error(`Invalid DER signature`);t++;let i=e[t++],a=e.subarray(t,t+i);r=r[0]===0?r.subarray(1):r,a=a[0]===0?a.subarray(1):a;let o=Buffer.concat([Buffer.alloc(32-r.length),r]),s=Buffer.concat([Buffer.alloc(32-a.length),a]);return Buffer.concat([o,s])}createDPoPInterceptor(e){e.add(e=>async t=>{if(s.isInstance(t.request)){let e=t.request,n=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:``}${e.path}`,r=await this.generateDpop(e.method,n);e.headers={...e.headers,DPoP:r}}return e(t)},{step:`finalizeRequest`,name:`dpopInterceptor`,override:!0})}async generateDpop(e=`POST`,t){let n=await this.loadToken();try{let r=l({key:n.dpopKey,format:`pem`,type:`sec1`}),i=u(r).export({format:`der`,type:`spki`}),a=-1;for(let e=0;easync({callerClientConfig:t}={})=>{e?.logger?.debug?.(`@aws-sdk/credential-providers - fromLoginCredentials`);let n=await a(e||{}),s=o({profile:e?.profile??t?.profile}),c=n[s];if(!c?.login_session)throw new i(`Profile ${s} does not contain login_session.`,{tryNextLink:!0,logger:e?.logger});let l=await new g(c,e,t).loadCredentials();return r(l,`CREDENTIALS_LOGIN`,`AD`)}})),CH=/* @__PURE__ */ a((n=>{let{externalDataInterceptor:r,CredentialsProviderError:i,parseKnownFiles:a,getProfileName:o}=(nt(),e(he)),{exec:s}=t(`node:child_process`),{promisify:c}=t(`node:util`),{setCredentialFeature:l}=(uT(),e(lT)),u=(e,t,n)=>{if(t.Version!==1)throw Error(`Profile ${e} credential_process did not return Version 1.`);if(t.AccessKeyId===void 0||t.SecretAccessKey===void 0)throw Error(`Profile ${e} credential_process returned invalid credentials.`);if(t.Expiration){let n=/* @__PURE__ */ new Date;if(new Date(t.Expiration){let a=t[e];if(t[e]){let o=a.credential_process;if(o!==void 0){let a=c(r?.getTokenRecord?.().exec??s);try{let{stdout:n}=await a(o),r;try{r=JSON.parse(n.trim())}catch{throw Error(`Profile ${e} credential_process returned invalid JSON.`)}return u(e,r,t)}catch(e){throw new i(e.message,{logger:n})}}throw new i(`Profile ${e} did not contain credential_process.`,{logger:n})}throw new i(`Profile ${e} could not be found in shared credentials file.`,{logger:n})};n.fromProcess=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/credential-provider-process - fromProcess`);let n=await a(e);return d(o({profile:e.profile??t?.profile}),n,e.logger)}})),wH=/* @__PURE__ */ a((n=>{let{setCredentialFeature:r}=(uT(),e(lT)),{CredentialsProviderError:i,externalDataInterceptor:a}=(nt(),e(he)),{readFileSync:o}=t(`node:fs`),s=t=>async n=>{t.logger?.debug(`@aws-sdk/credential-provider-web-identity - fromWebToken`);let{roleArn:r,roleSessionName:i,webIdentityToken:a,providerId:o,policyArns:s,policy:c,durationSeconds:l}=t,{roleAssumerWithWebIdentity:u}=t;if(!u){let{getDefaultRoleAssumerWithWebIdentity:r}=(cB(),e(sB));u=r({...t.clientConfig,credentialProviderLogger:t.logger,parentClientConfig:{...n?.callerClientConfig,...t.parentClientConfig}},t.clientPlugins)}return u({RoleArn:r,RoleSessionName:i??`aws-sdk-js-session-${Date.now()}`,WebIdentityToken:a,ProviderId:o,PolicyArns:s,Policy:c,DurationSeconds:l})},c=`AWS_WEB_IDENTITY_TOKEN_FILE`;n.fromTokenFile=(e={})=>async t=>{e.logger?.debug(`@aws-sdk/credential-provider-web-identity - fromTokenFile`);let n=e?.webIdentityTokenFile??process.env[c],l=e?.roleArn??process.env.AWS_ROLE_ARN,u=e?.roleSessionName??process.env.AWS_ROLE_SESSION_NAME;if(!n||!l)throw new i(`Web identity configuration not specified`,{logger:e.logger});let d=await s({...e,webIdentityToken:a?.getTokenRecord?.()[n]??o(n,{encoding:`ascii`}),roleArn:l,roleSessionName:u})(t);return n===process.env[c]&&r(d,`CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN`,`h`),d},n.fromWebToken=s})),Yse=/* @__PURE__ */ a((t=>{let{CredentialsProviderError:n,chain:r,getProfileName:i,parseKnownFiles:a}=(nt(),e(he)),{setCredentialFeature:o}=(uT(),e(lT)),s=(e,t,i)=>{let a={EcsContainer:async e=>{let{fromHttp:t}=eP(),{fromContainerMetadata:n}=vN();return i?.debug(`@aws-sdk/credential-provider-ini - credential_source is EcsContainer`),async()=>r(t(e??{}),n(e))().then(c)},Ec2InstanceMetadata:async e=>{i?.debug(`@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata`);let{fromInstanceMetadata:t}=vN();return async()=>t(e)().then(c)},Environment:async e=>{i?.debug(`@aws-sdk/credential-provider-ini - credential_source is Environment`);let{fromEnv:t}=IA();return async()=>t(e)().then(c)}};if(e in a)return a[e];throw new n(`Unsupported credential source in profile ${t}. Got ${e}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,{logger:i})},c=e=>o(e,`CREDENTIALS_PROFILE_NAMED_PROVIDER`,`p`),l=(e,{profile:t=`default`,logger:n}={})=>!!e&&typeof e==`object`&&typeof e.role_arn==`string`&&[`undefined`,`string`].indexOf(typeof e.role_session_name)>-1&&[`undefined`,`string`].indexOf(typeof e.external_id)>-1&&[`undefined`,`string`].indexOf(typeof e.mfa_serial)>-1&&(u(e,{profile:t,logger:n})||d(e,{profile:t,logger:n})),u=(e,{profile:t,logger:n})=>{let r=typeof e.source_profile==`string`&&e.credential_source===void 0;return r&&n?.debug?.(` ${t} isAssumeRoleWithSourceProfile source_profile=${e.source_profile}`),r},d=(e,{profile:t,logger:n})=>{let r=typeof e.credential_source==`string`&&e.source_profile===void 0;return r&&n?.debug?.(` ${t} isCredentialSourceProfile credential_source=${e.credential_source}`),r},f=async(t,r,a,c,l={},u)=>{a.logger?.debug(`@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)`);let d=r[t],{source_profile:f,region:m}=d;if(!a.roleAssumer){let{getDefaultRoleAssumer:t}=(cB(),e(sB));a.roleAssumer=t({...a.clientConfig,credentialProviderLogger:a.logger,parentClientConfig:{...c,...a?.parentClientConfig,region:m??a?.parentClientConfig?.region??c?.region}},a.clientPlugins)}if(f&&f in l)throw new n(`Detected a cycle attempting to resolve credentials for profile ${i(a)}. Profiles visited: `+Object.keys(l).join(`, `),{logger:a.logger});a.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${f?`source_profile=[${f}]`:`profile=[${t}]`}`);let h=f?u(f,r,a,c,{...l,[f]:!0},p(r[f]??{})):(await s(d.credential_source,t,a.logger)(a))();if(p(d))return h.then(e=>o(e,`CREDENTIALS_PROFILE_SOURCE_PROFILE`,`o`));{let e={RoleArn:d.role_arn,RoleSessionName:d.role_session_name||`aws-sdk-js-${Date.now()}`,ExternalId:d.external_id,DurationSeconds:parseInt(d.duration_seconds||`3600`,10)},{mfa_serial:r}=d;if(r){if(!a.mfaCodeProvider)throw new n(`Profile ${t} requires multi-factor authentication, but no MFA code callback was provided.`,{logger:a.logger,tryNextLink:!1});e.SerialNumber=r,e.TokenCode=await a.mfaCodeProvider(r)}let i=await h;return a.roleAssumer(i,e).then(e=>o(e,`CREDENTIALS_PROFILE_SOURCE_PROFILE`,`o`))}},p=e=>!e.role_arn&&!!e.credential_source,m=e=>!!(e&&e.login_session),h=async(e,t,n)=>{let{fromLoginCredentials:r}=Jse(),i=await r({...t,profile:e})({callerClientConfig:n});return o(i,`CREDENTIALS_PROFILE_LOGIN`,`AC`)},g=e=>!!e&&typeof e==`object`&&typeof e.credential_process==`string`,v=async(e,t)=>{let{fromProcess:n}=CH(),r=await n({...e,profile:t})();return o(r,`CREDENTIALS_PROFILE_PROCESS`,`v`)},y=async(e,t,n={},r)=>{let{fromSSO:i}=tL();return i({profile:e,logger:n.logger,parentClientConfig:n.parentClientConfig,clientConfig:n.clientConfig})({callerClientConfig:r}).then(e=>t.sso_session?o(e,`CREDENTIALS_PROFILE_SSO`,`r`):o(e,`CREDENTIALS_PROFILE_SSO_LEGACY`,`t`))},b=e=>e&&(typeof e.sso_start_url==`string`||typeof e.sso_account_id==`string`||typeof e.sso_session==`string`||typeof e.sso_region==`string`||typeof e.sso_role_name==`string`),x=e=>!!e&&typeof e==`object`&&typeof e.aws_access_key_id==`string`&&typeof e.aws_secret_access_key==`string`&&[`undefined`,`string`].indexOf(typeof e.aws_session_token)>-1&&[`undefined`,`string`].indexOf(typeof e.aws_account_id)>-1,S=async(e,t)=>{t?.logger?.debug(`@aws-sdk/credential-provider-ini - resolveStaticCredentials`);let n={accessKeyId:e.aws_access_key_id,secretAccessKey:e.aws_secret_access_key,sessionToken:e.aws_session_token,...e.aws_credential_scope&&{credentialScope:e.aws_credential_scope},...e.aws_account_id&&{accountId:e.aws_account_id}};return o(n,`CREDENTIALS_PROFILE`,`n`)},C=e=>!!e&&typeof e==`object`&&typeof e.web_identity_token_file==`string`&&typeof e.role_arn==`string`&&[`undefined`,`string`].indexOf(typeof e.role_session_name)>-1,w=async(e,t,n)=>{let{fromTokenFile:r}=wH(),i=await r({webIdentityTokenFile:e.web_identity_token_file,roleArn:e.role_arn,roleSessionName:e.role_session_name,roleAssumerWithWebIdentity:t.roleAssumerWithWebIdentity,logger:t.logger,parentClientConfig:t.parentClientConfig})({callerClientConfig:n});return o(i,`CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN`,`q`)},T=async(e,t,r,i,a={},o=!1)=>{let s=t[e];if(Object.keys(a).length>0&&x(s))return S(s,r);if(o||l(s,{profile:e,logger:r.logger}))return f(e,t,r,i,a,T);if(x(s))return S(s,r);if(C(s))return w(s,r,i);if(g(s))return v(r,e);if(b(s))return await y(e,s,r,i);if(m(s))return h(e,r,i);throw new n(`Could not resolve credentials using profile: [${e}] in configuration/credentials file(s).`,{logger:r.logger})};t.fromIni=(e={})=>async({callerClientConfig:t}={})=>{e.logger?.debug(`@aws-sdk/credential-provider-ini - fromIni`);let n=await a(e);return T(i({profile:e.profile??t?.profile}),n,e,t)}})),Xse=/* @__PURE__ */ a((t=>{let{ENV_KEY:n,ENV_SECRET:r,fromEnv:i}=IA(),{chain:a,CredentialsProviderError:o,ENV_PROFILE:s}=(nt(),e(he)),c=`AWS_EC2_METADATA_DISABLED`,l=async e=>{let{ENV_CMDS_FULL_URI:t,ENV_CMDS_RELATIVE_URI:n,fromContainerMetadata:r,fromInstanceMetadata:i}=vN();if(process.env[n]||process.env[t]){e.logger?.debug(`@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata`);let{fromHttp:t}=eP();return a(t(e),r(e))}return process.env[c]&&process.env[c]!==`false`?async()=>{throw new o(`EC2 Instance Metadata Service access disabled`,{logger:e.logger})}:(e.logger?.debug(`@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata`),i(e))};function u(e,t){let n=d(e),r,i,a,o,s=async e=>{if(e?.forceRefresh)return o||=n(e).then(e=>{a=e}).finally(()=>{o=void 0}),await o,a;if(a?.expiration&&a?.expiration?.getTime(){a=e}).catch(()=>{}).finally(()=>{i=void 0});else return r=n(e).then(e=>{a=e}).finally(()=>{r=void 0}),s(e)}return a};return s}let d=e=>async t=>{let n;for(let r of e)try{return await r(t)}catch(e){if(n=e,e?.tryNextLink)continue;throw e}throw n},f=!1,p=(e={})=>u([async()=>{if(e.profile??process.env[s])throw process.env[n]&&process.env[r]&&(f||=((e.logger?.warn&&e.logger?.constructor?.name!==`NoOpLogger`?e.logger.warn.bind(e.logger):console.warn)(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: Multiple credential sources detected: Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set. This SDK will proceed with the AWS_PROFILE value. @@ -370,36 +370,36 @@ Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI However, a future version may change this behavior to prefer the ENV static credentials. Please ensure that your environment only sets either the AWS_PROFILE or the AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair. -`),!0)),new o(`AWS_PROFILE is set, skipping fromEnv provider.`,{logger:e.logger,tryNextLink:!0});return e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv`),i(e)()},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromSSO`);let{ssoStartUrl:n,ssoAccountId:r,ssoRegion:i,ssoRoleName:a,ssoSession:s}=e;if(!n&&!r&&!i&&!a&&!s)throw new o(`Skipping SSO provider in default chain (inputs do not include SSO fields).`,{logger:e.logger});let{fromSSO:c}=AL();return c(e)(t)},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromIni`);let{fromIni:n}=bse();return n(e)(t)},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromProcess`);let{fromProcess:n}=QH();return n(e)(t)},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile`);let{fromTokenFile:n}=$H();return n(e)(t)},async()=>(e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::remoteProvider`),(await l(e))()),async()=>{throw new o(`Could not load credentials from any providers`,{tryNextLink:!1,logger:e.logger})}],h),m=e=>e?.expiration!==void 0,h=e=>e?.expiration!==void 0&&e.expiration.getTime()-Date.now()<3e5;t.credentialsTreatedAsExpired=h,t.credentialsWillNeedRefresh=m,t.defaultProvider=p})),eU,tU,nU,rU,iU,aU=n((()=>{x(),eU=64,tU=20,nU=new Int32Array([1732584193,4023233417,2562383102,271733878,3285377520]),rU=new Int32Array([1518500249,1859775393,2400959708,3395469782]),iU=class e{digestLength=tU;state=Int32Array.from(nU);w;buffer=new Uint8Array(eU);bufferLength=0;bytesHashed=0;finished=!1;inner;outer;constructor(t){if(t){let n=e.normalizeKey(t);this.inner=new e,this.outer=new e;let r=/* @__PURE__ */ new Uint8Array(128);for(let e=0;e0){for(;n>0&&this.bufferLength=eU;)this.hashBuffer(e,t),t+=eU,n-=eU;for(;n>0;)this.buffer[this.bufferLength++]=e[t++],--n}async digest(){if(this.inner&&this.outer){if(this.finished)throw Error(`Attempted to digest an already finished HMAC.`);this.finished=!0;let e=this.inner.digestSync();return this.outer.update(e),this.outer.digestSync()}return this.digestSync()}reset(){this.state=Int32Array.from(nU),this.buffer=new Uint8Array(eU),this.bufferLength=0,this.bytesHashed=0}digestSync(){let e=this.state.slice(),t=this.buffer.slice(),n=this.bufferLength,r=this.bytesHashed/536870912|0,i=this.bytesHashed<<3;if(t[n++]=128,n>56){for(let e=n;e>>24&255,o[1]=e[0]>>>16&255,o[2]=e[0]>>>8&255,o[3]=e[0]&255,o[4]=e[1]>>>24&255,o[5]=e[1]>>>16&255,o[6]=e[1]>>>8&255,o[7]=e[1]&255,o[8]=e[2]>>>24&255,o[9]=e[2]>>>16&255,o[10]=e[2]>>>8&255,o[11]=e[2]&255,o[12]=e[3]>>>24&255,o[13]=e[3]>>>16&255,o[14]=e[3]>>>8&255,o[15]=e[3]&255,o[16]=e[4]>>>24&255,o[17]=e[4]>>>16&255,o[18]=e[4]>>>8&255,o[19]=e[4]&255,o}static normalizeKey(t){let n=O(t);if(n.byteLength>eU){let t=new e;t.update(n);let r=t.digestSync(),i=new Uint8Array(eU);return i.set(r),i}let r=new Uint8Array(eU);return r.set(n),r}hashBuffer(e,t){this.hashBufferWith(this.state,e,t)}hashBufferWith(e,t,n){let r=this.w??=/* @__PURE__ */ new Int32Array(80),i=e[0],a=e[1],o=e[2],s=e[3],c=e[4];for(let e=0;e<16;++e)r[e]=(t[n+e*4]&255)<<24|(t[n+e*4+1]&255)<<16|(t[n+e*4+2]&255)<<8|t[n+e*4+3]&255;for(let e=16;e<80;++e){let t=r[e-3]^r[e-8]^r[e-14]^r[e-16];r[e]=t<<1|t>>>31}for(let e=0;e<80;++e){let t=e<20?0:e<40?1:e<60?2:3,n=((i<<5|i>>>27)+(t===0?a&o^~a&s:t===2?a&o^a&s^o&s:a^o^s)|0)+(c+(rU[t]+r[e]|0)|0)|0;c=s,s=o,o=a<<30|a>>>2,a=i,i=n}e[0]=e[0]+i|0,e[1]=e[1]+a|0,e[2]=e[2]+o|0,e[3]=e[3]+s|0,e[4]=e[4]+c|0}}}));function Sse(){return class{digestLength=20;secret;hash;isHmac;finished=!1;constructor(e){this.secret=e,this.isHmac=!!e,this.hash=this.createHash()}update(e){if(this.finished)throw Error(`Attempted to update an already finished hash.`);this.hash.update(e)}async digest(){let e;return this.isHmac?(this.finished=!0,e=this.hash.digest()):e=this.hash.copy().digest(),new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}reset(){this.hash=this.createHash(),this.finished=!1}createHash(){return this.secret?Tr(`sha1`,Cse(this.secret)):wr(`sha1`)}}}function Cse(e){return typeof e==`string`?e:ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e)}var oU,sU,wse=n((()=>{aU(),oU=(()=>{try{return wr(`sha1`),!0}catch{return!1}})(),sU=oU?Sse():iU})),cU,lU,uU,dU,fU,pU,Tse=n((()=>{x(),aU(),{digest:cU,sign:lU,importKey:uU}=globalThis?.crypto?.subtle??{},dU=typeof cU==`function`&&typeof lU==`function`&&typeof uU==`function`?globalThis.crypto.subtle:void 0,fU=8388608,pU=class{digestLength=20;secret;pending=[];pendingBytes=0;fallback;finished=!1;constructor(e){e&&(this.secret=O(e))}update(e){if(this.finished)throw Error(`Attempted to update an already finished HMAC.`);this.fallback?this.fallback.update(e):(this.pending.push(e.slice()),this.pendingBytes+=e.byteLength,this.pendingBytes>=fU&&this.switchToFallback())}async digest(){if(this.fallback)return this.fallback.digest();if(this.secret&&this.finished)throw Error(`Attempted to digest an already finished HMAC.`);let e=re(this.pending);if(dU){if(this.secret){this.finished=!0;let t=await dU.importKey(`raw`,this.secret,{name:`HMAC`,hash:`SHA-1`},!1,[`sign`]),n=await dU.sign(`HMAC`,t,e);return new Uint8Array(n)}let t=await dU.digest(`SHA-1`,e);return new Uint8Array(t)}let t=new iU(this.secret);return t.update(e),t.digest()}reset(){this.pending=[],this.pendingBytes=0,this.fallback=void 0,this.finished=!1}switchToFallback(){let e=new iU(this.secret);for(let t of this.pending)e.update(t);this.fallback=e,this.pending=[],this.pendingBytes=0}}})),Ese=/* @__PURE__ */ i({Sha1:()=>sU,Sha1Js:()=>iU,Sha1Node:()=>sU,Sha1WebCrypto:()=>pU,Sha256:()=>k,Sha256Js:()=>at,Sha256Node:()=>k}),Dse=n((()=>{aU(),wse(),Tse(),C()})),mU=(/* @__PURE__ */ a((t=>{let{getFlexibleChecksumsPlugin:n,NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS:r,NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS:i,resolveFlexibleChecksumsConfig:a}=(ere(),e($ne)),{awsEndpointFunctions:o,emitWarningIfUnsupportedVersion:s,createDefaultUserAgentProvider:c,NODE_APP_ID_CONFIG_OPTIONS:l,getAwsRegionExtensionConfiguration:u,resolveAwsRegionExtensionConfiguration:d,resolveUserAgentConfig:f,resolveHostHeaderConfig:p,getUserAgentPlugin:m,getHostHeaderPlugin:h,getLoggerPlugin:g,getRecursionDetectionPlugin:v}=(dT(),e(uT)),{getThrow200ExceptionsPlugin:b,getSsecPlugin:S,getLocationConstraintPlugin:w,getS3ExpiresMiddlewarePlugin:T,getCheckContentLengthHeaderPlugin:O,S3RestXmlProtocol:k,NODE_USE_ARN_REGION_CONFIG_OPTIONS:A,NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS:j,resolveS3Config:M,getValidateBucketNamePlugin:N,getAddExpectContinuePlugin:P,getRegionRedirectMiddlewarePlugin:F,getS3ExpressPlugin:I,getS3ExpressHttpSigningPlugin:ee}=(yie(),e(vie)),{getHttpAuthSchemeEndpointRuleSetPlugin:L,DefaultIdentityProviderConfig:te,getHttpSigningPlugin:ne,createPaginator:re}=(_w(),e(mne)),{normalizeProvider:ie,getSmithyContext:z,makeBuilder:ae,ServiceException:oe,NoOpLogger:se,emitWarningIfUnsupportedVersion:ce,loadConfigsForDefaultMode:le,getDefaultExtensionConfiguration:ue,resolveDefaultRuntimeConfig:de,Client:fe,createWaiter:pe,checkExceptions:me,WaiterState:ge,createAggregatedClient:_e}=(R(),e(et)),{Command:ve}=(R(),e(et)),{resolveDefaultsModeConfig:ye,loadConfig:xe,NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS:Se,NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS:Ce,NODE_REGION_CONFIG_OPTIONS:we,NODE_REGION_CONFIG_FILE_OPTIONS:Te,resolveRegionConfig:Ee}=(nt(),e(he)),{BinaryDecisionDiagram:De,EndpointCache:Oe,decideEndpoint:ke,customEndpointFunctions:Ae,resolveParams:je,getEndpointPlugin:Me,resolveEndpointConfig:Ne}=(Le(),e(be)),{eventStreamSerdeProvider:Fe,resolveEventStreamSerdeConfig:Ie}=(Pe(),e(Je)),{parseUrl:Re,getHttpHandlerExtensionConfiguration:ze,resolveHttpHandlerRuntimeConfig:Be,getContentLengthPlugin:Ve}=(mS(),e(pS)),{DEFAULT_RETRY_MODE:He,NODE_RETRY_MODE_CONFIG_OPTIONS:We,NODE_MAX_ATTEMPT_CONFIG_OPTIONS:Ge,resolveRetryConfig:Ke,getRetryPlugin:qe}=(yC(),e(Bte)),{TypeRegistry:Ye,getSchemaSerdePlugin:Xe}=(D(),e(Ue)),{resolveAwsSdkSigV4Config:Ze,resolveAwsSdkSigV4AConfig:Qe,AwsSdkSigV4Signer:$e,AwsSdkSigV4ASigner:tt,NODE_SIGV4A_CONFIG_OPTIONS:rt,NODE_AUTH_SCHEME_PREFERENCE_OPTIONS:it}=(qA(),e(WA)),{SignatureV4MultiRegion:at}=_O(),{defaultProvider:ot}=xse(),{Sha256:st,Md5:ct,readableStreamHasher:lt}=(C(),e(y)),{toUtf8:ut,fromUtf8:dt,sdkStreamMixin:ft,getAwsChunkedEncodingStream:pt,toBase64:mt,fromBase64:ht,calculateBodyLength:gt}=(x(),e(E)),{streamCollector:_t,NodeHttpHandler:vt}=ON(),{Sha1:yt}=(Dse(),e(Ese)),bt=`argv`,xt=`backend`,St=`authSchemes`,Ct=`disableDoubleEncoding`,wt=`signingName`,Tt=`signingRegion`,Et=`signingRegionSet`,Dt=`isSet`,Ot=`booleanEquals`,kt=`stringEquals`,At=`coalesce`,jt=`substring`,Mt=`aws.partition`,Nt=`partitionResult`,Pt=`accessPointSuffix`,Ft=`regionPrefix`,It=e=>`outpostId_ssa_`+e,Lt=`hardwareType`,Rt=`isValidHostLabel`,zt=`sigv4`,Bt=`aws.isVirtualHostableS3Bucket`,Vt=`getAttr`,Ht=`bucketArn`,Ut=`arnType`,Wt=`accesspoint`,Gt=e=>`accessPointName_ssa_`+e,Kt=`s3-object-lambda`,qt=`s3-outposts`,Jt=`bucketPartition`,Yt=`us-east-1`,Xt=`outpostType`,Zt=`name`,Qt=`{url#scheme}://{Bucket}.{url#authority}{url#path}`,$t=`{url#scheme}://{url#authority}{url#path}`,en=`{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}`,tn=`https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}`,nn=`https://{Bucket}.s3.{partitionResult#dnsSuffix}`,rn=e=>`{url#scheme}://{accessPointName_ssa_`+e+`}-{bucketArn#accountId}.{url#authority}{url#path}`,an=e=>"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName_ssa_"+e+"}`",on=`sigv4a`,sn=`{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}`,cn=`https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,ln=`https://s3.{partitionResult#dnsSuffix}`,un={ref:`UseFIPS`},dn={ref:`UseDualStack`},fn={ref:`Bucket`},pn={fn:Vt,[bt]:[{ref:Nt},Zt]},mn={ref:`url`},hn={ref:`Region`},gn={ref:Ht},_n={ref:Ut},vn={ref:`accessPointName_ssa_1`},yn={fn:Vt,[bt]:[gn,`region`]},bn={ref:Lt},xn={fn:Vt,[bt]:[gn,`service`]},Sn={fn:Vt,[bt]:[gn,`accountId`]},Cn={[xt]:`S3Express`,[St]:[{[Ct]:!0,[Zt]:`{_s3e_auth}`,[wt]:`s3express`,[Tt]:`{Region}`}]},wn={[xt]:`S3Express`,[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3express`,[Tt]:`{Region}`}]},Tn={[St]:[{[Ct]:!0,[Zt]:on,[wt]:qt,[Et]:[`*`]},{[Ct]:!0,[Zt]:zt,[wt]:qt,[Tt]:`{Region}`}]},En={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3`,[Tt]:Yt}]},Dn={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3`,[Tt]:`{Region}`}]},On={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:Kt,[Tt]:`{bucketArn#region}`}]},kn={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3`,[Tt]:`{bucketArn#region}`}]},An={[St]:[{[Ct]:!0,[Zt]:on,[wt]:qt,[Et]:[`*`]},{[Ct]:!0,[Zt]:zt,[wt]:qt,[Tt]:`{bucketArn#region}`}]},jn={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:Kt,[Tt]:`{Region}`}]},Mn=[hn],Nn=[{ref:`Endpoint`}],Pn=[fn],Fn=[fn,0,7,!0],In=[gn,`resourceId[1]`],Ln=[`*`],Rn={conditions:[[Dt,Mn],[Ot,[{ref:`Accelerate`},!0]],[Ot,[un,!0]],[Ot,[dn,!0]],[Dt,Nn],[Dt,Pn],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,0,6,!0]},``]},`--x-s3`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:Fn},``]},`--xa-s3`]],[Mt,Mn,Nt],[jt,Fn,Pt],[kt,[{ref:Pt},`--op-s3`]],[jt,[fn,8,12,!0],Ft],[jt,[fn,32,49,!0],It(2)],[jt,[fn,49,50,!0],Lt],[Ot,[{ref:`ForcePathStyle`},!0]],[kt,[pn,`aws-cn`]],[`ite`,[dn,`.dualstack`,``],`_s3e_ds`],[Rt,[{ref:It(2)},!1]],[`ite`,[un,`-fips`,``],`_s3e_fips`],[`ite`,[{fn:At,[bt]:[{ref:`DisableS3ExpressSessionAuth`},!1]},zt,`sigv4-s3express`],`_s3e_auth`],[Bt,[fn,!1]],[`parseURL`,Nn,`url`],[Ot,[{fn:At,[bt]:[{ref:`UseS3ExpressControlEndpoint`},!1]},!0]],[Bt,[fn,!0]],[kt,[{fn:Vt,[bt]:[mn,`scheme`]},`http`]],[Rt,[hn,!1]],[`aws.parseArn`,Pn,Ht],[Vt,[{fn:`split`,[bt]:[fn,`--`,0]},`[-2]`],`s3expressAvailabilityZoneId`],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,0,4,!1]},``]},`arn:`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,16,18,!0]},``]},`--`]],[Ot,[{fn:Vt,[bt]:[mn,`isIp`]},!0]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,21,23,!0]},``]},`--`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,27,29,!0]},``]},`--`]],[kt,[{ref:Ft},`beta`]],[`uriEncode`,Pn,`uri_encoded_bucket`],[Rt,[hn,!0]],[Ot,[{fn:At,[bt]:[{ref:`UseObjectLambdaEndpoint`},!1]},!0]],[Vt,[gn,`resourceId[0]`],Ut],[kt,[_n,``]],[kt,[_n,Wt]],[Vt,In,Gt(1)],[kt,[vn,``]],[kt,[yn,``]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,14,16,!0]},``]},`--`]],[kt,[bn,`e`]],[kt,[bn,`o`]],[kt,[hn,`aws-global`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,19,21,!0]},``]},`--`]],[kt,[xn,Kt]],[Ot,[{fn:At,[bt]:[{ref:`DisableAccessPoints`},!1]},!0]],[kt,[xn,qt]],[Mt,[yn],Jt],[Rt,[vn,!0]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,26,28,!0]},``]},`--`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,15,17,!0]},``]},`--`]],[Vt,[gn,`resourceId[4]`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,20,22,!0]},``]},`--`]],[Ot,[{ref:`UseGlobalEndpoint`},!0]],[kt,[hn,Yt]],[Vt,In,It(1)],[Ot,[{fn:At,[bt]:[{ref:`UseArnRegion`},!0]},!0]],[Rt,[{ref:It(1)},!1]],[Vt,[gn,`resourceId[2]`],Xt],[kt,[hn,yn]],[kt,[{fn:Vt,[bt]:[{ref:Jt},Zt]},pn]],[Ot,[{ref:`DisableMultiRegionAccessPoints`},!0]],[Rt,[yn,!0]],[kt,[{fn:Vt,[bt]:[gn,`partition`]},pn]],[kt,[Sn,``]],[kt,[xn,`s3`]],[Rt,[Sn,!1]],[Vt,[gn,`resourceId[3]`],Gt(2)],[Rt,[vn,!1]],[kt,[{ref:Xt},Wt]],[Rt,[{ref:Gt(2)},!1]]],results:[[-1],[-1,`Accelerate cannot be used with FIPS`],[-1,`Cannot set dual-stack in combination with a custom endpoint.`],[-1,`A custom endpoint cannot be combined with FIPS`],[-1,`A custom endpoint cannot be combined with S3 Accelerate`],[-1,`Partition does not support FIPS`],[-1,`S3Express does not support S3 Accelerate.`],[`{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}`,Cn],[Qt,Cn],[-1,`S3Express bucket name is not a valid virtual hostable name.`],[`https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,wn],[`https://{Bucket}.s3express{_s3e_fips}-{s3expressAvailabilityZoneId}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}`,Cn],[-1,`Unrecognized S3Express bucket name format.`],[$t,Cn],[`https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}`,wn],[-1,`Expected a endpoint to be specified but no endpoint was found`],[`https://{Bucket}.ec2.{url#authority}`,Tn],[`https://{Bucket}.ec2.s3-outposts.{Region}.{partitionResult#dnsSuffix}`,Tn],[`https://{Bucket}.op-{outpostId_ssa_2}.{url#authority}`,Tn],[`https://{Bucket}.op-{outpostId_ssa_2}.s3-outposts.{Region}.{partitionResult#dnsSuffix}`,Tn],[-1,`Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"`],[-1,`Invalid Outposts Bucket alias - it must be a valid bucket name.`],[-1,"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."],[-1,"Custom endpoint `{Endpoint}` was not a valid URI"],[-1,`S3 Accelerate cannot be used in this region`],[`https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}`,Dn],[`https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[en,En],[Qt,En],[en,Dn],[Qt,Dn],[tn,En],[tn,Dn],[nn,En],[nn,Dn],[`https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}`,Dn],[-1,`Invalid region: region was not a valid DNS name.`],[-1,`S3 Object Lambda does not support Dual-stack`],[-1,`S3 Object Lambda does not support S3 Accelerate`],[-1,`Access points are not supported for this operation`],[-1,"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`"],[-1,`Invalid ARN: Missing account id`],[rn(1),On],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}`,On],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}`,On],[-1,an(1)],[-1,"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`"],[-1,"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)"],[-1,"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`"],[-1,"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."],[-1,`Invalid ARN: bucket ARN is missing a region`],[-1,"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided"],[-1,"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`"],[-1,`Access Points do not support S3 Accelerate`],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[rn(1),kn],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[-1,`Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}`],[-1,`S3 MRAP does not support dual-stack`],[-1,`S3 MRAP does not support FIPS`],[-1,`S3 MRAP does not support S3 Accelerate`],[-1,`Invalid configuration: Multi-Region Access Point ARNs are disabled.`],[`https://{accessPointName_ssa_1}.accesspoint.s3-global.{partitionResult#dnsSuffix}`,{[St]:[{[Ct]:!0,name:on,[wt]:`s3`,[Et]:Ln}]}],[-1,"Client was configured for partition `{partitionResult#name}` but bucket referred to partition `{bucketArn#partition}`"],[-1,`Invalid Access Point Name`],[-1,`S3 Outposts does not support Dual-stack`],[-1,`S3 Outposts does not support FIPS`],[-1,`S3 Outposts does not support S3 Accelerate`],[-1,`Invalid Arn: Outpost Access Point ARN contains sub resources`],[`https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.{url#authority}`,An],[`https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}`,An],[-1,an(2)],[-1,"Expected an outpost type `accesspoint`, found {outpostType}"],[-1,`Invalid ARN: expected an access point name`],[-1,`Invalid ARN: Expected a 4-component resource`],[-1,"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId_ssa_1}`"],[-1,`Invalid ARN: The Outpost Id was not set`],[-1,`Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})`],[-1,`Invalid ARN: No ARN type specified`],[-1,"Invalid ARN: `{Bucket}` was not a valid ARN"],[-1,`Path-style addressing cannot be used with ARN buckets`],[`https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,En],[`https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[`https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,En],[`https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[`https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,En],[`https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[sn,En],[sn,Dn],[cn,En],[cn,Dn],[`https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[-1,`Path-style addressing cannot be used with S3 Accelerate`],[$t,jn],[`https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}`,jn],[`https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}`,jn],[`https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://s3-fips.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://s3-fips.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[$t,En],[$t,Dn],[ln,En],[ln,Dn],[`https://s3.{Region}.{partitionResult#dnsSuffix}`,Dn],[-1,`A region must be set when sending requests to S3.`]]},zn=new Int32Array([-1,1,-1,0,3,100000115,1,424,4,2,272,5,3,233,6,4,85,7,5,15,8,8,9,100000115,16,10,13,18,11,13,19,12,13,22,100000014,13,35,14,100000042,36,100000103,435,6,271,16,7,270,17,8,19,18,14,501,106,9,20,24,10,21,24,11,22,24,12,23,24,13,547,24,14,77,25,20,73,26,26,27,78,37,28,100000086,38,100000086,29,39,47,30,48,100000058,31,50,32,100000085,51,33,136,55,100000076,34,59,35,100000084,60,39,36,61,37,100000083,62,38,146,63,41,100000046,61,40,100000083,62,41,150,64,42,100000054,66,43,100000053,70,44,100000052,71,45,100000081,73,46,100000080,74,100000078,100000079,40,48,100000057,41,100000057,49,42,185,50,48,62,51,49,100000045,52,51,53,526,60,56,54,62,100000055,55,63,57,100000046,62,100000055,57,64,58,100000054,66,59,100000053,69,60,100000065,70,61,100000052,72,100000064,100000051,49,100000045,63,51,64,526,60,67,65,62,100000055,66,63,68,100000046,62,100000055,68,64,69,100000054,66,70,100000053,68,100000047,71,70,72,100000052,72,100000050,100000051,25,74,100000042,46,100000039,75,57,76,100000041,58,100000040,100000041,26,100000088,78,28,100000087,79,34,82,80,35,81,545,36,100000103,100000115,46,100000097,83,57,84,100000099,58,100000098,100000099,5,101,86,8,87,100000115,16,88,89,18,91,89,19,90,92,21,97,95,19,93,92,21,98,95,21,97,94,22,100000014,95,35,96,100000042,36,100000103,100000042,22,100000013,98,35,99,100000042,36,100000101,100,46,100000110,100000111,6,214,102,7,208,103,8,119,104,14,118,105,21,106,100000023,26,107,502,37,108,100000086,38,100000086,109,39,112,110,48,100000058,111,50,136,100000085,40,113,100000057,41,100000057,114,42,115,500,48,100000056,116,52,117,100000072,65,100000069,100000072,21,501,100000023,9,120,124,10,121,124,11,122,124,12,123,124,13,202,124,14,195,125,20,190,126,21,127,100000023,23,128,129,24,189,129,26,130,197,37,131,100000086,38,100000086,132,39,159,133,48,100000058,134,50,135,100000085,51,141,136,55,100000076,137,59,138,100000084,60,100000083,139,61,140,100000083,63,100000083,100000046,55,100000076,142,59,143,100000084,60,148,144,61,145,100000083,62,147,146,63,150,100000046,63,153,100000046,61,149,100000083,62,153,150,64,151,100000054,66,152,100000053,70,100000082,100000052,64,154,100000054,66,155,100000053,70,156,100000052,71,157,100000081,73,158,100000080,74,100000077,100000079,40,160,100000057,41,100000057,161,42,185,162,48,174,163,49,100000045,164,51,165,526,60,168,166,62,100000055,167,63,169,100000046,62,100000055,169,64,170,100000054,66,171,100000053,69,172,100000065,70,173,100000052,72,100000063,100000051,49,100000045,175,51,176,526,60,179,177,62,100000055,178,63,180,100000046,62,100000055,180,64,181,100000054,66,182,100000053,68,100000047,183,70,184,100000052,72,100000048,100000051,48,100000056,186,52,187,100000072,65,100000069,188,67,100000070,100000071,25,100000036,100000042,21,191,100000023,25,192,100000042,30,194,193,46,100000034,100000036,46,100000033,100000035,21,196,100000023,26,100000088,197,28,100000087,198,34,201,199,35,200,545,36,100000101,100000115,46,100000095,100000096,17,203,100000022,20,204,100000021,21,205,550,33,206,550,44,100000016,207,45,100000018,100000020,8,209,215,16,210,220,18,211,220,19,212,224,20,213,227,21,231,401,8,218,215,19,216,100000009,20,217,227,21,231,100000009,16,219,220,18,223,220,19,221,224,20,222,227,21,231,100000012,19,226,224,20,225,100000009,21,100000009,100000012,20,230,227,21,228,100000009,30,229,100000009,34,100000007,100000009,21,231,415,30,232,100000008,34,100000007,100000008,4,100000002,234,5,235,480,6,271,236,7,270,237,8,238,491,9,239,243,10,240,243,11,241,243,12,242,243,13,547,243,14,266,244,20,264,245,26,246,267,37,247,100000086,38,100000086,248,39,249,518,40,250,100000057,41,100000057,251,42,538,252,48,100000043,253,49,100000045,254,51,255,526,60,258,256,62,100000055,257,63,259,100000046,62,100000055,259,64,260,100000054,66,261,100000053,69,262,100000065,70,263,100000052,72,100000062,100000051,25,265,100000042,46,100000031,100000032,26,100000088,267,28,100000087,268,34,269,544,46,100000093,100000094,8,397,100000009,8,407,100000009,3,346,273,4,100000003,274,5,284,275,8,276,100000115,15,100000005,277,16,278,281,18,279,281,19,280,281,22,100000014,281,35,282,100000042,36,100000102,283,46,100000106,100000107,6,405,285,7,395,286,8,295,287,14,501,288,26,289,502,37,290,100000086,38,100000086,291,39,292,307,40,293,100000057,41,100000057,294,42,335,500,9,296,300,10,297,300,11,298,300,12,299,300,13,394,300,14,339,301,15,100000005,302,20,337,303,26,304,341,37,305,100000086,38,100000086,306,39,309,307,48,100000058,308,50,100000074,100000085,40,310,100000057,41,100000057,311,42,335,312,48,324,313,49,100000045,314,51,315,526,60,318,316,62,100000055,317,63,319,100000046,62,100000055,319,64,320,100000054,66,321,100000053,69,322,100000065,70,323,100000052,72,100000061,100000051,49,100000045,325,51,326,526,60,329,327,62,100000055,328,63,330,100000046,62,100000055,330,64,331,100000054,66,332,100000053,68,100000047,333,70,334,100000052,72,100000049,100000051,48,100000056,336,52,100000067,100000072,25,338,100000042,46,100000027,100000028,15,100000005,340,26,100000088,341,28,100000087,342,34,345,343,35,344,545,36,100000102,100000115,46,100000091,100000092,4,100000002,347,5,357,348,8,349,100000115,15,100000005,350,16,351,354,18,352,354,19,353,354,22,100000014,354,35,355,100000042,36,100000043,356,46,100000104,100000105,6,405,358,7,395,359,8,360,491,9,361,365,10,362,365,11,363,365,12,364,365,13,394,365,14,389,366,15,100000005,367,20,387,368,26,369,391,37,370,100000086,38,100000086,371,39,372,518,40,373,100000057,41,100000057,374,42,538,375,48,100000043,376,49,100000045,377,51,378,526,60,381,379,62,100000055,380,63,382,100000046,62,100000055,382,64,383,100000054,66,384,100000053,69,385,100000065,70,386,100000052,72,100000060,100000051,25,388,100000042,46,100000025,100000026,15,100000005,390,26,100000088,391,28,100000087,392,34,393,544,46,100000089,100000090,15,100000005,547,8,396,100000009,15,100000005,397,16,398,410,18,399,410,19,400,410,20,401,100000009,27,402,100000012,29,100000011,403,31,100000011,404,32,100000011,422,8,406,100000009,15,100000005,407,16,408,410,18,409,410,19,411,410,20,100000012,100000009,20,414,412,22,413,100000009,34,100000010,100000009,22,416,415,27,419,100000012,27,418,417,34,100000010,100000012,34,100000010,419,43,100000011,420,47,100000011,421,53,100000011,422,54,100000011,423,56,100000011,100000012,2,100000001,425,3,478,426,4,100000004,427,5,438,428,8,429,100000115,16,430,433,18,431,433,19,432,433,22,100000014,433,35,434,100000042,36,100000044,435,46,100000112,436,57,437,100000114,58,100000113,100000114,6,100000006,439,7,100000006,440,8,450,441,14,501,442,26,443,502,37,444,100000086,38,100000086,445,39,446,465,40,447,100000057,41,100000057,448,42,471,449,48,100000044,500,9,451,455,10,452,455,11,453,455,12,454,455,13,547,455,14,473,456,15,460,457,20,458,461,25,459,100000042,46,100000037,100000038,20,540,461,26,462,474,37,463,100000086,38,100000086,464,39,467,465,48,100000058,466,50,100000075,100000085,40,468,100000057,41,100000057,469,42,471,470,48,100000044,524,48,100000044,472,52,100000068,100000072,26,100000088,474,28,100000087,475,34,100000100,476,35,477,545,36,100000044,100000115,4,100000002,479,5,488,480,8,481,100000115,16,482,485,18,483,485,19,484,485,22,100000014,485,35,486,100000042,36,100000043,487,46,100000108,100000109,6,100000006,489,7,100000006,490,8,503,491,14,501,492,26,493,502,37,494,100000086,38,100000086,495,39,496,518,40,497,100000057,41,100000057,498,42,538,499,48,100000043,500,49,100000045,526,26,100000088,502,28,100000087,100000115,9,504,508,10,505,508,11,506,508,12,507,508,13,547,508,14,541,509,15,513,510,20,511,514,25,512,100000042,46,100000029,100000030,20,540,514,26,515,542,37,516,100000086,38,100000086,517,39,520,518,48,100000058,519,50,100000073,100000085,40,521,100000057,41,100000057,522,42,538,523,48,100000043,524,49,100000045,525,51,529,526,60,100000055,527,62,100000055,528,63,100000055,100000046,60,532,530,62,100000055,531,63,533,100000046,62,100000055,533,64,534,100000054,66,535,100000053,69,536,100000065,70,537,100000052,72,100000059,100000051,48,100000043,539,52,100000066,100000072,25,100000024,100000042,26,100000088,542,28,100000087,543,34,100000100,544,35,546,545,36,100000042,100000115,36,100000043,100000115,17,548,100000022,20,549,100000021,33,552,550,44,100000017,551,45,100000019,100000020,44,100000015,553,45,100000015,100000020]),Bn=De.from(zn,2,Rn.conditions,Rn.results),Vn=new Oe({size:50,params:[`Accelerate`,`Bucket`,`DisableAccessPoints`,`DisableMultiRegionAccessPoints`,`DisableS3ExpressSessionAuth`,`Endpoint`,`ForcePathStyle`,`Region`,`UseArnRegion`,`UseDualStack`,`UseFIPS`,`UseGlobalEndpoint`,`UseObjectLambdaEndpoint`,`UseS3ExpressControlEndpoint`]}),Hn=(e,t={})=>Vn.get(e,()=>ke(Bn,{endpointParams:e,logger:t.logger}));Ae.aws=o;let Un=(e=>async(t,n,r)=>{if(!r)throw Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let i=await e(t,n,r),a=z(n)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!a)throw Error(`getEndpointParameterInstructions() is not defined on '${n.commandName}'`);let o=await je(r,{getEndpointParameterInstructions:a},t);return Object.assign(i,o)})(async(e,t,n)=>({operation:z(t).operation,region:await ie(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}));function Wn(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`s3`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Gn(e){return{schemeId:`aws.auth#sigv4a`,signingProperties:{name:`s3`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}let Kn=((e,t,n)=>r=>{let i=e(r).properties?.authSchemes;if(!i)return t(r);let a=[];for(let e of i){let{name:t,properties:o={},...s}=e,c=t.toLowerCase();t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${t}' to '${c}'`);let l;if(c===`sigv4a`){l=`aws.auth#sigv4a`;let e=i.find(e=>{let t=e.name.toLowerCase();return t!==`sigv4a`&&t.startsWith(`sigv4`)});if(at.sigv4aDependency()===`none`&&e)continue}else if(c.startsWith(`sigv4`))l=`aws.auth#sigv4`;else throw Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${c}'`);let u=n[l];if(!u)throw Error(`Could not find HttpAuthOption create function for '${l}'`);let d=u(r);d.schemeId=l,d.signingProperties={...d.signingProperties||{},...s,...o},a.push(d)}return a})(Hn,e=>{let t=[];return e.operation,t.push(Wn(e)),t.push(Gn(e)),t},{"aws.auth#sigv4":Wn,"aws.auth#sigv4a":Gn}),qn=e=>{let t=Ze(e),n=Qe(t);return Object.assign(n,{authSchemePreference:ie(e.authSchemePreference??[])})},Jn=e=>Object.assign(e,{useFipsEndpoint:e.useFipsEndpoint??!1,useDualstackEndpoint:e.useDualstackEndpoint??!1,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,useGlobalEndpoint:e.useGlobalEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,defaultSigningName:`s3`,clientContextParams:e.clientContextParams??{}}),B=ae({ForcePathStyle:{type:`clientContextParams`,name:`forcePathStyle`},UseArnRegion:{type:`clientContextParams`,name:`useArnRegion`},DisableMultiRegionAccessPoints:{type:`clientContextParams`,name:`disableMultiregionAccessPoints`},Accelerate:{type:`clientContextParams`,name:`useAccelerateEndpoint`},DisableS3ExpressSessionAuth:{type:`clientContextParams`,name:`disableS3ExpressSessionAuth`},UseGlobalEndpoint:{type:`builtInParams`,name:`useGlobalEndpoint`},UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}},`AmazonS3`,`S3Client`,Me),Yn={Bucket:{type:`contextParams`,name:`Bucket`},Key:{type:`contextParams`,name:`Key`}},Xn={DisableS3ExpressSessionAuth:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`},Key:{type:`contextParams`,name:`Key`},CopySource:{type:`contextParams`,name:`CopySource`}},Zn={UseS3ExpressControlEndpoint:{type:`staticContextParams`,value:!0},DisableAccessPoints:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`}},Qn={UseS3ExpressControlEndpoint:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`}},$n={DisableS3ExpressSessionAuth:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`}},er={Bucket:{type:`contextParams`,name:`Bucket`}},tr={},nr={UseS3ExpressControlEndpoint:{type:`staticContextParams`,value:!0}},rr={Bucket:{type:`contextParams`,name:`Bucket`},Prefix:{type:`contextParams`,name:`Prefix`}},ir={UseObjectLambdaEndpoint:{type:`staticContextParams`,value:!0}},V=(e,t,n,r)=>[b(n)],ar=(e,t,n,r)=>[b(n),S(n)],or=(e,t,n,r)=>[b(n),w(n)],sr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!0})],cr=(e,t,n,r)=>[],lr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!0}),b(r)],ur=(e,t,r,i)=>[n(r,{requestChecksumRequired:!1,requestValidationModeMember:`ChecksumMode`,responseAlgorithms:[`CRC64NVME`,`CRC32`,`CRC32C`,`SHA256`,`SHA1`,`SHA512`,`MD5`,`XXHASH64`,`XXHASH3`,`XXHASH128`]})],dr=(e,t,r,i)=>[n(r,{requestChecksumRequired:!1,requestValidationModeMember:`ChecksumMode`,responseAlgorithms:[`CRC64NVME`,`CRC32`,`CRC32C`,`SHA256`,`SHA1`,`SHA512`,`MD5`,`XXHASH64`,`XXHASH3`,`XXHASH128`]}),S(r),T(r)],fr=(e,t,n,r)=>[b(n),S(n),T(n)],pr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1})],mr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1}),b(r)],eee=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1}),O(r),b(r),S(r)],hr=(e,t,n,r)=>[S(n)],gr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1}),b(r),S(r)];var _r=class e extends oe{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.s3#S3ServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}},vr=class e extends _r{static shapeId=`com.amazonaws.s3#NoSuchUpload`;name=`NoSuchUpload`;$fault=`client`;constructor(t){super({name:`NoSuchUpload`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},yr=class e extends _r{static shapeId=`com.amazonaws.s3#AccessDenied`;name=`AccessDenied`;$fault=`client`;constructor(t){super({name:`AccessDenied`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},br=class e extends _r{static shapeId=`com.amazonaws.s3#ObjectNotInActiveTierError`;name=`ObjectNotInActiveTierError`;$fault=`client`;constructor(t){super({name:`ObjectNotInActiveTierError`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},xr=class e extends _r{static shapeId=`com.amazonaws.s3#BucketAlreadyExists`;name=`BucketAlreadyExists`;$fault=`client`;constructor(t){super({name:`BucketAlreadyExists`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Sr=class e extends _r{static shapeId=`com.amazonaws.s3#BucketAlreadyOwnedByYou`;name=`BucketAlreadyOwnedByYou`;$fault=`client`;constructor(t){super({name:`BucketAlreadyOwnedByYou`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Cr=class e extends _r{static shapeId=`com.amazonaws.s3#NoSuchBucket`;name=`NoSuchBucket`;$fault=`client`;constructor(t){super({name:`NoSuchBucket`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},wr=class e extends _r{static shapeId=`com.amazonaws.s3#NoSuchKey`;name=`NoSuchKey`;$fault=`client`;constructor(t){super({name:`NoSuchKey`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Tr=class e extends _r{static shapeId=`com.amazonaws.s3#InvalidObjectState`;name=`InvalidObjectState`;$fault=`client`;StorageClass;AccessTier;constructor(t){super({name:`InvalidObjectState`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.StorageClass=t.StorageClass,this.AccessTier=t.AccessTier}},Er=class e extends _r{static shapeId=`com.amazonaws.s3#NoSuchAnnotation`;name=`NoSuchAnnotation`;$fault=`client`;constructor(t){super({name:`NoSuchAnnotation`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Dr=class e extends _r{static shapeId=`com.amazonaws.s3#NotFound`;name=`NotFound`;$fault=`client`;constructor(t){super({name:`NotFound`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Or=class e extends _r{static shapeId=`com.amazonaws.s3#InvalidPrefix`;name=`InvalidPrefix`;$fault=`client`;constructor(t){super({name:`InvalidPrefix`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},kr=class e extends _r{static shapeId=`com.amazonaws.s3#EncryptionTypeMismatch`;name=`EncryptionTypeMismatch`;$fault=`client`;constructor(t){super({name:`EncryptionTypeMismatch`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Ar=class e extends _r{static shapeId=`com.amazonaws.s3#InvalidRequest`;name=`InvalidRequest`;$fault=`client`;constructor(t){super({name:`InvalidRequest`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},jr=class e extends _r{static shapeId=`com.amazonaws.s3#InvalidWriteOffset`;name=`InvalidWriteOffset`;$fault=`client`;constructor(t){super({name:`InvalidWriteOffset`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Mr=class e extends _r{static shapeId=`com.amazonaws.s3#TooManyParts`;name=`TooManyParts`;$fault=`client`;constructor(t){super({name:`TooManyParts`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Nr=class e extends _r{static shapeId=`com.amazonaws.s3#AnnotationLimitExceeded`;name=`AnnotationLimitExceeded`;$fault=`client`;constructor(t){super({name:`AnnotationLimitExceeded`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Pr=class e extends _r{static shapeId=`com.amazonaws.s3#AnnotationNameTooLong`;name=`AnnotationNameTooLong`;$fault=`client`;constructor(t){super({name:`AnnotationNameTooLong`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},tee=class e extends _r{static shapeId=`com.amazonaws.s3#InvalidAnnotationName`;name=`InvalidAnnotationName`;$fault=`client`;constructor(t){super({name:`InvalidAnnotationName`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Fr=class e extends _r{static shapeId=`com.amazonaws.s3#UnsupportedMediaType`;name=`UnsupportedMediaType`;$fault=`client`;constructor(t){super({name:`UnsupportedMediaType`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},nee=class e extends _r{static shapeId=`com.amazonaws.s3#IdempotencyParameterMismatch`;name=`IdempotencyParameterMismatch`;$fault=`client`;constructor(t){super({name:`IdempotencyParameterMismatch`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},ree=class e extends _r{static shapeId=`com.amazonaws.s3#ObjectAlreadyInActiveTierError`;name=`ObjectAlreadyInActiveTierError`;$fault=`client`;constructor(t){super({name:`ObjectAlreadyInActiveTierError`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}};let Ir=`AccelerateConfiguration`,Lr=`AccessControlList`,Rr=`AnalyticsConfigurationList`,zr=`AccessControlPolicy`,Br=`AccessControlTranslation`,Vr=`AnalyticsConfiguration`,Hr=`AbortDate`,Ur=`AnnotationEntry`,Wr=`AbortIncompleteMultipartUpload`,Gr=`AccessKeyId`,Kr=`AnnotationName`,qr=`AnnotationPayload`,Jr=`AccessPointArn`,Yr=`AnnotationPrefix`,Xr=`AcceptRanges`,Zr=`AbortRuleId`,Qr=`AbacStatus`,$r=`AccessTier`,ei=`AnnotationTableConfiguration`,ti=`AnnotationTableConfigurationResult`,H=`Bucket`,ni=`BucketArn`,ri=`BlockedEncryptionTypes`,ii=`BypassGovernanceRetention`,ai=`BucketKeyEnabled`,oi=`BucketLoggingStatus`,si=`BytesProcessed`,ci=`BlockPublicAcls`,li=`BlockPublicPolicy`,ui=`BucketRegion`,di=`BytesReturned`,fi=`BytesScanned`,pi=`Body`,mi=`Buckets`,hi=`Checksum`,gi=`ChecksumAlgorithm`,_i=`CreateBucketConfiguration`,vi=`CacheControl`,yi=`ChecksumCRC32`,bi=`ChecksumCRC32C`,xi=`ChecksumCRC64NVME`,Si=`Cache-Control`,Ci=`Content-Disposition`,wi=`ContentDisposition`,Ti=`Content-Encoding`,Ei=`ContentEncoding`,Di=`ContentLanguage`,Oi=`Content-Language`,ki=`Content-Length`,Ai=`ContentLength`,ji=`Content-MD5`,Mi=`ChecksumMD5`,Ni=`ContentMD5`,Pi=`CompleteMultipartUpload`,Fi=`ChecksumMode`,Ii=`CopyObjectResult`,Li=`CORSConfiguration`,Ri=`CORSRules`,zi=`CORSRule`,Bi=`CopyPartResult`,Vi=`CommonPrefixes`,Hi=`ContentRange`,Ui=`Content-Range`,Wi=`ConfigurationState`,Gi=`ChecksumSHA1`,Ki=`ChecksumSHA256`,qi=`ChecksumSHA512`,Ji=`CopySourceIfMatch`,Yi=`CopySourceIfModifiedSince`,Xi=`CopySourceIfNoneMatch`,Zi=`CopySourceIfUnmodifiedSince`,Qi=`CopySourceSSECustomerAlgorithm`,$i=`CopySourceSSECustomerKey`,ea=`CopySourceSSECustomerKeyMD5`,ta=`CopySourceVersionId`,na=`CopySource`,ra=`ChecksumType`,ia=`Content-Type`,aa=`ContentType`,oa=`ContinuationToken`,sa=`ChecksumXXHASH64`,ca=`ChecksumXXHASH3`,la=`ChecksumXXHASH128`,ua=`Condition`,da=`Contents`,fa=`Credentials`,pa=`Days`,ma=`DeleteMarker`,ha=`DeleteMarkerReplication`,ga=`DeleteMarkers`,_a=`DisplayName`,va=`DefaultRetention`,ya=`DestinationResult`,ba=`Date`,xa=`Delete`,Sa=`Delimiter`,Ca=`Destination`,wa=`Details`,Ta=`Error`,Ea=`EventBridgeConfiguration`,U=`ExpectedBucketOwner`,Da=`EncryptionConfiguration`,Oa=`ErrorCode`,ka=`ErrorDocument`,Aa=`EventHoldDuration`,ja=`ErrorMessage`,Ma=`ExistingObjectReplication`,Na=`ExpiresString`,Pa=`ExpectedSourceBucketOwner`,Fa=`ETag`,Ia=`EncryptionType`,La=`EncodingType`,Ra=`ExpressionType`,za=`Encryption`,Ba=`Errors`,Va=`Events`,Ha=`Event`,Ua=`Expiration`,Wa=`Expires`,Ga=`Expression`,Ka=`Filter`,qa=`FieldDelimiter`,Ja=`FilterRule`,Ya=`Format`,Xa=`Grants`,Za=`GetBucketMetadataConfigurationResult`,Qa=`GetBucketMetadataTableConfigurationResult`,$a=`GrantFullControl`,eo=`GlacierJobParameters`,to=`GrantRead`,no=`GrantReadACP`,ro=`GrantWrite`,io=`GrantWriteACP`,ao=`Grant`,oo=`Grantee`,so=`HostName`,co=`InventoryConfiguration`,lo=`InventoryConfigurationList`,uo=`IndexDocument`,fo=`IsLatest`,po=`IfMatch`,mo=`If-Modified-Since`,ho=`IfModifiedSince`,go=`If-Match`,_o=`IfNoneMatch`,vo=`If-None-Match`,yo=`IgnorePublicAcls`,bo=`IsPublic`,xo=`InputSerialization`,So=`IsTruncated`,Co=`IntelligentTieringConfiguration`,wo=`IntelligentTieringConfigurationList`,To=`InventoryTableConfigurationResult`,Eo=`InventoryTableConfiguration`,Do=`IfUnmodifiedSince`,Oo=`If-Unmodified-Since`,ko=`Initiator`,Ao=`JSON`,jo=`JournalTableConfiguration`,Mo=`JournalTableConfigurationResult`,No=`KeyMarker`,Po=`Location`,Fo=`ListBucketResult`,Io=`LocationConstraint`,Lo=`LifecycleConfiguration`,Ro=`LoggingEnabled`,zo=`LegalHold`,Bo=`LastModified`,Vo=`Last-Modified`,Ho=`Metadata`,Uo=`MaxAnnotationResults`,Wo=`MetadataConfiguration`,Go=`MetricsConfigurationList`,Ko=`MetadataConfigurationResult`,qo=`MetricsConfiguration`,Jo=`MfaDelete`,Yo=`MetadataEntry`,Xo=`MFADelete`,Zo=`MaxKeys`,Qo=`MissingMeta`,$o=`MaxParts`,es=`MetadataTableConfiguration`,ts=`MetadataTableConfigurationResult`,ns=`MultipartUpload`,rs=`MaxUploads`,is=`Marker`,as=`Metrics`,os=`Mode`,ss=`Name`,cs=`NotificationConfiguration`,ls=`NextContinuationToken`,us=`NoncurrentDays`,ds=`NextKeyMarker`,fs=`NewerNoncurrentVersions`,ps=`NextPartNumberMarker`,ms=`NoncurrentVersionExpiration`,hs=`NoncurrentVersionTransition`,gs=`Owner`,_s=`OwnershipControls`,vs=`ObjectEncryption`,ys=`ObjectIfMatch`,bs=`OutputLocation`,xs=`ObjectLockConfiguration`,Ss=`ObjectLockEventHold`,Cs=`ObjectLockEventHoldDurationDays`,ws=`ObjectLockEventHoldDurationYears`,Ts=`ObjectLockLegalHoldStatus`,Es=`ObjectLockMode`,Ds=`ObjectLockRetainUntilDate`,Os=`ObjectOwnership`,ks=`OptionalObjectAttributes`,W=`ObjectSizeGreaterThan`,As=`ObjectSizeLessThan`,js=`OutputSerialization`,Ms=`ObjectVersionId`,Ns=`Object`,Ps=`Prefix`,Fs=`PublicAccessBlockConfiguration`,Is=`PartsCount`,Ls=`PartNumber`,Rs=`PartNumberMarker`,zs=`PartitionedPrefix`,Bs=`PolicyStatus`,Vs=`Parts`,Hs=`Part`,Us=`Payer`,Ws=`Payload`,Gs=`Permission`,Ks=`Policy`,qs=`Progress`,Js=`Protocol`,Ys=`QuoteCharacter`,G=`QueueConfiguration`,Xs=`QuoteEscapeCharacter`,Zs=`Role`,Qs=`RedirectAllRequestsTo`,$s=`RequestCharged`,ec=`ResponseCacheControl`,tc=`ResponseContentDisposition`,nc=`ResponseContentEncoding`,rc=`ResponseContentLanguage`,ic=`ResponseContentType`,ac=`ReplicationConfiguration`,oc=`RecordDelimiter`,sc=`ResponseExpires`,cc=`RecordExpiration`,lc=`ReplicaModifications`,uc=`RequestPayer`,dc=`RestrictPublicBuckets`,fc=`RequestPaymentConfiguration`,pc=`RequestProgress`,mc=`RoutingRules`,hc=`RestoreRequest`,gc=`RoutingRule`,_c=`ReplicationStatus`,vc=`RestoreStatus`,yc=`ReplicationTime`,bc=`Range`,xc=`Restore`,Sc=`Redirect`,Cc=`Retention`,wc=`Rules`,Tc=`Rule`,Ec=`Status`,Dc=`StartAfter`,Oc=`SecretAccessKey`,kc=`S3BucketDestination`,Ac=`StorageClass`,jc=`StorageClassAnalysis`,Mc=`SSE-KMS`,Nc=`SseKmsEncryptedObjects`,Pc=`SelectParameters`,Fc=`SimplePrefix`,Ic=`ScanRange`,Lc=`SSE-S3`,Rc=`SourceSelectionCriteria`,zc=`ServerSideEncryption`,Bc=`ServerSideEncryptionConfiguration`,Vc=`SSECustomerAlgorithm`,Hc=`SSECustomerKey`,Uc=`SSECustomerKeyMD5`,Wc=`SSEKMS`,Gc=`SSEKMSEncryptionContext`,Kc=`SSEKMSKeyId`,qc=`SSES3`,Jc=`SessionToken`,Yc=`S3TablesDestination`,Xc=`S3TablesDestinationResult`,Zc=`Size`,Qc=`Stats`,$c=`Tags`,el=`TableArn`,tl=`TableBucketArn`,nl=`TagCount`,rl=`TopicConfiguration`,il=`TransitionDefaultMinimumObjectSize`,al=`TargetGrants`,ol=`TableName`,sl=`TableNamespace`,cl=`TargetObjectKeyFormat`,ll=`TableStatus`,K=`TagSet`,ul=`Tagging`,dl=`Tier`,fl=`Tiering`,pl=`Token`,ml=`Transition`,hl=`Type`,gl=`UploadId`,_l=`UploadIdMarker`,vl=`UserMetadata`,yl=`Value`,bl=`VersioningConfiguration`,xl=`VersionId`,Sl=`VersionIdMarker`,Cl=`WebsiteConfiguration`,wl=`WebsiteRedirectLocation`,Tl=`Years`,El=`annotationName`,Dl=`accept-ranges`,Ol=`client`,kl=`continuation-token`,Al=`delimiter`,jl=`error`,Ml=`eventPayload`,Nl=`encoding-type`,q=`http`,Pl=`httpChecksum`,Fl=`httpError`,J=`httpHeader`,Il=`httpPayload`,Ll=`httpPrefixHeaders`,Y=`httpQuery`,Rl=`http://www.w3.org/2001/XMLSchema-instance`,zl=`key-marker`,Bl=`max-keys`,Vl=`prefix`,Hl=`partNumber`,Ul=`response-cache-control`,Wl=`response-content-disposition`,Gl=`response-content-encoding`,Kl=`response-content-language`,ql=`response-content-type`,Jl=`response-expires`,Yl=`smithy.ts.sdk.synthetic.com.amazonaws.s3`,Xl=`streaming`,Zl=`uploadId`,Ql=`versionId`,$l=`xmlFlattened`,X=`xmlName`,eu=`xmlNamespace`,tu=`x-amz-acl`,nu=`x-amz-abort-date`,ru=`x-amz-abort-rule-id`,iu=`x-amz-bucket-arn`,au=`x-amz-bypass-governance-retention`,ou=`x-amz-bucket-object-lock-token`,su=`x-amz-checksum-algorithm`,cu=`x-amz-checksum-crc32`,lu=`x-amz-checksum-crc32c`,uu=`x-amz-checksum-crc64nvme`,du=`x-amz-checksum-md5`,fu=`x-amz-checksum-mode`,pu=`x-amz-checksum-sha1`,mu=`x-amz-checksum-sha256`,hu=`x-amz-checksum-sha512`,gu=`x-amz-copy-source`,_u=`x-amz-copy-source-if-match`,vu=`x-amz-copy-source-if-modified-since`,yu=`x-amz-copy-source-if-none-match`,bu=`x-amz-copy-source-if-unmodified-since`,xu=`x-amz-copy-source-server-side-encryption-customer-algorithm`,Su=`x-amz-copy-source-server-side-encryption-customer-key`,Cu=`x-amz-copy-source-server-side-encryption-customer-key-MD5`,wu=`x-amz-copy-source-version-id`,Tu=`x-amz-checksum-type`,Eu=`x-amz-checksum-xxhash64`,Du=`x-amz-checksum-xxhash3`,Ou=`x-amz-checksum-xxhash128`,ku=`x-amz-delete-marker`,Au=`x-amz-expiration`,Z=`x-amz-expected-bucket-owner`,ju=`x-amz-grant-full-control`,Mu=`x-amz-grant-read`,Nu=`x-amz-grant-read-acp`,Pu=`x-amz-grant-write`,Fu=`x-amz-grant-write-acp`,Iu=`x-amz-meta-`,Lu=`x-amz-mfa`,Ru=`x-amz-missing-meta`,zu=`x-amz-mp-parts-count`,Bu=`x-amz-object-if-match`,Vu=`x-amz-object-lock-event-hold`,Hu=`x-amz-object-lock-event-hold-duration-days`,Uu=`x-amz-object-lock-event-hold-duration-years`,Wu=`x-amz-object-lock-legal-hold`,Gu=`x-amz-object-lock-mode`,Ku=`x-amz-object-lock-retain-until-date`,qu=`x-amz-optional-object-attributes`,Ju=`x-amz-object-version-id`,Yu=`x-amz-restore`,Xu=`x-amz-request-charged`,Zu=`x-amz-request-payer`,Qu=`x-amz-replication-status`,$u=`x-amz-storage-class`,ed=`x-amz-sdk-checksum-algorithm`,td=`x-amz-source-expected-bucket-owner`,nd=`x-amz-server-side-encryption`,rd=`x-amz-server-side-encryption-aws-kms-key-id`,id=`x-amz-server-side-encryption-bucket-key-enabled`,ad=`x-amz-server-side-encryption-context`,od=`x-amz-server-side-encryption-customer-algorithm`,sd=`x-amz-server-side-encryption-customer-key`,cd=`x-amz-server-side-encryption-customer-key-MD5`,ld=`x-amz-tagging`,ud=`x-amz-tagging-count`,dd=`x-amz-transition-default-minimum-object-size`,fd=`x-amz-version-id`,pd=`x-amz-website-redirect-location`,Q=`com.amazonaws.s3`,md=new Ye(Yl);var hd=[-3,Yl,`S3ServiceException`,0,[],[]];md.registerError(hd,_r);let gd=new Ye(Q);var _d=[-3,Q,`AccessDenied`,{[jl]:Ol,[Fl]:403},[],[]];gd.registerError(_d,yr);var vd=[-3,Q,`AnnotationLimitExceeded`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(vd,Nr);var yd=[-3,Q,`AnnotationNameTooLong`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(yd,Pr);var bd=[-3,Q,`BucketAlreadyExists`,{[jl]:Ol,[Fl]:409},[],[]];gd.registerError(bd,xr);var xd=[-3,Q,`BucketAlreadyOwnedByYou`,{[jl]:Ol,[Fl]:409},[],[]];gd.registerError(xd,Sr);var Sd=[-3,Q,`EncryptionTypeMismatch`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(Sd,kr);var Cd=[-3,Q,`IdempotencyParameterMismatch`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(Cd,nee);var wd=[-3,Q,`InvalidAnnotationName`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(wd,tee);var Td=[-3,Q,`InvalidObjectState`,{[jl]:Ol,[Fl]:403},[Ac,$r],[0,0]];gd.registerError(Td,Tr);var Ed=[-3,Q,`InvalidPrefix`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(Ed,Or);var Dd=[-3,Q,`InvalidRequest`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(Dd,Ar);var Od=[-3,Q,`InvalidWriteOffset`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(Od,jr);var kd=[-3,Q,`NoSuchAnnotation`,{[jl]:Ol,[Fl]:404},[],[]];gd.registerError(kd,Er);var Ad=[-3,Q,`NoSuchBucket`,{[jl]:Ol,[Fl]:404},[],[]];gd.registerError(Ad,Cr);var jd=[-3,Q,`NoSuchKey`,{[jl]:Ol,[Fl]:404},[],[]];gd.registerError(jd,wr);var Md=[-3,Q,`NoSuchUpload`,{[jl]:Ol,[Fl]:404},[],[]];gd.registerError(Md,vr);var Nd=[-3,Q,`NotFound`,{[jl]:Ol},[],[]];gd.registerError(Nd,Dr);var Pd=[-3,Q,`ObjectAlreadyInActiveTierError`,{[jl]:Ol,[Fl]:403},[],[]];gd.registerError(Pd,ree);var Fd=[-3,Q,`ObjectNotInActiveTierError`,{[jl]:Ol,[Fl]:403},[],[]];gd.registerError(Fd,br);var Id=[-3,Q,`TooManyParts`,{[jl]:Ol,[Fl]:400},[],[]];gd.registerError(Id,Mr);var Ld=[-3,Q,`UnsupportedMediaType`,{[jl]:Ol,[Fl]:415},[],[]];gd.registerError(Ld,Fr);let Rd=[md,gd];var zd=[0,Q,$i,8,0],Bd=[0,Q,`NonEmptyKmsKeyArnString`,8,0],Vd=[0,Q,`SessionCredentialValue`,8,0],Hd=[0,Q,Hc,8,0],Ud=[0,Q,Gc,8,0],Wd=[0,Q,Kc,8,0],Gd=[0,Q,`StreamingBlob`,{[Xl]:1},42],Kd=[3,Q,Qr,0,[Ec],[0]],iee=[3,Q,Wr,0,[`DaysAfterInitiation`],[1]],aee=[3,Q,`AbortMultipartUploadOutput`,0,[$s],[[0,{[J]:Xu}]]],oee=[3,Q,`AbortMultipartUploadRequest`,0,[H,`Key`,gl,uc,U,`IfMatchInitiatedTime`],[[0,1],[0,1],[0,{[Y]:Zl}],[0,{[J]:Zu}],[0,{[J]:Z}],[6,{[J]:`x-amz-if-match-initiated-time`}]],3],qd=[3,Q,Ir,0,[Ec],[0]],Jd=[3,Q,zr,0,[Xa,gs],[[()=>k_,{[X]:Lr}],()=>vh]],see=[3,Q,Br,0,[gs],[0],1],Yd=[3,Q,`AnalyticsAndOperator`,0,[Ps,$c],[0,[()=>J_,{[$l]:1,[X]:`Tag`}]]],Xd=[3,Q,Vr,0,[`Id`,jc,Ka],[0,()=>Xg,[()=>ev,0]],2],cee=[3,Q,`AnalyticsExportDestination`,0,[kc],[()=>lee],1],lee=[3,Q,`AnalyticsS3BucketDestination`,0,[Ya,H,`BucketAccountId`,Ps],[0,0,0,0],2],Zd=[3,Q,Ur,0,[Kr,Bo,Zc,Fa,gi,_c],[0,4,1,0,[64,{[$l]:1}],0],3],uee=[3,Q,ei,0,[Wi,Da,Zs],[0,()=>$m,0],1],Qd=[3,Q,ti,0,[Wi,ll,Ta,ol,el,Zs],[0,0,()=>Of,0,0,0],1],dee=[3,Q,`AnnotationTableConfigurationUpdates`,0,[Wi,Da,Zs],[0,()=>$m,0],1],$d=[3,Q,ri,0,[Ia],[[()=>E_,{[$l]:1}]]],fee=[3,Q,H,0,[ss,`CreationDate`,ui,ni],[0,4,0,0]],ef=[3,Q,`BucketInfo`,0,[`DataRedundancy`,hl],[0,0]],tf=[3,Q,`BucketLifecycleConfiguration`,0,[wc],[[()=>P_,{[$l]:1,[X]:Tc}]],1],nf=[3,Q,oi,0,[Ro],[[()=>qm,0]]],rf=[3,Q,hi,0,[yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra],[0,0,0,0,0,0,0,0,0,0,0]],af=[3,Q,`CommonPrefix`,0,[Ps],[0]],of=[3,Q,`CompletedMultipartUpload`,0,[Vs],[[()=>S_,{[$l]:1,[X]:Hs}]]],pee=[3,Q,`CompletedPart`,0,[Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,Ls],[0,0,0,0,0,0,0,0,0,0,0,1]],mee=[3,Q,`CompleteMultipartUploadOutput`,{[X]:`CompleteMultipartUploadResult`},[Po,H,`Key`,Ua,Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,zc,xl,Kc,ai,$s],[0,0,0,[0,{[J]:Au}],0,0,0,0,0,0,0,0,0,0,0,0,[0,{[J]:nd}],[0,{[J]:fd}],[()=>Wd,{[J]:rd}],[2,{[J]:id}],[0,{[J]:Xu}]]],sf=[3,Q,`CompleteMultipartUploadRequest`,0,[H,`Key`,gl,ns,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,`MpuObjectSize`,uc,U,po,_o,Vc,Hc,Uc],[[0,1],[0,1],[0,{[Y]:Zl}],[()=>of,{[Il]:1,[X]:Pi}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:Tu}],[1,{[J]:`x-amz-mp-object-size`}],[0,{[J]:Zu}],[0,{[J]:Z}],[0,{[J]:go}],[0,{[J]:vo}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}]],3],cf=[3,Q,ua,0,[`HttpErrorCodeReturnedEquals`,`KeyPrefixEquals`],[0,0]],hee=[3,Q,`ContinuationEvent`,0,[],[]],gee=[3,Q,`CopyObjectOutput`,0,[Ii,Ua,ta,xl,zc,Vc,Uc,Kc,Gc,ai,$s],[[()=>vee,16],[0,{[J]:Au}],[0,{[J]:wu}],[0,{[J]:fd}],[0,{[J]:nd}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}],[0,{[J]:Xu}]]],_ee=[3,Q,`CopyObjectRequest`,0,[H,na,`Key`,`ACL`,vi,gi,wi,Ei,Di,aa,Ji,Yi,Xi,Zi,Wa,$a,to,no,io,po,_o,Ho,`MetadataDirective`,`TaggingDirective`,`AnnotationDirective`,zc,Ac,wl,Vc,Hc,Uc,Kc,Gc,ai,Qi,$i,ea,uc,ul,Es,Ds,Ts,Ss,Cs,ws,U,Pa],[[0,1],[0,{[J]:gu}],[0,1],[0,{[J]:tu}],[0,{[J]:Si}],[0,{[J]:su}],[0,{[J]:Ci}],[0,{[J]:Ti}],[0,{[J]:Oi}],[0,{[J]:ia}],[0,{[J]:_u}],[4,{[J]:vu}],[0,{[J]:yu}],[4,{[J]:bu}],[4,{[J]:Wa}],[0,{[J]:ju}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Fu}],[0,{[J]:go}],[0,{[J]:vo}],[128,{[Ll]:Iu}],[0,{[J]:`x-amz-metadata-directive`}],[0,{[J]:`x-amz-tagging-directive`}],[0,{[J]:`x-amz-object-annotation-directive`}],[0,{[J]:nd}],[0,{[J]:$u}],[0,{[J]:pd}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}],[0,{[J]:xu}],[()=>zd,{[J]:Su}],[0,{[J]:Cu}],[0,{[J]:Zu}],[0,{[J]:ld}],[0,{[J]:Gu}],[5,{[J]:Ku}],[0,{[J]:Wu}],[0,{[J]:Vu}],[1,{[J]:Hu}],[1,{[J]:Uu}],[0,{[J]:Z}],[0,{[J]:td}]],3],vee=[3,Q,Ii,0,[Fa,Bo,ra,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la],[0,4,0,0,0,0,0,0,0,0,0,0,0]],yee=[3,Q,Bi,0,[Fa,Bo,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la],[0,4,0,0,0,0,0,0,0,0,0,0]],lf=[3,Q,Li,0,[Ri],[[()=>C_,{[$l]:1,[X]:zi}]],1],bee=[3,Q,zi,0,[`AllowedMethods`,`AllowedOrigins`,`ID`,`AllowedHeaders`,`ExposeHeaders`,`MaxAgeSeconds`],[[64,{[$l]:1,[X]:`AllowedMethod`}],[64,{[$l]:1,[X]:`AllowedOrigin`}],0,[64,{[$l]:1,[X]:`AllowedHeader`}],[64,{[$l]:1,[X]:`ExposeHeader`}],1],2],xee=[3,Q,_i,0,[Io,Po,H,$c],[0,()=>Km,()=>ef,[()=>J_,0]]],uf=[3,Q,`CreateBucketMetadataConfigurationRequest`,0,[H,Wo,Ni,gi,U],[[0,1],[()=>Jm,{[Il]:1,[X]:Wo}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],df=[3,Q,`CreateBucketMetadataTableConfigurationRequest`,0,[H,es,Ni,gi,U],[[0,1],[()=>Zm,{[Il]:1,[X]:es}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],See=[3,Q,`CreateBucketOutput`,0,[Po,ni],[[0,{[J]:Po}],[0,{[J]:iu}]]],Cee=[3,Q,`CreateBucketRequest`,0,[H,`ACL`,_i,$a,to,no,ro,io,`ObjectLockEnabledForBucket`,Os,`BucketNamespace`],[[0,1],[0,{[J]:tu}],[()=>xee,{[Il]:1,[X]:_i}],[0,{[J]:ju}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Fu}],[2,{[J]:`x-amz-bucket-object-lock-enabled`}],[0,{[J]:`x-amz-object-ownership`}],[0,{[J]:`x-amz-bucket-namespace`}]],1],wee=[3,Q,`CreateMultipartUploadOutput`,{[X]:`InitiateMultipartUploadResult`},[Hr,Zr,H,`Key`,gl,zc,Vc,Uc,Kc,Gc,ai,$s,gi,ra],[[4,{[J]:nu}],[0,{[J]:ru}],[0,{[X]:H}],0,0,[0,{[J]:nd}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}],[0,{[J]:Xu}],[0,{[J]:su}],[0,{[J]:Tu}]]],Tee=[3,Q,`CreateMultipartUploadRequest`,0,[H,`Key`,`ACL`,vi,wi,Ei,Di,aa,Wa,$a,to,no,io,Ho,zc,Ac,wl,Vc,Hc,Uc,Kc,Gc,ai,uc,ul,Es,Ds,Ts,Ss,Cs,ws,U,gi,ra],[[0,1],[0,1],[0,{[J]:tu}],[0,{[J]:Si}],[0,{[J]:Ci}],[0,{[J]:Ti}],[0,{[J]:Oi}],[0,{[J]:ia}],[4,{[J]:Wa}],[0,{[J]:ju}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Fu}],[128,{[Ll]:Iu}],[0,{[J]:nd}],[0,{[J]:$u}],[0,{[J]:pd}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}],[0,{[J]:Zu}],[0,{[J]:ld}],[0,{[J]:Gu}],[5,{[J]:Ku}],[0,{[J]:Wu}],[0,{[J]:Vu}],[1,{[J]:Hu}],[1,{[J]:Uu}],[0,{[J]:Z}],[0,{[J]:su}],[0,{[J]:Tu}]],2],Eee=[3,Q,`CreateSessionOutput`,{[X]:`CreateSessionResult`},[fa,zc,Kc,Gc,ai],[[()=>Vg,{[X]:fa}],[0,{[J]:nd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}]],1],Dee=[3,Q,`CreateSessionRequest`,0,[H,`SessionMode`,zc,Kc,Gc,ai],[[0,1],[0,{[J]:`x-amz-create-session-mode`}],[0,{[J]:nd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}]],1],Oee=[3,Q,`CSVInput`,0,[`FileHeaderInfo`,`Comments`,Xs,oc,qa,Ys,`AllowQuotedRecordDelimiter`],[0,0,0,0,0,0,2]],kee=[3,Q,`CSVOutput`,0,[`QuoteFields`,Xs,oc,qa,Ys],[0,0,0,0,0]],Aee=[3,Q,va,0,[os,pa,Tl,`DefaultEventHold`],[0,1,1,()=>jf]],jee=[3,Q,xa,0,[`Objects`,`Quiet`],[[()=>R_,{[$l]:1,[X]:Ns}],2],1],Mee=[3,Q,`DeleteBucketAnalyticsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Nee=[3,Q,`DeleteBucketCorsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Pee=[3,Q,`DeleteBucketEncryptionRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Fee=[3,Q,`DeleteBucketIntelligentTieringConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Iee=[3,Q,`DeleteBucketInventoryConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Lee=[3,Q,`DeleteBucketLifecycleRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Ree=[3,Q,`DeleteBucketMetadataConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],zee=[3,Q,`DeleteBucketMetadataTableConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Bee=[3,Q,`DeleteBucketMetricsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Vee=[3,Q,`DeleteBucketOwnershipControlsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Hee=[3,Q,`DeleteBucketPolicyRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Uee=[3,Q,`DeleteBucketReplicationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Wee=[3,Q,`DeleteBucketRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],ff=[3,Q,`DeleteBucketTaggingRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],pf=[3,Q,`DeleteBucketWebsiteRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],mf=[3,Q,`DeletedObject`,0,[`Key`,xl,ma,`DeleteMarkerVersionId`],[0,0,2,0]],hf=[3,Q,`DeleteMarkerEntry`,0,[gs,`Key`,xl,fo,Bo],[()=>vh,0,0,2,4]],gf=[3,Q,ha,0,[Ec],[0]],Gee=[3,Q,`DeleteObjectAnnotationOutput`,0,[Ms,$s],[[0,{[J]:Ju}],[0,{[J]:Xu}]]],Kee=[3,Q,`DeleteObjectAnnotationRequest`,0,[H,`Key`,Kr,xl,uc,U,ys],[[0,1],[0,1],[0,{[Y]:El}],[0,{[Y]:Ql}],[0,{[J]:Zu}],[0,{[J]:Z}],[0,{[J]:Bu}]],3],qee=[3,Q,`DeleteObjectOutput`,0,[ma,xl,$s],[[2,{[J]:ku}],[0,{[J]:fd}],[0,{[J]:Xu}]]],_f=[3,Q,`DeleteObjectRequest`,0,[H,`Key`,`MFA`,xl,uc,ii,U,po,`IfMatchLastModifiedTime`,`IfMatchSize`],[[0,1],[0,1],[0,{[J]:Lu}],[0,{[Y]:Ql}],[0,{[J]:Zu}],[2,{[J]:au}],[0,{[J]:Z}],[0,{[J]:go}],[6,{[J]:`x-amz-if-match-last-modified-time`}],[1,{[J]:`x-amz-if-match-size`}]],2],vf=[3,Q,`DeleteObjectsOutput`,{[X]:`DeleteResult`},[`Deleted`,$s,Ba],[[()=>w_,{[$l]:1}],[0,{[J]:Xu}],[()=>D_,{[$l]:1,[X]:Ta}]]],yf=[3,Q,`DeleteObjectsRequest`,0,[H,xa,`MFA`,uc,ii,U,gi],[[0,1],[()=>jee,{[Il]:1,[X]:xa}],[0,{[J]:Lu}],[0,{[J]:Zu}],[2,{[J]:au}],[0,{[J]:Z}],[0,{[J]:ed}]],2],bf=[3,Q,`DeleteObjectTaggingOutput`,0,[xl],[[0,{[J]:fd}]]],xf=[3,Q,`DeleteObjectTaggingRequest`,0,[H,`Key`,xl,U],[[0,1],[0,1],[0,{[Y]:Ql}],[0,{[J]:Z}]],2],Sf=[3,Q,`DeletePublicAccessBlockRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Cf=[3,Q,Ca,0,[H,`Account`,Ac,Br,Da,yc,as],[0,0,0,()=>see,()=>Ef,()=>xg,()=>eh],1],wf=[3,Q,ya,0,[`TableBucketType`,tl,sl],[0,0,0]],Tf=[3,Q,za,0,[Ia,`KMSKeyId`,`KMSContext`],[0,[()=>Wd,0],0],1],Ef=[3,Q,Da,0,[`ReplicaKmsKeyID`],[0]],Df=[3,Q,`EndEvent`,0,[],[]],Jee=[3,Q,Ta,0,[`Key`,xl,`Code`,`Message`],[0,0,0,0]],Of=[3,Q,`ErrorDetails`,0,[Oa,ja],[0,0]],kf=[3,Q,ka,0,[`Key`],[0],1],Af=[3,Q,Ea,0,[],[]],jf=[3,Q,Aa,0,[pa,Tl],[1,1]],Mf=[3,Q,Ma,0,[Ec],[0],1],Nf=[3,Q,Ja,0,[ss,yl],[0,0]],Pf=[3,Q,`GetBucketAbacOutput`,0,[Qr],[[()=>Kd,16]]],Ff=[3,Q,`GetBucketAbacRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],If=[3,Q,`GetBucketAccelerateConfigurationOutput`,{[X]:Ir},[Ec,$s],[0,[0,{[J]:Xu}]]],Lf=[3,Q,`GetBucketAccelerateConfigurationRequest`,0,[H,U,uc],[[0,1],[0,{[J]:Z}],[0,{[J]:Zu}]],1],Rf=[3,Q,`GetBucketAclOutput`,{[X]:zr},[gs,Xa],[()=>vh,[()=>k_,{[X]:Lr}]]],zf=[3,Q,`GetBucketAclRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Bf=[3,Q,`GetBucketAnalyticsConfigurationOutput`,0,[Vr],[[()=>Xd,16]]],Vf=[3,Q,`GetBucketAnalyticsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Hf=[3,Q,`GetBucketCorsOutput`,{[X]:Li},[Ri],[[()=>C_,{[$l]:1,[X]:zi}]]],Uf=[3,Q,`GetBucketCorsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Wf=[3,Q,`GetBucketEncryptionOutput`,0,[Bc],[[()=>zg,16]]],Gf=[3,Q,`GetBucketEncryptionRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Kf=[3,Q,`GetBucketIntelligentTieringConfigurationOutput`,0,[Co],[[()=>im,16]]],qf=[3,Q,`GetBucketIntelligentTieringConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Jf=[3,Q,`GetBucketInventoryConfigurationOutput`,0,[co],[[()=>om,16]]],Yf=[3,Q,`GetBucketInventoryConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Xf=[3,Q,`GetBucketLifecycleConfigurationOutput`,{[X]:Lo},[wc,il],[[()=>P_,{[$l]:1,[X]:Tc}],[0,{[J]:dd}]]],Zf=[3,Q,`GetBucketLifecycleConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Yee=[3,Q,`GetBucketLocationOutput`,{[X]:Io},[Io],[0]],Qf=[3,Q,`GetBucketLocationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],$f=[3,Q,`GetBucketLoggingOutput`,{[X]:oi},[Ro],[[()=>qm,0]]],ep=[3,Q,`GetBucketLoggingRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],tp=[3,Q,`GetBucketMetadataConfigurationOutput`,0,[Za],[[()=>rp,16]]],np=[3,Q,`GetBucketMetadataConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],rp=[3,Q,Za,0,[Ko],[()=>Ym],1],ip=[3,Q,`GetBucketMetadataTableConfigurationOutput`,0,[Qa],[[()=>op,16]]],ap=[3,Q,`GetBucketMetadataTableConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],op=[3,Q,Qa,0,[ts,Ec,Ta],[()=>Qm,0,()=>Of],2],sp=[3,Q,`GetBucketMetricsConfigurationOutput`,0,[qo],[[()=>nh,16]]],cp=[3,Q,`GetBucketMetricsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],lp=[3,Q,`GetBucketNotificationConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],up=[3,Q,`GetBucketOwnershipControlsOutput`,0,[_s],[[()=>yh,16]]],dp=[3,Q,`GetBucketOwnershipControlsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],fp=[3,Q,`GetBucketPolicyOutput`,0,[Ks],[[0,16]]],pp=[3,Q,`GetBucketPolicyRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],mp=[3,Q,`GetBucketPolicyStatusOutput`,0,[Bs],[[()=>wh,16]]],hp=[3,Q,`GetBucketPolicyStatusRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],gp=[3,Q,`GetBucketReplicationOutput`,0,[ac],[[()=>_g,16]]],_p=[3,Q,`GetBucketReplicationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],vp=[3,Q,`GetBucketRequestPaymentOutput`,{[X]:fc},[Us],[0]],yp=[3,Q,`GetBucketRequestPaymentRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],bp=[3,Q,`GetBucketTaggingOutput`,{[X]:ul},[K],[[()=>J_,0]],1],xp=[3,Q,`GetBucketTaggingRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Sp=[3,Q,`GetBucketVersioningOutput`,{[X]:bl},[Ec,Xo],[0,[0,{[X]:Jo}]]],Cp=[3,Q,`GetBucketVersioningRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],wp=[3,Q,`GetBucketWebsiteOutput`,{[X]:Cl},[Qs,uo,ka,mc],[()=>pg,()=>em,()=>kf,[()=>K_,0]]],Tp=[3,Q,`GetBucketWebsiteRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Ep=[3,Q,`GetObjectAclOutput`,{[X]:zr},[gs,Xa,$s],[()=>vh,[()=>k_,{[X]:Lr}],[0,{[J]:Xu}]]],Dp=[3,Q,`GetObjectAclRequest`,0,[H,`Key`,xl,uc,U],[[0,1],[0,1],[0,{[Y]:Ql}],[0,{[J]:Zu}],[0,{[J]:Z}]],2],Op=[3,Q,`GetObjectAnnotationOutput`,0,[qr,Ms,Bo,Ai,Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,zc,$s,_c],[[()=>Gd,16],[0,{[J]:Ju}],[4,{[J]:Vo}],[1,{[J]:ki}],[0,{[J]:Fa}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:Tu}],[0,{[J]:nd}],[0,{[J]:Xu}],[0,{[J]:Qu}]]],kp=[3,Q,`GetObjectAnnotationRequest`,0,[H,`Key`,Kr,xl,uc,U,Fi],[[0,1],[0,1],[0,{[Y]:El}],[0,{[Y]:Ql}],[0,{[J]:Zu}],[0,{[J]:Z}],[0,{[J]:fu}]],3],Ap=[3,Q,`GetObjectAttributesOutput`,{[X]:`GetObjectAttributesResponse`},[ma,Bo,xl,$s,Fa,hi,`ObjectParts`,Ac,`ObjectSize`],[[2,{[J]:ku}],[4,{[J]:Vo}],[0,{[J]:fd}],[0,{[J]:Xu}],0,()=>rf,[()=>jp,0],0,1]],jp=[3,Q,`GetObjectAttributesParts`,0,[`TotalPartsCount`,Rs,ps,$o,So,Vs],[[1,{[X]:Is}],0,0,1,2,[()=>U_,{[$l]:1,[X]:Hs}]]],Mp=[3,Q,`GetObjectAttributesRequest`,0,[H,`Key`,`ObjectAttributes`,xl,$o,Rs,Vc,Hc,Uc,uc,U],[[0,1],[0,1],[64,{[J]:`x-amz-object-attributes`}],[0,{[Y]:Ql}],[1,{[J]:`x-amz-max-parts`}],[0,{[J]:`x-amz-part-number-marker`}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[0,{[J]:Zu}],[0,{[J]:Z}]],3],Np=[3,Q,`GetObjectLegalHoldOutput`,0,[zo],[[()=>dh,{[Il]:1,[X]:zo}]]],Pp=[3,Q,`GetObjectLegalHoldRequest`,0,[H,`Key`,xl,uc,U],[[0,1],[0,1],[0,{[Y]:Ql}],[0,{[J]:Zu}],[0,{[J]:Z}]],2],Fp=[3,Q,`GetObjectLockConfigurationOutput`,0,[xs],[[()=>uh,16]]],Ip=[3,Q,`GetObjectLockConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Lp=[3,Q,`GetObjectOutput`,0,[pi,ma,Xr,Ua,xc,Bo,Ai,Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,Qo,xl,vi,wi,Ei,Di,Hi,aa,Wa,Na,wl,zc,Ho,Vc,Uc,Kc,ai,Ac,$s,_c,Is,nl,Es,Ds,Ts,Ss,Cs,ws],[[()=>Gd,16],[2,{[J]:ku}],[0,{[J]:Dl}],[0,{[J]:Au}],[0,{[J]:Yu}],[4,{[J]:Vo}],[1,{[J]:ki}],[0,{[J]:Fa}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:Tu}],[1,{[J]:Ru}],[0,{[J]:fd}],[0,{[J]:Si}],[0,{[J]:Ci}],[0,{[J]:Ti}],[0,{[J]:Oi}],[0,{[J]:Ui}],[0,{[J]:ia}],[4,{[J]:Wa}],[0,{[J]:Na}],[0,{[J]:pd}],[0,{[J]:nd}],[128,{[Ll]:Iu}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[2,{[J]:id}],[0,{[J]:$u}],[0,{[J]:Xu}],[0,{[J]:Qu}],[1,{[J]:zu}],[1,{[J]:ud}],[0,{[J]:Gu}],[5,{[J]:Ku}],[0,{[J]:Wu}],[0,{[J]:Vu}],[1,{[J]:Hu}],[1,{[J]:Uu}]]],Rp=[3,Q,`GetObjectRequest`,0,[H,`Key`,po,ho,_o,Do,bc,ec,tc,nc,rc,ic,sc,xl,Vc,Hc,Uc,uc,Ls,U,Fi],[[0,1],[0,1],[0,{[J]:go}],[4,{[J]:mo}],[0,{[J]:vo}],[4,{[J]:Oo}],[0,{[J]:bc}],[0,{[Y]:Ul}],[0,{[Y]:Wl}],[0,{[Y]:Gl}],[0,{[Y]:Kl}],[0,{[Y]:ql}],[6,{[Y]:Jl}],[0,{[Y]:Ql}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[0,{[J]:Zu}],[1,{[Y]:Hl}],[0,{[J]:Z}],[0,{[J]:fu}]],2],zp=[3,Q,`GetObjectRetentionOutput`,0,[Cc],[[()=>fh,{[Il]:1,[X]:Cc}]]],Bp=[3,Q,`GetObjectRetentionRequest`,0,[H,`Key`,xl,uc,U],[[0,1],[0,1],[0,{[Y]:Ql}],[0,{[J]:Zu}],[0,{[J]:Z}]],2],Vp=[3,Q,`GetObjectTaggingOutput`,{[X]:ul},[K,xl],[[()=>J_,0],[0,{[J]:fd}]],1],Hp=[3,Q,`GetObjectTaggingRequest`,0,[H,`Key`,xl,U,uc],[[0,1],[0,1],[0,{[Y]:Ql}],[0,{[J]:Z}],[0,{[J]:Zu}]],2],Up=[3,Q,`GetObjectTorrentOutput`,0,[pi,$s],[[()=>Gd,16],[0,{[J]:Xu}]]],Wp=[3,Q,`GetObjectTorrentRequest`,0,[H,`Key`,uc,U],[[0,1],[0,1],[0,{[J]:Zu}],[0,{[J]:Z}]],2],Gp=[3,Q,`GetPublicAccessBlockOutput`,0,[Fs],[[()=>Dh,16]]],Kp=[3,Q,`GetPublicAccessBlockRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],qp=[3,Q,eo,0,[dl],[0],1],Jp=[3,Q,ao,0,[oo,Gs],[[()=>Yp,{[eu]:[`xsi`,Rl]}],0]],Yp=[3,Q,oo,0,[hl,_a,`EmailAddress`,`ID`,`URI`],[[0,{xmlAttribute:1,[X]:`xsi:type`}],0,0,0,0],1],Xp=[3,Q,`HeadBucketOutput`,0,[ni,`BucketLocationType`,`BucketLocationName`,ui,`AccessPointAlias`],[[0,{[J]:iu}],[0,{[J]:`x-amz-bucket-location-type`}],[0,{[J]:`x-amz-bucket-location-name`}],[0,{[J]:`x-amz-bucket-region`}],[2,{[J]:`x-amz-access-point-alias`}]]],Zp=[3,Q,`HeadBucketRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Qp=[3,Q,`HeadObjectOutput`,0,[ma,Xr,Ua,xc,`ArchiveStatus`,Bo,Ai,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,Fa,Qo,xl,vi,wi,Ei,Di,aa,Hi,Wa,Na,wl,zc,Ho,Vc,Uc,Kc,ai,Ac,$s,_c,Is,nl,Es,Ds,Ts,Ss,Cs,ws],[[2,{[J]:ku}],[0,{[J]:Dl}],[0,{[J]:Au}],[0,{[J]:Yu}],[0,{[J]:`x-amz-archive-status`}],[4,{[J]:Vo}],[1,{[J]:ki}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:Tu}],[0,{[J]:Fa}],[1,{[J]:Ru}],[0,{[J]:fd}],[0,{[J]:Si}],[0,{[J]:Ci}],[0,{[J]:Ti}],[0,{[J]:Oi}],[0,{[J]:ia}],[0,{[J]:Ui}],[4,{[J]:Wa}],[0,{[J]:Na}],[0,{[J]:pd}],[0,{[J]:nd}],[128,{[Ll]:Iu}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[2,{[J]:id}],[0,{[J]:$u}],[0,{[J]:Xu}],[0,{[J]:Qu}],[1,{[J]:zu}],[1,{[J]:ud}],[0,{[J]:Gu}],[5,{[J]:Ku}],[0,{[J]:Wu}],[0,{[J]:Vu}],[1,{[J]:Hu}],[1,{[J]:Uu}]]],$p=[3,Q,`HeadObjectRequest`,0,[H,`Key`,po,ho,_o,Do,bc,ec,tc,nc,rc,ic,sc,xl,Vc,Hc,Uc,uc,Ls,U,Fi],[[0,1],[0,1],[0,{[J]:go}],[4,{[J]:mo}],[0,{[J]:vo}],[4,{[J]:Oo}],[0,{[J]:bc}],[0,{[Y]:Ul}],[0,{[Y]:Wl}],[0,{[Y]:Gl}],[0,{[Y]:Kl}],[0,{[Y]:ql}],[6,{[Y]:Jl}],[0,{[Y]:Ql}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[0,{[J]:Zu}],[1,{[Y]:Hl}],[0,{[J]:Z}],[0,{[J]:fu}]],2],em=[3,Q,uo,0,[`Suffix`],[0],1],tm=[3,Q,ko,0,[`ID`,_a],[0,0]],nm=[3,Q,xo,0,[`CSV`,`CompressionType`,Ao,`Parquet`],[()=>Oee,0,()=>hm,()=>xh]],rm=[3,Q,`IntelligentTieringAndOperator`,0,[Ps,$c],[0,[()=>J_,{[$l]:1,[X]:`Tag`}]]],im=[3,Q,Co,0,[`Id`,Ec,`Tierings`,Ka],[0,0,[()=>X_,{[$l]:1,[X]:fl}],[()=>am,0]],3],am=[3,Q,`IntelligentTieringFilter`,0,[Ps,`Tag`,`And`],[0,()=>Qg,[()=>rm,0]]],om=[3,Q,co,0,[Ca,`IsEnabled`,`Id`,`IncludedObjectVersions`,`Schedule`,Ka,`OptionalFields`],[[()=>Xee,0],2,0,0,()=>cm,()=>Qee,[()=>M_,0]],5],Xee=[3,Q,`InventoryDestination`,0,[kc],[[()=>sm,0]],1],Zee=[3,Q,`InventoryEncryption`,0,[qc,Wc],[[()=>qg,{[X]:Lc}],[()=>Wg,{[X]:Mc}]]],Qee=[3,Q,`InventoryFilter`,0,[Ps],[0],1],sm=[3,Q,`InventoryS3BucketDestination`,0,[H,Ya,`AccountId`,Ps,za],[0,0,0,0,[()=>Zee,0]],2],cm=[3,Q,`InventorySchedule`,0,[`Frequency`],[0],1],lm=[3,Q,Eo,0,[Wi,Da],[0,()=>$m],1],um=[3,Q,To,0,[Wi,ll,Ta,ol,el],[0,0,()=>Of,0,0],1],dm=[3,Q,`InventoryTableConfigurationUpdates`,0,[Wi,Da],[0,()=>$m],1],fm=[3,Q,jo,0,[cc,Da],[()=>ug,()=>$m],1],pm=[3,Q,Mo,0,[ll,ol,cc,Ta,el],[0,0,()=>ug,()=>Of,0],3],mm=[3,Q,`JournalTableConfigurationUpdates`,0,[cc],[()=>ug],1],hm=[3,Q,`JSONInput`,0,[hl],[0]],gm=[3,Q,`JSONOutput`,0,[oc],[0]],_m=[3,Q,`LambdaFunctionConfiguration`,0,[`LambdaFunctionArn`,Va,`Id`,Ka],[[0,{[X]:`CloudFunction`}],[64,{[$l]:1,[X]:Ha}],0,[()=>sh,0]],2],vm=[3,Q,`LifecycleExpiration`,0,[ba,pa,`ExpiredObjectDeleteMarker`],[5,1,2]],ym=[3,Q,`LifecycleRule`,0,[Ec,Ua,`ID`,Ps,Ka,`Transitions`,`NoncurrentVersionTransitions`,ms,Wr],[0,()=>vm,0,0,[()=>xm,0],[()=>Q_,{[$l]:1,[X]:ml}],[()=>L_,{[$l]:1,[X]:hs}],()=>ih,()=>iee],1],bm=[3,Q,`LifecycleRuleAndOperator`,0,[Ps,$c,W,As],[0,[()=>J_,{[$l]:1,[X]:`Tag`}],1,1]],xm=[3,Q,`LifecycleRuleFilter`,0,[Ps,`Tag`,W,As,`And`],[0,()=>Qg,1,1,[()=>bm,0]]],Sm=[3,Q,`ListBucketAnalyticsConfigurationsOutput`,{[X]:`ListBucketAnalyticsConfigurationResult`},[So,oa,ls,Rr],[2,0,0,[()=>v_,{[$l]:1,[X]:Vr}]]],Cm=[3,Q,`ListBucketAnalyticsConfigurationsRequest`,0,[H,oa,U],[[0,1],[0,{[Y]:kl}],[0,{[J]:Z}]],1],wm=[3,Q,`ListBucketIntelligentTieringConfigurationsOutput`,0,[So,oa,ls,wo],[2,0,0,[()=>A_,{[$l]:1,[X]:Co}]]],Tm=[3,Q,`ListBucketIntelligentTieringConfigurationsRequest`,0,[H,oa,U],[[0,1],[0,{[Y]:kl}],[0,{[J]:Z}]],1],Em=[3,Q,`ListBucketInventoryConfigurationsOutput`,{[X]:`ListInventoryConfigurationsResult`},[oa,lo,So,ls],[0,[()=>j_,{[$l]:1,[X]:co}],2,0]],Dm=[3,Q,`ListBucketInventoryConfigurationsRequest`,0,[H,oa,U],[[0,1],[0,{[Y]:kl}],[0,{[J]:Z}]],1],Om=[3,Q,`ListBucketMetricsConfigurationsOutput`,{[X]:`ListMetricsConfigurationsResult`},[So,oa,ls,Go],[2,0,0,[()=>F_,{[$l]:1,[X]:qo}]]],km=[3,Q,`ListBucketMetricsConfigurationsRequest`,0,[H,oa,U],[[0,1],[0,{[Y]:kl}],[0,{[J]:Z}]],1],Am=[3,Q,`ListBucketsOutput`,{[X]:`ListAllMyBucketsResult`},[mi,gs,oa,Ps],[[()=>b_,0],()=>vh,0,0]],jm=[3,Q,`ListBucketsRequest`,0,[`MaxBuckets`,oa,Ps,ui],[[1,{[Y]:`max-buckets`}],[0,{[Y]:kl}],[0,{[Y]:Vl}],[0,{[Y]:`bucket-region`}]]],Mm=[3,Q,`ListDirectoryBucketsOutput`,{[X]:`ListAllMyDirectoryBucketsResult`},[mi,oa],[[()=>b_,0],0]],Nm=[3,Q,`ListDirectoryBucketsRequest`,0,[oa,`MaxDirectoryBuckets`],[[0,{[Y]:kl}],[1,{[Y]:`max-directory-buckets`}]]],Pm=[3,Q,`ListMultipartUploadsOutput`,{[X]:`ListMultipartUploadsResult`},[H,No,_l,ds,Ps,Sa,`NextUploadIdMarker`,rs,So,`Uploads`,Vi,La,$s],[0,0,0,0,0,0,0,1,2,[()=>I_,{[$l]:1,[X]:`Upload`}],[()=>x_,{[$l]:1}],0,[0,{[J]:Xu}]]],Fm=[3,Q,`ListMultipartUploadsRequest`,0,[H,Sa,La,No,rs,Ps,_l,U,uc],[[0,1],[0,{[Y]:Al}],[0,{[Y]:Nl}],[0,{[Y]:zl}],[1,{[Y]:`max-uploads`}],[0,{[Y]:Vl}],[0,{[Y]:`upload-id-marker`}],[0,{[J]:Z}],[0,{[J]:Zu}]],1],Im=[3,Q,`ListObjectAnnotationsOutput`,0,[`Annotations`,H,`Key`,Ms,Yr,Uo,`AnnotationCount`,oa,ls,$s],[[()=>y_,0],0,0,[0,{[J]:Ju}],0,1,1,0,0,[0,{[J]:Xu}]]],Lm=[3,Q,`ListObjectAnnotationsRequest`,0,[H,`Key`,xl,Uo,Yr,oa,uc,U],[[0,1],[0,1],[0,{[Y]:Ql}],[1,{[Y]:`max-annotation-results`}],[0,{[Y]:`annotation-prefix`}],[0,{[Y]:kl}],[0,{[J]:Zu}],[0,{[J]:Z}]],2],Rm=[3,Q,`ListObjectsOutput`,{[X]:Fo},[So,is,`NextMarker`,da,ss,Ps,Sa,Zo,Vi,La,$s],[2,0,0,[()=>z_,{[$l]:1}],0,0,0,1,[()=>x_,{[$l]:1}],0,[0,{[J]:Xu}]]],zm=[3,Q,`ListObjectsRequest`,0,[H,Sa,La,is,Zo,Ps,uc,U,ks],[[0,1],[0,{[Y]:Al}],[0,{[Y]:Nl}],[0,{[Y]:`marker`}],[1,{[Y]:Bl}],[0,{[Y]:Vl}],[0,{[J]:Zu}],[0,{[J]:Z}],[64,{[J]:qu}]],1],Bm=[3,Q,`ListObjectsV2Output`,{[X]:Fo},[So,da,ss,Ps,Sa,Zo,Vi,La,`KeyCount`,oa,ls,Dc,$s],[2,[()=>z_,{[$l]:1}],0,0,0,1,[()=>x_,{[$l]:1}],0,1,0,0,0,[0,{[J]:Xu}]]],Vm=[3,Q,`ListObjectsV2Request`,0,[H,Sa,La,Zo,Ps,oa,`FetchOwner`,Dc,uc,U,ks],[[0,1],[0,{[Y]:Al}],[0,{[Y]:Nl}],[1,{[Y]:Bl}],[0,{[Y]:Vl}],[0,{[Y]:kl}],[2,{[Y]:`fetch-owner`}],[0,{[Y]:`start-after`}],[0,{[J]:Zu}],[0,{[J]:Z}],[64,{[J]:qu}]],1],Hm=[3,Q,`ListObjectVersionsOutput`,{[X]:`ListVersionsResult`},[So,No,Sl,ds,`NextVersionIdMarker`,`Versions`,ga,ss,Ps,Sa,Zo,Vi,La,$s],[2,0,0,0,0,[()=>B_,{[$l]:1,[X]:`Version`}],[()=>T_,{[$l]:1,[X]:ma}],0,0,0,1,[()=>x_,{[$l]:1}],0,[0,{[J]:Xu}]]],Um=[3,Q,`ListObjectVersionsRequest`,0,[H,Sa,La,No,Zo,Ps,Sl,U,uc,ks],[[0,1],[0,{[Y]:Al}],[0,{[Y]:Nl}],[0,{[Y]:zl}],[1,{[Y]:Bl}],[0,{[Y]:Vl}],[0,{[Y]:`version-id-marker`}],[0,{[J]:Z}],[0,{[J]:Zu}],[64,{[J]:qu}]],1],Wm=[3,Q,`ListPartsOutput`,{[X]:`ListPartsResult`},[Hr,Zr,H,`Key`,gl,Rs,ps,$o,So,Vs,ko,gs,Ac,$s,gi,ra],[[4,{[J]:nu}],[0,{[J]:ru}],0,0,0,0,0,1,2,[()=>H_,{[$l]:1,[X]:Hs}],()=>tm,()=>vh,0,[0,{[J]:Xu}],0,0]],Gm=[3,Q,`ListPartsRequest`,0,[H,`Key`,gl,$o,Rs,uc,U,Vc,Hc,Uc],[[0,1],[0,1],[0,{[Y]:Zl}],[1,{[Y]:`max-parts`}],[0,{[Y]:`part-number-marker`}],[0,{[J]:Zu}],[0,{[J]:Z}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}]],3],Km=[3,Q,`LocationInfo`,0,[hl,ss],[0,0]],qm=[3,Q,Ro,0,[`TargetBucket`,`TargetPrefix`,al,cl],[0,0,[()=>Y_,0],[()=>t_,0]],2],Jm=[3,Q,Wo,0,[jo,Eo,ei],[()=>fm,()=>lm,()=>uee],1],Ym=[3,Q,Ko,0,[ya,Mo,To,ti],[()=>wf,()=>pm,()=>um,()=>Qd],1],Xm=[3,Q,Yo,0,[ss,yl],[0,0]],Zm=[3,Q,es,0,[Yc],[()=>Mg],1],Qm=[3,Q,ts,0,[Xc],[()=>Ng],1],$m=[3,Q,`MetadataTableEncryptionConfiguration`,0,[`SseAlgorithm`,`KmsKeyArn`],[0,0],1],eh=[3,Q,as,0,[Ec,`EventThreshold`],[0,()=>Sg],1],th=[3,Q,`MetricsAndOperator`,0,[Ps,$c,Jr],[0,[()=>J_,{[$l]:1,[X]:`Tag`}],0]],nh=[3,Q,qo,0,[`Id`,Ka],[0,[()=>tv,0]],1],rh=[3,Q,ns,0,[gl,`Key`,`Initiated`,Ac,gs,ko,gi,ra],[0,0,4,0,()=>vh,()=>tm,0,0]],ih=[3,Q,ms,0,[us,fs],[1,1]],ah=[3,Q,hs,0,[us,Ac,fs],[1,0,1]],oh=[3,Q,cs,0,[`TopicConfigurations`,`QueueConfigurations`,`LambdaFunctionConfigurations`,Ea],[[()=>Z_,{[$l]:1,[X]:rl}],[()=>W_,{[$l]:1,[X]:G}],[()=>N_,{[$l]:1,[X]:`CloudFunctionConfiguration`}],()=>Af]],sh=[3,Q,`NotificationConfigurationFilter`,0,[`Key`],[[()=>Ag,{[X]:`S3Key`}]]],ch=[3,Q,Ns,0,[`Key`,Bo,Fa,gi,ra,Zc,Ac,gs,vc],[0,4,0,[64,{[$l]:1}],0,1,0,()=>vh,()=>Og]],lh=[3,Q,`ObjectIdentifier`,0,[`Key`,xl,Fa,`LastModifiedTime`,Zc],[0,0,0,6,1],1],uh=[3,Q,xs,0,[`ObjectLockEnabled`,Tc],[0,()=>ph]],dh=[3,Q,`ObjectLockLegalHold`,0,[Ec],[0]],fh=[3,Q,`ObjectLockRetention`,0,[os,`RetainUntilDate`,`EventHold`,Aa],[0,5,0,()=>jf]],ph=[3,Q,`ObjectLockRule`,0,[va],[()=>Aee]],mh=[3,Q,`ObjectPart`,0,[Ls,Zc,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la],[1,1,0,0,0,0,0,0,0,0,0,0]],hh=[3,Q,`ObjectVersion`,0,[Fa,gi,ra,Zc,Ac,`Key`,xl,fo,Bo,gs,vc],[0,[64,{[$l]:1}],0,1,0,0,0,2,4,()=>vh,()=>Og]],gh=[3,Q,bs,0,[`S3`],[[()=>jg,0]]],_h=[3,Q,js,0,[`CSV`,Ao],[()=>kee,()=>gm]],vh=[3,Q,gs,0,[_a,`ID`],[0,0]],yh=[3,Q,_s,0,[wc],[[()=>V_,{[$l]:1,[X]:Tc}]],1],bh=[3,Q,`OwnershipControlsRule`,0,[Os],[0],1],xh=[3,Q,`ParquetInput`,0,[],[]],Sh=[3,Q,Hs,0,[Ls,Bo,Fa,Zc,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la],[1,4,0,1,0,0,0,0,0,0,0,0,0,0]],Ch=[3,Q,zs,{[X]:zs},[`PartitionDateSource`],[0]],wh=[3,Q,Bs,0,[bo],[[2,{[X]:bo}]]],Th=[3,Q,qs,0,[fi,si,di],[1,1,1]],Eh=[3,Q,`ProgressEvent`,0,[wa],[[()=>Th,{[Ml]:1}]]],Dh=[3,Q,Fs,0,[ci,yo,li,dc],[[2,{[X]:ci}],[2,{[X]:yo}],[2,{[X]:li}],[2,{[X]:dc}]]],Oh=[3,Q,`PutBucketAbacRequest`,0,[H,Qr,Ni,gi,U],[[0,1],[()=>Kd,{[Il]:1,[X]:Qr}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],kh=[3,Q,`PutBucketAccelerateConfigurationRequest`,0,[H,Ir,U,gi],[[0,1],[()=>qd,{[Il]:1,[X]:Ir}],[0,{[J]:Z}],[0,{[J]:ed}]],2],Ah=[3,Q,`PutBucketAclRequest`,0,[H,`ACL`,zr,Ni,gi,$a,to,no,ro,io,U],[[0,1],[0,{[J]:tu}],[()=>Jd,{[Il]:1,[X]:zr}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:ju}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Fu}],[0,{[J]:Z}]],1],jh=[3,Q,`PutBucketAnalyticsConfigurationRequest`,0,[H,`Id`,Vr,U],[[0,1],[0,{[Y]:`id`}],[()=>Xd,{[Il]:1,[X]:Vr}],[0,{[J]:Z}]],3],Mh=[3,Q,`PutBucketCorsRequest`,0,[H,Li,Ni,gi,U],[[0,1],[()=>lf,{[Il]:1,[X]:Li}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],Nh=[3,Q,`PutBucketEncryptionRequest`,0,[H,Bc,Ni,gi,U],[[0,1],[()=>zg,{[Il]:1,[X]:Bc}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],Ph=[3,Q,`PutBucketIntelligentTieringConfigurationRequest`,0,[H,`Id`,Co,U],[[0,1],[0,{[Y]:`id`}],[()=>im,{[Il]:1,[X]:Co}],[0,{[J]:Z}]],3],Fh=[3,Q,`PutBucketInventoryConfigurationRequest`,0,[H,`Id`,co,U],[[0,1],[0,{[Y]:`id`}],[()=>om,{[Il]:1,[X]:co}],[0,{[J]:Z}]],3],Ih=[3,Q,`PutBucketLifecycleConfigurationOutput`,0,[il],[[0,{[J]:dd}]]],Lh=[3,Q,`PutBucketLifecycleConfigurationRequest`,0,[H,gi,Lo,U,il],[[0,1],[0,{[J]:ed}],[()=>tf,{[Il]:1,[X]:Lo}],[0,{[J]:Z}],[0,{[J]:dd}]],1],Rh=[3,Q,`PutBucketLoggingRequest`,0,[H,oi,Ni,gi,U],[[0,1],[()=>nf,{[Il]:1,[X]:oi}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],zh=[3,Q,`PutBucketMetricsConfigurationRequest`,0,[H,`Id`,qo,U],[[0,1],[0,{[Y]:`id`}],[()=>nh,{[Il]:1,[X]:qo}],[0,{[J]:Z}]],3],Bh=[3,Q,`PutBucketNotificationConfigurationRequest`,0,[H,cs,U,`SkipDestinationValidation`],[[0,1],[()=>oh,{[Il]:1,[X]:cs}],[0,{[J]:Z}],[2,{[J]:`x-amz-skip-destination-validation`}]],2],Vh=[3,Q,`PutBucketOwnershipControlsRequest`,0,[H,_s,Ni,U,gi],[[0,1],[()=>yh,{[Il]:1,[X]:_s}],[0,{[J]:ji}],[0,{[J]:Z}],[0,{[J]:ed}]],2],Hh=[3,Q,`PutBucketPolicyRequest`,0,[H,Ks,Ni,gi,`ConfirmRemoveSelfBucketAccess`,U],[[0,1],[0,16],[0,{[J]:ji}],[0,{[J]:ed}],[2,{[J]:`x-amz-confirm-remove-self-bucket-access`}],[0,{[J]:Z}]],2],Uh=[3,Q,`PutBucketReplicationRequest`,0,[H,ac,Ni,gi,pl,U],[[0,1],[()=>_g,{[Il]:1,[X]:ac}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:ou}],[0,{[J]:Z}]],2],Wh=[3,Q,`PutBucketRequestPaymentRequest`,0,[H,fc,Ni,gi,U],[[0,1],[()=>Cg,{[Il]:1,[X]:fc}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],Gh=[3,Q,`PutBucketTaggingRequest`,0,[H,ul,Ni,gi,U],[[0,1],[()=>$g,{[Il]:1,[X]:ul}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],Kh=[3,Q,`PutBucketVersioningRequest`,0,[H,bl,Ni,gi,`MFA`,U],[[0,1],[()=>m_,{[Il]:1,[X]:bl}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Lu}],[0,{[J]:Z}]],2],qh=[3,Q,`PutBucketWebsiteRequest`,0,[H,Cl,Ni,gi,U],[[0,1],[()=>h_,{[Il]:1,[X]:Cl}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],Jh=[3,Q,`PutObjectAclOutput`,0,[$s],[[0,{[J]:Xu}]]],Yh=[3,Q,`PutObjectAclRequest`,0,[H,`Key`,`ACL`,zr,Ni,gi,$a,to,no,ro,io,uc,xl,U],[[0,1],[0,1],[0,{[J]:tu}],[()=>Jd,{[Il]:1,[X]:zr}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:ju}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Fu}],[0,{[J]:Zu}],[0,{[Y]:Ql}],[0,{[J]:Z}]],2],Xh=[3,Q,`PutObjectAnnotationOutput`,0,[`Key`,Kr,Ms,Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,zc,$s],[0,0,[0,{[J]:Ju}],[0,{[J]:Fa}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:Tu}],[0,{[J]:nd}],[0,{[J]:Xu}]]],Zh=[3,Q,`PutObjectAnnotationRequest`,0,[H,`Key`,Kr,qr,xl,ys,gi,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,Ni,uc,U],[[0,1],[0,1],[0,{[Y]:El}],[()=>Gd,16],[0,{[Y]:Ql}],[0,{[J]:Bu}],[0,{[J]:ed}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ji}],[0,{[J]:Zu}],[0,{[J]:Z}]],4],Qh=[3,Q,`PutObjectLegalHoldOutput`,0,[$s],[[0,{[J]:Xu}]]],$h=[3,Q,`PutObjectLegalHoldRequest`,0,[H,`Key`,zo,uc,xl,Ni,gi,U],[[0,1],[0,1],[()=>dh,{[Il]:1,[X]:zo}],[0,{[J]:Zu}],[0,{[Y]:Ql}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],eg=[3,Q,`PutObjectLockConfigurationOutput`,0,[$s],[[0,{[J]:Xu}]]],tg=[3,Q,`PutObjectLockConfigurationRequest`,0,[H,xs,uc,pl,Ni,gi,U],[[0,1],[()=>uh,{[Il]:1,[X]:xs}],[0,{[J]:Zu}],[0,{[J]:ou}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],1],ng=[3,Q,`PutObjectOutput`,0,[Ua,Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ra,zc,xl,Vc,Uc,Kc,Gc,ai,Zc,$s],[[0,{[J]:Au}],[0,{[J]:Fa}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:Tu}],[0,{[J]:nd}],[0,{[J]:fd}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}],[1,{[J]:`x-amz-object-size`}],[0,{[J]:Xu}]]],rg=[3,Q,`PutObjectRequest`,0,[H,`Key`,`ACL`,pi,vi,wi,Ei,Di,Ai,Ni,aa,gi,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,Wa,po,_o,$a,to,no,io,`WriteOffsetBytes`,Ho,zc,Ac,wl,Vc,Hc,Uc,Kc,Gc,ai,uc,ul,Es,Ds,Ts,Ss,Cs,ws,U],[[0,1],[0,1],[0,{[J]:tu}],[()=>Gd,16],[0,{[J]:Si}],[0,{[J]:Ci}],[0,{[J]:Ti}],[0,{[J]:Oi}],[1,{[J]:ki}],[0,{[J]:ji}],[0,{[J]:ia}],[0,{[J]:ed}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[4,{[J]:Wa}],[0,{[J]:go}],[0,{[J]:vo}],[0,{[J]:ju}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Fu}],[1,{[J]:`x-amz-write-offset-bytes`}],[128,{[Ll]:Iu}],[0,{[J]:nd}],[0,{[J]:$u}],[0,{[J]:pd}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[()=>Ud,{[J]:ad}],[2,{[J]:id}],[0,{[J]:Zu}],[0,{[J]:ld}],[0,{[J]:Gu}],[5,{[J]:Ku}],[0,{[J]:Wu}],[0,{[J]:Vu}],[1,{[J]:Hu}],[1,{[J]:Uu}],[0,{[J]:Z}]],2],ig=[3,Q,`PutObjectRetentionOutput`,0,[$s],[[0,{[J]:Xu}]]],ag=[3,Q,`PutObjectRetentionRequest`,0,[H,`Key`,Cc,uc,xl,ii,Ni,gi,U],[[0,1],[0,1],[()=>fh,{[Il]:1,[X]:Cc}],[0,{[J]:Zu}],[0,{[Y]:Ql}],[2,{[J]:au}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],og=[3,Q,`PutObjectTaggingOutput`,0,[xl],[[0,{[J]:fd}]]],sg=[3,Q,`PutObjectTaggingRequest`,0,[H,`Key`,ul,xl,Ni,gi,U,uc],[[0,1],[0,1],[()=>$g,{[Il]:1,[X]:ul}],[0,{[Y]:Ql}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}],[0,{[J]:Zu}]],3],cg=[3,Q,`PutPublicAccessBlockRequest`,0,[H,Fs,Ni,gi,U],[[0,1],[()=>Dh,{[Il]:1,[X]:Fs}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],lg=[3,Q,G,0,[`QueueArn`,Va,`Id`,Ka],[[0,{[X]:`Queue`}],[64,{[$l]:1,[X]:Ha}],0,[()=>sh,0]],2],ug=[3,Q,cc,0,[Ua,pa],[0,1],1],dg=[3,Q,`RecordsEvent`,0,[Ws],[[21,{[Ml]:1}]]],fg=[3,Q,Sc,0,[so,`HttpRedirectCode`,Js,`ReplaceKeyPrefixWith`,`ReplaceKeyWith`],[0,0,0,0,0]],pg=[3,Q,Qs,0,[so,Js],[0,0],1],mg=[3,Q,`RenameObjectOutput`,0,[],[]],hg=[3,Q,`RenameObjectRequest`,0,[H,`Key`,`RenameSource`,`DestinationIfMatch`,`DestinationIfNoneMatch`,`DestinationIfModifiedSince`,`DestinationIfUnmodifiedSince`,`SourceIfMatch`,`SourceIfNoneMatch`,`SourceIfModifiedSince`,`SourceIfUnmodifiedSince`,`ClientToken`],[[0,1],[0,1],[0,{[J]:`x-amz-rename-source`}],[0,{[J]:go}],[0,{[J]:vo}],[4,{[J]:mo}],[4,{[J]:Oo}],[0,{[J]:`x-amz-rename-source-if-match`}],[0,{[J]:`x-amz-rename-source-if-none-match`}],[6,{[J]:`x-amz-rename-source-if-modified-since`}],[6,{[J]:`x-amz-rename-source-if-unmodified-since`}],[0,{[J]:`x-amz-client-token`,idempotencyToken:1}]],3],gg=[3,Q,lc,0,[Ec],[0],1],_g=[3,Q,ac,0,[Zs,wc],[0,[()=>G_,{[$l]:1,[X]:Tc}]],2],vg=[3,Q,`ReplicationRule`,0,[Ec,Ca,`ID`,`Priority`,Ps,Ka,Rc,Ma,ha],[0,()=>Cf,0,1,0,[()=>bg,0],()=>Ug,()=>Mf,()=>gf],2],yg=[3,Q,`ReplicationRuleAndOperator`,0,[Ps,$c],[0,[()=>J_,{[$l]:1,[X]:`Tag`}]]],bg=[3,Q,`ReplicationRuleFilter`,0,[Ps,`Tag`,`And`],[0,()=>Qg,[()=>yg,0]]],xg=[3,Q,yc,0,[Ec,`Time`],[0,()=>Sg],2],Sg=[3,Q,`ReplicationTimeValue`,0,[`Minutes`],[1]],Cg=[3,Q,fc,0,[Us],[0],1],wg=[3,Q,pc,0,[`Enabled`],[2]],Tg=[3,Q,`RestoreObjectOutput`,0,[$s,`RestoreOutputPath`],[[0,{[J]:Xu}],[0,{[J]:`x-amz-restore-output-path`}]]],Eg=[3,Q,`RestoreObjectRequest`,0,[H,`Key`,xl,hc,uc,gi,U],[[0,1],[0,1],[0,{[Y]:Ql}],[()=>Dg,{[Il]:1,[X]:hc}],[0,{[J]:Zu}],[0,{[J]:ed}],[0,{[J]:Z}]],2],Dg=[3,Q,hc,0,[pa,eo,hl,dl,`Description`,Pc,bs],[1,()=>qp,0,0,0,()=>Lg,[()=>gh,0]]],Og=[3,Q,vc,0,[`IsRestoreInProgress`,`RestoreExpiryDate`],[2,4]],kg=[3,Q,gc,0,[Sc,ua],[()=>fg,()=>cf],1],Ag=[3,Q,`S3KeyFilter`,0,[`FilterRules`],[[()=>O_,{[$l]:1,[X]:Ja}]]],jg=[3,Q,`S3Location`,0,[`BucketName`,Ps,za,`CannedACL`,Lr,ul,vl,Ac],[0,0,[()=>Tf,0],0,[()=>k_,0],[()=>$g,0],[()=>$_,0],0],2],Mg=[3,Q,Yc,0,[tl,ol],[0,0],2],Ng=[3,Q,Xc,0,[tl,ol,el,sl],[0,0,0,0],4],Pg=[3,Q,Ic,0,[`Start`,`End`],[1,1]],Fg=[3,Q,`SelectObjectContentOutput`,0,[Ws],[[()=>rv,16]]],Ig=[3,Q,`SelectObjectContentRequest`,0,[H,`Key`,Ga,Ra,xo,js,Vc,Hc,Uc,pc,Ic,U],[[0,1],[0,1],0,0,()=>nm,()=>_h,[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],()=>wg,()=>Pg,[0,{[J]:Z}]],6],Lg=[3,Q,Pc,0,[xo,Ra,Ga,js],[()=>nm,0,0,()=>_h],4],Rg=[3,Q,`ServerSideEncryptionByDefault`,0,[`SSEAlgorithm`,`KMSMasterKeyID`],[0,[()=>Wd,0]],1],zg=[3,Q,Bc,0,[wc],[[()=>q_,{[$l]:1,[X]:Tc}]],1],Bg=[3,Q,`ServerSideEncryptionRule`,0,[`ApplyServerSideEncryptionByDefault`,ai,ri],[[()=>Rg,0],2,[()=>$d,0]]],Vg=[3,Q,`SessionCredentials`,0,[Gr,Oc,Jc,Ua],[[0,{[X]:Gr}],[()=>Vd,{[X]:Oc}],[()=>Vd,{[X]:Jc}],[4,{[X]:Ua}]],4],Hg=[3,Q,Fc,{[X]:Fc},[],[]],Ug=[3,Q,Rc,0,[Nc,lc],[()=>Gg,()=>gg]],Wg=[3,Q,Wc,{[X]:Mc},[`KeyId`],[[()=>Wd,0]],1],Gg=[3,Q,Nc,0,[Ec],[0],1],Kg=[3,Q,`SSEKMSEncryption`,{[X]:Mc},[`KMSKeyArn`,ai],[[()=>Bd,0],2],1],qg=[3,Q,qc,{[X]:Lc},[],[]],Jg=[3,Q,Qc,0,[fi,si,di],[1,1,1]],Yg=[3,Q,`StatsEvent`,0,[wa],[[()=>Jg,{[Ml]:1}]]],Xg=[3,Q,jc,0,[`DataExport`],[()=>Zg]],Zg=[3,Q,`StorageClassAnalysisDataExport`,0,[`OutputSchemaVersion`,Ca],[0,()=>cee],2],Qg=[3,Q,`Tag`,0,[`Key`,yl],[0,0],2],$g=[3,Q,ul,0,[K],[[()=>J_,0]],1],e_=[3,Q,`TargetGrant`,0,[oo,Gs],[[()=>Yp,{[eu]:[`xsi`,Rl]}],0]],t_=[3,Q,cl,0,[Fc,zs],[[()=>Hg,{[X]:Fc}],[()=>Ch,{[X]:zs}]]],n_=[3,Q,fl,0,[pa,$r],[1,0],2],r_=[3,Q,rl,0,[`TopicArn`,Va,`Id`,Ka],[[0,{[X]:`Topic`}],[64,{[$l]:1,[X]:Ha}],0,[()=>sh,0]],2],i_=[3,Q,ml,0,[ba,pa,Ac],[5,1,0]],a_=[3,Q,`UpdateBucketMetadataAnnotationTableConfigurationRequest`,0,[H,ei,Ni,gi,U],[[0,1],[()=>dee,{[Il]:1,[X]:ei}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],o_=[3,Q,`UpdateBucketMetadataInventoryTableConfigurationRequest`,0,[H,Eo,Ni,gi,U],[[0,1],[()=>dm,{[Il]:1,[X]:Eo}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],s_=[3,Q,`UpdateBucketMetadataJournalTableConfigurationRequest`,0,[H,jo,Ni,gi,U],[[0,1],[()=>mm,{[Il]:1,[X]:jo}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:Z}]],2],c_=[3,Q,`UpdateObjectEncryptionRequest`,0,[H,`Key`,vs,xl,uc,U,Ni,gi],[[0,1],[0,1],[()=>nv,16],[0,{[Y]:Ql}],[0,{[J]:Zu}],[0,{[J]:Z}],[0,{[J]:ji}],[0,{[J]:ed}]],3],l_=[3,Q,`UpdateObjectEncryptionResponse`,0,[$s],[[0,{[J]:Xu}]]],u_=[3,Q,`UploadPartCopyOutput`,0,[ta,Bi,zc,Vc,Uc,Kc,ai,$s],[[0,{[J]:wu}],[()=>yee,16],[0,{[J]:nd}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[2,{[J]:id}],[0,{[J]:Xu}]]],d_=[3,Q,`UploadPartCopyRequest`,0,[H,na,`Key`,Ls,gl,Ji,Yi,Xi,Zi,`CopySourceRange`,Vc,Hc,Uc,Qi,$i,ea,uc,U,Pa],[[0,1],[0,{[J]:gu}],[0,1],[1,{[Y]:Hl}],[0,{[Y]:Zl}],[0,{[J]:_u}],[4,{[J]:vu}],[0,{[J]:yu}],[4,{[J]:bu}],[0,{[J]:`x-amz-copy-source-range`}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[0,{[J]:xu}],[()=>zd,{[J]:Su}],[0,{[J]:Cu}],[0,{[J]:Zu}],[0,{[J]:Z}],[0,{[J]:td}]],5],f_=[3,Q,`UploadPartOutput`,0,[zc,Fa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,Vc,Uc,Kc,ai,$s],[[0,{[J]:nd}],[0,{[J]:Fa}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:od}],[0,{[J]:cd}],[()=>Wd,{[J]:rd}],[2,{[J]:id}],[0,{[J]:Xu}]]],p_=[3,Q,`UploadPartRequest`,0,[H,`Key`,Ls,gl,pi,Ai,Ni,gi,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,Vc,Hc,Uc,uc,U],[[0,1],[0,1],[1,{[Y]:Hl}],[0,{[Y]:Zl}],[()=>Gd,16],[1,{[J]:ki}],[0,{[J]:ji}],[0,{[J]:ed}],[0,{[J]:cu}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:pu}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:du}],[0,{[J]:Eu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:od}],[()=>Hd,{[J]:sd}],[0,{[J]:cd}],[0,{[J]:Zu}],[0,{[J]:Z}]],4],m_=[3,Q,bl,0,[Xo,Ec],[[0,{[X]:Jo}],0]],h_=[3,Q,Cl,0,[ka,uo,Qs,mc],[()=>kf,()=>em,()=>pg,[()=>K_,0]]],g_=[3,Q,`WriteGetObjectResponseRequest`,0,[`RequestRoute`,`RequestToken`,pi,`StatusCode`,Oa,ja,Xr,vi,wi,Ei,Di,Ai,Hi,aa,yi,bi,xi,Gi,Ki,qi,Mi,sa,ca,la,ma,Fa,Wa,Ua,Bo,Qo,Ho,Es,Ts,Ds,Is,_c,$s,xc,zc,Vc,Kc,Uc,Ac,nl,xl,ai],[[0,{hostLabel:1,[J]:`x-amz-request-route`}],[0,{[J]:`x-amz-request-token`}],[()=>Gd,16],[1,{[J]:`x-amz-fwd-status`}],[0,{[J]:`x-amz-fwd-error-code`}],[0,{[J]:`x-amz-fwd-error-message`}],[0,{[J]:`x-amz-fwd-header-accept-ranges`}],[0,{[J]:`x-amz-fwd-header-Cache-Control`}],[0,{[J]:`x-amz-fwd-header-Content-Disposition`}],[0,{[J]:`x-amz-fwd-header-Content-Encoding`}],[0,{[J]:`x-amz-fwd-header-Content-Language`}],[1,{[J]:ki}],[0,{[J]:`x-amz-fwd-header-Content-Range`}],[0,{[J]:`x-amz-fwd-header-Content-Type`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-crc32`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-crc32c`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-crc64nvme`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-sha1`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-sha256`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-sha512`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-md5`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-xxhash64`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-xxhash3`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-xxhash128`}],[2,{[J]:`x-amz-fwd-header-x-amz-delete-marker`}],[0,{[J]:`x-amz-fwd-header-ETag`}],[4,{[J]:`x-amz-fwd-header-Expires`}],[0,{[J]:`x-amz-fwd-header-x-amz-expiration`}],[4,{[J]:`x-amz-fwd-header-Last-Modified`}],[1,{[J]:`x-amz-fwd-header-x-amz-missing-meta`}],[128,{[Ll]:Iu}],[0,{[J]:`x-amz-fwd-header-x-amz-object-lock-mode`}],[0,{[J]:`x-amz-fwd-header-x-amz-object-lock-legal-hold`}],[5,{[J]:`x-amz-fwd-header-x-amz-object-lock-retain-until-date`}],[1,{[J]:`x-amz-fwd-header-x-amz-mp-parts-count`}],[0,{[J]:`x-amz-fwd-header-x-amz-replication-status`}],[0,{[J]:`x-amz-fwd-header-x-amz-request-charged`}],[0,{[J]:`x-amz-fwd-header-x-amz-restore`}],[0,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption`}],[0,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm`}],[()=>Wd,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id`}],[0,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5`}],[0,{[J]:`x-amz-fwd-header-x-amz-storage-class`}],[1,{[J]:`x-amz-fwd-header-x-amz-tagging-count`}],[0,{[J]:`x-amz-fwd-header-x-amz-version-id`}],[2,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled`}]],2],__=`unit`,v_=[1,Q,Rr,0,[()=>Xd,0]],y_=[1,Q,`AnnotationList`,0,[()=>Zd,{[X]:Ur}]],b_=[1,Q,mi,0,[()=>fee,{[X]:H}]],x_=[1,Q,`CommonPrefixList`,0,()=>af],S_=[1,Q,`CompletedPartList`,0,()=>pee],C_=[1,Q,Ri,0,[()=>bee,0]],w_=[1,Q,`DeletedObjects`,0,()=>mf],T_=[1,Q,ga,0,()=>hf],E_=[1,Q,`EncryptionTypeList`,0,[0,{[X]:Ia}]],D_=[1,Q,Ba,0,()=>Jee],O_=[1,Q,`FilterRuleList`,0,()=>Nf],k_=[1,Q,Xa,0,[()=>Jp,{[X]:ao}]],A_=[1,Q,wo,0,[()=>im,0]],j_=[1,Q,lo,0,[()=>om,0]],M_=[1,Q,`InventoryOptionalFields`,0,[0,{[X]:`Field`}]],N_=[1,Q,`LambdaFunctionConfigurationList`,0,[()=>_m,0]],P_=[1,Q,`LifecycleRules`,0,[()=>ym,0]],F_=[1,Q,Go,0,[()=>nh,0]],I_=[1,Q,`MultipartUploadList`,0,()=>rh],L_=[1,Q,`NoncurrentVersionTransitionList`,0,()=>ah],R_=[1,Q,`ObjectIdentifierList`,0,()=>lh],z_=[1,Q,`ObjectList`,0,[()=>ch,0]],B_=[1,Q,`ObjectVersionList`,0,[()=>hh,0]],V_=[1,Q,`OwnershipControlsRules`,0,()=>bh],H_=[1,Q,Vs,0,()=>Sh],U_=[1,Q,`PartsList`,0,()=>mh],W_=[1,Q,`QueueConfigurationList`,0,[()=>lg,0]],G_=[1,Q,`ReplicationRules`,0,[()=>vg,0]],K_=[1,Q,mc,0,[()=>kg,{[X]:gc}]],q_=[1,Q,`ServerSideEncryptionRules`,0,[()=>Bg,0]],J_=[1,Q,K,0,[()=>Qg,{[X]:`Tag`}]],Y_=[1,Q,al,0,[()=>e_,{[X]:ao}]],X_=[1,Q,`TieringList`,0,()=>n_],Z_=[1,Q,`TopicConfigurationList`,0,[()=>r_,0]],Q_=[1,Q,`TransitionList`,0,()=>i_],$_=[1,Q,vl,0,[()=>Xm,{[X]:Yo}]],ev=[4,Q,`AnalyticsFilter`,0,[Ps,`Tag`,`And`],[0,()=>Qg,[()=>Yd,0]]],tv=[4,Q,`MetricsFilter`,0,[Ps,`Tag`,Jr,`And`],[0,()=>Qg,0,[()=>th,0]]],nv=[4,Q,vs,0,[Wc],[[()=>Kg,{[X]:Mc}]]],rv=[4,Q,`SelectObjectContentEventStream`,{[Xl]:1},[`Records`,Qc,qs,`Cont`,`End`],[[()=>dg,0],[()=>Yg,0],[()=>Eh,0],()=>hee,()=>Df]],iv=[9,Q,`AbortMultipartUpload`,{[q]:[`DELETE`,`/{Key+}?x-id=AbortMultipartUpload`,204]},()=>oee,()=>aee],av=[9,Q,Pi,{[q]:[`POST`,`/{Key+}`,200]},()=>sf,()=>mee],ov=[9,Q,`CopyObject`,{[q]:[`PUT`,`/{Key+}?x-id=CopyObject`,200]},()=>_ee,()=>gee],sv=[9,Q,`CreateBucket`,{[q]:[`PUT`,`/`,200]},()=>Cee,()=>See],cv=[9,Q,`CreateBucketMetadataConfiguration`,{[Pl]:`-`,[q]:[`POST`,`/?metadataConfiguration`,200]},()=>uf,()=>__],lv=[9,Q,`CreateBucketMetadataTableConfiguration`,{[Pl]:`-`,[q]:[`POST`,`/?metadataTable`,200]},()=>df,()=>__],uv=[9,Q,`CreateMultipartUpload`,{[q]:[`POST`,`/{Key+}?uploads`,200]},()=>Tee,()=>wee],dv=[9,Q,`CreateSession`,{[q]:[`GET`,`/?session`,200]},()=>Dee,()=>Eee],fv=[9,Q,`DeleteBucket`,{[q]:[`DELETE`,`/`,204]},()=>Wee,()=>__],pv=[9,Q,`DeleteBucketAnalyticsConfiguration`,{[q]:[`DELETE`,`/?analytics`,204]},()=>Mee,()=>__],mv=[9,Q,`DeleteBucketCors`,{[q]:[`DELETE`,`/?cors`,204]},()=>Nee,()=>__],hv=[9,Q,`DeleteBucketEncryption`,{[q]:[`DELETE`,`/?encryption`,204]},()=>Pee,()=>__],gv=[9,Q,`DeleteBucketIntelligentTieringConfiguration`,{[q]:[`DELETE`,`/?intelligent-tiering`,204]},()=>Fee,()=>__],_v=[9,Q,`DeleteBucketInventoryConfiguration`,{[q]:[`DELETE`,`/?inventory`,204]},()=>Iee,()=>__],vv=[9,Q,`DeleteBucketLifecycle`,{[q]:[`DELETE`,`/?lifecycle`,204]},()=>Lee,()=>__],yv=[9,Q,`DeleteBucketMetadataConfiguration`,{[q]:[`DELETE`,`/?metadataConfiguration`,204]},()=>Ree,()=>__],bv=[9,Q,`DeleteBucketMetadataTableConfiguration`,{[q]:[`DELETE`,`/?metadataTable`,204]},()=>zee,()=>__],xv=[9,Q,`DeleteBucketMetricsConfiguration`,{[q]:[`DELETE`,`/?metrics`,204]},()=>Bee,()=>__],$ee=[9,Q,`DeleteBucketOwnershipControls`,{[q]:[`DELETE`,`/?ownershipControls`,204]},()=>Vee,()=>__],ete=[9,Q,`DeleteBucketPolicy`,{[q]:[`DELETE`,`/?policy`,204]},()=>Hee,()=>__],tte=[9,Q,`DeleteBucketReplication`,{[q]:[`DELETE`,`/?replication`,204]},()=>Uee,()=>__],nte=[9,Q,`DeleteBucketTagging`,{[q]:[`DELETE`,`/?tagging`,204]},()=>ff,()=>__],Sv=[9,Q,`DeleteBucketWebsite`,{[q]:[`DELETE`,`/?website`,204]},()=>pf,()=>__],Cv=[9,Q,`DeleteObject`,{[q]:[`DELETE`,`/{Key+}?x-id=DeleteObject`,204]},()=>_f,()=>qee],wv=[9,Q,`DeleteObjectAnnotation`,{[q]:[`DELETE`,`/{Key+}?annotation`,204]},()=>Kee,()=>Gee],Tv=[9,Q,`DeleteObjects`,{[Pl]:`-`,[q]:[`POST`,`/?delete`,200]},()=>yf,()=>vf],Ev=[9,Q,`DeleteObjectTagging`,{[q]:[`DELETE`,`/{Key+}?tagging`,204]},()=>xf,()=>bf],Dv=[9,Q,`DeletePublicAccessBlock`,{[q]:[`DELETE`,`/?publicAccessBlock`,204]},()=>Sf,()=>__],Ov=[9,Q,`GetBucketAbac`,{[q]:[`GET`,`/?abac`,200]},()=>Ff,()=>Pf],kv=[9,Q,`GetBucketAccelerateConfiguration`,{[q]:[`GET`,`/?accelerate`,200]},()=>Lf,()=>If],Av=[9,Q,`GetBucketAcl`,{[q]:[`GET`,`/?acl`,200]},()=>zf,()=>Rf],jv=[9,Q,`GetBucketAnalyticsConfiguration`,{[q]:[`GET`,`/?analytics&x-id=GetBucketAnalyticsConfiguration`,200]},()=>Vf,()=>Bf],Mv=[9,Q,`GetBucketCors`,{[q]:[`GET`,`/?cors`,200]},()=>Uf,()=>Hf],Nv=[9,Q,`GetBucketEncryption`,{[q]:[`GET`,`/?encryption`,200]},()=>Gf,()=>Wf],Pv=[9,Q,`GetBucketIntelligentTieringConfiguration`,{[q]:[`GET`,`/?intelligent-tiering&x-id=GetBucketIntelligentTieringConfiguration`,200]},()=>qf,()=>Kf],Fv=[9,Q,`GetBucketInventoryConfiguration`,{[q]:[`GET`,`/?inventory&x-id=GetBucketInventoryConfiguration`,200]},()=>Yf,()=>Jf],Iv=[9,Q,`GetBucketLifecycleConfiguration`,{[q]:[`GET`,`/?lifecycle`,200]},()=>Zf,()=>Xf],Lv=[9,Q,`GetBucketLocation`,{[q]:[`GET`,`/?location`,200]},()=>Qf,()=>Yee],Rv=[9,Q,`GetBucketLogging`,{[q]:[`GET`,`/?logging`,200]},()=>ep,()=>$f],zv=[9,Q,`GetBucketMetadataConfiguration`,{[q]:[`GET`,`/?metadataConfiguration`,200]},()=>np,()=>tp],Bv=[9,Q,`GetBucketMetadataTableConfiguration`,{[q]:[`GET`,`/?metadataTable`,200]},()=>ap,()=>ip],Vv=[9,Q,`GetBucketMetricsConfiguration`,{[q]:[`GET`,`/?metrics&x-id=GetBucketMetricsConfiguration`,200]},()=>cp,()=>sp],Hv=[9,Q,`GetBucketNotificationConfiguration`,{[q]:[`GET`,`/?notification`,200]},()=>lp,()=>oh],Uv=[9,Q,`GetBucketOwnershipControls`,{[q]:[`GET`,`/?ownershipControls`,200]},()=>dp,()=>up],Wv=[9,Q,`GetBucketPolicy`,{[q]:[`GET`,`/?policy`,200]},()=>pp,()=>fp],Gv=[9,Q,`GetBucketPolicyStatus`,{[q]:[`GET`,`/?policyStatus`,200]},()=>hp,()=>mp],Kv=[9,Q,`GetBucketReplication`,{[q]:[`GET`,`/?replication`,200]},()=>_p,()=>gp],qv=[9,Q,`GetBucketRequestPayment`,{[q]:[`GET`,`/?requestPayment`,200]},()=>yp,()=>vp],Jv=[9,Q,`GetBucketTagging`,{[q]:[`GET`,`/?tagging`,200]},()=>xp,()=>bp],Yv=[9,Q,`GetBucketVersioning`,{[q]:[`GET`,`/?versioning`,200]},()=>Cp,()=>Sp],Xv=[9,Q,`GetBucketWebsite`,{[q]:[`GET`,`/?website`,200]},()=>Tp,()=>wp],Zv=[9,Q,`GetObject`,{[Pl]:`-`,[q]:[`GET`,`/{Key+}?x-id=GetObject`,200]},()=>Rp,()=>Lp],Qv=[9,Q,`GetObjectAcl`,{[q]:[`GET`,`/{Key+}?acl`,200]},()=>Dp,()=>Ep],$v=[9,Q,`GetObjectAnnotation`,{[Pl]:`-`,[q]:[`GET`,`/{Key+}?annotation&x-id=GetObjectAnnotation`,200]},()=>kp,()=>Op],ey=[9,Q,`GetObjectAttributes`,{[q]:[`GET`,`/{Key+}?attributes`,200]},()=>Mp,()=>Ap],ty=[9,Q,`GetObjectLegalHold`,{[q]:[`GET`,`/{Key+}?legal-hold`,200]},()=>Pp,()=>Np],ny=[9,Q,`GetObjectLockConfiguration`,{[q]:[`GET`,`/?object-lock`,200]},()=>Ip,()=>Fp],ry=[9,Q,`GetObjectRetention`,{[q]:[`GET`,`/{Key+}?retention`,200]},()=>Bp,()=>zp],iy=[9,Q,`GetObjectTagging`,{[q]:[`GET`,`/{Key+}?tagging`,200]},()=>Hp,()=>Vp],ay=[9,Q,`GetObjectTorrent`,{[q]:[`GET`,`/{Key+}?torrent`,200]},()=>Wp,()=>Up],oy=[9,Q,`GetPublicAccessBlock`,{[q]:[`GET`,`/?publicAccessBlock`,200]},()=>Kp,()=>Gp],sy=[9,Q,`HeadBucket`,{[q]:[`HEAD`,`/`,200]},()=>Zp,()=>Xp],cy=[9,Q,`HeadObject`,{[q]:[`HEAD`,`/{Key+}`,200]},()=>$p,()=>Qp],ly=[9,Q,`ListBucketAnalyticsConfigurations`,{[q]:[`GET`,`/?analytics&x-id=ListBucketAnalyticsConfigurations`,200]},()=>Cm,()=>Sm],uy=[9,Q,`ListBucketIntelligentTieringConfigurations`,{[q]:[`GET`,`/?intelligent-tiering&x-id=ListBucketIntelligentTieringConfigurations`,200]},()=>Tm,()=>wm],dy=[9,Q,`ListBucketInventoryConfigurations`,{[q]:[`GET`,`/?inventory&x-id=ListBucketInventoryConfigurations`,200]},()=>Dm,()=>Em],fy=[9,Q,`ListBucketMetricsConfigurations`,{[q]:[`GET`,`/?metrics&x-id=ListBucketMetricsConfigurations`,200]},()=>km,()=>Om],py=[9,Q,`ListBuckets`,{[q]:[`GET`,`/?x-id=ListBuckets`,200]},()=>jm,()=>Am],my=[9,Q,`ListDirectoryBuckets`,{[q]:[`GET`,`/?x-id=ListDirectoryBuckets`,200]},()=>Nm,()=>Mm],hy=[9,Q,`ListMultipartUploads`,{[q]:[`GET`,`/?uploads`,200]},()=>Fm,()=>Pm],gy=[9,Q,`ListObjectAnnotations`,{[q]:[`GET`,`/{Key+}?annotation&x-id=ListObjectAnnotations`,200]},()=>Lm,()=>Im],_y=[9,Q,`ListObjects`,{[q]:[`GET`,`/`,200]},()=>zm,()=>Rm],vy=[9,Q,`ListObjectsV2`,{[q]:[`GET`,`/?list-type=2`,200]},()=>Vm,()=>Bm],yy=[9,Q,`ListObjectVersions`,{[q]:[`GET`,`/?versions`,200]},()=>Um,()=>Hm],by=[9,Q,`ListParts`,{[q]:[`GET`,`/{Key+}?x-id=ListParts`,200]},()=>Gm,()=>Wm],xy=[9,Q,`PutBucketAbac`,{[Pl]:`-`,[q]:[`PUT`,`/?abac`,200]},()=>Oh,()=>__],Sy=[9,Q,`PutBucketAccelerateConfiguration`,{[Pl]:`-`,[q]:[`PUT`,`/?accelerate`,200]},()=>kh,()=>__],Cy=[9,Q,`PutBucketAcl`,{[Pl]:`-`,[q]:[`PUT`,`/?acl`,200]},()=>Ah,()=>__],wy=[9,Q,`PutBucketAnalyticsConfiguration`,{[q]:[`PUT`,`/?analytics`,200]},()=>jh,()=>__],Ty=[9,Q,`PutBucketCors`,{[Pl]:`-`,[q]:[`PUT`,`/?cors`,200]},()=>Mh,()=>__],Ey=[9,Q,`PutBucketEncryption`,{[Pl]:`-`,[q]:[`PUT`,`/?encryption`,200]},()=>Nh,()=>__],Dy=[9,Q,`PutBucketIntelligentTieringConfiguration`,{[q]:[`PUT`,`/?intelligent-tiering`,200]},()=>Ph,()=>__],Oy=[9,Q,`PutBucketInventoryConfiguration`,{[q]:[`PUT`,`/?inventory`,200]},()=>Fh,()=>__],ky=[9,Q,`PutBucketLifecycleConfiguration`,{[Pl]:`-`,[q]:[`PUT`,`/?lifecycle`,200]},()=>Lh,()=>Ih],Ay=[9,Q,`PutBucketLogging`,{[Pl]:`-`,[q]:[`PUT`,`/?logging`,200]},()=>Rh,()=>__],jy=[9,Q,`PutBucketMetricsConfiguration`,{[q]:[`PUT`,`/?metrics`,200]},()=>zh,()=>__],My=[9,Q,`PutBucketNotificationConfiguration`,{[q]:[`PUT`,`/?notification`,200]},()=>Bh,()=>__],Ny=[9,Q,`PutBucketOwnershipControls`,{[Pl]:`-`,[q]:[`PUT`,`/?ownershipControls`,200]},()=>Vh,()=>__],Py=[9,Q,`PutBucketPolicy`,{[Pl]:`-`,[q]:[`PUT`,`/?policy`,200]},()=>Hh,()=>__],Fy=[9,Q,`PutBucketReplication`,{[Pl]:`-`,[q]:[`PUT`,`/?replication`,200]},()=>Uh,()=>__],Iy=[9,Q,`PutBucketRequestPayment`,{[Pl]:`-`,[q]:[`PUT`,`/?requestPayment`,200]},()=>Wh,()=>__],Ly=[9,Q,`PutBucketTagging`,{[Pl]:`-`,[q]:[`PUT`,`/?tagging`,200]},()=>Gh,()=>__],Ry=[9,Q,`PutBucketVersioning`,{[Pl]:`-`,[q]:[`PUT`,`/?versioning`,200]},()=>Kh,()=>__],zy=[9,Q,`PutBucketWebsite`,{[Pl]:`-`,[q]:[`PUT`,`/?website`,200]},()=>qh,()=>__],By=[9,Q,`PutObject`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?x-id=PutObject`,200]},()=>rg,()=>ng],Vy=[9,Q,`PutObjectAcl`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?acl`,200]},()=>Yh,()=>Jh],Hy=[9,Q,`PutObjectAnnotation`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?annotation`,200]},()=>Zh,()=>Xh],Uy=[9,Q,`PutObjectLegalHold`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?legal-hold`,200]},()=>$h,()=>Qh],Wy=[9,Q,`PutObjectLockConfiguration`,{[Pl]:`-`,[q]:[`PUT`,`/?object-lock`,200]},()=>tg,()=>eg],Gy=[9,Q,`PutObjectRetention`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?retention`,200]},()=>ag,()=>ig],Ky=[9,Q,`PutObjectTagging`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?tagging`,200]},()=>sg,()=>og],qy=[9,Q,`PutPublicAccessBlock`,{[Pl]:`-`,[q]:[`PUT`,`/?publicAccessBlock`,200]},()=>cg,()=>__],Jy=[9,Q,`RenameObject`,{[q]:[`PUT`,`/{Key+}?renameObject`,200]},()=>hg,()=>mg],Yy=[9,Q,`RestoreObject`,{[Pl]:`-`,[q]:[`POST`,`/{Key+}?restore`,200]},()=>Eg,()=>Tg],Xy=[9,Q,`SelectObjectContent`,{[q]:[`POST`,`/{Key+}?select&select-type=2`,200]},()=>Ig,()=>Fg],Zy=[9,Q,`UpdateBucketMetadataAnnotationTableConfiguration`,{[Pl]:`-`,[q]:[`PUT`,`/?metadataAnnotationTable`,200]},()=>a_,()=>__],Qy=[9,Q,`UpdateBucketMetadataInventoryTableConfiguration`,{[Pl]:`-`,[q]:[`PUT`,`/?metadataInventoryTable`,200]},()=>o_,()=>__],$y=[9,Q,`UpdateBucketMetadataJournalTableConfiguration`,{[Pl]:`-`,[q]:[`PUT`,`/?metadataJournalTable`,200]},()=>s_,()=>__],eb=[9,Q,`UpdateObjectEncryption`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?encryption`,200]},()=>c_,()=>l_],tb=[9,Q,`UploadPart`,{[Pl]:`-`,[q]:[`PUT`,`/{Key+}?x-id=UploadPart`,200]},()=>p_,()=>f_],nb=[9,Q,`UploadPartCopy`,{[q]:[`PUT`,`/{Key+}?x-id=UploadPartCopy`,200]},()=>d_,()=>u_],rb=[9,Q,`WriteGetObjectResponse`,{endpoint:[`{RequestRoute}.`],[q]:[`POST`,`/WriteGetObjectResponse`,200]},()=>g_,()=>__],ib=class extends B($n,V,`CreateSession`,dv){},ab={version:`3.1155.0`};let ob=e=>({apiVersion:`2006-03-01`,base64Decoder:e?.base64Decoder??ht,base64Encoder:e?.base64Encoder??mt,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??Hn,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??pt,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Kn,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new $e},{schemeId:`aws.auth#sigv4a`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4a`),signer:new tt}],logger:e?.logger??new se,md5:e?.md5??ct,protocol:e?.protocol??k,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.s3`,errorTypeRegistries:Rd,xmlNamespace:`http://s3.amazonaws.com/doc/2006-03-01/`,version:`2006-03-01`,serviceTarget:`AmazonS3`},sdkStreamMixin:e?.sdkStreamMixin??ft,serviceId:e?.serviceId??`S3`,sha1:e?.sha1??yt,sha256:e?.sha256??st,signerConstructor:e?.signerConstructor??at,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Re,useArnRegion:e?.useArnRegion??void 0,utf8Decoder:e?.utf8Decoder??dt,utf8Encoder:e?.utf8Encoder??ut}),sb=e=>{ce(process.version);let t=ye(e),n=()=>t().then(le),a=ob(e);s(process.version);let o={profile:e?.profile,logger:a.logger};return{...a,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??xe(it,o),bodyLengthChecker:e?.bodyLengthChecker??gt,credentialDefaultProvider:e?.credentialDefaultProvider??ot,defaultUserAgentProvider:e?.defaultUserAgentProvider??c({serviceId:a.serviceId,clientVersion:ab.version}),disableS3ExpressSessionAuth:e?.disableS3ExpressSessionAuth??xe(j,o),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Fe,maxAttempts:e?.maxAttempts??xe(Ge,e),region:e?.region??xe(we,{...Te,...o}),requestChecksumCalculation:e?.requestChecksumCalculation??xe(i,o),requestHandler:vt.create(e?.requestHandler??n),responseChecksumValidation:e?.responseChecksumValidation??xe(r,o),retryMode:e?.retryMode??xe({...We,default:async()=>(await n()).retryMode||He},e),sigv4aSigningRegionSet:e?.sigv4aSigningRegionSet??xe(rt,o),streamCollector:e?.streamCollector??_t,streamHasher:e?.streamHasher??lt,useArnRegion:e?.useArnRegion??xe(A,o),useDualstackEndpoint:e?.useDualstackEndpoint??xe(Ce,o),useFipsEndpoint:e?.useFipsEndpoint??xe(Se,o),userAgentAppId:e?.userAgentAppId??xe(l,o)}},cb=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},lb=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()}),ub=(e,t)=>{let n=Object.assign(u(e),ue(e),ze(e),cb(e));return t.forEach(e=>e.configure(n)),Object.assign(e,d(n),de(n),Be(n),lb(n))};var db=class extends fe{config;constructor(...[e]){let t=sb(e||{});super(t),this.initConfig=t;let n=Jn(t),r=f(n),i=a(r),o=Ke(i),s=Ee(o),c=p(s),l=Ne(c),u=Ie(l),d=qn(u),y=M(d,{session:[()=>this,ib]}),b=ub(y,e?.extensions||[]);this.config=b,this.middlewareStack.use(Xe(this.config)),this.middlewareStack.use(m(this.config)),this.middlewareStack.use(qe(this.config)),this.middlewareStack.use(Ve(this.config)),this.middlewareStack.use(h(this.config)),this.middlewareStack.use(g(this.config)),this.middlewareStack.use(v(this.config)),this.middlewareStack.use(L(this.config,{httpAuthSchemeParametersProvider:Un,identityProviderConfigProvider:async e=>new te({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(ne(this.config)),this.middlewareStack.use(N(this.config)),this.middlewareStack.use(P(this.config)),this.middlewareStack.use(F(this.config)),this.middlewareStack.use(I(this.config)),this.middlewareStack.use(ee(this.config))}destroy(){super.destroy()}},fb=class extends B(Yn,V,`AbortMultipartUpload`,iv){},pb=class extends B(Yn,ar,`CompleteMultipartUpload`,av){},mb=class extends B(Xn,ar,`CopyObject`,ov){},hb=class extends B(Zn,or,`CreateBucket`,sv){},gb=class extends B(Qn,sr,`CreateBucketMetadataConfiguration`,cv){},_b=class extends B(Qn,sr,`CreateBucketMetadataTableConfiguration`,lv){},vb=class extends B(Yn,ar,`CreateMultipartUpload`,uv){},yb=class extends B(Qn,cr,`DeleteBucketAnalyticsConfiguration`,pv){},bb=class extends B(Qn,cr,`DeleteBucket`,fv){},xb=class extends B(Qn,cr,`DeleteBucketCors`,mv){},Sb=class extends B(Qn,cr,`DeleteBucketEncryption`,hv){},Cb=class extends B(Qn,cr,`DeleteBucketIntelligentTieringConfiguration`,gv){},wb=class extends B(Qn,cr,`DeleteBucketInventoryConfiguration`,_v){},Tb=class extends B(Qn,cr,`DeleteBucketLifecycle`,vv){},Eb=class extends B(Qn,cr,`DeleteBucketMetadataConfiguration`,yv){},Db=class extends B(Qn,cr,`DeleteBucketMetadataTableConfiguration`,bv){},Ob=class extends B(Qn,cr,`DeleteBucketMetricsConfiguration`,xv){},kb=class extends B(Qn,cr,`DeleteBucketOwnershipControls`,$ee){},Ab=class extends B(Qn,cr,`DeleteBucketPolicy`,ete){},jb=class extends B(Qn,cr,`DeleteBucketReplication`,tte){},Mb=class extends B(Qn,cr,`DeleteBucketTagging`,nte){},Nb=class extends B(Qn,cr,`DeleteBucketWebsite`,Sv){},Pb=class extends B(er,V,`DeleteObjectAnnotation`,wv){},Fb=class extends B(Yn,V,`DeleteObject`,Cv){},Ib=class extends B(er,lr,`DeleteObjects`,Tv){},Lb=class extends B(er,V,`DeleteObjectTagging`,Ev){},rte=class extends B(Qn,cr,`DeletePublicAccessBlock`,Dv){},Rb=class extends B(er,V,`GetBucketAbac`,Ov){},zb=class extends B(Qn,V,`GetBucketAccelerateConfiguration`,kv){},Bb=class extends B(Qn,V,`GetBucketAcl`,Av){},Vb=class extends B(Qn,V,`GetBucketAnalyticsConfiguration`,jv){},Hb=class extends B(Qn,V,`GetBucketCors`,Mv){},Ub=class extends B(Qn,V,`GetBucketEncryption`,Nv){},ite=class extends B(Qn,V,`GetBucketIntelligentTieringConfiguration`,Pv){},Wb=class extends B(Qn,V,`GetBucketInventoryConfiguration`,Fv){},Gb=class extends B(Qn,V,`GetBucketLifecycleConfiguration`,Iv){},Kb=class extends B(Qn,V,`GetBucketLocation`,Lv){},qb=class extends B(Qn,V,`GetBucketLogging`,Rv){},Jb=class extends B(Qn,V,`GetBucketMetadataConfiguration`,zv){},ate=class extends B(Qn,V,`GetBucketMetadataTableConfiguration`,Bv){},Yb=class extends B(Qn,V,`GetBucketMetricsConfiguration`,Vv){},Xb=class extends B(Qn,V,`GetBucketNotificationConfiguration`,Hv){},Zb=class extends B(Qn,V,`GetBucketOwnershipControls`,Uv){},ote=class extends B(Qn,cr,`GetBucketPolicy`,Wv){},Qb=class extends B(Qn,V,`GetBucketPolicyStatus`,Gv){},$b=class extends B(Qn,V,`GetBucketReplication`,Kv){},ste=class extends B(Qn,V,`GetBucketRequestPayment`,qv){},ex=class extends B(Qn,V,`GetBucketTagging`,Jv){},cte=class extends B(Qn,V,`GetBucketVersioning`,Yv){},tx=class extends B(Qn,V,`GetBucketWebsite`,Xv){},nx=class extends B(Yn,V,`GetObjectAcl`,Qv){},lte=class extends B(Yn,ur,`GetObjectAnnotation`,$v){},rx=class extends B(er,ar,`GetObjectAttributes`,ey){},ix=class extends B(Yn,dr,`GetObject`,Zv){},ax=class extends B(er,V,`GetObjectLegalHold`,ty){},ox=class extends B(er,V,`GetObjectLockConfiguration`,ny){},ute=class extends B(er,V,`GetObjectRetention`,ry){},sx=class extends B(er,V,`GetObjectTagging`,iy){},cx=class extends B(er,cr,`GetObjectTorrent`,ay){},lx=class extends B(Qn,V,`GetPublicAccessBlock`,oy){},ux=class extends B(er,V,`HeadBucket`,sy){},dx=class extends B(Yn,fr,`HeadObject`,cy){},dte=class extends B(Qn,V,`ListBucketAnalyticsConfigurations`,ly){},fte=class extends B(Qn,V,`ListBucketIntelligentTieringConfigurations`,uy){},fx=class extends B(Qn,V,`ListBucketInventoryConfigurations`,dy){},px=class extends B(Qn,V,`ListBucketMetricsConfigurations`,fy){},mx=class extends B(tr,V,`ListBuckets`,py){},hx=class extends B(nr,V,`ListDirectoryBuckets`,my){},gx=class extends B(rr,V,`ListMultipartUploads`,hy){},_x=class extends B(er,V,`ListObjectAnnotations`,gy){},vx=class extends B(rr,V,`ListObjects`,_y){},yx=class extends B(rr,V,`ListObjectsV2`,vy){},pte=class extends B(rr,V,`ListObjectVersions`,yy){},bx=class extends B(Yn,ar,`ListParts`,by){},xx=class extends B(er,pr,`PutBucketAbac`,xy){},mte=class extends B(Qn,pr,`PutBucketAccelerateConfiguration`,Sy){},Sx=class extends B(Qn,sr,`PutBucketAcl`,Cy){},Cx=class extends B(Qn,cr,`PutBucketAnalyticsConfiguration`,wy){},wx=class extends B(Qn,sr,`PutBucketCors`,Ty){},Tx=class extends B(Qn,sr,`PutBucketEncryption`,Ey){},Ex=class extends B(Qn,cr,`PutBucketIntelligentTieringConfiguration`,Dy){},Dx=class extends B(Qn,cr,`PutBucketInventoryConfiguration`,Oy){},hte=class extends B(Qn,lr,`PutBucketLifecycleConfiguration`,ky){},Ox=class extends B(Qn,sr,`PutBucketLogging`,Ay){},kx=class extends B(Qn,cr,`PutBucketMetricsConfiguration`,jy){},Ax=class extends B(Qn,cr,`PutBucketNotificationConfiguration`,My){},jx=class extends B(Qn,sr,`PutBucketOwnershipControls`,Ny){},Mx=class extends B(Qn,sr,`PutBucketPolicy`,Py){},Nx=class extends B(Qn,sr,`PutBucketReplication`,Fy){},Px=class extends B(Qn,sr,`PutBucketRequestPayment`,Iy){},Fx=class extends B(Qn,sr,`PutBucketTagging`,Ly){},Ix=class extends B(Qn,sr,`PutBucketVersioning`,Ry){},Lx=class extends B(Qn,sr,`PutBucketWebsite`,zy){},Rx=class extends B(Yn,lr,`PutObjectAcl`,Vy){},zx=class extends B(Yn,mr,`PutObjectAnnotation`,Hy){},Bx=class extends B(Yn,eee,`PutObject`,By){},Vx=class extends B(er,lr,`PutObjectLegalHold`,Uy){},Hx=class extends B(er,lr,`PutObjectLockConfiguration`,Wy){},gte=class extends B(er,lr,`PutObjectRetention`,Gy){},Ux=class extends B(er,lr,`PutObjectTagging`,Ky){},Wx=class extends B(Qn,sr,`PutPublicAccessBlock`,qy){},Gx=class extends B(Yn,V,`RenameObject`,Jy){},Kx=class extends B(er,mr,`RestoreObject`,Yy){},qx=class extends B(er,hr,`SelectObjectContent`,Xy){},Jx=class extends B(Qn,sr,`UpdateBucketMetadataAnnotationTableConfiguration`,Zy){},Yx=class extends B(Qn,sr,`UpdateBucketMetadataInventoryTableConfiguration`,Qy){},Xx=class extends B(Qn,sr,`UpdateBucketMetadataJournalTableConfiguration`,$y){},Zx=class extends B(er,lr,`UpdateObjectEncryption`,eb){},Qx=class extends B(Yn,gr,`UploadPart`,tb){},$x=class extends B($n,ar,`UploadPartCopy`,nb){},eS=class extends B(ir,cr,`WriteGetObjectResponse`,rb){};let tS=re(db,mx,`ContinuationToken`,`ContinuationToken`,`MaxBuckets`),nS=re(db,hx,`ContinuationToken`,`ContinuationToken`,`MaxDirectoryBuckets`),rS=re(db,_x,`ContinuationToken`,`NextContinuationToken`,`MaxAnnotationResults`),iS=re(db,yx,`ContinuationToken`,`NextContinuationToken`,`MaxKeys`),aS=re(db,bx,`PartNumberMarker`,`NextPartNumberMarker`,`MaxParts`),oS=async(e,t)=>{let n;try{return n=await e.send(new ux(t)),{state:ge.SUCCESS,reason:n}}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.RETRY,reason:n}}return{state:ge.RETRY,reason:n}},sS=async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,oS);return me(n)},cS=async(e,t)=>{let n;try{n=await e.send(new ux(t))}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.SUCCESS,reason:n}}return{state:ge.RETRY,reason:n}},_te=async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,cS);return me(n)},lS=async(e,t)=>{let n;try{return n=await e.send(new dx(t)),{state:ge.SUCCESS,reason:n}}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.RETRY,reason:n}}return{state:ge.RETRY,reason:n}},uS=async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,lS);return me(n)},dS=async(e,t)=>{let n;try{n=await e.send(new dx(t))}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.SUCCESS,reason:n}}return{state:ge.RETRY,reason:n}};_e({AbortMultipartUploadCommand:fb,CompleteMultipartUploadCommand:pb,CopyObjectCommand:mb,CreateBucketCommand:hb,CreateBucketMetadataConfigurationCommand:gb,CreateBucketMetadataTableConfigurationCommand:_b,CreateMultipartUploadCommand:vb,CreateSessionCommand:ib,DeleteBucketCommand:bb,DeleteBucketAnalyticsConfigurationCommand:yb,DeleteBucketCorsCommand:xb,DeleteBucketEncryptionCommand:Sb,DeleteBucketIntelligentTieringConfigurationCommand:Cb,DeleteBucketInventoryConfigurationCommand:wb,DeleteBucketLifecycleCommand:Tb,DeleteBucketMetadataConfigurationCommand:Eb,DeleteBucketMetadataTableConfigurationCommand:Db,DeleteBucketMetricsConfigurationCommand:Ob,DeleteBucketOwnershipControlsCommand:kb,DeleteBucketPolicyCommand:Ab,DeleteBucketReplicationCommand:jb,DeleteBucketTaggingCommand:Mb,DeleteBucketWebsiteCommand:Nb,DeleteObjectCommand:Fb,DeleteObjectAnnotationCommand:Pb,DeleteObjectsCommand:Ib,DeleteObjectTaggingCommand:Lb,DeletePublicAccessBlockCommand:rte,GetBucketAbacCommand:Rb,GetBucketAccelerateConfigurationCommand:zb,GetBucketAclCommand:Bb,GetBucketAnalyticsConfigurationCommand:Vb,GetBucketCorsCommand:Hb,GetBucketEncryptionCommand:Ub,GetBucketIntelligentTieringConfigurationCommand:ite,GetBucketInventoryConfigurationCommand:Wb,GetBucketLifecycleConfigurationCommand:Gb,GetBucketLocationCommand:Kb,GetBucketLoggingCommand:qb,GetBucketMetadataConfigurationCommand:Jb,GetBucketMetadataTableConfigurationCommand:ate,GetBucketMetricsConfigurationCommand:Yb,GetBucketNotificationConfigurationCommand:Xb,GetBucketOwnershipControlsCommand:Zb,GetBucketPolicyCommand:ote,GetBucketPolicyStatusCommand:Qb,GetBucketReplicationCommand:$b,GetBucketRequestPaymentCommand:ste,GetBucketTaggingCommand:ex,GetBucketVersioningCommand:cte,GetBucketWebsiteCommand:tx,GetObjectCommand:ix,GetObjectAclCommand:nx,GetObjectAnnotationCommand:lte,GetObjectAttributesCommand:rx,GetObjectLegalHoldCommand:ax,GetObjectLockConfigurationCommand:ox,GetObjectRetentionCommand:ute,GetObjectTaggingCommand:sx,GetObjectTorrentCommand:cx,GetPublicAccessBlockCommand:lx,HeadBucketCommand:ux,HeadObjectCommand:dx,ListBucketAnalyticsConfigurationsCommand:dte,ListBucketIntelligentTieringConfigurationsCommand:fte,ListBucketInventoryConfigurationsCommand:fx,ListBucketMetricsConfigurationsCommand:px,ListBucketsCommand:mx,ListDirectoryBucketsCommand:hx,ListMultipartUploadsCommand:gx,ListObjectAnnotationsCommand:_x,ListObjectsCommand:vx,ListObjectsV2Command:yx,ListObjectVersionsCommand:pte,ListPartsCommand:bx,PutBucketAbacCommand:xx,PutBucketAccelerateConfigurationCommand:mte,PutBucketAclCommand:Sx,PutBucketAnalyticsConfigurationCommand:Cx,PutBucketCorsCommand:wx,PutBucketEncryptionCommand:Tx,PutBucketIntelligentTieringConfigurationCommand:Ex,PutBucketInventoryConfigurationCommand:Dx,PutBucketLifecycleConfigurationCommand:hte,PutBucketLoggingCommand:Ox,PutBucketMetricsConfigurationCommand:kx,PutBucketNotificationConfigurationCommand:Ax,PutBucketOwnershipControlsCommand:jx,PutBucketPolicyCommand:Mx,PutBucketReplicationCommand:Nx,PutBucketRequestPaymentCommand:Px,PutBucketTaggingCommand:Fx,PutBucketVersioningCommand:Ix,PutBucketWebsiteCommand:Lx,PutObjectCommand:Bx,PutObjectAclCommand:Rx,PutObjectAnnotationCommand:zx,PutObjectLegalHoldCommand:Vx,PutObjectLockConfigurationCommand:Hx,PutObjectRetentionCommand:gte,PutObjectTaggingCommand:Ux,PutPublicAccessBlockCommand:Wx,RenameObjectCommand:Gx,RestoreObjectCommand:Kx,SelectObjectContentCommand:qx,UpdateBucketMetadataAnnotationTableConfigurationCommand:Jx,UpdateBucketMetadataInventoryTableConfigurationCommand:Yx,UpdateBucketMetadataJournalTableConfigurationCommand:Xx,UpdateObjectEncryptionCommand:Zx,UploadPartCommand:Qx,UploadPartCopyCommand:$x,WriteGetObjectResponseCommand:eS},class extends db{},{paginators:{paginateListBuckets:tS,paginateListDirectoryBuckets:nS,paginateListObjectAnnotations:rS,paginateListObjectsV2:iS,paginateListParts:aS},waiters:{waitUntilBucketExists:sS,waitUntilBucketNotExists:_te,waitUntilObjectExists:uS,waitUntilObjectNotExists:async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,dS);return me(n)}}}),t.DeleteObjectCommand=Fb,t.GetObjectCommand=ix,t.ListObjectsV2Command=yx,t.PutObjectCommand=Bx,t.S3Client=db})))();function hU(e){return e.sseEncryption==null?e.endpoint==null?`aws:kms`:`AES256`:e.sseEncryption}function Ose(e){return e.replaceAll(/X-Amz-[A-Za-z0-9-]+=[^&\s]+/g,`X-Amz-REDACTED=[REDACTED]`).replaceAll(/Authorization([:=]\s*)(Bearer\s+)?[^,\s]+/gi,`Authorization$1$2[REDACTED]`).slice(0,500)}function gU(e,t,n){let r=typeof n==`object`&&n&&`Code`in n?String(n.Code):void 0,i=n instanceof Error?n.name:`UnknownError`,a=typeof n==`object`&&n&&`$metadata`in n&&typeof n.$metadata==`object`&&n.$metadata!=null&&`httpStatusCode`in n.$metadata?Number(n.$metadata.httpStatusCode):void 0,o=Ose(Ws(n));return e.warning(`Object store ${t} failed`,{errorCode:r,errorName:i,httpStatusCode:a,message:o}),wv(`Object store ${t} failed: ${o}`,{errorCode:r,errorName:i,httpStatusCode:a})}function _U(e){return e===void 0?[]:[{abortSignal:e}]}function kse(e,t){if(t===void 0)return()=>{};let n=()=>{e.destroy(/* @__PURE__ */ Error(`Object store read aborted`))};return t.aborted?(n(),()=>{}):(t.addEventListener(`abort`,n,{once:!0}),()=>t.removeEventListener(`abort`,n))}async function Ase(e,t){if(e instanceof _r){let n=[],r=kse(e,t);try{for await(let t of e)typeof t==`string`?n.push(Sr.from(t)):n.push(Sr.isBuffer(t)?t:Sr.from(t))}finally{r()}return Sr.concat(n).toString(`utf8`)}if(typeof e==`object`&&e&&`transformToString`in e){let t=e.transformToString;if(typeof t==`function`)return String(await t.call(e))}throw wv(`Object store getObject failed: response body was not readable`)}function vU(e,t){if(e==null||e.length===0)throw wv(`Object store ${t} failed: missing ETag in response`);return e}function jse(e){return e.region.length>0?e.region:void 0}function Mse(e){let t=jse(e);return e.endpoint==null?new mU.S3Client({maxAttempts:3,region:t,...e.credentials==null?{}:{credentials:e.credentials}}):new mU.S3Client({endpoint:e.endpoint,forcePathStyle:!0,maxAttempts:3,region:t,...e.credentials==null?{}:{credentials:e.credentials}})}function yU(e,t){let n=Mse(e),r=hU(e);return{upload:async(i,a)=>{t.debug(`Uploading object store file`,{key:i,localPath:a});try{let o={Body:Ir.createReadStream(a),Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,Key:i,ServerSideEncryption:r};r===`aws:kms`&&e.sseKmsKeyId!=null&&(o.SSEKMSKeyId=e.sseKmsKeyId);let s=new mU.PutObjectCommand({...o});return await n.send(s),t.info(`Uploaded object store file`,{key:i}),Ys(void 0)}catch(e){return G(gU(t,`upload`,e))}},download:async(r,i)=>{t.debug(`Downloading object store file`,{key:r,localPath:i});try{await kr.mkdir(jr.dirname(i),{recursive:!0});let a=await n.send(new mU.GetObjectCommand({Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,Key:r}));if(!(a.Body instanceof _r))return G(wv(`Object store download failed: response body was not readable`));try{await qr(a.Body,Ir.createWriteStream(i))}catch(e){throw await kr.unlink(i).catch(()=>{}),e}return t.info(`Downloaded object store file`,{key:r,localPath:i}),Ys(void 0)}catch(e){return G(gU(t,`download`,e))}},list:async r=>{t.debug(`Listing object store keys`,{prefix:r});try{let i=[],a,o=0;do{if(o>=100){t.warning(`Object store list hit iteration cap, truncating result`,{prefix:r,maxIterations:100,keysReturned:i.length});break}o++;let s=await n.send(new mU.ListObjectsV2Command({Bucket:e.bucket,ContinuationToken:a,ExpectedBucketOwner:e.expectedBucketOwner,Prefix:r}));for(let e of s.Contents??[])e.Key!=null&&i.push(e.Key);a=s.IsTruncated===!0?s.NextContinuationToken:void 0}while(a!=null);return t.info(`Listed object store keys`,{count:i.length,prefix:r}),Ys(i)}catch(e){return G(gU(t,`list`,e))}},conditionalPut:async(i,a,o)=>{t.debug(`Conditionally uploading object store data`,{key:i,options:{ifMatch:o.ifMatch,ifNoneMatch:o.ifNoneMatch,tagging:o.tagging}});try{let s=vU((await n.send(new mU.PutObjectCommand({Body:a,Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,IfMatch:o.ifMatch,IfNoneMatch:o.ifNoneMatch,Key:i,ServerSideEncryption:r,...r===`aws:kms`&&e.sseKmsKeyId!=null?{SSEKMSKeyId:e.sseKmsKeyId}:{},...e.endpoint==null&&o.tagging!=null&&o.tagging.length>0?{Tagging:o.tagging}:{}}),..._U(o.signal))).ETag,`conditionalPut`);return t.info(`Conditionally uploaded object store data`,{key:i,etag:s}),Ys({etag:s})}catch(e){return G(gU(t,`conditionalPut`,e))}},conditionalDelete:async(r,i)=>{t.debug(`Conditionally deleting object store data`,{key:r});try{return await n.send(new mU.DeleteObjectCommand({Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,IfMatch:i.ifMatch,Key:r}),..._U(i.signal)),t.info(`Conditionally deleted object store data`,{key:r}),Ys(void 0)}catch(e){return G(gU(t,`conditionalDelete`,e))}},getObject:async(r,i)=>{t.debug(`Reading object store data`,{key:r});try{let a=await n.send(new mU.GetObjectCommand({Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,Key:r}),..._U(i?.signal)),o=await Ase(a.Body,i?.signal),s=vU(a.ETag,`getObject`);return t.info(`Read object store data`,{key:r,etag:s}),Ys({data:o,etag:s})}catch(e){return G(gU(t,`getObject`,e))}},listWithMetadata:async r=>{t.debug(`Listing object store keys with metadata`,{prefix:r});try{let i=[],a,o=0;do{if(o>=100){t.warning(`Object store listWithMetadata hit iteration cap, truncating result`,{prefix:r,maxIterations:100,entriesReturned:i.length});break}o++;let s=await n.send(new mU.ListObjectsV2Command({Bucket:e.bucket,ContinuationToken:a,ExpectedBucketOwner:e.expectedBucketOwner,Prefix:r}));for(let e of s.Contents??[])e.Key!=null&&e.LastModified!=null&&i.push({key:e.Key,lastModified:e.LastModified});a=s.IsTruncated===!0?s.NextContinuationToken:void 0}while(a!=null);return t.info(`Listed object store keys with metadata`,{count:i.length,prefix:r}),Ys(i)}catch(e){return G(gU(t,`listWithMetadata`,e))}}}}function bU(){let e=qn.env.XDG_DATA_HOME;return e!=null&&e.trim().length>0?e:jr.join(Vr.homedir(),`.local`,`share`)}function Nse(){return jr.join(bU(),`opencode`,`storage`)}function Pse(){return jr.join(bU(),`opencode`,`auth.json`)}function Fse(){return jr.join(bU(),`opencode`,`log`)}function Ise(){let e=qn.env.OPENCODE_PROMPT_ARTIFACT;return e===`true`||e===`1`}function xU(){let e=qn.env.RUNNER_OS;if(e!=null&&e.trim().length>0)return e;let t=Vr.platform();switch(t){case`darwin`:return`macOS`;case`win32`:return`Windows`;case`aix`:case`android`:case`freebsd`:case`haiku`:case`linux`:case`openbsd`:case`sunos`:case`cygwin`:case`netbsd`:return`Linux`;default:return t}}function SU(){let e=qn.env.GITHUB_REPOSITORY;return e!=null&&e.trim().length>0?e:`unknown/unknown`}function Lse(){let e=qn.env.GITHUB_REF_NAME;return e!=null&&e.trim().length>0?e:`main`}function Rse(){let e=qn.env.GITHUB_RUN_ID;return e!=null&&e.trim().length>0?Number(e):0}function CU(){let e=qn.env.GITHUB_RUN_ATTEMPT;if(e!=null&&e.trim().length>0){let t=Number(e);if(Number.isFinite(t)&&t>0)return t}return 1}function zse(){let e=qn.env.GITHUB_WORKSPACE;return e!=null&&e.trim().length>0?e:qn.cwd()}function Bse(e){let t=e.job?.trim()??``;if(t.length===0)return null;let n=Vse(t),r=Hse(e.matrixContext);return r==null?n:`${n}-m${r}`}function wU(){return Bse({job:qn.env.GITHUB_JOB,matrixContext:qn.env[`INPUT_MATRIX-CONTEXT`]})}function Vse(e){return e.replaceAll(/[^\w.-]/g,`-`)}function Hse(e){let t=e?.trim()??``;if(t.length===0)return null;let n;try{let e=JSON.parse(t);if(e==null||typeof e==`object`&&Object.keys(e).length===0)return null;n=JSON.stringify(TU(e))}catch{n=t}return wr(`sha256`).update(n).digest(`hex`).slice(0,8)}function TU(e){return Array.isArray(e)?e.map(TU):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).sort(([e],[t])=>et)).map(([e,t])=>[e,TU(t)])):e}const EU=[`token`,`password`,`secret`,`key`,`auth`,`credential`,`bearer`,`apikey`,`api_key`,`access_token`,`refresh_token`,`private`],Use=/* @__PURE__ */ new Set([`savekey`,`primarykey`,`restorekeys`,`restoredkey`,`cachekey`,`key`]);function Wse(e,t){let n=e.toLowerCase();return!Use.has(n)&&t.some(e=>n.includes(e.toLowerCase()))}function DU(e,t=EU){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(e=>DU(e,t));let n={};for(let[r,i]of Object.entries(e))n[r]=Wse(r,t)&&typeof i==`string`?`[REDACTED]`:typeof i==`object`&&i?DU(i,t):i;return n}var OU=class{constructor(){if(this.payload={},process.env.GITHUB_EVENT_PATH){if(tr(process.env.GITHUB_EVENT_PATH))this.payload=JSON.parse(rr(process.env.GITHUB_EVENT_PATH,{encoding:`utf8`}));else{let e=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${e} does not exist${Zn}`)}}this.eventName=process.env.GITHUB_EVENT_NAME,this.sha=process.env.GITHUB_SHA,this.ref=process.env.GITHUB_REF,this.workflow=process.env.GITHUB_WORKFLOW,this.action=process.env.GITHUB_ACTION,this.actor=process.env.GITHUB_ACTOR,this.job=process.env.GITHUB_JOB,this.runAttempt=parseInt(process.env.GITHUB_RUN_ATTEMPT,10),this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10),this.runId=parseInt(process.env.GITHUB_RUN_ID,10),this.apiUrl=process.env.GITHUB_API_URL??`https://api.github.com`,this.serverUrl=process.env.GITHUB_SERVER_URL??`https://github.com`,this.graphqlUrl=process.env.GITHUB_GRAPHQL_URL??`https://api.github.com/graphql`}get issue(){let e=this.payload;return Object.assign(Object.assign({},this.repo),{number:(e.issue||e.pull_request||e).number})}get repo(){if(process.env.GITHUB_REPOSITORY){let[e,t]=process.env.GITHUB_REPOSITORY.split(`/`);return{owner:e,repo:t}}if(this.payload.repository)return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name};throw Error(`context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'`)}},Gse=/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getProxyUrl=t,e.checkBypass=n;function t(e){let t=e.protocol===`https:`;if(n(e))return;let r=t?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(r)try{return new i(r)}catch{if(!r.startsWith(`http://`)&&!r.startsWith(`https://`))return new i(`http://${r}`)}else return}function n(e){if(!e.hostname)return!1;let t=e.hostname;if(r(t))return!0;let n=process.env.no_proxy||process.env.NO_PROXY||``;if(!n)return!1;let i;e.port?i=Number(e.port):e.protocol===`http:`?i=80:e.protocol===`https:`&&(i=443);let a=[e.hostname.toUpperCase()];typeof i==`number`&&a.push(`${a[0]}:${i}`);for(let e of n.split(`,`).map(e=>e.trim().toUpperCase()).filter(e=>e))if(e===`*`||a.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(`.`)&&t.endsWith(`${e}`)))return!0;return!1}function r(e){let t=e.toLowerCase();return t===`localhost`||t.startsWith(`127.`)||t.startsWith(`[::1]`)||t.startsWith(`[0:0:0:0:0:0:0:1]`)}var i=class extends URL{constructor(e,t){super(e,t),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}})),kU=/* @__PURE__ */ r((/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),o=0;os(this,void 0,void 0,function*(){let t=Buffer.alloc(0);this.message.on(`data`,e=>{t=Buffer.concat([t,e])}),this.message.on(`end`,()=>{e(t.toString())})}))})}readBodyBuffer(){return s(this,void 0,void 0,function*(){return new Promise(e=>s(this,void 0,void 0,function*(){let t=[];this.message.on(`data`,e=>{t.push(e)}),this.message.on(`end`,()=>{e(Buffer.concat(t))})}))})}};e.HttpClientResponse=S;function C(e){return new URL(e).protocol===`https:`}e.HttpClient=class{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(e),this.handlers=t||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,t){return s(this,void 0,void 0,function*(){return this.request(`OPTIONS`,e,null,t||{})})}get(e,t){return s(this,void 0,void 0,function*(){return this.request(`GET`,e,null,t||{})})}del(e,t){return s(this,void 0,void 0,function*(){return this.request(`DELETE`,e,null,t||{})})}post(e,t,n){return s(this,void 0,void 0,function*(){return this.request(`POST`,e,t,n||{})})}patch(e,t,n){return s(this,void 0,void 0,function*(){return this.request(`PATCH`,e,t,n||{})})}put(e,t,n){return s(this,void 0,void 0,function*(){return this.request(`PUT`,e,t,n||{})})}head(e,t){return s(this,void 0,void 0,function*(){return this.request(`HEAD`,e,null,t||{})})}sendStream(e,t,n,r){return s(this,void 0,void 0,function*(){return this.request(e,t,n,r)})}getJson(e){return s(this,arguments,void 0,function*(e,t={}){t[m.Accept]=this._getExistingOrDefaultHeader(t,m.Accept,h.ApplicationJson);let n=yield this.get(e,t);return this._processResponse(n,this.requestOptions)})}postJson(e,t){return s(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[m.Accept]=this._getExistingOrDefaultHeader(n,m.Accept,h.ApplicationJson),n[m.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,h.ApplicationJson);let i=yield this.post(e,r,n);return this._processResponse(i,this.requestOptions)})}putJson(e,t){return s(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[m.Accept]=this._getExistingOrDefaultHeader(n,m.Accept,h.ApplicationJson),n[m.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,h.ApplicationJson);let i=yield this.put(e,r,n);return this._processResponse(i,this.requestOptions)})}patchJson(e,t){return s(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[m.Accept]=this._getExistingOrDefaultHeader(n,m.Accept,h.ApplicationJson),n[m.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,h.ApplicationJson);let i=yield this.patch(e,r,n);return this._processResponse(i,this.requestOptions)})}request(e,t,n,r){return s(this,void 0,void 0,function*(){if(this._disposed)throw Error(`Client has already been disposed.`);let i=new URL(t),a=this._prepareRequest(e,i,r),o=this._allowRetries&&b.includes(e)?this._maxRetries+1:1,s=0,c;do{if(c=yield this.requestRaw(a,n),c&&c.message&&c.message.statusCode===p.Unauthorized){let e;for(let t of this.handlers)if(t.canHandleAuthentication(c)){e=t;break}return e?e.handleAuthentication(this,a,n):c}let t=this._maxRedirects;for(;c.message.statusCode&&v.includes(c.message.statusCode)&&this._allowRedirects&&t>0;){let o=c.message.headers.location;if(!o)break;let s=new URL(o);if(i.protocol===`https:`&&i.protocol!==s.protocol&&!this._allowRedirectDowngrade)throw Error(`Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.`);if(yield c.readBody(),s.hostname!==i.hostname)for(let e in r)e.toLowerCase()===`authorization`&&delete r[e];a=this._prepareRequest(e,s,r),c=yield this.requestRaw(a,n),t--}if(!c.message.statusCode||!y.includes(c.message.statusCode))return c;s+=1,s{function i(e,t){e?r(e):t?n(t):r(/* @__PURE__ */ Error(`Unknown error`))}this.requestRawWithCallback(e,t,i)})})}requestRawWithCallback(e,t,n){typeof t==`string`&&(e.options.headers||(e.options.headers={}),e.options.headers[`Content-Length`]=Buffer.byteLength(t,`utf8`));let r=!1;function i(e,t){r||(r=!0,n(e,t))}let a=e.httpModule.request(e.options,e=>{i(void 0,new S(e))}),o;a.on(`socket`,e=>{o=e}),a.setTimeout(this._socketTimeout||18e4,()=>{o&&o.end(),i(/* @__PURE__ */ Error(`Request timeout: ${e.options.path}`))}),a.on(`error`,function(e){i(e)}),t&&typeof t==`string`&&a.write(t,`utf8`),t&&typeof t!=`string`?(t.on(`close`,function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){let t=new URL(e),n=u.getProxyUrl(t);if(n&&n.hostname)return this._getProxyAgentDispatcher(t,n)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i=r.parsedUrl.protocol===`https:`;r.httpModule=i?l:c;let a=i?443:80;if(r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):a,r.options.path=(r.parsedUrl.pathname||``)+(r.parsedUrl.search||``),r.options.method=e,r.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(r.options.headers[`user-agent`]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers)for(let e of this.handlers)e.prepareRequest(r.options);return r}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},w(this.requestOptions.headers),w(e||{})):w(e||{})}_getExistingOrDefaultHeader(e,t,n){let r;if(this.requestOptions&&this.requestOptions.headers){let e=w(this.requestOptions.headers)[t];e&&(r=typeof e==`number`?e.toString():e)}let i=e[t];return i===void 0?r===void 0?n:r:typeof i==`number`?i.toString():i}_getExistingOrDefaultContentTypeHeader(e,t){let n;if(this.requestOptions&&this.requestOptions.headers){let e=w(this.requestOptions.headers)[m.ContentType];e&&(n=typeof e==`number`?String(e):Array.isArray(e)?e.join(`, `):e)}let r=e[m.ContentType];return r===void 0?n===void 0?t:n:typeof r==`number`?String(r):Array.isArray(r)?r.join(`, `):r}_getAgent(e){let t,n=u.getProxyUrl(e),r=n&&n.hostname;if(this._keepAlive&&r&&(t=this._proxyAgent),r||(t=this._agent),t)return t;let i=e.protocol===`https:`,a=100;if(this.requestOptions&&(a=this.requestOptions.maxSockets||c.globalAgent.maxSockets),n&&n.hostname){let e={maxSockets:a,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},r,o=n.protocol===`https:`;r=i?o?d.httpsOverHttps:d.httpsOverHttp:o?d.httpOverHttps:d.httpOverHttp,t=r(e),this._proxyAgent=t}if(!t){let e={keepAlive:this._keepAlive,maxSockets:a};t=i?new l.Agent(e):new c.Agent(e),this._agent=t}return i&&this._ignoreSslError&&(t.options=Object.assign(t.options||{},{rejectUnauthorized:!1})),t}_getProxyAgentDispatcher(e,t){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let r=e.protocol===`https:`;return n=new f.ProxyAgent(Object.assign({uri:t.href,pipelining:+!!this._keepAlive},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString(`base64`)}`})),this._proxyAgentDispatcher=n,r&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_getUserAgentWithOrchestrationId(e){let t=e||`actions/http-client`,n=process.env.ACTIONS_ORCHESTRATION_ID;return n?`${t} actions_orchestration_id/${n.replace(/[^a-z0-9_.-]/gi,`_`)}`:t}_performExponentialBackoff(e){return s(this,void 0,void 0,function*(){e=Math.min(10,e);let t=5*2**e;return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return s(this,void 0,void 0,function*(){return new Promise((n,r)=>s(this,void 0,void 0,function*(){let i=e.message.statusCode||0,a={statusCode:i,result:null,headers:{}};i===p.NotFound&&n(a);function o(e,t){if(typeof t==`string`){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}let s,c;try{c=yield e.readBody(),c&&c.length>0&&(s=t&&t.deserializeDates?JSON.parse(c,o):JSON.parse(c),a.result=s),a.headers=e.message.headers}catch{}if(i>299){let e;e=s&&s.message?s.message:c&&c.length>0?c:`Failed request: (${i})`;let t=new x(e,i);t.result=a.result,r(t)}else n(a)}))})}};let w=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{})})))(),1),Kse=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function qse(e,t){if(!e&&!t.auth)throw Error(`Parameter token or opts.auth is required`);if(e&&t.auth)throw Error(`Parameters token and opts.auth may not both be specified`);return typeof t.auth==`string`?t.auth:`token ${e}`}function Jse(e){return new kU.HttpClient().getAgent(e)}function Yse(e){return new kU.HttpClient().getAgentDispatcher(e)}function Xse(e){let t=Yse(e);return(e,n)=>Kse(this,void 0,void 0,function*(){return(0,yo.fetch)(e,Object.assign(Object.assign({},n),{dispatcher:t}))})}function Zse(){return process.env.GITHUB_API_URL||`https://api.github.com`}function Qse(e){let t=process.env.ACTIONS_ORCHESTRATION_ID?.trim();if(t){let n=`actions_orchestration_id/${t.replace(/[^a-z0-9_.-]/gi,`_`)}`;return e?.includes(n)?e:`${e?`${e} `:``}${n}`}return e}function AU(){return typeof navigator==`object`&&`userAgent`in navigator?navigator.userAgent:typeof process==`object`&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:``}function jU(e,t,n,r){if(typeof n!=`function`)throw Error(`method for before hook must be a function`);return r||={},Array.isArray(t)?t.reverse().reduce((t,n)=>jU.bind(null,e,n,t,r),n)():Promise.resolve().then(()=>e.registry[t]?e.registry[t].reduce((e,t)=>t.hook.bind(null,e,r),n)():n(r))}function $se(e,t,n,r){let i=r;e.registry[n]||(e.registry[n]=[]),t===`before`&&(r=(e,t)=>Promise.resolve().then(i.bind(null,t)).then(e.bind(null,t))),t===`after`&&(r=(e,t)=>{let n;return Promise.resolve().then(e.bind(null,t)).then(e=>(n=e,i(n,t))).then(()=>n)}),t===`error`&&(r=(e,t)=>Promise.resolve().then(e.bind(null,t)).catch(e=>i(e,t))),e.registry[n].push({hook:r,orig:i})}function ece(e,t,n){if(!e.registry[t])return;let r=e.registry[t].map(e=>e.orig).indexOf(n);r!==-1&&e.registry[t].splice(r,1)}const MU=Function.bind,NU=MU.bind(MU);function PU(e,t,n){let r=NU(ece,null).apply(null,n?[t,n]:[t]);e.api={remove:r},e.remove=r,[`before`,`error`,`after`,`wrap`].forEach(r=>{let i=n?[t,r,n]:[t,r];e[r]=e.api[r]=NU($se,null).apply(null,i)})}function tce(){let e=Symbol(`Singular`),t={registry:{}},n=jU.bind(null,t,e);return PU(n,t,e),n}function nce(){let e={registry:{}},t=jU.bind(null,e);return PU(t,e),t}var rce={Singular:tce,Collection:nce},ice={method:`GET`,baseUrl:`https://api.github.com`,headers:{accept:`application/vnd.github.v3+json`,"user-agent":`octokit-endpoint.js/0.0.0-development ${AU()}`},mediaType:{format:``}};function ace(e){return e?Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{}):{}}function oce(e){if(typeof e!=`object`||!e||Object.prototype.toString.call(e)!==`[object Object]`)return!1;let t=Object.getPrototypeOf(e);if(t===null)return!0;let n=Object.prototype.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&Function.prototype.call(n)===Function.prototype.call(e)}function FU(e,t){let n=Object.assign({},e);return Object.keys(t).forEach(r=>{oce(t[r])&&r in e?n[r]=FU(e[r],t[r]):Object.assign(n,{[r]:t[r]})}),n}function IU(e){for(let t in e)e[t]===void 0&&delete e[t];return e}function LU(e,t,n){if(typeof t==`string`){let[e,r]=t.split(` `);n=Object.assign(r?{method:e,url:r}:{url:e},n)}else n=Object.assign({},t);n.headers=ace(n.headers),IU(n),IU(n.headers);let r=FU(e||{},n);return n.url===`/graphql`&&(e&&e.mediaType.previews?.length&&(r.mediaType.previews=e.mediaType.previews.filter(e=>!r.mediaType.previews.includes(e)).concat(r.mediaType.previews)),r.mediaType.previews=(r.mediaType.previews||[]).map(e=>e.replace(/-preview/,``))),r}function sce(e,t){let n=/\?/.test(e)?`&`:`?`,r=Object.keys(t);return r.length===0?e:e+n+r.map(e=>e===`q`?`q=`+t.q.split(`+`).map(encodeURIComponent).join(`+`):`${e}=${encodeURIComponent(t[e])}`).join(`&`)}var cce=/\{[^{}}]+\}/g;function lce(e){return e.replace(/(?:^\W+)|(?:(?e.concat(t),[]):[]}function RU(e,t){let n={__proto__:null};for(let r of Object.keys(e))t.indexOf(r)===-1&&(n[r]=e[r]);return n}function zU(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,`[`).replace(/%5D/g,`]`)),e}).join(``)}function BU(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}function VU(e,t,n){return t=e===`+`||e===`#`?zU(t):BU(t),n?BU(n)+`=`+t:t}function HU(e){return e!=null}function UU(e){return e===`;`||e===`&`||e===`?`}function dce(e,t,n,r){var i=e[n],a=[];if(HU(i)&&i!==``){if(typeof i==`string`||typeof i==`number`||typeof i==`bigint`||typeof i==`boolean`)i=i.toString(),r&&r!==`*`&&(i=i.substring(0,parseInt(r,10))),a.push(VU(t,i,UU(t)?n:``));else if(r===`*`)Array.isArray(i)?i.filter(HU).forEach(function(e){a.push(VU(t,e,UU(t)?n:``))}):Object.keys(i).forEach(function(e){HU(i[e])&&a.push(VU(t,i[e],e))});else{let e=[];Array.isArray(i)?i.filter(HU).forEach(function(n){e.push(VU(t,n))}):Object.keys(i).forEach(function(n){HU(i[n])&&(e.push(BU(n)),e.push(VU(t,i[n].toString())))}),UU(t)?a.push(BU(n)+`=`+e.join(`,`)):e.length!==0&&a.push(e.join(`,`))}}else t===`;`?HU(i)&&a.push(BU(n)):i===``&&(t===`&`||t===`?`)?a.push(BU(n)+`=`):i===``&&a.push(``);return a}function fce(e){return{expand:pce.bind(null,e)}}function pce(e,t){var n=[`+`,`#`,`.`,`/`,`;`,`?`,`&`];return e=e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(e,r,i){if(r){let e=``,i=[];if(n.indexOf(r.charAt(0))!==-1&&(e=r.charAt(0),r=r.substr(1)),r.split(/,/g).forEach(function(n){var r=/([^:\*]*)(?::(\d+)|(\*))?/.exec(n);i.push(dce(t,e,r[1],r[2]||r[3]))}),e&&e!==`+`){var a=`,`;return e===`?`?a=`&`:e!==`#`&&(a=e),(i.length===0?``:e)+i.join(a)}return i.join(`,`)}return zU(i)}),e===`/`?e:e.replace(/\/$/,``)}function WU(e){let t=e.method.toUpperCase(),n=(e.url||`/`).replace(/:([a-z]\w+)/g,`{$1}`),r=Object.assign({},e.headers),i,a=RU(e,[`method`,`baseUrl`,`url`,`headers`,`request`,`mediaType`]),o=uce(n);n=fce(n).expand(a),/^http/.test(n)||(n=e.baseUrl+n);let s=RU(a,Object.keys(e).filter(e=>o.includes(e)).concat(`baseUrl`));return/application\/octet-stream/i.test(r.accept)||(e.mediaType.format&&(r.accept=r.accept.split(/,/).map(t=>t.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${e.mediaType.format}`)).join(`,`)),n.endsWith(`/graphql`)&&e.mediaType.previews?.length&&(r.accept=(r.accept.match(/(?`application/vnd.github.${t}-preview${e.mediaType.format?`.${e.mediaType.format}`:`+json`}`).join(`,`))),[`GET`,`HEAD`].includes(t)?n=sce(n,s):`data`in s?i=s.data:Object.keys(s).length&&(i=s),!r[`content-type`]&&i!==void 0&&(r[`content-type`]=`application/json; charset=utf-8`),[`PATCH`,`PUT`].includes(t)&&i===void 0&&(i=``),Object.assign({method:t,url:n,headers:r},i===void 0?null:{body:i},e.request?{request:e.request}:null)}function mce(e,t,n){return WU(LU(e,t,n))}function GU(e,t){let n=LU(e,t),r=mce.bind(null,n);return Object.assign(r,{DEFAULTS:n,defaults:GU.bind(null,n),merge:LU.bind(null,n),parse:WU})}var hce=GU(null,ice); +`),!0)),new o(`AWS_PROFILE is set, skipping fromEnv provider.`,{logger:e.logger,tryNextLink:!0});return e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv`),i(e)()},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromSSO`);let{ssoStartUrl:n,ssoAccountId:r,ssoRegion:i,ssoRoleName:a,ssoSession:s}=e;if(!n&&!r&&!i&&!a&&!s)throw new o(`Skipping SSO provider in default chain (inputs do not include SSO fields).`,{logger:e.logger});let{fromSSO:c}=tL();return c(e)(t)},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromIni`);let{fromIni:n}=Yse();return n(e)(t)},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromProcess`);let{fromProcess:n}=CH();return n(e)(t)},async t=>{e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile`);let{fromTokenFile:n}=wH();return n(e)(t)},async()=>(e.logger?.debug(`@aws-sdk/credential-provider-node - defaultProvider::remoteProvider`),(await l(e))()),async()=>{throw new o(`Could not load credentials from any providers`,{tryNextLink:!1,logger:e.logger})}],h),m=e=>e?.expiration!==void 0,h=e=>e?.expiration!==void 0&&e.expiration.getTime()-Date.now()<3e5;t.credentialsTreatedAsExpired=h,t.credentialsWillNeedRefresh=m,t.defaultProvider=p})),TH,EH,DH,OH,kH,AH=n((()=>{x(),TH=64,EH=20,DH=new Int32Array([1732584193,4023233417,2562383102,271733878,3285377520]),OH=new Int32Array([1518500249,1859775393,2400959708,3395469782]),kH=class e{digestLength=EH;state=Int32Array.from(DH);w;buffer=new Uint8Array(TH);bufferLength=0;bytesHashed=0;finished=!1;inner;outer;constructor(t){if(t){let n=e.normalizeKey(t);this.inner=new e,this.outer=new e;let r=/* @__PURE__ */ new Uint8Array(128);for(let e=0;e0){for(;n>0&&this.bufferLength=TH;)this.hashBuffer(e,t),t+=TH,n-=TH;for(;n>0;)this.buffer[this.bufferLength++]=e[t++],--n}async digest(){if(this.inner&&this.outer){if(this.finished)throw Error(`Attempted to digest an already finished HMAC.`);this.finished=!0;let e=this.inner.digestSync();return this.outer.update(e),this.outer.digestSync()}return this.digestSync()}reset(){this.state=Int32Array.from(DH),this.buffer=new Uint8Array(TH),this.bufferLength=0,this.bytesHashed=0}digestSync(){let e=this.state.slice(),t=this.buffer.slice(),n=this.bufferLength,r=this.bytesHashed/536870912|0,i=this.bytesHashed<<3;if(t[n++]=128,n>56){for(let e=n;e>>24&255,o[1]=e[0]>>>16&255,o[2]=e[0]>>>8&255,o[3]=e[0]&255,o[4]=e[1]>>>24&255,o[5]=e[1]>>>16&255,o[6]=e[1]>>>8&255,o[7]=e[1]&255,o[8]=e[2]>>>24&255,o[9]=e[2]>>>16&255,o[10]=e[2]>>>8&255,o[11]=e[2]&255,o[12]=e[3]>>>24&255,o[13]=e[3]>>>16&255,o[14]=e[3]>>>8&255,o[15]=e[3]&255,o[16]=e[4]>>>24&255,o[17]=e[4]>>>16&255,o[18]=e[4]>>>8&255,o[19]=e[4]&255,o}static normalizeKey(t){let n=O(t);if(n.byteLength>TH){let t=new e;t.update(n);let r=t.digestSync(),i=new Uint8Array(TH);return i.set(r),i}let r=new Uint8Array(TH);return r.set(n),r}hashBuffer(e,t){this.hashBufferWith(this.state,e,t)}hashBufferWith(e,t,n){let r=this.w??=/* @__PURE__ */ new Int32Array(80),i=e[0],a=e[1],o=e[2],s=e[3],c=e[4];for(let e=0;e<16;++e)r[e]=(t[n+e*4]&255)<<24|(t[n+e*4+1]&255)<<16|(t[n+e*4+2]&255)<<8|t[n+e*4+3]&255;for(let e=16;e<80;++e){let t=r[e-3]^r[e-8]^r[e-14]^r[e-16];r[e]=t<<1|t>>>31}for(let e=0;e<80;++e){let t=e<20?0:e<40?1:e<60?2:3,n=((i<<5|i>>>27)+(t===0?a&o^~a&s:t===2?a&o^a&s^o&s:a^o^s)|0)+(c+(OH[t]+r[e]|0)|0)|0;c=s,s=o,o=a<<30|a>>>2,a=i,i=n}e[0]=e[0]+i|0,e[1]=e[1]+a|0,e[2]=e[2]+o|0,e[3]=e[3]+s|0,e[4]=e[4]+c|0}}}));function Zse(){return class{digestLength=20;secret;hash;isHmac;finished=!1;constructor(e){this.secret=e,this.isHmac=!!e,this.hash=this.createHash()}update(e){if(this.finished)throw Error(`Attempted to update an already finished hash.`);this.hash.update(e)}async digest(){let e;return this.isHmac?(this.finished=!0,e=this.hash.digest()):e=this.hash.copy().digest(),new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}reset(){this.hash=this.createHash(),this.finished=!1}createHash(){return this.secret?Er(`sha1`,Qse(this.secret)):Tr(`sha1`)}}}function Qse(e){return typeof e==`string`?e:ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e)}var jH,MH,$se=n((()=>{AH(),jH=(()=>{try{return Tr(`sha1`),!0}catch{return!1}})(),MH=jH?Zse():kH})),NH,PH,FH,IH,LH,RH,ece=n((()=>{x(),AH(),{digest:NH,sign:PH,importKey:FH}=globalThis?.crypto?.subtle??{},IH=typeof NH==`function`&&typeof PH==`function`&&typeof FH==`function`?globalThis.crypto.subtle:void 0,LH=8388608,RH=class{digestLength=20;secret;pending=[];pendingBytes=0;fallback;finished=!1;constructor(e){e&&(this.secret=O(e))}update(e){if(this.finished)throw Error(`Attempted to update an already finished HMAC.`);this.fallback?this.fallback.update(e):(this.pending.push(e.slice()),this.pendingBytes+=e.byteLength,this.pendingBytes>=LH&&this.switchToFallback())}async digest(){if(this.fallback)return this.fallback.digest();if(this.secret&&this.finished)throw Error(`Attempted to digest an already finished HMAC.`);let e=re(this.pending);if(IH){if(this.secret){this.finished=!0;let t=await IH.importKey(`raw`,this.secret,{name:`HMAC`,hash:`SHA-1`},!1,[`sign`]),n=await IH.sign(`HMAC`,t,e);return new Uint8Array(n)}let t=await IH.digest(`SHA-1`,e);return new Uint8Array(t)}let t=new kH(this.secret);return t.update(e),t.digest()}reset(){this.pending=[],this.pendingBytes=0,this.fallback=void 0,this.finished=!1}switchToFallback(){let e=new kH(this.secret);for(let t of this.pending)e.update(t);this.fallback=e,this.pending=[],this.pendingBytes=0}}})),tce=/* @__PURE__ */ i({Sha1:()=>MH,Sha1Js:()=>kH,Sha1Node:()=>MH,Sha1WebCrypto:()=>RH,Sha256:()=>k,Sha256Js:()=>at,Sha256Node:()=>k}),nce=n((()=>{AH(),$se(),ece(),C()})),zH=(/* @__PURE__ */ a((t=>{let{getFlexibleChecksumsPlugin:n,NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS:r,NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS:i,resolveFlexibleChecksumsConfig:a}=(Zne(),e(Xne)),{awsEndpointFunctions:o,emitWarningIfUnsupportedVersion:s,createDefaultUserAgentProvider:c,NODE_APP_ID_CONFIG_OPTIONS:l,getAwsRegionExtensionConfiguration:u,resolveAwsRegionExtensionConfiguration:d,resolveUserAgentConfig:f,resolveHostHeaderConfig:p,getUserAgentPlugin:m,getHostHeaderPlugin:h,getLoggerPlugin:g,getRecursionDetectionPlugin:v}=(uT(),e(lT)),{getThrow200ExceptionsPlugin:b,getSsecPlugin:S,getLocationConstraintPlugin:w,getS3ExpiresMiddlewarePlugin:T,getCheckContentLengthHeaderPlugin:O,S3RestXmlProtocol:k,NODE_USE_ARN_REGION_CONFIG_OPTIONS:A,NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS:j,resolveS3Config:M,getValidateBucketNamePlugin:N,getAddExpectContinuePlugin:P,getRegionRedirectMiddlewarePlugin:F,getS3ExpressPlugin:I,getS3ExpressHttpSigningPlugin:ee}=(jie(),e(Aie)),{getHttpAuthSchemeEndpointRuleSetPlugin:L,DefaultIdentityProviderConfig:te,getHttpSigningPlugin:ne,createPaginator:re}=(yw(),e(fne)),{normalizeProvider:ie,getSmithyContext:z,makeBuilder:ae,ServiceException:oe,NoOpLogger:se,emitWarningIfUnsupportedVersion:ce,loadConfigsForDefaultMode:le,getDefaultExtensionConfiguration:ue,resolveDefaultRuntimeConfig:de,Client:fe,createWaiter:pe,checkExceptions:me,WaiterState:ge,createAggregatedClient:_e}=(R(),e(et)),{Command:ve}=(R(),e(et)),{resolveDefaultsModeConfig:ye,loadConfig:xe,NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS:Se,NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS:Ce,NODE_REGION_CONFIG_OPTIONS:we,NODE_REGION_CONFIG_FILE_OPTIONS:Te,resolveRegionConfig:Ee}=(nt(),e(he)),{BinaryDecisionDiagram:De,EndpointCache:Oe,decideEndpoint:ke,customEndpointFunctions:Ae,resolveParams:je,getEndpointPlugin:Me,resolveEndpointConfig:Ne}=(Le(),e(be)),{eventStreamSerdeProvider:Fe,resolveEventStreamSerdeConfig:Ie}=(Pe(),e(Je)),{parseUrl:Re,getHttpHandlerExtensionConfiguration:ze,resolveHttpHandlerRuntimeConfig:Be,getContentLengthPlugin:Ve}=(yS(),e(vS)),{DEFAULT_RETRY_MODE:He,NODE_RETRY_MODE_CONFIG_OPTIONS:We,NODE_MAX_ATTEMPT_CONFIG_OPTIONS:Ge,resolveRetryConfig:Ke,getRetryPlugin:qe}=(xC(),e(Lte)),{TypeRegistry:Ye,getSchemaSerdePlugin:Xe}=(D(),e(Ue)),{resolveAwsSdkSigV4Config:Ze,resolveAwsSdkSigV4AConfig:Qe,AwsSdkSigV4Signer:$e,AwsSdkSigV4ASigner:tt,NODE_SIGV4A_CONFIG_OPTIONS:rt,NODE_AUTH_SCHEME_PREFERENCE_OPTIONS:it}=(FA(),e(MA)),{SignatureV4MultiRegion:at}=aO(),{defaultProvider:ot}=Xse(),{Sha256:st,Md5:ct,readableStreamHasher:lt}=(C(),e(y)),{toUtf8:ut,fromUtf8:dt,sdkStreamMixin:ft,getAwsChunkedEncodingStream:pt,toBase64:mt,fromBase64:ht,calculateBodyLength:gt}=(x(),e(E)),{streamCollector:_t,NodeHttpHandler:vt}=$N(),{Sha1:yt}=(nce(),e(tce)),bt=`argv`,xt=`backend`,St=`authSchemes`,Ct=`disableDoubleEncoding`,wt=`signingName`,Tt=`signingRegion`,Et=`signingRegionSet`,Dt=`isSet`,Ot=`booleanEquals`,kt=`stringEquals`,At=`coalesce`,jt=`substring`,Mt=`aws.partition`,Nt=`partitionResult`,Pt=`accessPointSuffix`,Ft=`regionPrefix`,It=e=>`outpostId_ssa_`+e,Lt=`hardwareType`,Rt=`isValidHostLabel`,zt=`sigv4`,Bt=`aws.isVirtualHostableS3Bucket`,Vt=`getAttr`,Ht=`bucketArn`,Ut=`arnType`,Wt=`accesspoint`,Gt=e=>`accessPointName_ssa_`+e,Kt=`s3-object-lambda`,qt=`s3-outposts`,Jt=`bucketPartition`,Yt=`us-east-1`,Xt=`outpostType`,Zt=`name`,Qt=`{url#scheme}://{Bucket}.{url#authority}{url#path}`,$t=`{url#scheme}://{url#authority}{url#path}`,en=`{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}`,tn=`https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}`,nn=`https://{Bucket}.s3.{partitionResult#dnsSuffix}`,rn=e=>`{url#scheme}://{accessPointName_ssa_`+e+`}-{bucketArn#accountId}.{url#authority}{url#path}`,an=e=>"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName_ssa_"+e+"}`",on=`sigv4a`,sn=`{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}`,cn=`https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,ln=`https://s3.{partitionResult#dnsSuffix}`,un={ref:`UseFIPS`},dn={ref:`UseDualStack`},fn={ref:`Bucket`},pn={fn:Vt,[bt]:[{ref:Nt},Zt]},mn={ref:`url`},hn={ref:`Region`},gn={ref:Ht},_n={ref:Ut},vn={ref:`accessPointName_ssa_1`},yn={fn:Vt,[bt]:[gn,`region`]},bn={ref:Lt},xn={fn:Vt,[bt]:[gn,`service`]},Sn={fn:Vt,[bt]:[gn,`accountId`]},Cn={[xt]:`S3Express`,[St]:[{[Ct]:!0,[Zt]:`{_s3e_auth}`,[wt]:`s3express`,[Tt]:`{Region}`}]},wn={[xt]:`S3Express`,[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3express`,[Tt]:`{Region}`}]},Tn={[St]:[{[Ct]:!0,[Zt]:on,[wt]:qt,[Et]:[`*`]},{[Ct]:!0,[Zt]:zt,[wt]:qt,[Tt]:`{Region}`}]},En={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3`,[Tt]:Yt}]},Dn={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3`,[Tt]:`{Region}`}]},On={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:Kt,[Tt]:`{bucketArn#region}`}]},kn={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:`s3`,[Tt]:`{bucketArn#region}`}]},An={[St]:[{[Ct]:!0,[Zt]:on,[wt]:qt,[Et]:[`*`]},{[Ct]:!0,[Zt]:zt,[wt]:qt,[Tt]:`{bucketArn#region}`}]},jn={[St]:[{[Ct]:!0,[Zt]:zt,[wt]:Kt,[Tt]:`{Region}`}]},Mn=[hn],Nn=[{ref:`Endpoint`}],Pn=[fn],Fn=[fn,0,7,!0],In=[gn,`resourceId[1]`],Ln=[`*`],Rn={conditions:[[Dt,Mn],[Ot,[{ref:`Accelerate`},!0]],[Ot,[un,!0]],[Ot,[dn,!0]],[Dt,Nn],[Dt,Pn],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,0,6,!0]},``]},`--x-s3`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:Fn},``]},`--xa-s3`]],[Mt,Mn,Nt],[jt,Fn,Pt],[kt,[{ref:Pt},`--op-s3`]],[jt,[fn,8,12,!0],Ft],[jt,[fn,32,49,!0],It(2)],[jt,[fn,49,50,!0],Lt],[Ot,[{ref:`ForcePathStyle`},!0]],[kt,[pn,`aws-cn`]],[`ite`,[dn,`.dualstack`,``],`_s3e_ds`],[Rt,[{ref:It(2)},!1]],[`ite`,[un,`-fips`,``],`_s3e_fips`],[`ite`,[{fn:At,[bt]:[{ref:`DisableS3ExpressSessionAuth`},!1]},zt,`sigv4-s3express`],`_s3e_auth`],[Bt,[fn,!1]],[`parseURL`,Nn,`url`],[Ot,[{fn:At,[bt]:[{ref:`UseS3ExpressControlEndpoint`},!1]},!0]],[Bt,[fn,!0]],[kt,[{fn:Vt,[bt]:[mn,`scheme`]},`http`]],[Rt,[hn,!1]],[`aws.parseArn`,Pn,Ht],[Vt,[{fn:`split`,[bt]:[fn,`--`,0]},`[-2]`],`s3expressAvailabilityZoneId`],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,0,4,!1]},``]},`arn:`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,16,18,!0]},``]},`--`]],[Ot,[{fn:Vt,[bt]:[mn,`isIp`]},!0]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,21,23,!0]},``]},`--`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,27,29,!0]},``]},`--`]],[kt,[{ref:Ft},`beta`]],[`uriEncode`,Pn,`uri_encoded_bucket`],[Rt,[hn,!0]],[Ot,[{fn:At,[bt]:[{ref:`UseObjectLambdaEndpoint`},!1]},!0]],[Vt,[gn,`resourceId[0]`],Ut],[kt,[_n,``]],[kt,[_n,Wt]],[Vt,In,Gt(1)],[kt,[vn,``]],[kt,[yn,``]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,14,16,!0]},``]},`--`]],[kt,[bn,`e`]],[kt,[bn,`o`]],[kt,[hn,`aws-global`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,19,21,!0]},``]},`--`]],[kt,[xn,Kt]],[Ot,[{fn:At,[bt]:[{ref:`DisableAccessPoints`},!1]},!0]],[kt,[xn,qt]],[Mt,[yn],Jt],[Rt,[vn,!0]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,26,28,!0]},``]},`--`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,15,17,!0]},``]},`--`]],[Vt,[gn,`resourceId[4]`]],[kt,[{fn:At,[bt]:[{fn:jt,[bt]:[fn,20,22,!0]},``]},`--`]],[Ot,[{ref:`UseGlobalEndpoint`},!0]],[kt,[hn,Yt]],[Vt,In,It(1)],[Ot,[{fn:At,[bt]:[{ref:`UseArnRegion`},!0]},!0]],[Rt,[{ref:It(1)},!1]],[Vt,[gn,`resourceId[2]`],Xt],[kt,[hn,yn]],[kt,[{fn:Vt,[bt]:[{ref:Jt},Zt]},pn]],[Ot,[{ref:`DisableMultiRegionAccessPoints`},!0]],[Rt,[yn,!0]],[kt,[{fn:Vt,[bt]:[gn,`partition`]},pn]],[kt,[Sn,``]],[kt,[xn,`s3`]],[Rt,[Sn,!1]],[Vt,[gn,`resourceId[3]`],Gt(2)],[Rt,[vn,!1]],[kt,[{ref:Xt},Wt]],[Rt,[{ref:Gt(2)},!1]]],results:[[-1],[-1,`Accelerate cannot be used with FIPS`],[-1,`Cannot set dual-stack in combination with a custom endpoint.`],[-1,`A custom endpoint cannot be combined with FIPS`],[-1,`A custom endpoint cannot be combined with S3 Accelerate`],[-1,`Partition does not support FIPS`],[-1,`S3Express does not support S3 Accelerate.`],[`{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}`,Cn],[Qt,Cn],[-1,`S3Express bucket name is not a valid virtual hostable name.`],[`https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,wn],[`https://{Bucket}.s3express{_s3e_fips}-{s3expressAvailabilityZoneId}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}`,Cn],[-1,`Unrecognized S3Express bucket name format.`],[$t,Cn],[`https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}`,wn],[-1,`Expected a endpoint to be specified but no endpoint was found`],[`https://{Bucket}.ec2.{url#authority}`,Tn],[`https://{Bucket}.ec2.s3-outposts.{Region}.{partitionResult#dnsSuffix}`,Tn],[`https://{Bucket}.op-{outpostId_ssa_2}.{url#authority}`,Tn],[`https://{Bucket}.op-{outpostId_ssa_2}.s3-outposts.{Region}.{partitionResult#dnsSuffix}`,Tn],[-1,`Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"`],[-1,`Invalid Outposts Bucket alias - it must be a valid bucket name.`],[-1,"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."],[-1,"Custom endpoint `{Endpoint}` was not a valid URI"],[-1,`S3 Accelerate cannot be used in this region`],[`https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}`,Dn],[`https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[en,En],[Qt,En],[en,Dn],[Qt,Dn],[tn,En],[tn,Dn],[nn,En],[nn,Dn],[`https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}`,Dn],[-1,`Invalid region: region was not a valid DNS name.`],[-1,`S3 Object Lambda does not support Dual-stack`],[-1,`S3 Object Lambda does not support S3 Accelerate`],[-1,`Access points are not supported for this operation`],[-1,"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`"],[-1,`Invalid ARN: Missing account id`],[rn(1),On],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}`,On],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}`,On],[-1,an(1)],[-1,"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`"],[-1,"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)"],[-1,"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`"],[-1,"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."],[-1,`Invalid ARN: bucket ARN is missing a region`],[-1,"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided"],[-1,"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`"],[-1,`Access Points do not support S3 Accelerate`],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[rn(1),kn],[`https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}`,kn],[-1,`Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}`],[-1,`S3 MRAP does not support dual-stack`],[-1,`S3 MRAP does not support FIPS`],[-1,`S3 MRAP does not support S3 Accelerate`],[-1,`Invalid configuration: Multi-Region Access Point ARNs are disabled.`],[`https://{accessPointName_ssa_1}.accesspoint.s3-global.{partitionResult#dnsSuffix}`,{[St]:[{[Ct]:!0,name:on,[wt]:`s3`,[Et]:Ln}]}],[-1,"Client was configured for partition `{partitionResult#name}` but bucket referred to partition `{bucketArn#partition}`"],[-1,`Invalid Access Point Name`],[-1,`S3 Outposts does not support Dual-stack`],[-1,`S3 Outposts does not support FIPS`],[-1,`S3 Outposts does not support S3 Accelerate`],[-1,`Invalid Arn: Outpost Access Point ARN contains sub resources`],[`https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.{url#authority}`,An],[`https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}`,An],[-1,an(2)],[-1,"Expected an outpost type `accesspoint`, found {outpostType}"],[-1,`Invalid ARN: expected an access point name`],[-1,`Invalid ARN: Expected a 4-component resource`],[-1,"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId_ssa_1}`"],[-1,`Invalid ARN: The Outpost Id was not set`],[-1,`Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})`],[-1,`Invalid ARN: No ARN type specified`],[-1,"Invalid ARN: `{Bucket}` was not a valid ARN"],[-1,`Path-style addressing cannot be used with ARN buckets`],[`https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,En],[`https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[`https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,En],[`https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[`https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,En],[`https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[sn,En],[sn,Dn],[cn,En],[cn,Dn],[`https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}`,Dn],[-1,`Path-style addressing cannot be used with S3 Accelerate`],[$t,jn],[`https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}`,jn],[`https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}`,jn],[`https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://s3-fips.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://s3-fips.{Region}.{partitionResult#dnsSuffix}`,Dn],[`https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}`,En],[`https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}`,Dn],[$t,En],[$t,Dn],[ln,En],[ln,Dn],[`https://s3.{Region}.{partitionResult#dnsSuffix}`,Dn],[-1,`A region must be set when sending requests to S3.`]]},zn=new Int32Array([-1,1,-1,0,3,100000115,1,424,4,2,272,5,3,233,6,4,85,7,5,15,8,8,9,100000115,16,10,13,18,11,13,19,12,13,22,100000014,13,35,14,100000042,36,100000103,435,6,271,16,7,270,17,8,19,18,14,501,106,9,20,24,10,21,24,11,22,24,12,23,24,13,547,24,14,77,25,20,73,26,26,27,78,37,28,100000086,38,100000086,29,39,47,30,48,100000058,31,50,32,100000085,51,33,136,55,100000076,34,59,35,100000084,60,39,36,61,37,100000083,62,38,146,63,41,100000046,61,40,100000083,62,41,150,64,42,100000054,66,43,100000053,70,44,100000052,71,45,100000081,73,46,100000080,74,100000078,100000079,40,48,100000057,41,100000057,49,42,185,50,48,62,51,49,100000045,52,51,53,526,60,56,54,62,100000055,55,63,57,100000046,62,100000055,57,64,58,100000054,66,59,100000053,69,60,100000065,70,61,100000052,72,100000064,100000051,49,100000045,63,51,64,526,60,67,65,62,100000055,66,63,68,100000046,62,100000055,68,64,69,100000054,66,70,100000053,68,100000047,71,70,72,100000052,72,100000050,100000051,25,74,100000042,46,100000039,75,57,76,100000041,58,100000040,100000041,26,100000088,78,28,100000087,79,34,82,80,35,81,545,36,100000103,100000115,46,100000097,83,57,84,100000099,58,100000098,100000099,5,101,86,8,87,100000115,16,88,89,18,91,89,19,90,92,21,97,95,19,93,92,21,98,95,21,97,94,22,100000014,95,35,96,100000042,36,100000103,100000042,22,100000013,98,35,99,100000042,36,100000101,100,46,100000110,100000111,6,214,102,7,208,103,8,119,104,14,118,105,21,106,100000023,26,107,502,37,108,100000086,38,100000086,109,39,112,110,48,100000058,111,50,136,100000085,40,113,100000057,41,100000057,114,42,115,500,48,100000056,116,52,117,100000072,65,100000069,100000072,21,501,100000023,9,120,124,10,121,124,11,122,124,12,123,124,13,202,124,14,195,125,20,190,126,21,127,100000023,23,128,129,24,189,129,26,130,197,37,131,100000086,38,100000086,132,39,159,133,48,100000058,134,50,135,100000085,51,141,136,55,100000076,137,59,138,100000084,60,100000083,139,61,140,100000083,63,100000083,100000046,55,100000076,142,59,143,100000084,60,148,144,61,145,100000083,62,147,146,63,150,100000046,63,153,100000046,61,149,100000083,62,153,150,64,151,100000054,66,152,100000053,70,100000082,100000052,64,154,100000054,66,155,100000053,70,156,100000052,71,157,100000081,73,158,100000080,74,100000077,100000079,40,160,100000057,41,100000057,161,42,185,162,48,174,163,49,100000045,164,51,165,526,60,168,166,62,100000055,167,63,169,100000046,62,100000055,169,64,170,100000054,66,171,100000053,69,172,100000065,70,173,100000052,72,100000063,100000051,49,100000045,175,51,176,526,60,179,177,62,100000055,178,63,180,100000046,62,100000055,180,64,181,100000054,66,182,100000053,68,100000047,183,70,184,100000052,72,100000048,100000051,48,100000056,186,52,187,100000072,65,100000069,188,67,100000070,100000071,25,100000036,100000042,21,191,100000023,25,192,100000042,30,194,193,46,100000034,100000036,46,100000033,100000035,21,196,100000023,26,100000088,197,28,100000087,198,34,201,199,35,200,545,36,100000101,100000115,46,100000095,100000096,17,203,100000022,20,204,100000021,21,205,550,33,206,550,44,100000016,207,45,100000018,100000020,8,209,215,16,210,220,18,211,220,19,212,224,20,213,227,21,231,401,8,218,215,19,216,100000009,20,217,227,21,231,100000009,16,219,220,18,223,220,19,221,224,20,222,227,21,231,100000012,19,226,224,20,225,100000009,21,100000009,100000012,20,230,227,21,228,100000009,30,229,100000009,34,100000007,100000009,21,231,415,30,232,100000008,34,100000007,100000008,4,100000002,234,5,235,480,6,271,236,7,270,237,8,238,491,9,239,243,10,240,243,11,241,243,12,242,243,13,547,243,14,266,244,20,264,245,26,246,267,37,247,100000086,38,100000086,248,39,249,518,40,250,100000057,41,100000057,251,42,538,252,48,100000043,253,49,100000045,254,51,255,526,60,258,256,62,100000055,257,63,259,100000046,62,100000055,259,64,260,100000054,66,261,100000053,69,262,100000065,70,263,100000052,72,100000062,100000051,25,265,100000042,46,100000031,100000032,26,100000088,267,28,100000087,268,34,269,544,46,100000093,100000094,8,397,100000009,8,407,100000009,3,346,273,4,100000003,274,5,284,275,8,276,100000115,15,100000005,277,16,278,281,18,279,281,19,280,281,22,100000014,281,35,282,100000042,36,100000102,283,46,100000106,100000107,6,405,285,7,395,286,8,295,287,14,501,288,26,289,502,37,290,100000086,38,100000086,291,39,292,307,40,293,100000057,41,100000057,294,42,335,500,9,296,300,10,297,300,11,298,300,12,299,300,13,394,300,14,339,301,15,100000005,302,20,337,303,26,304,341,37,305,100000086,38,100000086,306,39,309,307,48,100000058,308,50,100000074,100000085,40,310,100000057,41,100000057,311,42,335,312,48,324,313,49,100000045,314,51,315,526,60,318,316,62,100000055,317,63,319,100000046,62,100000055,319,64,320,100000054,66,321,100000053,69,322,100000065,70,323,100000052,72,100000061,100000051,49,100000045,325,51,326,526,60,329,327,62,100000055,328,63,330,100000046,62,100000055,330,64,331,100000054,66,332,100000053,68,100000047,333,70,334,100000052,72,100000049,100000051,48,100000056,336,52,100000067,100000072,25,338,100000042,46,100000027,100000028,15,100000005,340,26,100000088,341,28,100000087,342,34,345,343,35,344,545,36,100000102,100000115,46,100000091,100000092,4,100000002,347,5,357,348,8,349,100000115,15,100000005,350,16,351,354,18,352,354,19,353,354,22,100000014,354,35,355,100000042,36,100000043,356,46,100000104,100000105,6,405,358,7,395,359,8,360,491,9,361,365,10,362,365,11,363,365,12,364,365,13,394,365,14,389,366,15,100000005,367,20,387,368,26,369,391,37,370,100000086,38,100000086,371,39,372,518,40,373,100000057,41,100000057,374,42,538,375,48,100000043,376,49,100000045,377,51,378,526,60,381,379,62,100000055,380,63,382,100000046,62,100000055,382,64,383,100000054,66,384,100000053,69,385,100000065,70,386,100000052,72,100000060,100000051,25,388,100000042,46,100000025,100000026,15,100000005,390,26,100000088,391,28,100000087,392,34,393,544,46,100000089,100000090,15,100000005,547,8,396,100000009,15,100000005,397,16,398,410,18,399,410,19,400,410,20,401,100000009,27,402,100000012,29,100000011,403,31,100000011,404,32,100000011,422,8,406,100000009,15,100000005,407,16,408,410,18,409,410,19,411,410,20,100000012,100000009,20,414,412,22,413,100000009,34,100000010,100000009,22,416,415,27,419,100000012,27,418,417,34,100000010,100000012,34,100000010,419,43,100000011,420,47,100000011,421,53,100000011,422,54,100000011,423,56,100000011,100000012,2,100000001,425,3,478,426,4,100000004,427,5,438,428,8,429,100000115,16,430,433,18,431,433,19,432,433,22,100000014,433,35,434,100000042,36,100000044,435,46,100000112,436,57,437,100000114,58,100000113,100000114,6,100000006,439,7,100000006,440,8,450,441,14,501,442,26,443,502,37,444,100000086,38,100000086,445,39,446,465,40,447,100000057,41,100000057,448,42,471,449,48,100000044,500,9,451,455,10,452,455,11,453,455,12,454,455,13,547,455,14,473,456,15,460,457,20,458,461,25,459,100000042,46,100000037,100000038,20,540,461,26,462,474,37,463,100000086,38,100000086,464,39,467,465,48,100000058,466,50,100000075,100000085,40,468,100000057,41,100000057,469,42,471,470,48,100000044,524,48,100000044,472,52,100000068,100000072,26,100000088,474,28,100000087,475,34,100000100,476,35,477,545,36,100000044,100000115,4,100000002,479,5,488,480,8,481,100000115,16,482,485,18,483,485,19,484,485,22,100000014,485,35,486,100000042,36,100000043,487,46,100000108,100000109,6,100000006,489,7,100000006,490,8,503,491,14,501,492,26,493,502,37,494,100000086,38,100000086,495,39,496,518,40,497,100000057,41,100000057,498,42,538,499,48,100000043,500,49,100000045,526,26,100000088,502,28,100000087,100000115,9,504,508,10,505,508,11,506,508,12,507,508,13,547,508,14,541,509,15,513,510,20,511,514,25,512,100000042,46,100000029,100000030,20,540,514,26,515,542,37,516,100000086,38,100000086,517,39,520,518,48,100000058,519,50,100000073,100000085,40,521,100000057,41,100000057,522,42,538,523,48,100000043,524,49,100000045,525,51,529,526,60,100000055,527,62,100000055,528,63,100000055,100000046,60,532,530,62,100000055,531,63,533,100000046,62,100000055,533,64,534,100000054,66,535,100000053,69,536,100000065,70,537,100000052,72,100000059,100000051,48,100000043,539,52,100000066,100000072,25,100000024,100000042,26,100000088,542,28,100000087,543,34,100000100,544,35,546,545,36,100000042,100000115,36,100000043,100000115,17,548,100000022,20,549,100000021,33,552,550,44,100000017,551,45,100000019,100000020,44,100000015,553,45,100000015,100000020]),Bn=De.from(zn,2,Rn.conditions,Rn.results),Vn=new Oe({size:50,params:[`Accelerate`,`Bucket`,`DisableAccessPoints`,`DisableMultiRegionAccessPoints`,`DisableS3ExpressSessionAuth`,`Endpoint`,`ForcePathStyle`,`Region`,`UseArnRegion`,`UseDualStack`,`UseFIPS`,`UseGlobalEndpoint`,`UseObjectLambdaEndpoint`,`UseS3ExpressControlEndpoint`]}),Hn=(e,t={})=>Vn.get(e,()=>ke(Bn,{endpointParams:e,logger:t.logger}));Ae.aws=o;let Un=(e=>async(t,n,r)=>{if(!r)throw Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");let i=await e(t,n,r),a=z(n)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!a)throw Error(`getEndpointParameterInstructions() is not defined on '${n.commandName}'`);let o=await je(r,{getEndpointParameterInstructions:a},t);return Object.assign(i,o)})(async(e,t,n)=>({operation:z(t).operation,region:await ie(e.region)()||(()=>{throw Error("expected `region` to be configured for `aws.auth#sigv4`")})()}));function Wn(e){return{schemeId:`aws.auth#sigv4`,signingProperties:{name:`s3`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Gn(e){return{schemeId:`aws.auth#sigv4a`,signingProperties:{name:`s3`,region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}let Kn=((e,t,n)=>r=>{let i=e(r).properties?.authSchemes;if(!i)return t(r);let a=[];for(let e of i){let{name:t,properties:o={},...s}=e,c=t.toLowerCase();t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: '${t}' to '${c}'`);let l;if(c===`sigv4a`){l=`aws.auth#sigv4a`;let e=i.find(e=>{let t=e.name.toLowerCase();return t!==`sigv4a`&&t.startsWith(`sigv4`)});if(at.sigv4aDependency()===`none`&&e)continue}else if(c.startsWith(`sigv4`))l=`aws.auth#sigv4`;else throw Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${c}'`);let u=n[l];if(!u)throw Error(`Could not find HttpAuthOption create function for '${l}'`);let d=u(r);d.schemeId=l,d.signingProperties={...d.signingProperties||{},...s,...o},a.push(d)}return a})(Hn,e=>{let t=[];return e.operation,t.push(Wn(e)),t.push(Gn(e)),t},{"aws.auth#sigv4":Wn,"aws.auth#sigv4a":Gn}),qn=e=>{let t=Ze(e),n=Qe(t);return Object.assign(n,{authSchemePreference:ie(e.authSchemePreference??[])})},Jn=e=>Object.assign(e,{useFipsEndpoint:e.useFipsEndpoint??!1,useDualstackEndpoint:e.useDualstackEndpoint??!1,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,useGlobalEndpoint:e.useGlobalEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,defaultSigningName:`s3`,clientContextParams:e.clientContextParams??{}}),B=ae({ForcePathStyle:{type:`clientContextParams`,name:`forcePathStyle`},UseArnRegion:{type:`clientContextParams`,name:`useArnRegion`},DisableMultiRegionAccessPoints:{type:`clientContextParams`,name:`disableMultiregionAccessPoints`},Accelerate:{type:`clientContextParams`,name:`useAccelerateEndpoint`},DisableS3ExpressSessionAuth:{type:`clientContextParams`,name:`disableS3ExpressSessionAuth`},UseGlobalEndpoint:{type:`builtInParams`,name:`useGlobalEndpoint`},UseFIPS:{type:`builtInParams`,name:`useFipsEndpoint`},Endpoint:{type:`builtInParams`,name:`endpoint`},Region:{type:`builtInParams`,name:`region`},UseDualStack:{type:`builtInParams`,name:`useDualstackEndpoint`}},`AmazonS3`,`S3Client`,Me),Yn={Bucket:{type:`contextParams`,name:`Bucket`},Key:{type:`contextParams`,name:`Key`}},Xn={DisableS3ExpressSessionAuth:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`},Key:{type:`contextParams`,name:`Key`},CopySource:{type:`contextParams`,name:`CopySource`}},Zn={UseS3ExpressControlEndpoint:{type:`staticContextParams`,value:!0},DisableAccessPoints:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`}},Qn={UseS3ExpressControlEndpoint:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`}},$n={DisableS3ExpressSessionAuth:{type:`staticContextParams`,value:!0},Bucket:{type:`contextParams`,name:`Bucket`}},er={Bucket:{type:`contextParams`,name:`Bucket`}},tr={},nr={UseS3ExpressControlEndpoint:{type:`staticContextParams`,value:!0}},rr={Bucket:{type:`contextParams`,name:`Bucket`},Prefix:{type:`contextParams`,name:`Prefix`}},ir={UseObjectLambdaEndpoint:{type:`staticContextParams`,value:!0}},V=(e,t,n,r)=>[b(n)],ar=(e,t,n,r)=>[b(n),S(n)],or=(e,t,n,r)=>[b(n),w(n)],sr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!0})],cr=(e,t,n,r)=>[],lr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!0}),b(r)],ur=(e,t,r,i)=>[n(r,{requestChecksumRequired:!1,requestValidationModeMember:`ChecksumMode`,responseAlgorithms:[`CRC64NVME`,`CRC32`,`CRC32C`,`SHA256`,`SHA1`,`SHA512`,`MD5`,`XXHASH64`,`XXHASH3`,`XXHASH128`]})],dr=(e,t,r,i)=>[n(r,{requestChecksumRequired:!1,requestValidationModeMember:`ChecksumMode`,responseAlgorithms:[`CRC64NVME`,`CRC32`,`CRC32C`,`SHA256`,`SHA1`,`SHA512`,`MD5`,`XXHASH64`,`XXHASH3`,`XXHASH128`]}),S(r),T(r)],fr=(e,t,n,r)=>[b(n),S(n),T(n)],pr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1})],mr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1}),b(r)],hr=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1}),O(r),b(r),S(r)],gr=(e,t,n,r)=>[S(n)],_r=(e,t,r,i)=>[n(r,{requestAlgorithmMember:{httpHeader:`x-amz-sdk-checksum-algorithm`,name:`ChecksumAlgorithm`},requestChecksumRequired:!1}),b(r),S(r)];var vr=class e extends oe{static shapeId=`smithy.ts.sdk.synthetic.com.amazonaws.s3#S3ServiceException`;constructor(t){super(t),Object.setPrototypeOf(this,e.prototype)}},yr=class e extends vr{static shapeId=`com.amazonaws.s3#NoSuchUpload`;name=`NoSuchUpload`;$fault=`client`;constructor(t){super({name:`NoSuchUpload`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},br=class e extends vr{static shapeId=`com.amazonaws.s3#AccessDenied`;name=`AccessDenied`;$fault=`client`;constructor(t){super({name:`AccessDenied`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},xr=class e extends vr{static shapeId=`com.amazonaws.s3#ObjectNotInActiveTierError`;name=`ObjectNotInActiveTierError`;$fault=`client`;constructor(t){super({name:`ObjectNotInActiveTierError`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Sr=class e extends vr{static shapeId=`com.amazonaws.s3#BucketAlreadyExists`;name=`BucketAlreadyExists`;$fault=`client`;constructor(t){super({name:`BucketAlreadyExists`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Cr=class e extends vr{static shapeId=`com.amazonaws.s3#BucketAlreadyOwnedByYou`;name=`BucketAlreadyOwnedByYou`;$fault=`client`;constructor(t){super({name:`BucketAlreadyOwnedByYou`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},wr=class e extends vr{static shapeId=`com.amazonaws.s3#NoSuchBucket`;name=`NoSuchBucket`;$fault=`client`;constructor(t){super({name:`NoSuchBucket`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Tr=class e extends vr{static shapeId=`com.amazonaws.s3#NoSuchKey`;name=`NoSuchKey`;$fault=`client`;constructor(t){super({name:`NoSuchKey`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Er=class e extends vr{static shapeId=`com.amazonaws.s3#InvalidObjectState`;name=`InvalidObjectState`;$fault=`client`;StorageClass;AccessTier;constructor(t){super({name:`InvalidObjectState`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype),this.StorageClass=t.StorageClass,this.AccessTier=t.AccessTier}},Dr=class e extends vr{static shapeId=`com.amazonaws.s3#NoSuchAnnotation`;name=`NoSuchAnnotation`;$fault=`client`;constructor(t){super({name:`NoSuchAnnotation`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Or=class e extends vr{static shapeId=`com.amazonaws.s3#NotFound`;name=`NotFound`;$fault=`client`;constructor(t){super({name:`NotFound`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},kr=class e extends vr{static shapeId=`com.amazonaws.s3#InvalidPrefix`;name=`InvalidPrefix`;$fault=`client`;constructor(t){super({name:`InvalidPrefix`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Ar=class e extends vr{static shapeId=`com.amazonaws.s3#EncryptionTypeMismatch`;name=`EncryptionTypeMismatch`;$fault=`client`;constructor(t){super({name:`EncryptionTypeMismatch`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},jr=class e extends vr{static shapeId=`com.amazonaws.s3#InvalidRequest`;name=`InvalidRequest`;$fault=`client`;constructor(t){super({name:`InvalidRequest`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Mr=class e extends vr{static shapeId=`com.amazonaws.s3#InvalidWriteOffset`;name=`InvalidWriteOffset`;$fault=`client`;constructor(t){super({name:`InvalidWriteOffset`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},eee=class e extends vr{static shapeId=`com.amazonaws.s3#TooManyParts`;name=`TooManyParts`;$fault=`client`;constructor(t){super({name:`TooManyParts`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},tee=class e extends vr{static shapeId=`com.amazonaws.s3#AnnotationLimitExceeded`;name=`AnnotationLimitExceeded`;$fault=`client`;constructor(t){super({name:`AnnotationLimitExceeded`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Nr=class e extends vr{static shapeId=`com.amazonaws.s3#AnnotationNameTooLong`;name=`AnnotationNameTooLong`;$fault=`client`;constructor(t){super({name:`AnnotationNameTooLong`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},nee=class e extends vr{static shapeId=`com.amazonaws.s3#InvalidAnnotationName`;name=`InvalidAnnotationName`;$fault=`client`;constructor(t){super({name:`InvalidAnnotationName`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Pr=class e extends vr{static shapeId=`com.amazonaws.s3#UnsupportedMediaType`;name=`UnsupportedMediaType`;$fault=`client`;constructor(t){super({name:`UnsupportedMediaType`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Fr=class e extends vr{static shapeId=`com.amazonaws.s3#IdempotencyParameterMismatch`;name=`IdempotencyParameterMismatch`;$fault=`client`;constructor(t){super({name:`IdempotencyParameterMismatch`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}},Ir=class e extends vr{static shapeId=`com.amazonaws.s3#ObjectAlreadyInActiveTierError`;name=`ObjectAlreadyInActiveTierError`;$fault=`client`;constructor(t){super({name:`ObjectAlreadyInActiveTierError`,$fault:`client`,...t}),Object.setPrototypeOf(this,e.prototype)}};let Lr=`AccelerateConfiguration`,Rr=`AccessControlList`,zr=`AnalyticsConfigurationList`,Br=`AccessControlPolicy`,Vr=`AccessControlTranslation`,Hr=`AnalyticsConfiguration`,Ur=`AbortDate`,Wr=`AnnotationEntry`,Gr=`AbortIncompleteMultipartUpload`,Kr=`AccessKeyId`,qr=`AnnotationName`,Jr=`AnnotationPayload`,Yr=`AccessPointArn`,Xr=`AnnotationPrefix`,Zr=`AcceptRanges`,Qr=`AbortRuleId`,$r=`AbacStatus`,ei=`AccessTier`,ti=`AnnotationTableConfiguration`,ni=`AnnotationTableConfigurationResult`,H=`Bucket`,ri=`BucketArn`,ii=`BlockedEncryptionTypes`,ai=`BypassGovernanceRetention`,oi=`BucketKeyEnabled`,si=`BucketLoggingStatus`,ci=`BytesProcessed`,li=`BlockPublicAcls`,ui=`BlockPublicPolicy`,di=`BucketRegion`,fi=`BytesReturned`,pi=`BytesScanned`,mi=`Body`,hi=`Buckets`,gi=`Checksum`,_i=`ChecksumAlgorithm`,vi=`CreateBucketConfiguration`,yi=`CacheControl`,bi=`ChecksumCRC32`,xi=`ChecksumCRC32C`,Si=`ChecksumCRC64NVME`,Ci=`Cache-Control`,wi=`Content-Disposition`,Ti=`ContentDisposition`,Ei=`Content-Encoding`,Di=`ContentEncoding`,Oi=`ContentLanguage`,ki=`Content-Language`,Ai=`Content-Length`,ji=`ContentLength`,Mi=`Content-MD5`,Ni=`ChecksumMD5`,Pi=`ContentMD5`,Fi=`CompleteMultipartUpload`,Ii=`ChecksumMode`,Li=`CopyObjectResult`,Ri=`CORSConfiguration`,zi=`CORSRules`,Bi=`CORSRule`,Vi=`CopyPartResult`,Hi=`CommonPrefixes`,Ui=`ContentRange`,Wi=`Content-Range`,Gi=`ConfigurationState`,Ki=`ChecksumSHA1`,qi=`ChecksumSHA256`,Ji=`ChecksumSHA512`,Yi=`CopySourceIfMatch`,Xi=`CopySourceIfModifiedSince`,Zi=`CopySourceIfNoneMatch`,Qi=`CopySourceIfUnmodifiedSince`,$i=`CopySourceSSECustomerAlgorithm`,ea=`CopySourceSSECustomerKey`,ta=`CopySourceSSECustomerKeyMD5`,na=`CopySourceVersionId`,ra=`CopySource`,ia=`ChecksumType`,aa=`Content-Type`,oa=`ContentType`,sa=`ContinuationToken`,ca=`ChecksumXXHASH64`,la=`ChecksumXXHASH3`,ua=`ChecksumXXHASH128`,da=`Condition`,fa=`Contents`,pa=`Credentials`,ma=`Days`,ha=`DeleteMarker`,ga=`DeleteMarkerReplication`,_a=`DeleteMarkers`,va=`DisplayName`,ya=`DefaultRetention`,ba=`DestinationResult`,xa=`Date`,Sa=`Delete`,Ca=`Delimiter`,wa=`Destination`,Ta=`Details`,Ea=`Error`,Da=`EventBridgeConfiguration`,U=`ExpectedBucketOwner`,Oa=`EncryptionConfiguration`,ka=`ErrorCode`,Aa=`ErrorDocument`,ja=`EventHoldDuration`,Ma=`ErrorMessage`,Na=`ExistingObjectReplication`,Pa=`ExpiresString`,Fa=`ExpectedSourceBucketOwner`,Ia=`ETag`,La=`EncryptionType`,Ra=`EncodingType`,za=`ExpressionType`,Ba=`Encryption`,Va=`Errors`,Ha=`Events`,Ua=`Event`,Wa=`Expiration`,Ga=`Expires`,Ka=`Expression`,qa=`Filter`,Ja=`FieldDelimiter`,Ya=`FilterRule`,Xa=`Format`,Za=`Grants`,Qa=`GetBucketMetadataConfigurationResult`,$a=`GetBucketMetadataTableConfigurationResult`,eo=`GrantFullControl`,to=`GlacierJobParameters`,no=`GrantRead`,ro=`GrantReadACP`,io=`GrantWrite`,ao=`GrantWriteACP`,oo=`Grant`,so=`Grantee`,co=`HostName`,lo=`InventoryConfiguration`,uo=`InventoryConfigurationList`,fo=`IndexDocument`,po=`IsLatest`,mo=`IfMatch`,ho=`If-Modified-Since`,go=`IfModifiedSince`,_o=`If-Match`,vo=`IfNoneMatch`,yo=`If-None-Match`,bo=`IgnorePublicAcls`,xo=`IsPublic`,So=`InputSerialization`,Co=`IsTruncated`,wo=`IntelligentTieringConfiguration`,To=`IntelligentTieringConfigurationList`,Eo=`InventoryTableConfigurationResult`,Do=`InventoryTableConfiguration`,Oo=`IfUnmodifiedSince`,ko=`If-Unmodified-Since`,Ao=`Initiator`,jo=`JSON`,Mo=`JournalTableConfiguration`,No=`JournalTableConfigurationResult`,Po=`KeyMarker`,Fo=`Location`,Io=`ListBucketResult`,Lo=`LocationConstraint`,Ro=`LifecycleConfiguration`,zo=`LoggingEnabled`,Bo=`LegalHold`,Vo=`LastModified`,Ho=`Last-Modified`,Uo=`Metadata`,Wo=`MaxAnnotationResults`,Go=`MetadataConfiguration`,Ko=`MetricsConfigurationList`,qo=`MetadataConfigurationResult`,Jo=`MetricsConfiguration`,Yo=`MfaDelete`,Xo=`MetadataEntry`,Zo=`MFADelete`,Qo=`MaxKeys`,$o=`MissingMeta`,es=`MaxParts`,ts=`MetadataTableConfiguration`,ns=`MetadataTableConfigurationResult`,rs=`MultipartUpload`,is=`MaxUploads`,as=`Marker`,os=`Metrics`,ss=`Mode`,cs=`Name`,ls=`NotificationConfiguration`,us=`NextContinuationToken`,ds=`NoncurrentDays`,fs=`NextKeyMarker`,ps=`NewerNoncurrentVersions`,ms=`NextPartNumberMarker`,hs=`NoncurrentVersionExpiration`,gs=`NoncurrentVersionTransition`,_s=`Owner`,vs=`OwnershipControls`,ys=`ObjectEncryption`,bs=`ObjectIfMatch`,xs=`OutputLocation`,Ss=`ObjectLockConfiguration`,Cs=`ObjectLockEventHold`,ws=`ObjectLockEventHoldDurationDays`,Ts=`ObjectLockEventHoldDurationYears`,Es=`ObjectLockLegalHoldStatus`,Ds=`ObjectLockMode`,Os=`ObjectLockRetainUntilDate`,ks=`ObjectOwnership`,As=`OptionalObjectAttributes`,W=`ObjectSizeGreaterThan`,js=`ObjectSizeLessThan`,Ms=`OutputSerialization`,Ns=`ObjectVersionId`,Ps=`Object`,Fs=`Prefix`,Is=`PublicAccessBlockConfiguration`,Ls=`PartsCount`,G=`PartNumber`,Rs=`PartNumberMarker`,zs=`PartitionedPrefix`,Bs=`PolicyStatus`,Vs=`Parts`,Hs=`Part`,Us=`Payer`,Ws=`Payload`,Gs=`Permission`,Ks=`Policy`,qs=`Progress`,Js=`Protocol`,Ys=`QuoteCharacter`,Xs=`QueueConfiguration`,Zs=`QuoteEscapeCharacter`,Qs=`Role`,$s=`RedirectAllRequestsTo`,ec=`RequestCharged`,tc=`ResponseCacheControl`,nc=`ResponseContentDisposition`,rc=`ResponseContentEncoding`,ic=`ResponseContentLanguage`,ac=`ResponseContentType`,oc=`ReplicationConfiguration`,sc=`RecordDelimiter`,cc=`ResponseExpires`,lc=`RecordExpiration`,uc=`ReplicaModifications`,dc=`RequestPayer`,fc=`RestrictPublicBuckets`,pc=`RequestPaymentConfiguration`,mc=`RequestProgress`,hc=`RoutingRules`,gc=`RestoreRequest`,_c=`RoutingRule`,vc=`ReplicationStatus`,yc=`RestoreStatus`,bc=`ReplicationTime`,xc=`Range`,Sc=`Restore`,Cc=`Redirect`,wc=`Retention`,Tc=`Rules`,Ec=`Rule`,Dc=`Status`,Oc=`StartAfter`,kc=`SecretAccessKey`,Ac=`S3BucketDestination`,jc=`StorageClass`,Mc=`StorageClassAnalysis`,Nc=`SSE-KMS`,Pc=`SseKmsEncryptedObjects`,Fc=`SelectParameters`,Ic=`SimplePrefix`,Lc=`ScanRange`,Rc=`SSE-S3`,zc=`SourceSelectionCriteria`,Bc=`ServerSideEncryption`,Vc=`ServerSideEncryptionConfiguration`,Hc=`SSECustomerAlgorithm`,Uc=`SSECustomerKey`,Wc=`SSECustomerKeyMD5`,Gc=`SSEKMS`,Kc=`SSEKMSEncryptionContext`,qc=`SSEKMSKeyId`,Jc=`SSES3`,Yc=`SessionToken`,Xc=`S3TablesDestination`,Zc=`S3TablesDestinationResult`,Qc=`Size`,$c=`Stats`,el=`Tags`,tl=`TableArn`,nl=`TableBucketArn`,rl=`TagCount`,il=`TopicConfiguration`,al=`TransitionDefaultMinimumObjectSize`,ol=`TargetGrants`,sl=`TableName`,cl=`TableNamespace`,ll=`TargetObjectKeyFormat`,ul=`TableStatus`,K=`TagSet`,dl=`Tagging`,fl=`Tier`,pl=`Tiering`,ml=`Token`,hl=`Transition`,gl=`Type`,_l=`UploadId`,vl=`UploadIdMarker`,yl=`UserMetadata`,bl=`Value`,xl=`VersioningConfiguration`,Sl=`VersionId`,Cl=`VersionIdMarker`,wl=`WebsiteConfiguration`,Tl=`WebsiteRedirectLocation`,El=`Years`,Dl=`annotationName`,Ol=`accept-ranges`,kl=`client`,Al=`continuation-token`,jl=`delimiter`,Ml=`error`,Nl=`eventPayload`,Pl=`encoding-type`,q=`http`,Fl=`httpChecksum`,Il=`httpError`,J=`httpHeader`,Ll=`httpPayload`,Rl=`httpPrefixHeaders`,Y=`httpQuery`,zl=`http://www.w3.org/2001/XMLSchema-instance`,Bl=`key-marker`,Vl=`max-keys`,Hl=`prefix`,Ul=`partNumber`,Wl=`response-cache-control`,Gl=`response-content-disposition`,Kl=`response-content-encoding`,ql=`response-content-language`,Jl=`response-content-type`,Yl=`response-expires`,Xl=`smithy.ts.sdk.synthetic.com.amazonaws.s3`,Zl=`streaming`,Ql=`uploadId`,$l=`versionId`,eu=`xmlFlattened`,X=`xmlName`,tu=`xmlNamespace`,nu=`x-amz-acl`,ru=`x-amz-abort-date`,iu=`x-amz-abort-rule-id`,au=`x-amz-bucket-arn`,ou=`x-amz-bypass-governance-retention`,su=`x-amz-bucket-object-lock-token`,cu=`x-amz-checksum-algorithm`,lu=`x-amz-checksum-crc32`,uu=`x-amz-checksum-crc32c`,du=`x-amz-checksum-crc64nvme`,fu=`x-amz-checksum-md5`,pu=`x-amz-checksum-mode`,mu=`x-amz-checksum-sha1`,hu=`x-amz-checksum-sha256`,gu=`x-amz-checksum-sha512`,_u=`x-amz-copy-source`,vu=`x-amz-copy-source-if-match`,yu=`x-amz-copy-source-if-modified-since`,bu=`x-amz-copy-source-if-none-match`,xu=`x-amz-copy-source-if-unmodified-since`,Su=`x-amz-copy-source-server-side-encryption-customer-algorithm`,Cu=`x-amz-copy-source-server-side-encryption-customer-key`,wu=`x-amz-copy-source-server-side-encryption-customer-key-MD5`,Tu=`x-amz-copy-source-version-id`,Eu=`x-amz-checksum-type`,Du=`x-amz-checksum-xxhash64`,Ou=`x-amz-checksum-xxhash3`,ku=`x-amz-checksum-xxhash128`,Au=`x-amz-delete-marker`,ju=`x-amz-expiration`,Z=`x-amz-expected-bucket-owner`,Mu=`x-amz-grant-full-control`,Nu=`x-amz-grant-read`,Pu=`x-amz-grant-read-acp`,Fu=`x-amz-grant-write`,Iu=`x-amz-grant-write-acp`,Lu=`x-amz-meta-`,Ru=`x-amz-mfa`,zu=`x-amz-missing-meta`,Bu=`x-amz-mp-parts-count`,Vu=`x-amz-object-if-match`,Hu=`x-amz-object-lock-event-hold`,Uu=`x-amz-object-lock-event-hold-duration-days`,Wu=`x-amz-object-lock-event-hold-duration-years`,Gu=`x-amz-object-lock-legal-hold`,Ku=`x-amz-object-lock-mode`,qu=`x-amz-object-lock-retain-until-date`,Ju=`x-amz-optional-object-attributes`,Yu=`x-amz-object-version-id`,Xu=`x-amz-restore`,Zu=`x-amz-request-charged`,Qu=`x-amz-request-payer`,$u=`x-amz-replication-status`,ed=`x-amz-storage-class`,td=`x-amz-sdk-checksum-algorithm`,nd=`x-amz-source-expected-bucket-owner`,rd=`x-amz-server-side-encryption`,id=`x-amz-server-side-encryption-aws-kms-key-id`,ad=`x-amz-server-side-encryption-bucket-key-enabled`,od=`x-amz-server-side-encryption-context`,sd=`x-amz-server-side-encryption-customer-algorithm`,cd=`x-amz-server-side-encryption-customer-key`,ld=`x-amz-server-side-encryption-customer-key-MD5`,ud=`x-amz-tagging`,dd=`x-amz-tagging-count`,fd=`x-amz-transition-default-minimum-object-size`,pd=`x-amz-version-id`,md=`x-amz-website-redirect-location`,Q=`com.amazonaws.s3`,hd=new Ye(Xl);var gd=[-3,Xl,`S3ServiceException`,0,[],[]];hd.registerError(gd,vr);let _d=new Ye(Q);var vd=[-3,Q,`AccessDenied`,{[Ml]:kl,[Il]:403},[],[]];_d.registerError(vd,br);var yd=[-3,Q,`AnnotationLimitExceeded`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(yd,tee);var bd=[-3,Q,`AnnotationNameTooLong`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(bd,Nr);var xd=[-3,Q,`BucketAlreadyExists`,{[Ml]:kl,[Il]:409},[],[]];_d.registerError(xd,Sr);var Sd=[-3,Q,`BucketAlreadyOwnedByYou`,{[Ml]:kl,[Il]:409},[],[]];_d.registerError(Sd,Cr);var Cd=[-3,Q,`EncryptionTypeMismatch`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(Cd,Ar);var wd=[-3,Q,`IdempotencyParameterMismatch`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(wd,Fr);var Td=[-3,Q,`InvalidAnnotationName`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(Td,nee);var Ed=[-3,Q,`InvalidObjectState`,{[Ml]:kl,[Il]:403},[jc,ei],[0,0]];_d.registerError(Ed,Er);var Dd=[-3,Q,`InvalidPrefix`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(Dd,kr);var Od=[-3,Q,`InvalidRequest`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(Od,jr);var kd=[-3,Q,`InvalidWriteOffset`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(kd,Mr);var Ad=[-3,Q,`NoSuchAnnotation`,{[Ml]:kl,[Il]:404},[],[]];_d.registerError(Ad,Dr);var jd=[-3,Q,`NoSuchBucket`,{[Ml]:kl,[Il]:404},[],[]];_d.registerError(jd,wr);var ree=[-3,Q,`NoSuchKey`,{[Ml]:kl,[Il]:404},[],[]];_d.registerError(ree,Tr);var Md=[-3,Q,`NoSuchUpload`,{[Ml]:kl,[Il]:404},[],[]];_d.registerError(Md,yr);var iee=[-3,Q,`NotFound`,{[Ml]:kl},[],[]];_d.registerError(iee,Or);var Nd=[-3,Q,`ObjectAlreadyInActiveTierError`,{[Ml]:kl,[Il]:403},[],[]];_d.registerError(Nd,Ir);var Pd=[-3,Q,`ObjectNotInActiveTierError`,{[Ml]:kl,[Il]:403},[],[]];_d.registerError(Pd,xr);var aee=[-3,Q,`TooManyParts`,{[Ml]:kl,[Il]:400},[],[]];_d.registerError(aee,eee);var oee=[-3,Q,`UnsupportedMediaType`,{[Ml]:kl,[Il]:415},[],[]];_d.registerError(oee,Pr);let Fd=[hd,_d];var Id=[0,Q,ea,8,0],see=[0,Q,`NonEmptyKmsKeyArnString`,8,0],Ld=[0,Q,`SessionCredentialValue`,8,0],Rd=[0,Q,Uc,8,0],zd=[0,Q,Kc,8,0],Bd=[0,Q,qc,8,0],Vd=[0,Q,`StreamingBlob`,{[Zl]:1},42],Hd=[3,Q,$r,0,[Dc],[0]],cee=[3,Q,Gr,0,[`DaysAfterInitiation`],[1]],lee=[3,Q,`AbortMultipartUploadOutput`,0,[ec],[[0,{[J]:Zu}]]],uee=[3,Q,`AbortMultipartUploadRequest`,0,[H,`Key`,_l,dc,U,`IfMatchInitiatedTime`],[[0,1],[0,1],[0,{[Y]:Ql}],[0,{[J]:Qu}],[0,{[J]:Z}],[6,{[J]:`x-amz-if-match-initiated-time`}]],3],Ud=[3,Q,Lr,0,[Dc],[0]],Wd=[3,Q,Br,0,[Za,_s],[[()=>P_,{[X]:Rr}],()=>Ch]],dee=[3,Q,Vr,0,[_s],[0],1],Gd=[3,Q,`AnalyticsAndOperator`,0,[Fs,el],[0,[()=>$_,{[eu]:1,[X]:`Tag`}]]],Kd=[3,Q,Hr,0,[`Id`,Mc,qa],[0,()=>t_,[()=>av,0]],2],fee=[3,Q,`AnalyticsExportDestination`,0,[Ac],[()=>pee],1],pee=[3,Q,`AnalyticsS3BucketDestination`,0,[Xa,H,`BucketAccountId`,Fs],[0,0,0,0],2],qd=[3,Q,Wr,0,[qr,Vo,Qc,Ia,_i,vc],[0,4,1,0,[64,{[eu]:1}],0],3],mee=[3,Q,ti,0,[Gi,Oa,Qs],[0,()=>ih,0],1],Jd=[3,Q,ni,0,[Gi,ul,Ea,sl,tl,Qs],[0,0,()=>Ff,0,0,0],1],hee=[3,Q,`AnnotationTableConfigurationUpdates`,0,[Gi,Oa,Qs],[0,()=>ih,0],1],Yd=[3,Q,ii,0,[La],[[()=>j_,{[eu]:1}]]],gee=[3,Q,H,0,[cs,`CreationDate`,di,ri],[0,4,0,0]],Xd=[3,Q,`BucketInfo`,0,[`DataRedundancy`,gl],[0,0]],Zd=[3,Q,`BucketLifecycleConfiguration`,0,[Tc],[[()=>z_,{[eu]:1,[X]:Ec}]],1],Qd=[3,Q,si,0,[zo],[[()=>Qm,0]]],$d=[3,Q,gi,0,[bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia],[0,0,0,0,0,0,0,0,0,0,0]],ef=[3,Q,`CommonPrefix`,0,[Fs],[0]],tf=[3,Q,`CompletedMultipartUpload`,0,[Vs],[[()=>D_,{[eu]:1,[X]:Hs}]]],_ee=[3,Q,`CompletedPart`,0,[Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,G],[0,0,0,0,0,0,0,0,0,0,0,1]],nf=[3,Q,`CompleteMultipartUploadOutput`,{[X]:`CompleteMultipartUploadResult`},[Fo,H,`Key`,Wa,Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,Bc,Sl,qc,oi,ec],[0,0,0,[0,{[J]:ju}],0,0,0,0,0,0,0,0,0,0,0,0,[0,{[J]:rd}],[0,{[J]:pd}],[()=>Bd,{[J]:id}],[2,{[J]:ad}],[0,{[J]:Zu}]]],rf=[3,Q,`CompleteMultipartUploadRequest`,0,[H,`Key`,_l,rs,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,`MpuObjectSize`,dc,U,mo,vo,Hc,Uc,Wc],[[0,1],[0,1],[0,{[Y]:Ql}],[()=>tf,{[Ll]:1,[X]:Fi}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Eu}],[1,{[J]:`x-amz-mp-object-size`}],[0,{[J]:Qu}],[0,{[J]:Z}],[0,{[J]:_o}],[0,{[J]:yo}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}]],3],af=[3,Q,da,0,[`HttpErrorCodeReturnedEquals`,`KeyPrefixEquals`],[0,0]],vee=[3,Q,`ContinuationEvent`,0,[],[]],yee=[3,Q,`CopyObjectOutput`,0,[Li,Wa,na,Sl,Bc,Hc,Wc,qc,Kc,oi,ec],[[()=>xee,16],[0,{[J]:ju}],[0,{[J]:Tu}],[0,{[J]:pd}],[0,{[J]:rd}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}],[0,{[J]:Zu}]]],bee=[3,Q,`CopyObjectRequest`,0,[H,ra,`Key`,`ACL`,yi,_i,Ti,Di,Oi,oa,Yi,Xi,Zi,Qi,Ga,eo,no,ro,ao,mo,vo,Uo,`MetadataDirective`,`TaggingDirective`,`AnnotationDirective`,Bc,jc,Tl,Hc,Uc,Wc,qc,Kc,oi,$i,ea,ta,dc,dl,Ds,Os,Es,Cs,ws,Ts,U,Fa],[[0,1],[0,{[J]:_u}],[0,1],[0,{[J]:nu}],[0,{[J]:Ci}],[0,{[J]:cu}],[0,{[J]:wi}],[0,{[J]:Ei}],[0,{[J]:ki}],[0,{[J]:aa}],[0,{[J]:vu}],[4,{[J]:yu}],[0,{[J]:bu}],[4,{[J]:xu}],[4,{[J]:Ga}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Iu}],[0,{[J]:_o}],[0,{[J]:yo}],[128,{[Rl]:Lu}],[0,{[J]:`x-amz-metadata-directive`}],[0,{[J]:`x-amz-tagging-directive`}],[0,{[J]:`x-amz-object-annotation-directive`}],[0,{[J]:rd}],[0,{[J]:ed}],[0,{[J]:md}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}],[0,{[J]:Su}],[()=>Id,{[J]:Cu}],[0,{[J]:wu}],[0,{[J]:Qu}],[0,{[J]:ud}],[0,{[J]:Ku}],[5,{[J]:qu}],[0,{[J]:Gu}],[0,{[J]:Hu}],[1,{[J]:Uu}],[1,{[J]:Wu}],[0,{[J]:Z}],[0,{[J]:nd}]],3],xee=[3,Q,Li,0,[Ia,Vo,ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua],[0,4,0,0,0,0,0,0,0,0,0,0,0]],See=[3,Q,Vi,0,[Ia,Vo,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua],[0,4,0,0,0,0,0,0,0,0,0,0]],of=[3,Q,Ri,0,[zi],[[()=>O_,{[eu]:1,[X]:Bi}]],1],Cee=[3,Q,Bi,0,[`AllowedMethods`,`AllowedOrigins`,`ID`,`AllowedHeaders`,`ExposeHeaders`,`MaxAgeSeconds`],[[64,{[eu]:1,[X]:`AllowedMethod`}],[64,{[eu]:1,[X]:`AllowedOrigin`}],0,[64,{[eu]:1,[X]:`AllowedHeader`}],[64,{[eu]:1,[X]:`ExposeHeader`}],1],2],wee=[3,Q,vi,0,[Lo,Fo,H,el],[0,()=>Zm,()=>Xd,[()=>$_,0]]],sf=[3,Q,`CreateBucketMetadataConfigurationRequest`,0,[H,Go,Pi,_i,U],[[0,1],[()=>$m,{[Ll]:1,[X]:Go}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],cf=[3,Q,`CreateBucketMetadataTableConfigurationRequest`,0,[H,ts,Pi,_i,U],[[0,1],[()=>nh,{[Ll]:1,[X]:ts}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],Tee=[3,Q,`CreateBucketOutput`,0,[Fo,ri],[[0,{[J]:Fo}],[0,{[J]:au}]]],Eee=[3,Q,`CreateBucketRequest`,0,[H,`ACL`,vi,eo,no,ro,io,ao,`ObjectLockEnabledForBucket`,ks,`BucketNamespace`],[[0,1],[0,{[J]:nu}],[()=>wee,{[Ll]:1,[X]:vi}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Fu}],[0,{[J]:Iu}],[2,{[J]:`x-amz-bucket-object-lock-enabled`}],[0,{[J]:`x-amz-object-ownership`}],[0,{[J]:`x-amz-bucket-namespace`}]],1],Dee=[3,Q,`CreateMultipartUploadOutput`,{[X]:`InitiateMultipartUploadResult`},[Ur,Qr,H,`Key`,_l,Bc,Hc,Wc,qc,Kc,oi,ec,_i,ia],[[4,{[J]:ru}],[0,{[J]:iu}],[0,{[X]:H}],0,0,[0,{[J]:rd}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}],[0,{[J]:Zu}],[0,{[J]:cu}],[0,{[J]:Eu}]]],Oee=[3,Q,`CreateMultipartUploadRequest`,0,[H,`Key`,`ACL`,yi,Ti,Di,Oi,oa,Ga,eo,no,ro,ao,Uo,Bc,jc,Tl,Hc,Uc,Wc,qc,Kc,oi,dc,dl,Ds,Os,Es,Cs,ws,Ts,U,_i,ia],[[0,1],[0,1],[0,{[J]:nu}],[0,{[J]:Ci}],[0,{[J]:wi}],[0,{[J]:Ei}],[0,{[J]:ki}],[0,{[J]:aa}],[4,{[J]:Ga}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Iu}],[128,{[Rl]:Lu}],[0,{[J]:rd}],[0,{[J]:ed}],[0,{[J]:md}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}],[0,{[J]:Qu}],[0,{[J]:ud}],[0,{[J]:Ku}],[5,{[J]:qu}],[0,{[J]:Gu}],[0,{[J]:Hu}],[1,{[J]:Uu}],[1,{[J]:Wu}],[0,{[J]:Z}],[0,{[J]:cu}],[0,{[J]:Eu}]],2],kee=[3,Q,`CreateSessionOutput`,{[X]:`CreateSessionResult`},[pa,Bc,qc,Kc,oi],[[()=>Kg,{[X]:pa}],[0,{[J]:rd}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}]],1],Aee=[3,Q,`CreateSessionRequest`,0,[H,`SessionMode`,Bc,qc,Kc,oi],[[0,1],[0,{[J]:`x-amz-create-session-mode`}],[0,{[J]:rd}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}]],1],jee=[3,Q,`CSVInput`,0,[`FileHeaderInfo`,`Comments`,Zs,sc,Ja,Ys,`AllowQuotedRecordDelimiter`],[0,0,0,0,0,0,2]],Mee=[3,Q,`CSVOutput`,0,[`QuoteFields`,Zs,sc,Ja,Ys],[0,0,0,0,0]],Nee=[3,Q,ya,0,[ss,ma,El,`DefaultEventHold`],[0,1,1,()=>Rf]],Pee=[3,Q,Sa,0,[`Objects`,`Quiet`],[[()=>U_,{[eu]:1,[X]:Ps}],2],1],Fee=[3,Q,`DeleteBucketAnalyticsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Iee=[3,Q,`DeleteBucketCorsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Lee=[3,Q,`DeleteBucketEncryptionRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],lf=[3,Q,`DeleteBucketIntelligentTieringConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Ree=[3,Q,`DeleteBucketInventoryConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],uf=[3,Q,`DeleteBucketLifecycleRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],df=[3,Q,`DeleteBucketMetadataConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],zee=[3,Q,`DeleteBucketMetadataTableConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Bee=[3,Q,`DeleteBucketMetricsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Vee=[3,Q,`DeleteBucketOwnershipControlsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],ff=[3,Q,`DeleteBucketPolicyRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],pf=[3,Q,`DeleteBucketReplicationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],mf=[3,Q,`DeleteBucketRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],hf=[3,Q,`DeleteBucketTaggingRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],gf=[3,Q,`DeleteBucketWebsiteRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],_f=[3,Q,`DeletedObject`,0,[`Key`,Sl,ha,`DeleteMarkerVersionId`],[0,0,2,0]],vf=[3,Q,`DeleteMarkerEntry`,0,[_s,`Key`,Sl,po,Vo],[()=>Ch,0,0,2,4]],yf=[3,Q,ga,0,[Dc],[0]],bf=[3,Q,`DeleteObjectAnnotationOutput`,0,[Ns,ec],[[0,{[J]:Yu}],[0,{[J]:Zu}]]],xf=[3,Q,`DeleteObjectAnnotationRequest`,0,[H,`Key`,qr,Sl,dc,U,bs],[[0,1],[0,1],[0,{[Y]:Dl}],[0,{[Y]:$l}],[0,{[J]:Qu}],[0,{[J]:Z}],[0,{[J]:Vu}]],3],Sf=[3,Q,`DeleteObjectOutput`,0,[ha,Sl,ec],[[2,{[J]:Au}],[0,{[J]:pd}],[0,{[J]:Zu}]]],Cf=[3,Q,`DeleteObjectRequest`,0,[H,`Key`,`MFA`,Sl,dc,ai,U,mo,`IfMatchLastModifiedTime`,`IfMatchSize`],[[0,1],[0,1],[0,{[J]:Ru}],[0,{[Y]:$l}],[0,{[J]:Qu}],[2,{[J]:ou}],[0,{[J]:Z}],[0,{[J]:_o}],[6,{[J]:`x-amz-if-match-last-modified-time`}],[1,{[J]:`x-amz-if-match-size`}]],2],wf=[3,Q,`DeleteObjectsOutput`,{[X]:`DeleteResult`},[`Deleted`,ec,Va],[[()=>k_,{[eu]:1}],[0,{[J]:Zu}],[()=>M_,{[eu]:1,[X]:Ea}]]],Tf=[3,Q,`DeleteObjectsRequest`,0,[H,Sa,`MFA`,dc,ai,U,_i],[[0,1],[()=>Pee,{[Ll]:1,[X]:Sa}],[0,{[J]:Ru}],[0,{[J]:Qu}],[2,{[J]:ou}],[0,{[J]:Z}],[0,{[J]:td}]],2],Ef=[3,Q,`DeleteObjectTaggingOutput`,0,[Sl],[[0,{[J]:pd}]]],Df=[3,Q,`DeleteObjectTaggingRequest`,0,[H,`Key`,Sl,U],[[0,1],[0,1],[0,{[Y]:$l}],[0,{[J]:Z}]],2],Of=[3,Q,`DeletePublicAccessBlockRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],kf=[3,Q,wa,0,[H,`Account`,jc,Vr,Oa,bc,os],[0,0,0,()=>dee,()=>Mf,()=>Eg,()=>ah],1],Af=[3,Q,ba,0,[`TableBucketType`,nl,cl],[0,0,0]],jf=[3,Q,Ba,0,[La,`KMSKeyId`,`KMSContext`],[0,[()=>Bd,0],0],1],Mf=[3,Q,Oa,0,[`ReplicaKmsKeyID`],[0]],Nf=[3,Q,`EndEvent`,0,[],[]],Pf=[3,Q,Ea,0,[`Key`,Sl,`Code`,`Message`],[0,0,0,0]],Ff=[3,Q,`ErrorDetails`,0,[ka,Ma],[0,0]],If=[3,Q,Aa,0,[`Key`],[0],1],Lf=[3,Q,Da,0,[],[]],Rf=[3,Q,ja,0,[ma,El],[1,1]],zf=[3,Q,Na,0,[Dc],[0],1],Bf=[3,Q,Ya,0,[cs,bl],[0,0]],Vf=[3,Q,`GetBucketAbacOutput`,0,[$r],[[()=>Hd,16]]],Hf=[3,Q,`GetBucketAbacRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Uf=[3,Q,`GetBucketAccelerateConfigurationOutput`,{[X]:Lr},[Dc,ec],[0,[0,{[J]:Zu}]]],Wf=[3,Q,`GetBucketAccelerateConfigurationRequest`,0,[H,U,dc],[[0,1],[0,{[J]:Z}],[0,{[J]:Qu}]],1],Gf=[3,Q,`GetBucketAclOutput`,{[X]:Br},[_s,Za],[()=>Ch,[()=>P_,{[X]:Rr}]]],Kf=[3,Q,`GetBucketAclRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],qf=[3,Q,`GetBucketAnalyticsConfigurationOutput`,0,[Hr],[[()=>Kd,16]]],Jf=[3,Q,`GetBucketAnalyticsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],Yf=[3,Q,`GetBucketCorsOutput`,{[X]:Ri},[zi],[[()=>O_,{[eu]:1,[X]:Bi}]]],Xf=[3,Q,`GetBucketCorsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Zf=[3,Q,`GetBucketEncryptionOutput`,0,[Vc],[[()=>Wg,16]]],Qf=[3,Q,`GetBucketEncryptionRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],$f=[3,Q,`GetBucketIntelligentTieringConfigurationOutput`,0,[wo],[[()=>fm,16]]],ep=[3,Q,`GetBucketIntelligentTieringConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],tp=[3,Q,`GetBucketInventoryConfigurationOutput`,0,[lo],[[()=>mm,16]]],np=[3,Q,`GetBucketInventoryConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],rp=[3,Q,`GetBucketLifecycleConfigurationOutput`,{[X]:Ro},[Tc,al],[[()=>z_,{[eu]:1,[X]:Ec}],[0,{[J]:fd}]]],ip=[3,Q,`GetBucketLifecycleConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],ap=[3,Q,`GetBucketLocationOutput`,{[X]:Lo},[Lo],[0]],op=[3,Q,`GetBucketLocationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],sp=[3,Q,`GetBucketLoggingOutput`,{[X]:si},[zo],[[()=>Qm,0]]],cp=[3,Q,`GetBucketLoggingRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],lp=[3,Q,`GetBucketMetadataConfigurationOutput`,0,[Qa],[[()=>dp,16]]],up=[3,Q,`GetBucketMetadataConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],dp=[3,Q,Qa,0,[qo],[()=>eh],1],fp=[3,Q,`GetBucketMetadataTableConfigurationOutput`,0,[$a],[[()=>mp,16]]],pp=[3,Q,`GetBucketMetadataTableConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],mp=[3,Q,$a,0,[ns,Dc,Ea],[()=>rh,0,()=>Ff],2],hp=[3,Q,`GetBucketMetricsConfigurationOutput`,0,[Jo],[[()=>sh,16]]],gp=[3,Q,`GetBucketMetricsConfigurationRequest`,0,[H,`Id`,U],[[0,1],[0,{[Y]:`id`}],[0,{[J]:Z}]],2],_p=[3,Q,`GetBucketNotificationConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],vp=[3,Q,`GetBucketOwnershipControlsOutput`,0,[vs],[[()=>wh,16]]],yp=[3,Q,`GetBucketOwnershipControlsRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],bp=[3,Q,`GetBucketPolicyOutput`,0,[Ks],[[0,16]]],xp=[3,Q,`GetBucketPolicyRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Sp=[3,Q,`GetBucketPolicyStatusOutput`,0,[Bs],[[()=>kh,16]]],Cp=[3,Q,`GetBucketPolicyStatusRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],wp=[3,Q,`GetBucketReplicationOutput`,0,[oc],[[()=>Sg,16]]],Tp=[3,Q,`GetBucketReplicationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Ep=[3,Q,`GetBucketRequestPaymentOutput`,{[X]:pc},[Us],[0]],Dp=[3,Q,`GetBucketRequestPaymentRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Op=[3,Q,`GetBucketTaggingOutput`,{[X]:dl},[K],[[()=>$_,0]],1],kp=[3,Q,`GetBucketTaggingRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Ap=[3,Q,`GetBucketVersioningOutput`,{[X]:xl},[Dc,Zo],[0,[0,{[X]:Yo}]]],jp=[3,Q,`GetBucketVersioningRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Mp=[3,Q,`GetBucketWebsiteOutput`,{[X]:wl},[$s,fo,Aa,hc],[()=>vg,()=>cm,()=>If,[()=>Z_,0]]],Np=[3,Q,`GetBucketWebsiteRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Pp=[3,Q,`GetObjectAclOutput`,{[X]:Br},[_s,Za,ec],[()=>Ch,[()=>P_,{[X]:Rr}],[0,{[J]:Zu}]]],Fp=[3,Q,`GetObjectAclRequest`,0,[H,`Key`,Sl,dc,U],[[0,1],[0,1],[0,{[Y]:$l}],[0,{[J]:Qu}],[0,{[J]:Z}]],2],Ip=[3,Q,`GetObjectAnnotationOutput`,0,[Jr,Ns,Vo,ji,Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,Bc,ec,vc],[[()=>Vd,16],[0,{[J]:Yu}],[4,{[J]:Ho}],[1,{[J]:Ai}],[0,{[J]:Ia}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Eu}],[0,{[J]:rd}],[0,{[J]:Zu}],[0,{[J]:$u}]]],Lp=[3,Q,`GetObjectAnnotationRequest`,0,[H,`Key`,qr,Sl,dc,U,Ii],[[0,1],[0,1],[0,{[Y]:Dl}],[0,{[Y]:$l}],[0,{[J]:Qu}],[0,{[J]:Z}],[0,{[J]:pu}]],3],Rp=[3,Q,`GetObjectAttributesOutput`,{[X]:`GetObjectAttributesResponse`},[ha,Vo,Sl,ec,Ia,gi,`ObjectParts`,jc,`ObjectSize`],[[2,{[J]:Au}],[4,{[J]:Ho}],[0,{[J]:pd}],[0,{[J]:Zu}],0,()=>$d,[()=>zp,0],0,1]],zp=[3,Q,`GetObjectAttributesParts`,0,[`TotalPartsCount`,Rs,ms,es,Co,Vs],[[1,{[X]:Ls}],0,0,1,2,[()=>J_,{[eu]:1,[X]:Hs}]]],Bp=[3,Q,`GetObjectAttributesRequest`,0,[H,`Key`,`ObjectAttributes`,Sl,es,Rs,Hc,Uc,Wc,dc,U],[[0,1],[0,1],[64,{[J]:`x-amz-object-attributes`}],[0,{[Y]:$l}],[1,{[J]:`x-amz-max-parts`}],[0,{[J]:`x-amz-part-number-marker`}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[0,{[J]:Qu}],[0,{[J]:Z}]],3],Vp=[3,Q,`GetObjectLegalHoldOutput`,0,[Bo],[[()=>gh,{[Ll]:1,[X]:Bo}]]],Hp=[3,Q,`GetObjectLegalHoldRequest`,0,[H,`Key`,Sl,dc,U],[[0,1],[0,1],[0,{[Y]:$l}],[0,{[J]:Qu}],[0,{[J]:Z}]],2],Up=[3,Q,`GetObjectLockConfigurationOutput`,0,[Ss],[[()=>hh,16]]],Wp=[3,Q,`GetObjectLockConfigurationRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],Gp=[3,Q,`GetObjectOutput`,0,[mi,ha,Zr,Wa,Sc,Vo,ji,Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,$o,Sl,yi,Ti,Di,Oi,Ui,oa,Ga,Pa,Tl,Bc,Uo,Hc,Wc,qc,oi,jc,ec,vc,Ls,rl,Ds,Os,Es,Cs,ws,Ts],[[()=>Vd,16],[2,{[J]:Au}],[0,{[J]:Ol}],[0,{[J]:ju}],[0,{[J]:Xu}],[4,{[J]:Ho}],[1,{[J]:Ai}],[0,{[J]:Ia}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Eu}],[1,{[J]:zu}],[0,{[J]:pd}],[0,{[J]:Ci}],[0,{[J]:wi}],[0,{[J]:Ei}],[0,{[J]:ki}],[0,{[J]:Wi}],[0,{[J]:aa}],[4,{[J]:Ga}],[0,{[J]:Pa}],[0,{[J]:md}],[0,{[J]:rd}],[128,{[Rl]:Lu}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[2,{[J]:ad}],[0,{[J]:ed}],[0,{[J]:Zu}],[0,{[J]:$u}],[1,{[J]:Bu}],[1,{[J]:dd}],[0,{[J]:Ku}],[5,{[J]:qu}],[0,{[J]:Gu}],[0,{[J]:Hu}],[1,{[J]:Uu}],[1,{[J]:Wu}]]],Kp=[3,Q,`GetObjectRequest`,0,[H,`Key`,mo,go,vo,Oo,xc,tc,nc,rc,ic,ac,cc,Sl,Hc,Uc,Wc,dc,G,U,Ii],[[0,1],[0,1],[0,{[J]:_o}],[4,{[J]:ho}],[0,{[J]:yo}],[4,{[J]:ko}],[0,{[J]:xc}],[0,{[Y]:Wl}],[0,{[Y]:Gl}],[0,{[Y]:Kl}],[0,{[Y]:ql}],[0,{[Y]:Jl}],[6,{[Y]:Yl}],[0,{[Y]:$l}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[0,{[J]:Qu}],[1,{[Y]:Ul}],[0,{[J]:Z}],[0,{[J]:pu}]],2],qp=[3,Q,`GetObjectRetentionOutput`,0,[wc],[[()=>_h,{[Ll]:1,[X]:wc}]]],Jp=[3,Q,`GetObjectRetentionRequest`,0,[H,`Key`,Sl,dc,U],[[0,1],[0,1],[0,{[Y]:$l}],[0,{[J]:Qu}],[0,{[J]:Z}]],2],Yp=[3,Q,`GetObjectTaggingOutput`,{[X]:dl},[K,Sl],[[()=>$_,0],[0,{[J]:pd}]],1],Xp=[3,Q,`GetObjectTaggingRequest`,0,[H,`Key`,Sl,U,dc],[[0,1],[0,1],[0,{[Y]:$l}],[0,{[J]:Z}],[0,{[J]:Qu}]],2],Zp=[3,Q,`GetObjectTorrentOutput`,0,[mi,ec],[[()=>Vd,16],[0,{[J]:Zu}]]],Qp=[3,Q,`GetObjectTorrentRequest`,0,[H,`Key`,dc,U],[[0,1],[0,1],[0,{[J]:Qu}],[0,{[J]:Z}]],2],$p=[3,Q,`GetPublicAccessBlockOutput`,0,[Is],[[()=>Mh,16]]],em=[3,Q,`GetPublicAccessBlockRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],tm=[3,Q,to,0,[fl],[0],1],nm=[3,Q,oo,0,[so,Gs],[[()=>rm,{[tu]:[`xsi`,zl]}],0]],rm=[3,Q,so,0,[gl,va,`EmailAddress`,`ID`,`URI`],[[0,{xmlAttribute:1,[X]:`xsi:type`}],0,0,0,0],1],im=[3,Q,`HeadBucketOutput`,0,[ri,`BucketLocationType`,`BucketLocationName`,di,`AccessPointAlias`],[[0,{[J]:au}],[0,{[J]:`x-amz-bucket-location-type`}],[0,{[J]:`x-amz-bucket-location-name`}],[0,{[J]:`x-amz-bucket-region`}],[2,{[J]:`x-amz-access-point-alias`}]]],am=[3,Q,`HeadBucketRequest`,0,[H,U],[[0,1],[0,{[J]:Z}]],1],om=[3,Q,`HeadObjectOutput`,0,[ha,Zr,Wa,Sc,`ArchiveStatus`,Vo,ji,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,Ia,$o,Sl,yi,Ti,Di,Oi,oa,Ui,Ga,Pa,Tl,Bc,Uo,Hc,Wc,qc,oi,jc,ec,vc,Ls,rl,Ds,Os,Es,Cs,ws,Ts],[[2,{[J]:Au}],[0,{[J]:Ol}],[0,{[J]:ju}],[0,{[J]:Xu}],[0,{[J]:`x-amz-archive-status`}],[4,{[J]:Ho}],[1,{[J]:Ai}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Eu}],[0,{[J]:Ia}],[1,{[J]:zu}],[0,{[J]:pd}],[0,{[J]:Ci}],[0,{[J]:wi}],[0,{[J]:Ei}],[0,{[J]:ki}],[0,{[J]:aa}],[0,{[J]:Wi}],[4,{[J]:Ga}],[0,{[J]:Pa}],[0,{[J]:md}],[0,{[J]:rd}],[128,{[Rl]:Lu}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[2,{[J]:ad}],[0,{[J]:ed}],[0,{[J]:Zu}],[0,{[J]:$u}],[1,{[J]:Bu}],[1,{[J]:dd}],[0,{[J]:Ku}],[5,{[J]:qu}],[0,{[J]:Gu}],[0,{[J]:Hu}],[1,{[J]:Uu}],[1,{[J]:Wu}]]],sm=[3,Q,`HeadObjectRequest`,0,[H,`Key`,mo,go,vo,Oo,xc,tc,nc,rc,ic,ac,cc,Sl,Hc,Uc,Wc,dc,G,U,Ii],[[0,1],[0,1],[0,{[J]:_o}],[4,{[J]:ho}],[0,{[J]:yo}],[4,{[J]:ko}],[0,{[J]:xc}],[0,{[Y]:Wl}],[0,{[Y]:Gl}],[0,{[Y]:Kl}],[0,{[Y]:ql}],[0,{[Y]:Jl}],[6,{[Y]:Yl}],[0,{[Y]:$l}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[0,{[J]:Qu}],[1,{[Y]:Ul}],[0,{[J]:Z}],[0,{[J]:pu}]],2],cm=[3,Q,fo,0,[`Suffix`],[0],1],lm=[3,Q,Ao,0,[`ID`,va],[0,0]],um=[3,Q,So,0,[`CSV`,`CompressionType`,jo,`Parquet`],[()=>jee,0,()=>Em,()=>Eh]],dm=[3,Q,`IntelligentTieringAndOperator`,0,[Fs,el],[0,[()=>$_,{[eu]:1,[X]:`Tag`}]]],fm=[3,Q,wo,0,[`Id`,Dc,`Tierings`,qa],[0,0,[()=>tv,{[eu]:1,[X]:pl}],[()=>pm,0]],3],pm=[3,Q,`IntelligentTieringFilter`,0,[Fs,`Tag`,`And`],[0,()=>r_,[()=>dm,0]]],mm=[3,Q,lo,0,[wa,`IsEnabled`,`Id`,`IncludedObjectVersions`,`Schedule`,qa,`OptionalFields`],[[()=>hm,0],2,0,0,()=>ym,()=>_m,[()=>L_,0]],5],hm=[3,Q,`InventoryDestination`,0,[Ac],[[()=>vm,0]],1],gm=[3,Q,`InventoryEncryption`,0,[Jc,Gc],[[()=>Qg,{[X]:Rc}],[()=>Yg,{[X]:Nc}]]],_m=[3,Q,`InventoryFilter`,0,[Fs],[0],1],vm=[3,Q,`InventoryS3BucketDestination`,0,[H,Xa,`AccountId`,Fs,Ba],[0,0,0,0,[()=>gm,0]],2],ym=[3,Q,`InventorySchedule`,0,[`Frequency`],[0],1],bm=[3,Q,Do,0,[Gi,Oa],[0,()=>ih],1],xm=[3,Q,Eo,0,[Gi,ul,Ea,sl,tl],[0,0,()=>Ff,0,0],1],Sm=[3,Q,`InventoryTableConfigurationUpdates`,0,[Gi,Oa],[0,()=>ih],1],Cm=[3,Q,Mo,0,[lc,Oa],[()=>hg,()=>ih],1],wm=[3,Q,No,0,[ul,sl,lc,Ea,tl],[0,0,()=>hg,()=>Ff,0],3],Tm=[3,Q,`JournalTableConfigurationUpdates`,0,[lc],[()=>hg],1],Em=[3,Q,`JSONInput`,0,[gl],[0]],Dm=[3,Q,`JSONOutput`,0,[sc],[0]],Om=[3,Q,`LambdaFunctionConfiguration`,0,[`LambdaFunctionArn`,Ha,`Id`,qa],[[0,{[X]:`CloudFunction`}],[64,{[eu]:1,[X]:Ua}],0,[()=>fh,0]],2],km=[3,Q,`LifecycleExpiration`,0,[xa,ma,`ExpiredObjectDeleteMarker`],[5,1,2]],Hee=[3,Q,`LifecycleRule`,0,[Dc,Wa,`ID`,Fs,qa,`Transitions`,`NoncurrentVersionTransitions`,hs,Gr],[0,()=>km,0,0,[()=>Wee,0],[()=>rv,{[eu]:1,[X]:hl}],[()=>H_,{[eu]:1,[X]:gs}],()=>lh,()=>cee],1],Uee=[3,Q,`LifecycleRuleAndOperator`,0,[Fs,el,W,js],[0,[()=>$_,{[eu]:1,[X]:`Tag`}],1,1]],Wee=[3,Q,`LifecycleRuleFilter`,0,[Fs,`Tag`,W,js,`And`],[0,()=>r_,1,1,[()=>Uee,0]]],Gee=[3,Q,`ListBucketAnalyticsConfigurationsOutput`,{[X]:`ListBucketAnalyticsConfigurationResult`},[Co,sa,us,zr],[2,0,0,[()=>C_,{[eu]:1,[X]:Hr}]]],Kee=[3,Q,`ListBucketAnalyticsConfigurationsRequest`,0,[H,sa,U],[[0,1],[0,{[Y]:Al}],[0,{[J]:Z}]],1],qee=[3,Q,`ListBucketIntelligentTieringConfigurationsOutput`,0,[Co,sa,us,To],[2,0,0,[()=>F_,{[eu]:1,[X]:wo}]]],Am=[3,Q,`ListBucketIntelligentTieringConfigurationsRequest`,0,[H,sa,U],[[0,1],[0,{[Y]:Al}],[0,{[J]:Z}]],1],jm=[3,Q,`ListBucketInventoryConfigurationsOutput`,{[X]:`ListInventoryConfigurationsResult`},[sa,uo,Co,us],[0,[()=>I_,{[eu]:1,[X]:lo}],2,0]],Mm=[3,Q,`ListBucketInventoryConfigurationsRequest`,0,[H,sa,U],[[0,1],[0,{[Y]:Al}],[0,{[J]:Z}]],1],Nm=[3,Q,`ListBucketMetricsConfigurationsOutput`,{[X]:`ListMetricsConfigurationsResult`},[Co,sa,us,Ko],[2,0,0,[()=>B_,{[eu]:1,[X]:Jo}]]],Pm=[3,Q,`ListBucketMetricsConfigurationsRequest`,0,[H,sa,U],[[0,1],[0,{[Y]:Al}],[0,{[J]:Z}]],1],Fm=[3,Q,`ListBucketsOutput`,{[X]:`ListAllMyBucketsResult`},[hi,_s,sa,Fs],[[()=>T_,0],()=>Ch,0,0]],Im=[3,Q,`ListBucketsRequest`,0,[`MaxBuckets`,sa,Fs,di],[[1,{[Y]:`max-buckets`}],[0,{[Y]:Al}],[0,{[Y]:Hl}],[0,{[Y]:`bucket-region`}]]],Lm=[3,Q,`ListDirectoryBucketsOutput`,{[X]:`ListAllMyDirectoryBucketsResult`},[hi,sa],[[()=>T_,0],0]],Rm=[3,Q,`ListDirectoryBucketsRequest`,0,[sa,`MaxDirectoryBuckets`],[[0,{[Y]:Al}],[1,{[Y]:`max-directory-buckets`}]]],zm=[3,Q,`ListMultipartUploadsOutput`,{[X]:`ListMultipartUploadsResult`},[H,Po,vl,fs,Fs,Ca,`NextUploadIdMarker`,is,Co,`Uploads`,Hi,Ra,ec],[0,0,0,0,0,0,0,1,2,[()=>V_,{[eu]:1,[X]:`Upload`}],[()=>E_,{[eu]:1}],0,[0,{[J]:Zu}]]],Bm=[3,Q,`ListMultipartUploadsRequest`,0,[H,Ca,Ra,Po,is,Fs,vl,U,dc],[[0,1],[0,{[Y]:jl}],[0,{[Y]:Pl}],[0,{[Y]:Bl}],[1,{[Y]:`max-uploads`}],[0,{[Y]:Hl}],[0,{[Y]:`upload-id-marker`}],[0,{[J]:Z}],[0,{[J]:Qu}]],1],Vm=[3,Q,`ListObjectAnnotationsOutput`,0,[`Annotations`,H,`Key`,Ns,Xr,Wo,`AnnotationCount`,sa,us,ec],[[()=>w_,0],0,0,[0,{[J]:Yu}],0,1,1,0,0,[0,{[J]:Zu}]]],Hm=[3,Q,`ListObjectAnnotationsRequest`,0,[H,`Key`,Sl,Wo,Xr,sa,dc,U],[[0,1],[0,1],[0,{[Y]:$l}],[1,{[Y]:`max-annotation-results`}],[0,{[Y]:`annotation-prefix`}],[0,{[Y]:Al}],[0,{[J]:Qu}],[0,{[J]:Z}]],2],Um=[3,Q,`ListObjectsOutput`,{[X]:Io},[Co,as,`NextMarker`,fa,cs,Fs,Ca,Qo,Hi,Ra,ec],[2,0,0,[()=>W_,{[eu]:1}],0,0,0,1,[()=>E_,{[eu]:1}],0,[0,{[J]:Zu}]]],Wm=[3,Q,`ListObjectsRequest`,0,[H,Ca,Ra,as,Qo,Fs,dc,U,As],[[0,1],[0,{[Y]:jl}],[0,{[Y]:Pl}],[0,{[Y]:`marker`}],[1,{[Y]:Vl}],[0,{[Y]:Hl}],[0,{[J]:Qu}],[0,{[J]:Z}],[64,{[J]:Ju}]],1],Gm=[3,Q,`ListObjectsV2Output`,{[X]:Io},[Co,fa,cs,Fs,Ca,Qo,Hi,Ra,`KeyCount`,sa,us,Oc,ec],[2,[()=>W_,{[eu]:1}],0,0,0,1,[()=>E_,{[eu]:1}],0,1,0,0,0,[0,{[J]:Zu}]]],Km=[3,Q,`ListObjectsV2Request`,0,[H,Ca,Ra,Qo,Fs,sa,`FetchOwner`,Oc,dc,U,As],[[0,1],[0,{[Y]:jl}],[0,{[Y]:Pl}],[1,{[Y]:Vl}],[0,{[Y]:Hl}],[0,{[Y]:Al}],[2,{[Y]:`fetch-owner`}],[0,{[Y]:`start-after`}],[0,{[J]:Qu}],[0,{[J]:Z}],[64,{[J]:Ju}]],1],qm=[3,Q,`ListObjectVersionsOutput`,{[X]:`ListVersionsResult`},[Co,Po,Cl,fs,`NextVersionIdMarker`,`Versions`,_a,cs,Fs,Ca,Qo,Hi,Ra,ec],[2,0,0,0,0,[()=>G_,{[eu]:1,[X]:`Version`}],[()=>A_,{[eu]:1,[X]:ha}],0,0,0,1,[()=>E_,{[eu]:1}],0,[0,{[J]:Zu}]]],Jm=[3,Q,`ListObjectVersionsRequest`,0,[H,Ca,Ra,Po,Qo,Fs,Cl,U,dc,As],[[0,1],[0,{[Y]:jl}],[0,{[Y]:Pl}],[0,{[Y]:Bl}],[1,{[Y]:Vl}],[0,{[Y]:Hl}],[0,{[Y]:`version-id-marker`}],[0,{[J]:Z}],[0,{[J]:Qu}],[64,{[J]:Ju}]],1],Ym=[3,Q,`ListPartsOutput`,{[X]:`ListPartsResult`},[Ur,Qr,H,`Key`,_l,Rs,ms,es,Co,Vs,Ao,_s,jc,ec,_i,ia],[[4,{[J]:ru}],[0,{[J]:iu}],0,0,0,0,0,1,2,[()=>q_,{[eu]:1,[X]:Hs}],()=>lm,()=>Ch,0,[0,{[J]:Zu}],0,0]],Xm=[3,Q,`ListPartsRequest`,0,[H,`Key`,_l,es,Rs,dc,U,Hc,Uc,Wc],[[0,1],[0,1],[0,{[Y]:Ql}],[1,{[Y]:`max-parts`}],[0,{[Y]:`part-number-marker`}],[0,{[J]:Qu}],[0,{[J]:Z}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}]],3],Zm=[3,Q,`LocationInfo`,0,[gl,cs],[0,0]],Qm=[3,Q,zo,0,[`TargetBucket`,`TargetPrefix`,ol,ll],[0,0,[()=>ev,0],[()=>o_,0]],2],$m=[3,Q,Go,0,[Mo,Do,ti],[()=>Cm,()=>bm,()=>mee],1],eh=[3,Q,qo,0,[ba,No,Eo,ni],[()=>Af,()=>wm,()=>xm,()=>Jd],1],th=[3,Q,Xo,0,[cs,bl],[0,0]],nh=[3,Q,ts,0,[Xc],[()=>Lg],1],rh=[3,Q,ns,0,[Zc],[()=>Rg],1],ih=[3,Q,`MetadataTableEncryptionConfiguration`,0,[`SseAlgorithm`,`KmsKeyArn`],[0,0],1],ah=[3,Q,os,0,[Dc,`EventThreshold`],[0,()=>Dg],1],oh=[3,Q,`MetricsAndOperator`,0,[Fs,el,Yr],[0,[()=>$_,{[eu]:1,[X]:`Tag`}],0]],sh=[3,Q,Jo,0,[`Id`,qa],[0,[()=>ov,0]],1],ch=[3,Q,rs,0,[_l,`Key`,`Initiated`,jc,_s,Ao,_i,ia],[0,0,4,0,()=>Ch,()=>lm,0,0]],lh=[3,Q,hs,0,[ds,ps],[1,1]],uh=[3,Q,gs,0,[ds,jc,ps],[1,0,1]],dh=[3,Q,ls,0,[`TopicConfigurations`,`QueueConfigurations`,`LambdaFunctionConfigurations`,Da],[[()=>nv,{[eu]:1,[X]:il}],[()=>Y_,{[eu]:1,[X]:Xs}],[()=>R_,{[eu]:1,[X]:`CloudFunctionConfiguration`}],()=>Lf]],fh=[3,Q,`NotificationConfigurationFilter`,0,[`Key`],[[()=>Fg,{[X]:`S3Key`}]]],ph=[3,Q,Ps,0,[`Key`,Vo,Ia,_i,ia,Qc,jc,_s,yc],[0,4,0,[64,{[eu]:1}],0,1,0,()=>Ch,()=>Ng]],mh=[3,Q,`ObjectIdentifier`,0,[`Key`,Sl,Ia,`LastModifiedTime`,Qc],[0,0,0,6,1],1],hh=[3,Q,Ss,0,[`ObjectLockEnabled`,Ec],[0,()=>vh]],gh=[3,Q,`ObjectLockLegalHold`,0,[Dc],[0]],_h=[3,Q,`ObjectLockRetention`,0,[ss,`RetainUntilDate`,`EventHold`,ja],[0,5,0,()=>Rf]],vh=[3,Q,`ObjectLockRule`,0,[ya],[()=>Nee]],yh=[3,Q,`ObjectPart`,0,[G,Qc,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua],[1,1,0,0,0,0,0,0,0,0,0,0]],bh=[3,Q,`ObjectVersion`,0,[Ia,_i,ia,Qc,jc,`Key`,Sl,po,Vo,_s,yc],[0,[64,{[eu]:1}],0,1,0,0,0,2,4,()=>Ch,()=>Ng]],xh=[3,Q,xs,0,[`S3`],[[()=>Ig,0]]],Sh=[3,Q,Ms,0,[`CSV`,jo],[()=>Mee,()=>Dm]],Ch=[3,Q,_s,0,[va,`ID`],[0,0]],wh=[3,Q,vs,0,[Tc],[[()=>K_,{[eu]:1,[X]:Ec}]],1],Th=[3,Q,`OwnershipControlsRule`,0,[ks],[0],1],Eh=[3,Q,`ParquetInput`,0,[],[]],Dh=[3,Q,Hs,0,[G,Vo,Ia,Qc,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua],[1,4,0,1,0,0,0,0,0,0,0,0,0,0]],Oh=[3,Q,zs,{[X]:zs},[`PartitionDateSource`],[0]],kh=[3,Q,Bs,0,[xo],[[2,{[X]:xo}]]],Ah=[3,Q,qs,0,[pi,ci,fi],[1,1,1]],jh=[3,Q,`ProgressEvent`,0,[Ta],[[()=>Ah,{[Nl]:1}]]],Mh=[3,Q,Is,0,[li,bo,ui,fc],[[2,{[X]:li}],[2,{[X]:bo}],[2,{[X]:ui}],[2,{[X]:fc}]]],Nh=[3,Q,`PutBucketAbacRequest`,0,[H,$r,Pi,_i,U],[[0,1],[()=>Hd,{[Ll]:1,[X]:$r}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],Ph=[3,Q,`PutBucketAccelerateConfigurationRequest`,0,[H,Lr,U,_i],[[0,1],[()=>Ud,{[Ll]:1,[X]:Lr}],[0,{[J]:Z}],[0,{[J]:td}]],2],Fh=[3,Q,`PutBucketAclRequest`,0,[H,`ACL`,Br,Pi,_i,eo,no,ro,io,ao,U],[[0,1],[0,{[J]:nu}],[()=>Wd,{[Ll]:1,[X]:Br}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Fu}],[0,{[J]:Iu}],[0,{[J]:Z}]],1],Ih=[3,Q,`PutBucketAnalyticsConfigurationRequest`,0,[H,`Id`,Hr,U],[[0,1],[0,{[Y]:`id`}],[()=>Kd,{[Ll]:1,[X]:Hr}],[0,{[J]:Z}]],3],Lh=[3,Q,`PutBucketCorsRequest`,0,[H,Ri,Pi,_i,U],[[0,1],[()=>of,{[Ll]:1,[X]:Ri}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],Rh=[3,Q,`PutBucketEncryptionRequest`,0,[H,Vc,Pi,_i,U],[[0,1],[()=>Wg,{[Ll]:1,[X]:Vc}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],zh=[3,Q,`PutBucketIntelligentTieringConfigurationRequest`,0,[H,`Id`,wo,U],[[0,1],[0,{[Y]:`id`}],[()=>fm,{[Ll]:1,[X]:wo}],[0,{[J]:Z}]],3],Bh=[3,Q,`PutBucketInventoryConfigurationRequest`,0,[H,`Id`,lo,U],[[0,1],[0,{[Y]:`id`}],[()=>mm,{[Ll]:1,[X]:lo}],[0,{[J]:Z}]],3],Vh=[3,Q,`PutBucketLifecycleConfigurationOutput`,0,[al],[[0,{[J]:fd}]]],Hh=[3,Q,`PutBucketLifecycleConfigurationRequest`,0,[H,_i,Ro,U,al],[[0,1],[0,{[J]:td}],[()=>Zd,{[Ll]:1,[X]:Ro}],[0,{[J]:Z}],[0,{[J]:fd}]],1],Uh=[3,Q,`PutBucketLoggingRequest`,0,[H,si,Pi,_i,U],[[0,1],[()=>Qd,{[Ll]:1,[X]:si}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],Wh=[3,Q,`PutBucketMetricsConfigurationRequest`,0,[H,`Id`,Jo,U],[[0,1],[0,{[Y]:`id`}],[()=>sh,{[Ll]:1,[X]:Jo}],[0,{[J]:Z}]],3],Gh=[3,Q,`PutBucketNotificationConfigurationRequest`,0,[H,ls,U,`SkipDestinationValidation`],[[0,1],[()=>dh,{[Ll]:1,[X]:ls}],[0,{[J]:Z}],[2,{[J]:`x-amz-skip-destination-validation`}]],2],Kh=[3,Q,`PutBucketOwnershipControlsRequest`,0,[H,vs,Pi,U,_i],[[0,1],[()=>wh,{[Ll]:1,[X]:vs}],[0,{[J]:Mi}],[0,{[J]:Z}],[0,{[J]:td}]],2],qh=[3,Q,`PutBucketPolicyRequest`,0,[H,Ks,Pi,_i,`ConfirmRemoveSelfBucketAccess`,U],[[0,1],[0,16],[0,{[J]:Mi}],[0,{[J]:td}],[2,{[J]:`x-amz-confirm-remove-self-bucket-access`}],[0,{[J]:Z}]],2],Jh=[3,Q,`PutBucketReplicationRequest`,0,[H,oc,Pi,_i,ml,U],[[0,1],[()=>Sg,{[Ll]:1,[X]:oc}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:su}],[0,{[J]:Z}]],2],Yh=[3,Q,`PutBucketRequestPaymentRequest`,0,[H,pc,Pi,_i,U],[[0,1],[()=>Og,{[Ll]:1,[X]:pc}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],Xh=[3,Q,`PutBucketTaggingRequest`,0,[H,dl,Pi,_i,U],[[0,1],[()=>i_,{[Ll]:1,[X]:dl}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],Zh=[3,Q,`PutBucketVersioningRequest`,0,[H,xl,Pi,_i,`MFA`,U],[[0,1],[()=>y_,{[Ll]:1,[X]:xl}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Ru}],[0,{[J]:Z}]],2],Qh=[3,Q,`PutBucketWebsiteRequest`,0,[H,wl,Pi,_i,U],[[0,1],[()=>b_,{[Ll]:1,[X]:wl}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],$h=[3,Q,`PutObjectAclOutput`,0,[ec],[[0,{[J]:Zu}]]],eg=[3,Q,`PutObjectAclRequest`,0,[H,`Key`,`ACL`,Br,Pi,_i,eo,no,ro,io,ao,dc,Sl,U],[[0,1],[0,1],[0,{[J]:nu}],[()=>Wd,{[Ll]:1,[X]:Br}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Fu}],[0,{[J]:Iu}],[0,{[J]:Qu}],[0,{[Y]:$l}],[0,{[J]:Z}]],2],tg=[3,Q,`PutObjectAnnotationOutput`,0,[`Key`,qr,Ns,Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,Bc,ec],[0,0,[0,{[J]:Yu}],[0,{[J]:Ia}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Eu}],[0,{[J]:rd}],[0,{[J]:Zu}]]],ng=[3,Q,`PutObjectAnnotationRequest`,0,[H,`Key`,qr,Jr,Sl,bs,_i,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,Pi,dc,U],[[0,1],[0,1],[0,{[Y]:Dl}],[()=>Vd,16],[0,{[Y]:$l}],[0,{[J]:Vu}],[0,{[J]:td}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Mi}],[0,{[J]:Qu}],[0,{[J]:Z}]],4],rg=[3,Q,`PutObjectLegalHoldOutput`,0,[ec],[[0,{[J]:Zu}]]],ig=[3,Q,`PutObjectLegalHoldRequest`,0,[H,`Key`,Bo,dc,Sl,Pi,_i,U],[[0,1],[0,1],[()=>gh,{[Ll]:1,[X]:Bo}],[0,{[J]:Qu}],[0,{[Y]:$l}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],ag=[3,Q,`PutObjectLockConfigurationOutput`,0,[ec],[[0,{[J]:Zu}]]],og=[3,Q,`PutObjectLockConfigurationRequest`,0,[H,Ss,dc,ml,Pi,_i,U],[[0,1],[()=>hh,{[Ll]:1,[X]:Ss}],[0,{[J]:Qu}],[0,{[J]:su}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],1],sg=[3,Q,`PutObjectOutput`,0,[Wa,Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ia,Bc,Sl,Hc,Wc,qc,Kc,oi,Qc,ec],[[0,{[J]:ju}],[0,{[J]:Ia}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:Eu}],[0,{[J]:rd}],[0,{[J]:pd}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}],[1,{[J]:`x-amz-object-size`}],[0,{[J]:Zu}]]],cg=[3,Q,`PutObjectRequest`,0,[H,`Key`,`ACL`,mi,yi,Ti,Di,Oi,ji,Pi,oa,_i,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,Ga,mo,vo,eo,no,ro,ao,`WriteOffsetBytes`,Uo,Bc,jc,Tl,Hc,Uc,Wc,qc,Kc,oi,dc,dl,Ds,Os,Es,Cs,ws,Ts,U],[[0,1],[0,1],[0,{[J]:nu}],[()=>Vd,16],[0,{[J]:Ci}],[0,{[J]:wi}],[0,{[J]:Ei}],[0,{[J]:ki}],[1,{[J]:Ai}],[0,{[J]:Mi}],[0,{[J]:aa}],[0,{[J]:td}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[4,{[J]:Ga}],[0,{[J]:_o}],[0,{[J]:yo}],[0,{[J]:Mu}],[0,{[J]:Nu}],[0,{[J]:Pu}],[0,{[J]:Iu}],[1,{[J]:`x-amz-write-offset-bytes`}],[128,{[Rl]:Lu}],[0,{[J]:rd}],[0,{[J]:ed}],[0,{[J]:md}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[()=>zd,{[J]:od}],[2,{[J]:ad}],[0,{[J]:Qu}],[0,{[J]:ud}],[0,{[J]:Ku}],[5,{[J]:qu}],[0,{[J]:Gu}],[0,{[J]:Hu}],[1,{[J]:Uu}],[1,{[J]:Wu}],[0,{[J]:Z}]],2],lg=[3,Q,`PutObjectRetentionOutput`,0,[ec],[[0,{[J]:Zu}]]],ug=[3,Q,`PutObjectRetentionRequest`,0,[H,`Key`,wc,dc,Sl,ai,Pi,_i,U],[[0,1],[0,1],[()=>_h,{[Ll]:1,[X]:wc}],[0,{[J]:Qu}],[0,{[Y]:$l}],[2,{[J]:ou}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],dg=[3,Q,`PutObjectTaggingOutput`,0,[Sl],[[0,{[J]:pd}]]],fg=[3,Q,`PutObjectTaggingRequest`,0,[H,`Key`,dl,Sl,Pi,_i,U,dc],[[0,1],[0,1],[()=>i_,{[Ll]:1,[X]:dl}],[0,{[Y]:$l}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}],[0,{[J]:Qu}]],3],pg=[3,Q,`PutPublicAccessBlockRequest`,0,[H,Is,Pi,_i,U],[[0,1],[()=>Mh,{[Ll]:1,[X]:Is}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],mg=[3,Q,Xs,0,[`QueueArn`,Ha,`Id`,qa],[[0,{[X]:`Queue`}],[64,{[eu]:1,[X]:Ua}],0,[()=>fh,0]],2],hg=[3,Q,lc,0,[Wa,ma],[0,1],1],gg=[3,Q,`RecordsEvent`,0,[Ws],[[21,{[Nl]:1}]]],_g=[3,Q,Cc,0,[co,`HttpRedirectCode`,Js,`ReplaceKeyPrefixWith`,`ReplaceKeyWith`],[0,0,0,0,0]],vg=[3,Q,$s,0,[co,Js],[0,0],1],yg=[3,Q,`RenameObjectOutput`,0,[],[]],bg=[3,Q,`RenameObjectRequest`,0,[H,`Key`,`RenameSource`,`DestinationIfMatch`,`DestinationIfNoneMatch`,`DestinationIfModifiedSince`,`DestinationIfUnmodifiedSince`,`SourceIfMatch`,`SourceIfNoneMatch`,`SourceIfModifiedSince`,`SourceIfUnmodifiedSince`,`ClientToken`],[[0,1],[0,1],[0,{[J]:`x-amz-rename-source`}],[0,{[J]:_o}],[0,{[J]:yo}],[4,{[J]:ho}],[4,{[J]:ko}],[0,{[J]:`x-amz-rename-source-if-match`}],[0,{[J]:`x-amz-rename-source-if-none-match`}],[6,{[J]:`x-amz-rename-source-if-modified-since`}],[6,{[J]:`x-amz-rename-source-if-unmodified-since`}],[0,{[J]:`x-amz-client-token`,idempotencyToken:1}]],3],xg=[3,Q,uc,0,[Dc],[0],1],Sg=[3,Q,oc,0,[Qs,Tc],[0,[()=>X_,{[eu]:1,[X]:Ec}]],2],Cg=[3,Q,`ReplicationRule`,0,[Dc,wa,`ID`,`Priority`,Fs,qa,zc,Na,ga],[0,()=>kf,0,1,0,[()=>Tg,0],()=>Jg,()=>zf,()=>yf],2],wg=[3,Q,`ReplicationRuleAndOperator`,0,[Fs,el],[0,[()=>$_,{[eu]:1,[X]:`Tag`}]]],Tg=[3,Q,`ReplicationRuleFilter`,0,[Fs,`Tag`,`And`],[0,()=>r_,[()=>wg,0]]],Eg=[3,Q,bc,0,[Dc,`Time`],[0,()=>Dg],2],Dg=[3,Q,`ReplicationTimeValue`,0,[`Minutes`],[1]],Og=[3,Q,pc,0,[Us],[0],1],kg=[3,Q,mc,0,[`Enabled`],[2]],Ag=[3,Q,`RestoreObjectOutput`,0,[ec,`RestoreOutputPath`],[[0,{[J]:Zu}],[0,{[J]:`x-amz-restore-output-path`}]]],jg=[3,Q,`RestoreObjectRequest`,0,[H,`Key`,Sl,gc,dc,_i,U],[[0,1],[0,1],[0,{[Y]:$l}],[()=>Mg,{[Ll]:1,[X]:gc}],[0,{[J]:Qu}],[0,{[J]:td}],[0,{[J]:Z}]],2],Mg=[3,Q,gc,0,[ma,to,gl,fl,`Description`,Fc,xs],[1,()=>tm,0,0,0,()=>Hg,[()=>xh,0]]],Ng=[3,Q,yc,0,[`IsRestoreInProgress`,`RestoreExpiryDate`],[2,4]],Pg=[3,Q,_c,0,[Cc,da],[()=>_g,()=>af],1],Fg=[3,Q,`S3KeyFilter`,0,[`FilterRules`],[[()=>N_,{[eu]:1,[X]:Ya}]]],Ig=[3,Q,`S3Location`,0,[`BucketName`,Fs,Ba,`CannedACL`,Rr,dl,yl,jc],[0,0,[()=>jf,0],0,[()=>P_,0],[()=>i_,0],[()=>iv,0],0],2],Lg=[3,Q,Xc,0,[nl,sl],[0,0],2],Rg=[3,Q,Zc,0,[nl,sl,tl,cl],[0,0,0,0],4],zg=[3,Q,Lc,0,[`Start`,`End`],[1,1]],Bg=[3,Q,`SelectObjectContentOutput`,0,[Ws],[[()=>cv,16]]],Vg=[3,Q,`SelectObjectContentRequest`,0,[H,`Key`,Ka,za,So,Ms,Hc,Uc,Wc,mc,Lc,U],[[0,1],[0,1],0,0,()=>um,()=>Sh,[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],()=>kg,()=>zg,[0,{[J]:Z}]],6],Hg=[3,Q,Fc,0,[So,za,Ka,Ms],[()=>um,0,0,()=>Sh],4],Ug=[3,Q,`ServerSideEncryptionByDefault`,0,[`SSEAlgorithm`,`KMSMasterKeyID`],[0,[()=>Bd,0]],1],Wg=[3,Q,Vc,0,[Tc],[[()=>Q_,{[eu]:1,[X]:Ec}]],1],Gg=[3,Q,`ServerSideEncryptionRule`,0,[`ApplyServerSideEncryptionByDefault`,oi,ii],[[()=>Ug,0],2,[()=>Yd,0]]],Kg=[3,Q,`SessionCredentials`,0,[Kr,kc,Yc,Wa],[[0,{[X]:Kr}],[()=>Ld,{[X]:kc}],[()=>Ld,{[X]:Yc}],[4,{[X]:Wa}]],4],qg=[3,Q,Ic,{[X]:Ic},[],[]],Jg=[3,Q,zc,0,[Pc,uc],[()=>Xg,()=>xg]],Yg=[3,Q,Gc,{[X]:Nc},[`KeyId`],[[()=>Bd,0]],1],Xg=[3,Q,Pc,0,[Dc],[0],1],Zg=[3,Q,`SSEKMSEncryption`,{[X]:Nc},[`KMSKeyArn`,oi],[[()=>see,0],2],1],Qg=[3,Q,Jc,{[X]:Rc},[],[]],$g=[3,Q,$c,0,[pi,ci,fi],[1,1,1]],e_=[3,Q,`StatsEvent`,0,[Ta],[[()=>$g,{[Nl]:1}]]],t_=[3,Q,Mc,0,[`DataExport`],[()=>n_]],n_=[3,Q,`StorageClassAnalysisDataExport`,0,[`OutputSchemaVersion`,wa],[0,()=>fee],2],r_=[3,Q,`Tag`,0,[`Key`,bl],[0,0],2],i_=[3,Q,dl,0,[K],[[()=>$_,0]],1],a_=[3,Q,`TargetGrant`,0,[so,Gs],[[()=>rm,{[tu]:[`xsi`,zl]}],0]],o_=[3,Q,ll,0,[Ic,zs],[[()=>qg,{[X]:Ic}],[()=>Oh,{[X]:zs}]]],s_=[3,Q,pl,0,[ma,ei],[1,0],2],c_=[3,Q,il,0,[`TopicArn`,Ha,`Id`,qa],[[0,{[X]:`Topic`}],[64,{[eu]:1,[X]:Ua}],0,[()=>fh,0]],2],l_=[3,Q,hl,0,[xa,ma,jc],[5,1,0]],u_=[3,Q,`UpdateBucketMetadataAnnotationTableConfigurationRequest`,0,[H,ti,Pi,_i,U],[[0,1],[()=>hee,{[Ll]:1,[X]:ti}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],d_=[3,Q,`UpdateBucketMetadataInventoryTableConfigurationRequest`,0,[H,Do,Pi,_i,U],[[0,1],[()=>Sm,{[Ll]:1,[X]:Do}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],f_=[3,Q,`UpdateBucketMetadataJournalTableConfigurationRequest`,0,[H,Mo,Pi,_i,U],[[0,1],[()=>Tm,{[Ll]:1,[X]:Mo}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:Z}]],2],p_=[3,Q,`UpdateObjectEncryptionRequest`,0,[H,`Key`,ys,Sl,dc,U,Pi,_i],[[0,1],[0,1],[()=>sv,16],[0,{[Y]:$l}],[0,{[J]:Qu}],[0,{[J]:Z}],[0,{[J]:Mi}],[0,{[J]:td}]],3],m_=[3,Q,`UpdateObjectEncryptionResponse`,0,[ec],[[0,{[J]:Zu}]]],h_=[3,Q,`UploadPartCopyOutput`,0,[na,Vi,Bc,Hc,Wc,qc,oi,ec],[[0,{[J]:Tu}],[()=>See,16],[0,{[J]:rd}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[2,{[J]:ad}],[0,{[J]:Zu}]]],g_=[3,Q,`UploadPartCopyRequest`,0,[H,ra,`Key`,G,_l,Yi,Xi,Zi,Qi,`CopySourceRange`,Hc,Uc,Wc,$i,ea,ta,dc,U,Fa],[[0,1],[0,{[J]:_u}],[0,1],[1,{[Y]:Ul}],[0,{[Y]:Ql}],[0,{[J]:vu}],[4,{[J]:yu}],[0,{[J]:bu}],[4,{[J]:xu}],[0,{[J]:`x-amz-copy-source-range`}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[0,{[J]:Su}],[()=>Id,{[J]:Cu}],[0,{[J]:wu}],[0,{[J]:Qu}],[0,{[J]:Z}],[0,{[J]:nd}]],5],__=[3,Q,`UploadPartOutput`,0,[Bc,Ia,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,Hc,Wc,qc,oi,ec],[[0,{[J]:rd}],[0,{[J]:Ia}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:sd}],[0,{[J]:ld}],[()=>Bd,{[J]:id}],[2,{[J]:ad}],[0,{[J]:Zu}]]],v_=[3,Q,`UploadPartRequest`,0,[H,`Key`,G,_l,mi,ji,Pi,_i,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,Hc,Uc,Wc,dc,U],[[0,1],[0,1],[1,{[Y]:Ul}],[0,{[Y]:Ql}],[()=>Vd,16],[1,{[J]:Ai}],[0,{[J]:Mi}],[0,{[J]:td}],[0,{[J]:lu}],[0,{[J]:uu}],[0,{[J]:du}],[0,{[J]:mu}],[0,{[J]:hu}],[0,{[J]:gu}],[0,{[J]:fu}],[0,{[J]:Du}],[0,{[J]:Ou}],[0,{[J]:ku}],[0,{[J]:sd}],[()=>Rd,{[J]:cd}],[0,{[J]:ld}],[0,{[J]:Qu}],[0,{[J]:Z}]],4],y_=[3,Q,xl,0,[Zo,Dc],[[0,{[X]:Yo}],0]],b_=[3,Q,wl,0,[Aa,fo,$s,hc],[()=>If,()=>cm,()=>vg,[()=>Z_,0]]],x_=[3,Q,`WriteGetObjectResponseRequest`,0,[`RequestRoute`,`RequestToken`,mi,`StatusCode`,ka,Ma,Zr,yi,Ti,Di,Oi,ji,Ui,oa,bi,xi,Si,Ki,qi,Ji,Ni,ca,la,ua,ha,Ia,Ga,Wa,Vo,$o,Uo,Ds,Es,Os,Ls,vc,ec,Sc,Bc,Hc,qc,Wc,jc,rl,Sl,oi],[[0,{hostLabel:1,[J]:`x-amz-request-route`}],[0,{[J]:`x-amz-request-token`}],[()=>Vd,16],[1,{[J]:`x-amz-fwd-status`}],[0,{[J]:`x-amz-fwd-error-code`}],[0,{[J]:`x-amz-fwd-error-message`}],[0,{[J]:`x-amz-fwd-header-accept-ranges`}],[0,{[J]:`x-amz-fwd-header-Cache-Control`}],[0,{[J]:`x-amz-fwd-header-Content-Disposition`}],[0,{[J]:`x-amz-fwd-header-Content-Encoding`}],[0,{[J]:`x-amz-fwd-header-Content-Language`}],[1,{[J]:Ai}],[0,{[J]:`x-amz-fwd-header-Content-Range`}],[0,{[J]:`x-amz-fwd-header-Content-Type`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-crc32`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-crc32c`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-crc64nvme`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-sha1`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-sha256`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-sha512`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-md5`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-xxhash64`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-xxhash3`}],[0,{[J]:`x-amz-fwd-header-x-amz-checksum-xxhash128`}],[2,{[J]:`x-amz-fwd-header-x-amz-delete-marker`}],[0,{[J]:`x-amz-fwd-header-ETag`}],[4,{[J]:`x-amz-fwd-header-Expires`}],[0,{[J]:`x-amz-fwd-header-x-amz-expiration`}],[4,{[J]:`x-amz-fwd-header-Last-Modified`}],[1,{[J]:`x-amz-fwd-header-x-amz-missing-meta`}],[128,{[Rl]:Lu}],[0,{[J]:`x-amz-fwd-header-x-amz-object-lock-mode`}],[0,{[J]:`x-amz-fwd-header-x-amz-object-lock-legal-hold`}],[5,{[J]:`x-amz-fwd-header-x-amz-object-lock-retain-until-date`}],[1,{[J]:`x-amz-fwd-header-x-amz-mp-parts-count`}],[0,{[J]:`x-amz-fwd-header-x-amz-replication-status`}],[0,{[J]:`x-amz-fwd-header-x-amz-request-charged`}],[0,{[J]:`x-amz-fwd-header-x-amz-restore`}],[0,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption`}],[0,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm`}],[()=>Bd,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id`}],[0,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5`}],[0,{[J]:`x-amz-fwd-header-x-amz-storage-class`}],[1,{[J]:`x-amz-fwd-header-x-amz-tagging-count`}],[0,{[J]:`x-amz-fwd-header-x-amz-version-id`}],[2,{[J]:`x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled`}]],2],S_=`unit`,C_=[1,Q,zr,0,[()=>Kd,0]],w_=[1,Q,`AnnotationList`,0,[()=>qd,{[X]:Wr}]],T_=[1,Q,hi,0,[()=>gee,{[X]:H}]],E_=[1,Q,`CommonPrefixList`,0,()=>ef],D_=[1,Q,`CompletedPartList`,0,()=>_ee],O_=[1,Q,zi,0,[()=>Cee,0]],k_=[1,Q,`DeletedObjects`,0,()=>_f],A_=[1,Q,_a,0,()=>vf],j_=[1,Q,`EncryptionTypeList`,0,[0,{[X]:La}]],M_=[1,Q,Va,0,()=>Pf],N_=[1,Q,`FilterRuleList`,0,()=>Bf],P_=[1,Q,Za,0,[()=>nm,{[X]:oo}]],F_=[1,Q,To,0,[()=>fm,0]],I_=[1,Q,uo,0,[()=>mm,0]],L_=[1,Q,`InventoryOptionalFields`,0,[0,{[X]:`Field`}]],R_=[1,Q,`LambdaFunctionConfigurationList`,0,[()=>Om,0]],z_=[1,Q,`LifecycleRules`,0,[()=>Hee,0]],B_=[1,Q,Ko,0,[()=>sh,0]],V_=[1,Q,`MultipartUploadList`,0,()=>ch],H_=[1,Q,`NoncurrentVersionTransitionList`,0,()=>uh],U_=[1,Q,`ObjectIdentifierList`,0,()=>mh],W_=[1,Q,`ObjectList`,0,[()=>ph,0]],G_=[1,Q,`ObjectVersionList`,0,[()=>bh,0]],K_=[1,Q,`OwnershipControlsRules`,0,()=>Th],q_=[1,Q,Vs,0,()=>Dh],J_=[1,Q,`PartsList`,0,()=>yh],Y_=[1,Q,`QueueConfigurationList`,0,[()=>mg,0]],X_=[1,Q,`ReplicationRules`,0,[()=>Cg,0]],Z_=[1,Q,hc,0,[()=>Pg,{[X]:_c}]],Q_=[1,Q,`ServerSideEncryptionRules`,0,[()=>Gg,0]],$_=[1,Q,K,0,[()=>r_,{[X]:`Tag`}]],ev=[1,Q,ol,0,[()=>a_,{[X]:oo}]],tv=[1,Q,`TieringList`,0,()=>s_],nv=[1,Q,`TopicConfigurationList`,0,[()=>c_,0]],rv=[1,Q,`TransitionList`,0,()=>l_],iv=[1,Q,yl,0,[()=>th,{[X]:Xo}]],av=[4,Q,`AnalyticsFilter`,0,[Fs,`Tag`,`And`],[0,()=>r_,[()=>Gd,0]]],ov=[4,Q,`MetricsFilter`,0,[Fs,`Tag`,Yr,`And`],[0,()=>r_,0,[()=>oh,0]]],sv=[4,Q,ys,0,[Gc],[[()=>Zg,{[X]:Nc}]]],cv=[4,Q,`SelectObjectContentEventStream`,{[Zl]:1},[`Records`,$c,qs,`Cont`,`End`],[[()=>gg,0],[()=>e_,0],[()=>jh,0],()=>vee,()=>Nf]],lv=[9,Q,`AbortMultipartUpload`,{[q]:[`DELETE`,`/{Key+}?x-id=AbortMultipartUpload`,204]},()=>uee,()=>lee],uv=[9,Q,Fi,{[q]:[`POST`,`/{Key+}`,200]},()=>rf,()=>nf],dv=[9,Q,`CopyObject`,{[q]:[`PUT`,`/{Key+}?x-id=CopyObject`,200]},()=>bee,()=>yee],fv=[9,Q,`CreateBucket`,{[q]:[`PUT`,`/`,200]},()=>Eee,()=>Tee],pv=[9,Q,`CreateBucketMetadataConfiguration`,{[Fl]:`-`,[q]:[`POST`,`/?metadataConfiguration`,200]},()=>sf,()=>S_],mv=[9,Q,`CreateBucketMetadataTableConfiguration`,{[Fl]:`-`,[q]:[`POST`,`/?metadataTable`,200]},()=>cf,()=>S_],hv=[9,Q,`CreateMultipartUpload`,{[q]:[`POST`,`/{Key+}?uploads`,200]},()=>Oee,()=>Dee],gv=[9,Q,`CreateSession`,{[q]:[`GET`,`/?session`,200]},()=>Aee,()=>kee],_v=[9,Q,`DeleteBucket`,{[q]:[`DELETE`,`/`,204]},()=>mf,()=>S_],vv=[9,Q,`DeleteBucketAnalyticsConfiguration`,{[q]:[`DELETE`,`/?analytics`,204]},()=>Fee,()=>S_],yv=[9,Q,`DeleteBucketCors`,{[q]:[`DELETE`,`/?cors`,204]},()=>Iee,()=>S_],bv=[9,Q,`DeleteBucketEncryption`,{[q]:[`DELETE`,`/?encryption`,204]},()=>Lee,()=>S_],xv=[9,Q,`DeleteBucketIntelligentTieringConfiguration`,{[q]:[`DELETE`,`/?intelligent-tiering`,204]},()=>lf,()=>S_],Sv=[9,Q,`DeleteBucketInventoryConfiguration`,{[q]:[`DELETE`,`/?inventory`,204]},()=>Ree,()=>S_],Cv=[9,Q,`DeleteBucketLifecycle`,{[q]:[`DELETE`,`/?lifecycle`,204]},()=>uf,()=>S_],wv=[9,Q,`DeleteBucketMetadataConfiguration`,{[q]:[`DELETE`,`/?metadataConfiguration`,204]},()=>df,()=>S_],Tv=[9,Q,`DeleteBucketMetadataTableConfiguration`,{[q]:[`DELETE`,`/?metadataTable`,204]},()=>zee,()=>S_],Ev=[9,Q,`DeleteBucketMetricsConfiguration`,{[q]:[`DELETE`,`/?metrics`,204]},()=>Bee,()=>S_],Jee=[9,Q,`DeleteBucketOwnershipControls`,{[q]:[`DELETE`,`/?ownershipControls`,204]},()=>Vee,()=>S_],Yee=[9,Q,`DeleteBucketPolicy`,{[q]:[`DELETE`,`/?policy`,204]},()=>ff,()=>S_],Xee=[9,Q,`DeleteBucketReplication`,{[q]:[`DELETE`,`/?replication`,204]},()=>pf,()=>S_],Zee=[9,Q,`DeleteBucketTagging`,{[q]:[`DELETE`,`/?tagging`,204]},()=>hf,()=>S_],Dv=[9,Q,`DeleteBucketWebsite`,{[q]:[`DELETE`,`/?website`,204]},()=>gf,()=>S_],Ov=[9,Q,`DeleteObject`,{[q]:[`DELETE`,`/{Key+}?x-id=DeleteObject`,204]},()=>Cf,()=>Sf],kv=[9,Q,`DeleteObjectAnnotation`,{[q]:[`DELETE`,`/{Key+}?annotation`,204]},()=>xf,()=>bf],Av=[9,Q,`DeleteObjects`,{[Fl]:`-`,[q]:[`POST`,`/?delete`,200]},()=>Tf,()=>wf],jv=[9,Q,`DeleteObjectTagging`,{[q]:[`DELETE`,`/{Key+}?tagging`,204]},()=>Df,()=>Ef],Mv=[9,Q,`DeletePublicAccessBlock`,{[q]:[`DELETE`,`/?publicAccessBlock`,204]},()=>Of,()=>S_],Nv=[9,Q,`GetBucketAbac`,{[q]:[`GET`,`/?abac`,200]},()=>Hf,()=>Vf],Pv=[9,Q,`GetBucketAccelerateConfiguration`,{[q]:[`GET`,`/?accelerate`,200]},()=>Wf,()=>Uf],Fv=[9,Q,`GetBucketAcl`,{[q]:[`GET`,`/?acl`,200]},()=>Kf,()=>Gf],Iv=[9,Q,`GetBucketAnalyticsConfiguration`,{[q]:[`GET`,`/?analytics&x-id=GetBucketAnalyticsConfiguration`,200]},()=>Jf,()=>qf],Lv=[9,Q,`GetBucketCors`,{[q]:[`GET`,`/?cors`,200]},()=>Xf,()=>Yf],Rv=[9,Q,`GetBucketEncryption`,{[q]:[`GET`,`/?encryption`,200]},()=>Qf,()=>Zf],zv=[9,Q,`GetBucketIntelligentTieringConfiguration`,{[q]:[`GET`,`/?intelligent-tiering&x-id=GetBucketIntelligentTieringConfiguration`,200]},()=>ep,()=>$f],Bv=[9,Q,`GetBucketInventoryConfiguration`,{[q]:[`GET`,`/?inventory&x-id=GetBucketInventoryConfiguration`,200]},()=>np,()=>tp],Vv=[9,Q,`GetBucketLifecycleConfiguration`,{[q]:[`GET`,`/?lifecycle`,200]},()=>ip,()=>rp],Hv=[9,Q,`GetBucketLocation`,{[q]:[`GET`,`/?location`,200]},()=>op,()=>ap],Uv=[9,Q,`GetBucketLogging`,{[q]:[`GET`,`/?logging`,200]},()=>cp,()=>sp],Wv=[9,Q,`GetBucketMetadataConfiguration`,{[q]:[`GET`,`/?metadataConfiguration`,200]},()=>up,()=>lp],Gv=[9,Q,`GetBucketMetadataTableConfiguration`,{[q]:[`GET`,`/?metadataTable`,200]},()=>pp,()=>fp],Kv=[9,Q,`GetBucketMetricsConfiguration`,{[q]:[`GET`,`/?metrics&x-id=GetBucketMetricsConfiguration`,200]},()=>gp,()=>hp],qv=[9,Q,`GetBucketNotificationConfiguration`,{[q]:[`GET`,`/?notification`,200]},()=>_p,()=>dh],Jv=[9,Q,`GetBucketOwnershipControls`,{[q]:[`GET`,`/?ownershipControls`,200]},()=>yp,()=>vp],Yv=[9,Q,`GetBucketPolicy`,{[q]:[`GET`,`/?policy`,200]},()=>xp,()=>bp],Xv=[9,Q,`GetBucketPolicyStatus`,{[q]:[`GET`,`/?policyStatus`,200]},()=>Cp,()=>Sp],Zv=[9,Q,`GetBucketReplication`,{[q]:[`GET`,`/?replication`,200]},()=>Tp,()=>wp],Qv=[9,Q,`GetBucketRequestPayment`,{[q]:[`GET`,`/?requestPayment`,200]},()=>Dp,()=>Ep],$v=[9,Q,`GetBucketTagging`,{[q]:[`GET`,`/?tagging`,200]},()=>kp,()=>Op],ey=[9,Q,`GetBucketVersioning`,{[q]:[`GET`,`/?versioning`,200]},()=>jp,()=>Ap],ty=[9,Q,`GetBucketWebsite`,{[q]:[`GET`,`/?website`,200]},()=>Np,()=>Mp],ny=[9,Q,`GetObject`,{[Fl]:`-`,[q]:[`GET`,`/{Key+}?x-id=GetObject`,200]},()=>Kp,()=>Gp],ry=[9,Q,`GetObjectAcl`,{[q]:[`GET`,`/{Key+}?acl`,200]},()=>Fp,()=>Pp],iy=[9,Q,`GetObjectAnnotation`,{[Fl]:`-`,[q]:[`GET`,`/{Key+}?annotation&x-id=GetObjectAnnotation`,200]},()=>Lp,()=>Ip],ay=[9,Q,`GetObjectAttributes`,{[q]:[`GET`,`/{Key+}?attributes`,200]},()=>Bp,()=>Rp],oy=[9,Q,`GetObjectLegalHold`,{[q]:[`GET`,`/{Key+}?legal-hold`,200]},()=>Hp,()=>Vp],sy=[9,Q,`GetObjectLockConfiguration`,{[q]:[`GET`,`/?object-lock`,200]},()=>Wp,()=>Up],cy=[9,Q,`GetObjectRetention`,{[q]:[`GET`,`/{Key+}?retention`,200]},()=>Jp,()=>qp],ly=[9,Q,`GetObjectTagging`,{[q]:[`GET`,`/{Key+}?tagging`,200]},()=>Xp,()=>Yp],uy=[9,Q,`GetObjectTorrent`,{[q]:[`GET`,`/{Key+}?torrent`,200]},()=>Qp,()=>Zp],dy=[9,Q,`GetPublicAccessBlock`,{[q]:[`GET`,`/?publicAccessBlock`,200]},()=>em,()=>$p],fy=[9,Q,`HeadBucket`,{[q]:[`HEAD`,`/`,200]},()=>am,()=>im],py=[9,Q,`HeadObject`,{[q]:[`HEAD`,`/{Key+}`,200]},()=>sm,()=>om],my=[9,Q,`ListBucketAnalyticsConfigurations`,{[q]:[`GET`,`/?analytics&x-id=ListBucketAnalyticsConfigurations`,200]},()=>Kee,()=>Gee],hy=[9,Q,`ListBucketIntelligentTieringConfigurations`,{[q]:[`GET`,`/?intelligent-tiering&x-id=ListBucketIntelligentTieringConfigurations`,200]},()=>Am,()=>qee],gy=[9,Q,`ListBucketInventoryConfigurations`,{[q]:[`GET`,`/?inventory&x-id=ListBucketInventoryConfigurations`,200]},()=>Mm,()=>jm],_y=[9,Q,`ListBucketMetricsConfigurations`,{[q]:[`GET`,`/?metrics&x-id=ListBucketMetricsConfigurations`,200]},()=>Pm,()=>Nm],vy=[9,Q,`ListBuckets`,{[q]:[`GET`,`/?x-id=ListBuckets`,200]},()=>Im,()=>Fm],yy=[9,Q,`ListDirectoryBuckets`,{[q]:[`GET`,`/?x-id=ListDirectoryBuckets`,200]},()=>Rm,()=>Lm],by=[9,Q,`ListMultipartUploads`,{[q]:[`GET`,`/?uploads`,200]},()=>Bm,()=>zm],xy=[9,Q,`ListObjectAnnotations`,{[q]:[`GET`,`/{Key+}?annotation&x-id=ListObjectAnnotations`,200]},()=>Hm,()=>Vm],Sy=[9,Q,`ListObjects`,{[q]:[`GET`,`/`,200]},()=>Wm,()=>Um],Cy=[9,Q,`ListObjectsV2`,{[q]:[`GET`,`/?list-type=2`,200]},()=>Km,()=>Gm],wy=[9,Q,`ListObjectVersions`,{[q]:[`GET`,`/?versions`,200]},()=>Jm,()=>qm],Ty=[9,Q,`ListParts`,{[q]:[`GET`,`/{Key+}?x-id=ListParts`,200]},()=>Xm,()=>Ym],Ey=[9,Q,`PutBucketAbac`,{[Fl]:`-`,[q]:[`PUT`,`/?abac`,200]},()=>Nh,()=>S_],Dy=[9,Q,`PutBucketAccelerateConfiguration`,{[Fl]:`-`,[q]:[`PUT`,`/?accelerate`,200]},()=>Ph,()=>S_],Oy=[9,Q,`PutBucketAcl`,{[Fl]:`-`,[q]:[`PUT`,`/?acl`,200]},()=>Fh,()=>S_],ky=[9,Q,`PutBucketAnalyticsConfiguration`,{[q]:[`PUT`,`/?analytics`,200]},()=>Ih,()=>S_],Ay=[9,Q,`PutBucketCors`,{[Fl]:`-`,[q]:[`PUT`,`/?cors`,200]},()=>Lh,()=>S_],jy=[9,Q,`PutBucketEncryption`,{[Fl]:`-`,[q]:[`PUT`,`/?encryption`,200]},()=>Rh,()=>S_],My=[9,Q,`PutBucketIntelligentTieringConfiguration`,{[q]:[`PUT`,`/?intelligent-tiering`,200]},()=>zh,()=>S_],Ny=[9,Q,`PutBucketInventoryConfiguration`,{[q]:[`PUT`,`/?inventory`,200]},()=>Bh,()=>S_],Py=[9,Q,`PutBucketLifecycleConfiguration`,{[Fl]:`-`,[q]:[`PUT`,`/?lifecycle`,200]},()=>Hh,()=>Vh],Fy=[9,Q,`PutBucketLogging`,{[Fl]:`-`,[q]:[`PUT`,`/?logging`,200]},()=>Uh,()=>S_],Iy=[9,Q,`PutBucketMetricsConfiguration`,{[q]:[`PUT`,`/?metrics`,200]},()=>Wh,()=>S_],Ly=[9,Q,`PutBucketNotificationConfiguration`,{[q]:[`PUT`,`/?notification`,200]},()=>Gh,()=>S_],Ry=[9,Q,`PutBucketOwnershipControls`,{[Fl]:`-`,[q]:[`PUT`,`/?ownershipControls`,200]},()=>Kh,()=>S_],zy=[9,Q,`PutBucketPolicy`,{[Fl]:`-`,[q]:[`PUT`,`/?policy`,200]},()=>qh,()=>S_],By=[9,Q,`PutBucketReplication`,{[Fl]:`-`,[q]:[`PUT`,`/?replication`,200]},()=>Jh,()=>S_],Vy=[9,Q,`PutBucketRequestPayment`,{[Fl]:`-`,[q]:[`PUT`,`/?requestPayment`,200]},()=>Yh,()=>S_],Hy=[9,Q,`PutBucketTagging`,{[Fl]:`-`,[q]:[`PUT`,`/?tagging`,200]},()=>Xh,()=>S_],Uy=[9,Q,`PutBucketVersioning`,{[Fl]:`-`,[q]:[`PUT`,`/?versioning`,200]},()=>Zh,()=>S_],Wy=[9,Q,`PutBucketWebsite`,{[Fl]:`-`,[q]:[`PUT`,`/?website`,200]},()=>Qh,()=>S_],Gy=[9,Q,`PutObject`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?x-id=PutObject`,200]},()=>cg,()=>sg],Ky=[9,Q,`PutObjectAcl`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?acl`,200]},()=>eg,()=>$h],qy=[9,Q,`PutObjectAnnotation`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?annotation`,200]},()=>ng,()=>tg],Jy=[9,Q,`PutObjectLegalHold`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?legal-hold`,200]},()=>ig,()=>rg],Yy=[9,Q,`PutObjectLockConfiguration`,{[Fl]:`-`,[q]:[`PUT`,`/?object-lock`,200]},()=>og,()=>ag],Xy=[9,Q,`PutObjectRetention`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?retention`,200]},()=>ug,()=>lg],Zy=[9,Q,`PutObjectTagging`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?tagging`,200]},()=>fg,()=>dg],Qy=[9,Q,`PutPublicAccessBlock`,{[Fl]:`-`,[q]:[`PUT`,`/?publicAccessBlock`,200]},()=>pg,()=>S_],$y=[9,Q,`RenameObject`,{[q]:[`PUT`,`/{Key+}?renameObject`,200]},()=>bg,()=>yg],eb=[9,Q,`RestoreObject`,{[Fl]:`-`,[q]:[`POST`,`/{Key+}?restore`,200]},()=>jg,()=>Ag],tb=[9,Q,`SelectObjectContent`,{[q]:[`POST`,`/{Key+}?select&select-type=2`,200]},()=>Vg,()=>Bg],nb=[9,Q,`UpdateBucketMetadataAnnotationTableConfiguration`,{[Fl]:`-`,[q]:[`PUT`,`/?metadataAnnotationTable`,200]},()=>u_,()=>S_],rb=[9,Q,`UpdateBucketMetadataInventoryTableConfiguration`,{[Fl]:`-`,[q]:[`PUT`,`/?metadataInventoryTable`,200]},()=>d_,()=>S_],ib=[9,Q,`UpdateBucketMetadataJournalTableConfiguration`,{[Fl]:`-`,[q]:[`PUT`,`/?metadataJournalTable`,200]},()=>f_,()=>S_],ab=[9,Q,`UpdateObjectEncryption`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?encryption`,200]},()=>p_,()=>m_],ob=[9,Q,`UploadPart`,{[Fl]:`-`,[q]:[`PUT`,`/{Key+}?x-id=UploadPart`,200]},()=>v_,()=>__],sb=[9,Q,`UploadPartCopy`,{[q]:[`PUT`,`/{Key+}?x-id=UploadPartCopy`,200]},()=>g_,()=>h_],cb=[9,Q,`WriteGetObjectResponse`,{endpoint:[`{RequestRoute}.`],[q]:[`POST`,`/WriteGetObjectResponse`,200]},()=>x_,()=>S_],lb=class extends B($n,V,`CreateSession`,gv){},ub={version:`3.1155.0`};let db=e=>({apiVersion:`2006-03-01`,base64Decoder:e?.base64Decoder??ht,base64Encoder:e?.base64Encoder??mt,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??Hn,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??pt,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Kn,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:`aws.auth#sigv4`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4`),signer:new $e},{schemeId:`aws.auth#sigv4a`,identityProvider:e=>e.getIdentityProvider(`aws.auth#sigv4a`),signer:new tt}],logger:e?.logger??new se,md5:e?.md5??ct,protocol:e?.protocol??k,protocolSettings:e?.protocolSettings??{defaultNamespace:`com.amazonaws.s3`,errorTypeRegistries:Fd,xmlNamespace:`http://s3.amazonaws.com/doc/2006-03-01/`,version:`2006-03-01`,serviceTarget:`AmazonS3`},sdkStreamMixin:e?.sdkStreamMixin??ft,serviceId:e?.serviceId??`S3`,sha1:e?.sha1??yt,sha256:e?.sha256??st,signerConstructor:e?.signerConstructor??at,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Re,useArnRegion:e?.useArnRegion??void 0,utf8Decoder:e?.utf8Decoder??dt,utf8Encoder:e?.utf8Encoder??ut}),fb=e=>{ce(process.version);let t=ye(e),n=()=>t().then(le),a=db(e);s(process.version);let o={profile:e?.profile,logger:a.logger};return{...a,...e,runtime:`node`,defaultsMode:t,authSchemePreference:e?.authSchemePreference??xe(it,o),bodyLengthChecker:e?.bodyLengthChecker??gt,credentialDefaultProvider:e?.credentialDefaultProvider??ot,defaultUserAgentProvider:e?.defaultUserAgentProvider??c({serviceId:a.serviceId,clientVersion:ub.version}),disableS3ExpressSessionAuth:e?.disableS3ExpressSessionAuth??xe(j,o),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Fe,maxAttempts:e?.maxAttempts??xe(Ge,e),region:e?.region??xe(we,{...Te,...o}),requestChecksumCalculation:e?.requestChecksumCalculation??xe(i,o),requestHandler:vt.create(e?.requestHandler??n),responseChecksumValidation:e?.responseChecksumValidation??xe(r,o),retryMode:e?.retryMode??xe({...We,default:async()=>(await n()).retryMode||He},e),sigv4aSigningRegionSet:e?.sigv4aSigningRegionSet??xe(rt,o),streamCollector:e?.streamCollector??_t,streamHasher:e?.streamHasher??lt,useArnRegion:e?.useArnRegion??xe(A,o),useDualstackEndpoint:e?.useDualstackEndpoint??xe(Ce,o),useFipsEndpoint:e?.useFipsEndpoint??xe(Se,o),userAgentAppId:e?.userAgentAppId??xe(l,o)}},pb=e=>{let t=e.httpAuthSchemes,n=e.httpAuthSchemeProvider,r=e.credentials;return{setHttpAuthScheme(e){let n=t.findIndex(t=>t.schemeId===e.schemeId);n===-1?t.push(e):t.splice(n,1,e)},httpAuthSchemes(){return t},setHttpAuthSchemeProvider(e){n=e},httpAuthSchemeProvider(){return n},setCredentials(e){r=e},credentials(){return r}}},mb=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()}),hb=(e,t)=>{let n=Object.assign(u(e),ue(e),ze(e),pb(e));return t.forEach(e=>e.configure(n)),Object.assign(e,d(n),de(n),Be(n),mb(n))};var gb=class extends fe{config;constructor(...[e]){let t=fb(e||{});super(t),this.initConfig=t;let n=Jn(t),r=f(n),i=a(r),o=Ke(i),s=Ee(o),c=p(s),l=Ne(c),u=Ie(l),d=qn(u),y=M(d,{session:[()=>this,lb]}),b=hb(y,e?.extensions||[]);this.config=b,this.middlewareStack.use(Xe(this.config)),this.middlewareStack.use(m(this.config)),this.middlewareStack.use(qe(this.config)),this.middlewareStack.use(Ve(this.config)),this.middlewareStack.use(h(this.config)),this.middlewareStack.use(g(this.config)),this.middlewareStack.use(v(this.config)),this.middlewareStack.use(L(this.config,{httpAuthSchemeParametersProvider:Un,identityProviderConfigProvider:async e=>new te({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(ne(this.config)),this.middlewareStack.use(N(this.config)),this.middlewareStack.use(P(this.config)),this.middlewareStack.use(F(this.config)),this.middlewareStack.use(I(this.config)),this.middlewareStack.use(ee(this.config))}destroy(){super.destroy()}},_b=class extends B(Yn,V,`AbortMultipartUpload`,lv){},vb=class extends B(Yn,ar,`CompleteMultipartUpload`,uv){},yb=class extends B(Xn,ar,`CopyObject`,dv){},bb=class extends B(Zn,or,`CreateBucket`,fv){},xb=class extends B(Qn,sr,`CreateBucketMetadataConfiguration`,pv){},Sb=class extends B(Qn,sr,`CreateBucketMetadataTableConfiguration`,mv){},Cb=class extends B(Yn,ar,`CreateMultipartUpload`,hv){},wb=class extends B(Qn,cr,`DeleteBucketAnalyticsConfiguration`,vv){},Tb=class extends B(Qn,cr,`DeleteBucket`,_v){},Eb=class extends B(Qn,cr,`DeleteBucketCors`,yv){},Db=class extends B(Qn,cr,`DeleteBucketEncryption`,bv){},Ob=class extends B(Qn,cr,`DeleteBucketIntelligentTieringConfiguration`,xv){},kb=class extends B(Qn,cr,`DeleteBucketInventoryConfiguration`,Sv){},Ab=class extends B(Qn,cr,`DeleteBucketLifecycle`,Cv){},jb=class extends B(Qn,cr,`DeleteBucketMetadataConfiguration`,wv){},Mb=class extends B(Qn,cr,`DeleteBucketMetadataTableConfiguration`,Tv){},Nb=class extends B(Qn,cr,`DeleteBucketMetricsConfiguration`,Ev){},Pb=class extends B(Qn,cr,`DeleteBucketOwnershipControls`,Jee){},Fb=class extends B(Qn,cr,`DeleteBucketPolicy`,Yee){},Ib=class extends B(Qn,cr,`DeleteBucketReplication`,Xee){},Lb=class extends B(Qn,cr,`DeleteBucketTagging`,Zee){},Rb=class extends B(Qn,cr,`DeleteBucketWebsite`,Dv){},zb=class extends B(er,V,`DeleteObjectAnnotation`,kv){},Bb=class extends B(Yn,V,`DeleteObject`,Ov){},Vb=class extends B(er,lr,`DeleteObjects`,Av){},Hb=class extends B(er,V,`DeleteObjectTagging`,jv){},Qee=class extends B(Qn,cr,`DeletePublicAccessBlock`,Mv){},Ub=class extends B(er,V,`GetBucketAbac`,Nv){},Wb=class extends B(Qn,V,`GetBucketAccelerateConfiguration`,Pv){},Gb=class extends B(Qn,V,`GetBucketAcl`,Fv){},Kb=class extends B(Qn,V,`GetBucketAnalyticsConfiguration`,Iv){},qb=class extends B(Qn,V,`GetBucketCors`,Lv){},Jb=class extends B(Qn,V,`GetBucketEncryption`,Rv){},$ee=class extends B(Qn,V,`GetBucketIntelligentTieringConfiguration`,zv){},Yb=class extends B(Qn,V,`GetBucketInventoryConfiguration`,Bv){},Xb=class extends B(Qn,V,`GetBucketLifecycleConfiguration`,Vv){},Zb=class extends B(Qn,V,`GetBucketLocation`,Hv){},Qb=class extends B(Qn,V,`GetBucketLogging`,Uv){},$b=class extends B(Qn,V,`GetBucketMetadataConfiguration`,Wv){},ete=class extends B(Qn,V,`GetBucketMetadataTableConfiguration`,Gv){},ex=class extends B(Qn,V,`GetBucketMetricsConfiguration`,Kv){},tx=class extends B(Qn,V,`GetBucketNotificationConfiguration`,qv){},nx=class extends B(Qn,V,`GetBucketOwnershipControls`,Jv){},tte=class extends B(Qn,cr,`GetBucketPolicy`,Yv){},rx=class extends B(Qn,V,`GetBucketPolicyStatus`,Xv){},ix=class extends B(Qn,V,`GetBucketReplication`,Zv){},nte=class extends B(Qn,V,`GetBucketRequestPayment`,Qv){},ax=class extends B(Qn,V,`GetBucketTagging`,$v){},rte=class extends B(Qn,V,`GetBucketVersioning`,ey){},ox=class extends B(Qn,V,`GetBucketWebsite`,ty){},sx=class extends B(Yn,V,`GetObjectAcl`,ry){},ite=class extends B(Yn,ur,`GetObjectAnnotation`,iy){},cx=class extends B(er,ar,`GetObjectAttributes`,ay){},lx=class extends B(Yn,dr,`GetObject`,ny){},ux=class extends B(er,V,`GetObjectLegalHold`,oy){},dx=class extends B(er,V,`GetObjectLockConfiguration`,sy){},ate=class extends B(er,V,`GetObjectRetention`,cy){},fx=class extends B(er,V,`GetObjectTagging`,ly){},px=class extends B(er,cr,`GetObjectTorrent`,uy){},mx=class extends B(Qn,V,`GetPublicAccessBlock`,dy){},hx=class extends B(er,V,`HeadBucket`,fy){},gx=class extends B(Yn,fr,`HeadObject`,py){},ote=class extends B(Qn,V,`ListBucketAnalyticsConfigurations`,my){},ste=class extends B(Qn,V,`ListBucketIntelligentTieringConfigurations`,hy){},_x=class extends B(Qn,V,`ListBucketInventoryConfigurations`,gy){},vx=class extends B(Qn,V,`ListBucketMetricsConfigurations`,_y){},yx=class extends B(tr,V,`ListBuckets`,vy){},bx=class extends B(nr,V,`ListDirectoryBuckets`,yy){},xx=class extends B(rr,V,`ListMultipartUploads`,by){},Sx=class extends B(er,V,`ListObjectAnnotations`,xy){},Cx=class extends B(rr,V,`ListObjects`,Sy){},wx=class extends B(rr,V,`ListObjectsV2`,Cy){},cte=class extends B(rr,V,`ListObjectVersions`,wy){},Tx=class extends B(Yn,ar,`ListParts`,Ty){},Ex=class extends B(er,pr,`PutBucketAbac`,Ey){},lte=class extends B(Qn,pr,`PutBucketAccelerateConfiguration`,Dy){},Dx=class extends B(Qn,sr,`PutBucketAcl`,Oy){},Ox=class extends B(Qn,cr,`PutBucketAnalyticsConfiguration`,ky){},kx=class extends B(Qn,sr,`PutBucketCors`,Ay){},Ax=class extends B(Qn,sr,`PutBucketEncryption`,jy){},jx=class extends B(Qn,cr,`PutBucketIntelligentTieringConfiguration`,My){},Mx=class extends B(Qn,cr,`PutBucketInventoryConfiguration`,Ny){},ute=class extends B(Qn,lr,`PutBucketLifecycleConfiguration`,Py){},Nx=class extends B(Qn,sr,`PutBucketLogging`,Fy){},Px=class extends B(Qn,cr,`PutBucketMetricsConfiguration`,Iy){},Fx=class extends B(Qn,cr,`PutBucketNotificationConfiguration`,Ly){},Ix=class extends B(Qn,sr,`PutBucketOwnershipControls`,Ry){},Lx=class extends B(Qn,sr,`PutBucketPolicy`,zy){},Rx=class extends B(Qn,sr,`PutBucketReplication`,By){},zx=class extends B(Qn,sr,`PutBucketRequestPayment`,Vy){},Bx=class extends B(Qn,sr,`PutBucketTagging`,Hy){},Vx=class extends B(Qn,sr,`PutBucketVersioning`,Uy){},Hx=class extends B(Qn,sr,`PutBucketWebsite`,Wy){},Ux=class extends B(Yn,lr,`PutObjectAcl`,Ky){},Wx=class extends B(Yn,mr,`PutObjectAnnotation`,qy){},Gx=class extends B(Yn,hr,`PutObject`,Gy){},Kx=class extends B(er,lr,`PutObjectLegalHold`,Jy){},qx=class extends B(er,lr,`PutObjectLockConfiguration`,Yy){},dte=class extends B(er,lr,`PutObjectRetention`,Xy){},Jx=class extends B(er,lr,`PutObjectTagging`,Zy){},Yx=class extends B(Qn,sr,`PutPublicAccessBlock`,Qy){},Xx=class extends B(Yn,V,`RenameObject`,$y){},Zx=class extends B(er,mr,`RestoreObject`,eb){},Qx=class extends B(er,gr,`SelectObjectContent`,tb){},$x=class extends B(Qn,sr,`UpdateBucketMetadataAnnotationTableConfiguration`,nb){},eS=class extends B(Qn,sr,`UpdateBucketMetadataInventoryTableConfiguration`,rb){},tS=class extends B(Qn,sr,`UpdateBucketMetadataJournalTableConfiguration`,ib){},nS=class extends B(er,lr,`UpdateObjectEncryption`,ab){},rS=class extends B(Yn,_r,`UploadPart`,ob){},iS=class extends B($n,ar,`UploadPartCopy`,sb){},aS=class extends B(ir,cr,`WriteGetObjectResponse`,cb){};let oS=re(gb,yx,`ContinuationToken`,`ContinuationToken`,`MaxBuckets`),sS=re(gb,bx,`ContinuationToken`,`ContinuationToken`,`MaxDirectoryBuckets`),cS=re(gb,Sx,`ContinuationToken`,`NextContinuationToken`,`MaxAnnotationResults`),lS=re(gb,wx,`ContinuationToken`,`NextContinuationToken`,`MaxKeys`),uS=re(gb,Tx,`PartNumberMarker`,`NextPartNumberMarker`,`MaxParts`),dS=async(e,t)=>{let n;try{return n=await e.send(new hx(t)),{state:ge.SUCCESS,reason:n}}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.RETRY,reason:n}}return{state:ge.RETRY,reason:n}},fS=async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,dS);return me(n)},pS=async(e,t)=>{let n;try{n=await e.send(new hx(t))}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.SUCCESS,reason:n}}return{state:ge.RETRY,reason:n}},fte=async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,pS);return me(n)},mS=async(e,t)=>{let n;try{return n=await e.send(new gx(t)),{state:ge.SUCCESS,reason:n}}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.RETRY,reason:n}}return{state:ge.RETRY,reason:n}},hS=async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,mS);return me(n)},gS=async(e,t)=>{let n;try{n=await e.send(new gx(t))}catch(e){if(n=e,e.name===`NotFound`)return{state:ge.SUCCESS,reason:n}}return{state:ge.RETRY,reason:n}};_e({AbortMultipartUploadCommand:_b,CompleteMultipartUploadCommand:vb,CopyObjectCommand:yb,CreateBucketCommand:bb,CreateBucketMetadataConfigurationCommand:xb,CreateBucketMetadataTableConfigurationCommand:Sb,CreateMultipartUploadCommand:Cb,CreateSessionCommand:lb,DeleteBucketCommand:Tb,DeleteBucketAnalyticsConfigurationCommand:wb,DeleteBucketCorsCommand:Eb,DeleteBucketEncryptionCommand:Db,DeleteBucketIntelligentTieringConfigurationCommand:Ob,DeleteBucketInventoryConfigurationCommand:kb,DeleteBucketLifecycleCommand:Ab,DeleteBucketMetadataConfigurationCommand:jb,DeleteBucketMetadataTableConfigurationCommand:Mb,DeleteBucketMetricsConfigurationCommand:Nb,DeleteBucketOwnershipControlsCommand:Pb,DeleteBucketPolicyCommand:Fb,DeleteBucketReplicationCommand:Ib,DeleteBucketTaggingCommand:Lb,DeleteBucketWebsiteCommand:Rb,DeleteObjectCommand:Bb,DeleteObjectAnnotationCommand:zb,DeleteObjectsCommand:Vb,DeleteObjectTaggingCommand:Hb,DeletePublicAccessBlockCommand:Qee,GetBucketAbacCommand:Ub,GetBucketAccelerateConfigurationCommand:Wb,GetBucketAclCommand:Gb,GetBucketAnalyticsConfigurationCommand:Kb,GetBucketCorsCommand:qb,GetBucketEncryptionCommand:Jb,GetBucketIntelligentTieringConfigurationCommand:$ee,GetBucketInventoryConfigurationCommand:Yb,GetBucketLifecycleConfigurationCommand:Xb,GetBucketLocationCommand:Zb,GetBucketLoggingCommand:Qb,GetBucketMetadataConfigurationCommand:$b,GetBucketMetadataTableConfigurationCommand:ete,GetBucketMetricsConfigurationCommand:ex,GetBucketNotificationConfigurationCommand:tx,GetBucketOwnershipControlsCommand:nx,GetBucketPolicyCommand:tte,GetBucketPolicyStatusCommand:rx,GetBucketReplicationCommand:ix,GetBucketRequestPaymentCommand:nte,GetBucketTaggingCommand:ax,GetBucketVersioningCommand:rte,GetBucketWebsiteCommand:ox,GetObjectCommand:lx,GetObjectAclCommand:sx,GetObjectAnnotationCommand:ite,GetObjectAttributesCommand:cx,GetObjectLegalHoldCommand:ux,GetObjectLockConfigurationCommand:dx,GetObjectRetentionCommand:ate,GetObjectTaggingCommand:fx,GetObjectTorrentCommand:px,GetPublicAccessBlockCommand:mx,HeadBucketCommand:hx,HeadObjectCommand:gx,ListBucketAnalyticsConfigurationsCommand:ote,ListBucketIntelligentTieringConfigurationsCommand:ste,ListBucketInventoryConfigurationsCommand:_x,ListBucketMetricsConfigurationsCommand:vx,ListBucketsCommand:yx,ListDirectoryBucketsCommand:bx,ListMultipartUploadsCommand:xx,ListObjectAnnotationsCommand:Sx,ListObjectsCommand:Cx,ListObjectsV2Command:wx,ListObjectVersionsCommand:cte,ListPartsCommand:Tx,PutBucketAbacCommand:Ex,PutBucketAccelerateConfigurationCommand:lte,PutBucketAclCommand:Dx,PutBucketAnalyticsConfigurationCommand:Ox,PutBucketCorsCommand:kx,PutBucketEncryptionCommand:Ax,PutBucketIntelligentTieringConfigurationCommand:jx,PutBucketInventoryConfigurationCommand:Mx,PutBucketLifecycleConfigurationCommand:ute,PutBucketLoggingCommand:Nx,PutBucketMetricsConfigurationCommand:Px,PutBucketNotificationConfigurationCommand:Fx,PutBucketOwnershipControlsCommand:Ix,PutBucketPolicyCommand:Lx,PutBucketReplicationCommand:Rx,PutBucketRequestPaymentCommand:zx,PutBucketTaggingCommand:Bx,PutBucketVersioningCommand:Vx,PutBucketWebsiteCommand:Hx,PutObjectCommand:Gx,PutObjectAclCommand:Ux,PutObjectAnnotationCommand:Wx,PutObjectLegalHoldCommand:Kx,PutObjectLockConfigurationCommand:qx,PutObjectRetentionCommand:dte,PutObjectTaggingCommand:Jx,PutPublicAccessBlockCommand:Yx,RenameObjectCommand:Xx,RestoreObjectCommand:Zx,SelectObjectContentCommand:Qx,UpdateBucketMetadataAnnotationTableConfigurationCommand:$x,UpdateBucketMetadataInventoryTableConfigurationCommand:eS,UpdateBucketMetadataJournalTableConfigurationCommand:tS,UpdateObjectEncryptionCommand:nS,UploadPartCommand:rS,UploadPartCopyCommand:iS,WriteGetObjectResponseCommand:aS},class extends gb{},{paginators:{paginateListBuckets:oS,paginateListDirectoryBuckets:sS,paginateListObjectAnnotations:cS,paginateListObjectsV2:lS,paginateListParts:uS},waiters:{waitUntilBucketExists:fS,waitUntilBucketNotExists:fte,waitUntilObjectExists:hS,waitUntilObjectNotExists:async(e,t)=>{let n=await pe({minDelay:5,maxDelay:120,...e},t,gS);return me(n)}}}),t.DeleteObjectCommand=Bb,t.GetObjectCommand=lx,t.ListObjectsV2Command=wx,t.PutObjectCommand=Gx,t.S3Client=gb})))();function BH(e){return e.sseEncryption==null?e.endpoint==null?`aws:kms`:`AES256`:e.sseEncryption}function rce(e){return e.replaceAll(/X-Amz-[A-Za-z0-9-]+=[^&\s]+/g,`X-Amz-REDACTED=[REDACTED]`).replaceAll(/Authorization([:=]\s*)(Bearer\s+)?[^,\s]+/gi,`Authorization$1$2[REDACTED]`).slice(0,500)}function VH(e,t,n){let r=typeof n==`object`&&n&&`Code`in n?String(n.Code):void 0,i=n instanceof Error?n.name:`UnknownError`,a=typeof n==`object`&&n&&`$metadata`in n&&typeof n.$metadata==`object`&&n.$metadata!=null&&`httpStatusCode`in n.$metadata?Number(n.$metadata.httpStatusCode):void 0,o=rce(Rs(n));return e.warning(`Object store ${t} failed`,{errorCode:r,errorName:i,httpStatusCode:a,message:o}),kv(`Object store ${t} failed: ${o}`,{errorCode:r,errorName:i,httpStatusCode:a})}function HH(e){return e===void 0?[]:[{abortSignal:e}]}function ice(e,t){if(t===void 0)return()=>{};let n=()=>{e.destroy(/* @__PURE__ */ Error(`Object store read aborted`))};return t.aborted?(n(),()=>{}):(t.addEventListener(`abort`,n,{once:!0}),()=>t.removeEventListener(`abort`,n))}async function ace(e,t){if(e instanceof vr){let n=[],r=ice(e,t);try{for await(let t of e)typeof t==`string`?n.push(Cr.from(t)):n.push(Cr.isBuffer(t)?t:Cr.from(t))}finally{r()}return Cr.concat(n).toString(`utf8`)}if(typeof e==`object`&&e&&`transformToString`in e){let t=e.transformToString;if(typeof t==`function`)return String(await t.call(e))}throw kv(`Object store getObject failed: response body was not readable`)}function UH(e,t){if(e==null||e.length===0)throw kv(`Object store ${t} failed: missing ETag in response`);return e}function oce(e){return e.region.length>0?e.region:void 0}function sce(e){let t=oce(e);return e.endpoint==null?new zH.S3Client({maxAttempts:3,region:t,...e.credentials==null?{}:{credentials:e.credentials}}):new zH.S3Client({endpoint:e.endpoint,forcePathStyle:!0,maxAttempts:3,region:t,...e.credentials==null?{}:{credentials:e.credentials}})}function WH(e,t){let n=sce(e),r=BH(e);return{upload:async(i,a)=>{t.debug(`Uploading object store file`,{key:i,localPath:a});try{let o={Body:Lr.createReadStream(a),Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,Key:i,ServerSideEncryption:r};r===`aws:kms`&&e.sseKmsKeyId!=null&&(o.SSEKMSKeyId=e.sseKmsKeyId);let s=new zH.PutObjectCommand({...o});return await n.send(s),t.info(`Uploaded object store file`,{key:i}),Ls(void 0)}catch(e){return G(VH(t,`upload`,e))}},download:async(r,i)=>{t.debug(`Downloading object store file`,{key:r,localPath:i});try{await Ar.mkdir(Mr.dirname(i),{recursive:!0});let a=await n.send(new zH.GetObjectCommand({Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,Key:r}));if(!(a.Body instanceof vr))return G(kv(`Object store download failed: response body was not readable`));try{await Jr(a.Body,Lr.createWriteStream(i))}catch(e){throw await Ar.unlink(i).catch(()=>{}),e}return t.info(`Downloaded object store file`,{key:r,localPath:i}),Ls(void 0)}catch(e){return G(VH(t,`download`,e))}},list:async r=>{t.debug(`Listing object store keys`,{prefix:r});try{let i=[],a,o=0;do{if(o>=100){t.warning(`Object store list hit iteration cap, truncating result`,{prefix:r,maxIterations:100,keysReturned:i.length});break}o++;let s=await n.send(new zH.ListObjectsV2Command({Bucket:e.bucket,ContinuationToken:a,ExpectedBucketOwner:e.expectedBucketOwner,Prefix:r}));for(let e of s.Contents??[])e.Key!=null&&i.push(e.Key);a=s.IsTruncated===!0?s.NextContinuationToken:void 0}while(a!=null);return t.info(`Listed object store keys`,{count:i.length,prefix:r}),Ls(i)}catch(e){return G(VH(t,`list`,e))}},conditionalPut:async(i,a,o)=>{t.debug(`Conditionally uploading object store data`,{key:i,options:{ifMatch:o.ifMatch,ifNoneMatch:o.ifNoneMatch,tagging:o.tagging}});try{let s=UH((await n.send(new zH.PutObjectCommand({Body:a,Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,IfMatch:o.ifMatch,IfNoneMatch:o.ifNoneMatch,Key:i,ServerSideEncryption:r,...r===`aws:kms`&&e.sseKmsKeyId!=null?{SSEKMSKeyId:e.sseKmsKeyId}:{},...e.endpoint==null&&o.tagging!=null&&o.tagging.length>0?{Tagging:o.tagging}:{}}),...HH(o.signal))).ETag,`conditionalPut`);return t.info(`Conditionally uploaded object store data`,{key:i,etag:s}),Ls({etag:s})}catch(e){return G(VH(t,`conditionalPut`,e))}},conditionalDelete:async(r,i)=>{t.debug(`Conditionally deleting object store data`,{key:r});try{return await n.send(new zH.DeleteObjectCommand({Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,IfMatch:i.ifMatch,Key:r}),...HH(i.signal)),t.info(`Conditionally deleted object store data`,{key:r}),Ls(void 0)}catch(e){return G(VH(t,`conditionalDelete`,e))}},getObject:async(r,i)=>{t.debug(`Reading object store data`,{key:r});try{let a=await n.send(new zH.GetObjectCommand({Bucket:e.bucket,ExpectedBucketOwner:e.expectedBucketOwner,Key:r}),...HH(i?.signal)),o=await ace(a.Body,i?.signal),s=UH(a.ETag,`getObject`);return t.info(`Read object store data`,{key:r,etag:s}),Ls({data:o,etag:s})}catch(e){return G(VH(t,`getObject`,e))}},listWithMetadata:async r=>{t.debug(`Listing object store keys with metadata`,{prefix:r});try{let i=[],a,o=0;do{if(o>=100){t.warning(`Object store listWithMetadata hit iteration cap, truncating result`,{prefix:r,maxIterations:100,entriesReturned:i.length});break}o++;let s=await n.send(new zH.ListObjectsV2Command({Bucket:e.bucket,ContinuationToken:a,ExpectedBucketOwner:e.expectedBucketOwner,Prefix:r}));for(let e of s.Contents??[])e.Key!=null&&e.LastModified!=null&&i.push({key:e.Key,lastModified:e.LastModified});a=s.IsTruncated===!0?s.NextContinuationToken:void 0}while(a!=null);return t.info(`Listed object store keys with metadata`,{count:i.length,prefix:r}),Ls(i)}catch(e){return G(VH(t,`listWithMetadata`,e))}}}}function GH(){let e=qn.env.XDG_DATA_HOME;return e!=null&&e.trim().length>0?e:Mr.join(Hr.homedir(),`.local`,`share`)}function cce(){return Mr.join(GH(),`opencode`,`storage`)}function lce(){return Mr.join(GH(),`opencode`,`auth.json`)}function uce(){return Mr.join(GH(),`opencode`,`log`)}function dce(){let e=qn.env.OPENCODE_PROMPT_ARTIFACT;return e===`true`||e===`1`}function KH(){let e=qn.env.RUNNER_OS;if(e!=null&&e.trim().length>0)return e;let t=Hr.platform();switch(t){case`darwin`:return`macOS`;case`win32`:return`Windows`;case`aix`:case`android`:case`freebsd`:case`haiku`:case`linux`:case`openbsd`:case`sunos`:case`cygwin`:case`netbsd`:return`Linux`;default:return t}}function qH(){let e=qn.env.GITHUB_REPOSITORY;return e!=null&&e.trim().length>0?e:`unknown/unknown`}function fce(){let e=qn.env.GITHUB_REF_NAME;return e!=null&&e.trim().length>0?e:`main`}function pce(){let e=qn.env.GITHUB_RUN_ID;return e!=null&&e.trim().length>0?Number(e):0}function JH(){let e=qn.env.GITHUB_RUN_ATTEMPT;if(e!=null&&e.trim().length>0){let t=Number(e);if(Number.isFinite(t)&&t>0)return t}return 1}function mce(){let e=qn.env.GITHUB_WORKSPACE;return e!=null&&e.trim().length>0?e:qn.cwd()}function hce(e){let t=e.job?.trim()??``;if(t.length===0)return null;let n=gce(t),r=_ce(e.matrixContext);return r==null?n:`${n}-m${r}`}function YH(){return hce({job:qn.env.GITHUB_JOB,matrixContext:qn.env[`INPUT_MATRIX-CONTEXT`]})}function gce(e){return e.replaceAll(/[^\w.-]/g,`-`)}function _ce(e){let t=e?.trim()??``;if(t.length===0)return null;let n;try{let e=JSON.parse(t);if(e==null||typeof e==`object`&&Object.keys(e).length===0)return null;n=JSON.stringify(XH(e))}catch{n=t}return Tr(`sha256`).update(n).digest(`hex`).slice(0,8)}function XH(e){return Array.isArray(e)?e.map(XH):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).sort(([e],[t])=>et)).map(([e,t])=>[e,XH(t)])):e}const ZH=[`token`,`password`,`secret`,`key`,`auth`,`credential`,`bearer`,`apikey`,`api_key`,`access_token`,`refresh_token`,`private`],vce=/* @__PURE__ */ new Set([`savekey`,`primarykey`,`restorekeys`,`restoredkey`,`cachekey`,`key`]);function yce(e,t){let n=e.toLowerCase();return!vce.has(n)&&t.some(e=>n.includes(e.toLowerCase()))}function QH(e,t=ZH){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(e=>QH(e,t));let n={};for(let[r,i]of Object.entries(e))n[r]=yce(r,t)&&typeof i==`string`?`[REDACTED]`:typeof i==`object`&&i?QH(i,t):i;return n}var $H=class{constructor(){if(this.payload={},process.env.GITHUB_EVENT_PATH){if(tr(process.env.GITHUB_EVENT_PATH))this.payload=JSON.parse(rr(process.env.GITHUB_EVENT_PATH,{encoding:`utf8`}));else{let e=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${e} does not exist${Zn}`)}}this.eventName=process.env.GITHUB_EVENT_NAME,this.sha=process.env.GITHUB_SHA,this.ref=process.env.GITHUB_REF,this.workflow=process.env.GITHUB_WORKFLOW,this.action=process.env.GITHUB_ACTION,this.actor=process.env.GITHUB_ACTOR,this.job=process.env.GITHUB_JOB,this.runAttempt=parseInt(process.env.GITHUB_RUN_ATTEMPT,10),this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10),this.runId=parseInt(process.env.GITHUB_RUN_ID,10),this.apiUrl=process.env.GITHUB_API_URL??`https://api.github.com`,this.serverUrl=process.env.GITHUB_SERVER_URL??`https://github.com`,this.graphqlUrl=process.env.GITHUB_GRAPHQL_URL??`https://api.github.com/graphql`}get issue(){let e=this.payload;return Object.assign(Object.assign({},this.repo),{number:(e.issue||e.pull_request||e).number})}get repo(){if(process.env.GITHUB_REPOSITORY){let[e,t]=process.env.GITHUB_REPOSITORY.split(`/`);return{owner:e,repo:t}}if(this.payload.repository)return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name};throw Error(`context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'`)}},bce=/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getProxyUrl=t,e.checkBypass=n;function t(e){let t=e.protocol===`https:`;if(n(e))return;let r=t?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(r)try{return new i(r)}catch{if(!r.startsWith(`http://`)&&!r.startsWith(`https://`))return new i(`http://${r}`)}else return}function n(e){if(!e.hostname)return!1;let t=e.hostname;if(r(t))return!0;let n=process.env.no_proxy||process.env.NO_PROXY||``;if(!n)return!1;let i;e.port?i=Number(e.port):e.protocol===`http:`?i=80:e.protocol===`https:`&&(i=443);let a=[e.hostname.toUpperCase()];typeof i==`number`&&a.push(`${a[0]}:${i}`);for(let e of n.split(`,`).map(e=>e.trim().toUpperCase()).filter(e=>e))if(e===`*`||a.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(`.`)&&t.endsWith(`${e}`)))return!0;return!1}function r(e){let t=e.toLowerCase();return t===`localhost`||t.startsWith(`127.`)||t.startsWith(`[::1]`)||t.startsWith(`[0:0:0:0:0:0:0:1]`)}var i=class extends URL{constructor(e,t){super(e,t),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}})),eU=/* @__PURE__ */ r((/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),o=0;os(this,void 0,void 0,function*(){let t=Buffer.alloc(0);this.message.on(`data`,e=>{t=Buffer.concat([t,e])}),this.message.on(`end`,()=>{e(t.toString())})}))})}readBodyBuffer(){return s(this,void 0,void 0,function*(){return new Promise(e=>s(this,void 0,void 0,function*(){let t=[];this.message.on(`data`,e=>{t.push(e)}),this.message.on(`end`,()=>{e(Buffer.concat(t))})}))})}};e.HttpClientResponse=S;function C(e){return new URL(e).protocol===`https:`}e.HttpClient=class{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(e),this.handlers=t||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,t){return s(this,void 0,void 0,function*(){return this.request(`OPTIONS`,e,null,t||{})})}get(e,t){return s(this,void 0,void 0,function*(){return this.request(`GET`,e,null,t||{})})}del(e,t){return s(this,void 0,void 0,function*(){return this.request(`DELETE`,e,null,t||{})})}post(e,t,n){return s(this,void 0,void 0,function*(){return this.request(`POST`,e,t,n||{})})}patch(e,t,n){return s(this,void 0,void 0,function*(){return this.request(`PATCH`,e,t,n||{})})}put(e,t,n){return s(this,void 0,void 0,function*(){return this.request(`PUT`,e,t,n||{})})}head(e,t){return s(this,void 0,void 0,function*(){return this.request(`HEAD`,e,null,t||{})})}sendStream(e,t,n,r){return s(this,void 0,void 0,function*(){return this.request(e,t,n,r)})}getJson(e){return s(this,arguments,void 0,function*(e,t={}){t[m.Accept]=this._getExistingOrDefaultHeader(t,m.Accept,h.ApplicationJson);let n=yield this.get(e,t);return this._processResponse(n,this.requestOptions)})}postJson(e,t){return s(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[m.Accept]=this._getExistingOrDefaultHeader(n,m.Accept,h.ApplicationJson),n[m.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,h.ApplicationJson);let i=yield this.post(e,r,n);return this._processResponse(i,this.requestOptions)})}putJson(e,t){return s(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[m.Accept]=this._getExistingOrDefaultHeader(n,m.Accept,h.ApplicationJson),n[m.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,h.ApplicationJson);let i=yield this.put(e,r,n);return this._processResponse(i,this.requestOptions)})}patchJson(e,t){return s(this,arguments,void 0,function*(e,t,n={}){let r=JSON.stringify(t,null,2);n[m.Accept]=this._getExistingOrDefaultHeader(n,m.Accept,h.ApplicationJson),n[m.ContentType]=this._getExistingOrDefaultContentTypeHeader(n,h.ApplicationJson);let i=yield this.patch(e,r,n);return this._processResponse(i,this.requestOptions)})}request(e,t,n,r){return s(this,void 0,void 0,function*(){if(this._disposed)throw Error(`Client has already been disposed.`);let i=new URL(t),a=this._prepareRequest(e,i,r),o=this._allowRetries&&b.includes(e)?this._maxRetries+1:1,s=0,c;do{if(c=yield this.requestRaw(a,n),c&&c.message&&c.message.statusCode===p.Unauthorized){let e;for(let t of this.handlers)if(t.canHandleAuthentication(c)){e=t;break}return e?e.handleAuthentication(this,a,n):c}let t=this._maxRedirects;for(;c.message.statusCode&&v.includes(c.message.statusCode)&&this._allowRedirects&&t>0;){let o=c.message.headers.location;if(!o)break;let s=new URL(o);if(i.protocol===`https:`&&i.protocol!==s.protocol&&!this._allowRedirectDowngrade)throw Error(`Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.`);if(yield c.readBody(),s.hostname!==i.hostname)for(let e in r)e.toLowerCase()===`authorization`&&delete r[e];a=this._prepareRequest(e,s,r),c=yield this.requestRaw(a,n),t--}if(!c.message.statusCode||!y.includes(c.message.statusCode))return c;s+=1,s{function i(e,t){e?r(e):t?n(t):r(/* @__PURE__ */ Error(`Unknown error`))}this.requestRawWithCallback(e,t,i)})})}requestRawWithCallback(e,t,n){typeof t==`string`&&(e.options.headers||(e.options.headers={}),e.options.headers[`Content-Length`]=Buffer.byteLength(t,`utf8`));let r=!1;function i(e,t){r||(r=!0,n(e,t))}let a=e.httpModule.request(e.options,e=>{i(void 0,new S(e))}),o;a.on(`socket`,e=>{o=e}),a.setTimeout(this._socketTimeout||18e4,()=>{o&&o.end(),i(/* @__PURE__ */ Error(`Request timeout: ${e.options.path}`))}),a.on(`error`,function(e){i(e)}),t&&typeof t==`string`&&a.write(t,`utf8`),t&&typeof t!=`string`?(t.on(`close`,function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){let t=new URL(e),n=u.getProxyUrl(t);if(n&&n.hostname)return this._getProxyAgentDispatcher(t,n)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i=r.parsedUrl.protocol===`https:`;r.httpModule=i?l:c;let a=i?443:80;if(r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):a,r.options.path=(r.parsedUrl.pathname||``)+(r.parsedUrl.search||``),r.options.method=e,r.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(r.options.headers[`user-agent`]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers)for(let e of this.handlers)e.prepareRequest(r.options);return r}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},w(this.requestOptions.headers),w(e||{})):w(e||{})}_getExistingOrDefaultHeader(e,t,n){let r;if(this.requestOptions&&this.requestOptions.headers){let e=w(this.requestOptions.headers)[t];e&&(r=typeof e==`number`?e.toString():e)}let i=e[t];return i===void 0?r===void 0?n:r:typeof i==`number`?i.toString():i}_getExistingOrDefaultContentTypeHeader(e,t){let n;if(this.requestOptions&&this.requestOptions.headers){let e=w(this.requestOptions.headers)[m.ContentType];e&&(n=typeof e==`number`?String(e):Array.isArray(e)?e.join(`, `):e)}let r=e[m.ContentType];return r===void 0?n===void 0?t:n:typeof r==`number`?String(r):Array.isArray(r)?r.join(`, `):r}_getAgent(e){let t,n=u.getProxyUrl(e),r=n&&n.hostname;if(this._keepAlive&&r&&(t=this._proxyAgent),r||(t=this._agent),t)return t;let i=e.protocol===`https:`,a=100;if(this.requestOptions&&(a=this.requestOptions.maxSockets||c.globalAgent.maxSockets),n&&n.hostname){let e={maxSockets:a,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},r,o=n.protocol===`https:`;r=i?o?d.httpsOverHttps:d.httpsOverHttp:o?d.httpOverHttps:d.httpOverHttp,t=r(e),this._proxyAgent=t}if(!t){let e={keepAlive:this._keepAlive,maxSockets:a};t=i?new l.Agent(e):new c.Agent(e),this._agent=t}return i&&this._ignoreSslError&&(t.options=Object.assign(t.options||{},{rejectUnauthorized:!1})),t}_getProxyAgentDispatcher(e,t){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let r=e.protocol===`https:`;return n=new f.ProxyAgent(Object.assign({uri:t.href,pipelining:+!!this._keepAlive},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString(`base64`)}`})),this._proxyAgentDispatcher=n,r&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_getUserAgentWithOrchestrationId(e){let t=e||`actions/http-client`,n=process.env.ACTIONS_ORCHESTRATION_ID;return n?`${t} actions_orchestration_id/${n.replace(/[^a-z0-9_.-]/gi,`_`)}`:t}_performExponentialBackoff(e){return s(this,void 0,void 0,function*(){e=Math.min(10,e);let t=5*2**e;return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return s(this,void 0,void 0,function*(){return new Promise((n,r)=>s(this,void 0,void 0,function*(){let i=e.message.statusCode||0,a={statusCode:i,result:null,headers:{}};i===p.NotFound&&n(a);function o(e,t){if(typeof t==`string`){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}let s,c;try{c=yield e.readBody(),c&&c.length>0&&(s=t&&t.deserializeDates?JSON.parse(c,o):JSON.parse(c),a.result=s),a.headers=e.message.headers}catch{}if(i>299){let e;e=s&&s.message?s.message:c&&c.length>0?c:`Failed request: (${i})`;let t=new x(e,i);t.result=a.result,r(t)}else n(a)}))})}};let w=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{})})))(),1),xce=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function Sce(e,t){if(!e&&!t.auth)throw Error(`Parameter token or opts.auth is required`);if(e&&t.auth)throw Error(`Parameters token and opts.auth may not both be specified`);return typeof t.auth==`string`?t.auth:`token ${e}`}function Cce(e){return new eU.HttpClient().getAgent(e)}function wce(e){return new eU.HttpClient().getAgentDispatcher(e)}function Tce(e){let t=wce(e);return(e,n)=>xce(this,void 0,void 0,function*(){return(0,bo.fetch)(e,Object.assign(Object.assign({},n),{dispatcher:t}))})}function Ece(){return process.env.GITHUB_API_URL||`https://api.github.com`}function Dce(e){let t=process.env.ACTIONS_ORCHESTRATION_ID?.trim();if(t){let n=`actions_orchestration_id/${t.replace(/[^a-z0-9_.-]/gi,`_`)}`;return e?.includes(n)?e:`${e?`${e} `:``}${n}`}return e}function tU(){return typeof navigator==`object`&&`userAgent`in navigator?navigator.userAgent:typeof process==`object`&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:``}function nU(e,t,n,r){if(typeof n!=`function`)throw Error(`method for before hook must be a function`);return r||={},Array.isArray(t)?t.reverse().reduce((t,n)=>nU.bind(null,e,n,t,r),n)():Promise.resolve().then(()=>e.registry[t]?e.registry[t].reduce((e,t)=>t.hook.bind(null,e,r),n)():n(r))}function Oce(e,t,n,r){let i=r;e.registry[n]||(e.registry[n]=[]),t===`before`&&(r=(e,t)=>Promise.resolve().then(i.bind(null,t)).then(e.bind(null,t))),t===`after`&&(r=(e,t)=>{let n;return Promise.resolve().then(e.bind(null,t)).then(e=>(n=e,i(n,t))).then(()=>n)}),t===`error`&&(r=(e,t)=>Promise.resolve().then(e.bind(null,t)).catch(e=>i(e,t))),e.registry[n].push({hook:r,orig:i})}function kce(e,t,n){if(!e.registry[t])return;let r=e.registry[t].map(e=>e.orig).indexOf(n);r!==-1&&e.registry[t].splice(r,1)}const rU=Function.bind,iU=rU.bind(rU);function aU(e,t,n){let r=iU(kce,null).apply(null,n?[t,n]:[t]);e.api={remove:r},e.remove=r,[`before`,`error`,`after`,`wrap`].forEach(r=>{let i=n?[t,r,n]:[t,r];e[r]=e.api[r]=iU(Oce,null).apply(null,i)})}function Ace(){let e=Symbol(`Singular`),t={registry:{}},n=nU.bind(null,t,e);return aU(n,t,e),n}function jce(){let e={registry:{}},t=nU.bind(null,e);return aU(t,e),t}var Mce={Singular:Ace,Collection:jce},Nce={method:`GET`,baseUrl:`https://api.github.com`,headers:{accept:`application/vnd.github.v3+json`,"user-agent":`octokit-endpoint.js/0.0.0-development ${tU()}`},mediaType:{format:``}};function Pce(e){return e?Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{}):{}}function Fce(e){if(typeof e!=`object`||!e||Object.prototype.toString.call(e)!==`[object Object]`)return!1;let t=Object.getPrototypeOf(e);if(t===null)return!0;let n=Object.prototype.hasOwnProperty.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&Function.prototype.call(n)===Function.prototype.call(e)}function oU(e,t){let n=Object.assign({},e);return Object.keys(t).forEach(r=>{Fce(t[r])&&r in e?n[r]=oU(e[r],t[r]):Object.assign(n,{[r]:t[r]})}),n}function sU(e){for(let t in e)e[t]===void 0&&delete e[t];return e}function cU(e,t,n){if(typeof t==`string`){let[e,r]=t.split(` `);n=Object.assign(r?{method:e,url:r}:{url:e},n)}else n=Object.assign({},t);n.headers=Pce(n.headers),sU(n),sU(n.headers);let r=oU(e||{},n);return n.url===`/graphql`&&(e&&e.mediaType.previews?.length&&(r.mediaType.previews=e.mediaType.previews.filter(e=>!r.mediaType.previews.includes(e)).concat(r.mediaType.previews)),r.mediaType.previews=(r.mediaType.previews||[]).map(e=>e.replace(/-preview/,``))),r}function Ice(e,t){let n=/\?/.test(e)?`&`:`?`,r=Object.keys(t);return r.length===0?e:e+n+r.map(e=>e===`q`?`q=`+t.q.split(`+`).map(encodeURIComponent).join(`+`):`${e}=${encodeURIComponent(t[e])}`).join(`&`)}var Lce=/\{[^{}}]+\}/g;function Rce(e){return e.replace(/(?:^\W+)|(?:(?e.concat(t),[]):[]}function lU(e,t){let n={__proto__:null};for(let r of Object.keys(e))t.indexOf(r)===-1&&(n[r]=e[r]);return n}function uU(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,`[`).replace(/%5D/g,`]`)),e}).join(``)}function dU(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return`%`+e.charCodeAt(0).toString(16).toUpperCase()})}function fU(e,t,n){return t=e===`+`||e===`#`?uU(t):dU(t),n?dU(n)+`=`+t:t}function pU(e){return e!=null}function mU(e){return e===`;`||e===`&`||e===`?`}function Bce(e,t,n,r){var i=e[n],a=[];if(pU(i)&&i!==``){if(typeof i==`string`||typeof i==`number`||typeof i==`bigint`||typeof i==`boolean`)i=i.toString(),r&&r!==`*`&&(i=i.substring(0,parseInt(r,10))),a.push(fU(t,i,mU(t)?n:``));else if(r===`*`)Array.isArray(i)?i.filter(pU).forEach(function(e){a.push(fU(t,e,mU(t)?n:``))}):Object.keys(i).forEach(function(e){pU(i[e])&&a.push(fU(t,i[e],e))});else{let e=[];Array.isArray(i)?i.filter(pU).forEach(function(n){e.push(fU(t,n))}):Object.keys(i).forEach(function(n){pU(i[n])&&(e.push(dU(n)),e.push(fU(t,i[n].toString())))}),mU(t)?a.push(dU(n)+`=`+e.join(`,`)):e.length!==0&&a.push(e.join(`,`))}}else t===`;`?pU(i)&&a.push(dU(n)):i===``&&(t===`&`||t===`?`)?a.push(dU(n)+`=`):i===``&&a.push(``);return a}function Vce(e){return{expand:Hce.bind(null,e)}}function Hce(e,t){var n=[`+`,`#`,`.`,`/`,`;`,`?`,`&`];return e=e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(e,r,i){if(r){let e=``,i=[];if(n.indexOf(r.charAt(0))!==-1&&(e=r.charAt(0),r=r.substr(1)),r.split(/,/g).forEach(function(n){var r=/([^:\*]*)(?::(\d+)|(\*))?/.exec(n);i.push(Bce(t,e,r[1],r[2]||r[3]))}),e&&e!==`+`){var a=`,`;return e===`?`?a=`&`:e!==`#`&&(a=e),(i.length===0?``:e)+i.join(a)}return i.join(`,`)}return uU(i)}),e===`/`?e:e.replace(/\/$/,``)}function hU(e){let t=e.method.toUpperCase(),n=(e.url||`/`).replace(/:([a-z]\w+)/g,`{$1}`),r=Object.assign({},e.headers),i,a=lU(e,[`method`,`baseUrl`,`url`,`headers`,`request`,`mediaType`]),o=zce(n);n=Vce(n).expand(a),/^http/.test(n)||(n=e.baseUrl+n);let s=lU(a,Object.keys(e).filter(e=>o.includes(e)).concat(`baseUrl`));return/application\/octet-stream/i.test(r.accept)||(e.mediaType.format&&(r.accept=r.accept.split(/,/).map(t=>t.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${e.mediaType.format}`)).join(`,`)),n.endsWith(`/graphql`)&&e.mediaType.previews?.length&&(r.accept=(r.accept.match(/(?`application/vnd.github.${t}-preview${e.mediaType.format?`.${e.mediaType.format}`:`+json`}`).join(`,`))),[`GET`,`HEAD`].includes(t)?n=Ice(n,s):`data`in s?i=s.data:Object.keys(s).length&&(i=s),!r[`content-type`]&&i!==void 0&&(r[`content-type`]=`application/json; charset=utf-8`),[`PATCH`,`PUT`].includes(t)&&i===void 0&&(i=``),Object.assign({method:t,url:n,headers:r},i===void 0?null:{body:i},e.request?{request:e.request}:null)}function Uce(e,t,n){return hU(cU(e,t,n))}function gU(e,t){let n=cU(e,t),r=Uce.bind(null,n);return Object.assign(r,{DEFAULTS:n,defaults:gU.bind(null,n),merge:cU.bind(null,n),parse:hU})}var Wce=gU(null,Nce); /*! * content-type * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ -const KU=/* @__PURE__ */ (()=>{let e=function(){};return e.prototype=Object.create(null),e})();function gce(e,t){let n=t?.comma===!0?_ce:65536,r=e.length,i=JU(e,t?.start??0,r),a=i;i=qU(e,i,r,n);let o=YU(e,a,i),s=e.slice(a,o).toLowerCase();return t?.parameters===!1?{type:s,index:i,parameters:new KU}:vce(e,s,i,r,n)}const _ce=44;function vce(e,t,n,r,i){let a=new KU;parameter:for(;nt;){let t=e.charCodeAt(n-1);if(t!==32&&t!==9)break;n--}return n}const yce=/^-?\d+$/,XU=/^-?\d+n+$/,ZU=JSON.stringify,QU=JSON.parse,$U=/^-?\d+n$/,eW=/([\[:])?"(-?\d+)n"($|\s*[,\}\]])/g,tW=/([\[:])?("-?\d+n+)n("$|"\s*[,\}\]])/g,nW=e=>e===void 0||typeof e==`function`||typeof e==`symbol`,rW=e=>typeof e==`object`&&!!e&&e.constructor&&e.constructor.name===`RawJSON`,bce=(e,t,n)=>{let r=``;typeof n==`number`?r=` `.repeat(Math.min(10,Math.max(0,Math.floor(n)))):typeof n==`string`&&(r=n.slice(0,10));let i=typeof t==`function`,a=Array.isArray(t)?new Set(t.map(String)):null,o=(e,n,r)=>(typeof r==`object`&&r&&typeof r.toJSON==`function`&&(r=r.toJSON(n)),typeof r==`string`&&XU.test(r)?r+`n`:typeof r==`bigint`?`rawJSON`in JSON?JSON.rawJSON(r.toString()):r.toString()+`n`:(i&&(r=t.call(e,n,r)),typeof r==`object`&&r&&(r instanceof Number||r instanceof String||r instanceof Boolean)&&(r=r.valueOf()),r)),s=o({"":e},``,e);if(nW(s))return;let c=typeof s!=`object`||!s,l=rW(s);if(c||l)return ZU(s);let u=[],d=0,f=[{parent:{"":s},key:``,val:s,isArray:Array.isArray(s),keys:Array.isArray(s)?null:Object.keys(s),index:0,first:!0}],p=new WeakSet([s]);for(;f.length>0;){let e=f[f.length-1];e.index===0&&(u.push(e.isArray?`[`:`{`),d++);let t=!1;if(e.isArray){if(e.index=e.keys.length&&f[f.length-1]===e&&(t=!0)}t&&(d--,!e.first&&r&&u.push(` -`+r.repeat(d)),u.push(e.isArray?`]`:`}`),p.delete(e.val),f.pop())}return u.join(``)},xce=(e,t,n)=>{try{return`rawJSON`in JSON?ZU(e,(e,n)=>typeof n==`bigint`?JSON.rawJSON(n.toString()):typeof t==`function`?t(e,n):(Array.isArray(t)&&t.includes(e),n),n):e?ZU(e,(e,n)=>typeof n==`string`&&XU.test(n)||typeof n==`bigint`?n.toString()+`n`:typeof t==`function`?t(e,n):(Array.isArray(t)&&t.includes(e),n),n).replace(eW,`$1$2$3`).replace(tW,`$1$2$3`):ZU(e,t,n)}catch(r){if(r instanceof RangeError){let r=bce(e,t,n);return r===void 0?void 0:`rawJSON`in JSON?r:r.replace(eW,`$1$2$3`).replace(tW,`$1$2$3`)}throw r}},iW=/* @__PURE__ */ new Map,Sce=()=>{let e=JSON.parse.toString();if(iW.has(e))return iW.get(e);try{let t=JSON.parse(`1`,(e,t,n)=>!!n?.source&&n.source===`1`);return iW.set(e,t),t}catch{return iW.set(e,!1),!1}},Cce=(e,t,n,r)=>typeof t==`string`&&$U.test(t)?BigInt(t.slice(0,-1)):typeof t==`string`&&XU.test(t)?t.slice(0,-1):typeof r==`function`?r(e,t,n):t,wce=(e,t)=>JSON.parse(e,(e,n,r)=>{let i=typeof n==`number`&&(n>2**53-1||n<-(2**53-1)),a=r&&yce.test(r.source);return i&&a?BigInt(r.source):typeof t==`function`?t(e,n,r):n}),aW=(2**53-1).toString(),oW=aW.length,Tce=/"(?:[^"\\]|\\.)*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,Ece=/^"-?\d+n+"$/,Dce=(e,t)=>{let n={"":e},r=[{parent:n,key:``,visited:!1}];for(;r.length>0;){let e=r[r.length-1];if(e.visited){let{parent:n,key:i}=e,a=n[i];typeof a==`string`&&($U.test(a)?a=BigInt(a.slice(0,-1)):XU.test(a)&&(a=a.slice(0,-1))),typeof t==`function`&&(a=t.call(n,i,a)),a===void 0?delete n[i]:n[i]=a,r.pop()}else{e.visited=!0;let t=e.parent[e.key];if(typeof t==`object`&&t){let e=Object.keys(t);for(let n=e.length-1;n>=0;n--)r.push({parent:t,key:e[n],visited:!1})}}}return n[``]},sW=e=>e.replace(Tce,(e,t,n,r)=>{let i=e[0]===`"`;if(i&&Ece.test(e))return e.substring(0,e.length-1)+`n"`;let a=n||r,o=t&&(t.length{if(!e)return QU(e,t);try{if(Sce())return wce(e,t);let n=sW(e);return QU(n,(e,n,r)=>Cce(e,n,r,t))}catch(n){if(n instanceof RangeError){let n=sW(e),r=QU(n);return Dce(r,t)}throw n}};var cW=class extends Error{name;status;request;response;constructor(e,t,n){ +const _U=/* @__PURE__ */ (()=>{let e=function(){};return e.prototype=Object.create(null),e})();function Gce(e,t){let n=t?.comma===!0?Kce:65536,r=e.length,i=yU(e,t?.start??0,r),a=i;i=vU(e,i,r,n);let o=bU(e,a,i),s=e.slice(a,o).toLowerCase();return t?.parameters===!1?{type:s,index:i,parameters:new _U}:qce(e,s,i,r,n)}const Kce=44;function qce(e,t,n,r,i){let a=new _U;parameter:for(;nt;){let t=e.charCodeAt(n-1);if(t!==32&&t!==9)break;n--}return n}const Jce=/^-?\d+$/,xU=/^-?\d+n+$/,SU=JSON.stringify,CU=JSON.parse,wU=/^-?\d+n$/,TU=/([\[:])?"(-?\d+)n"($|\s*[,\}\]])/g,EU=/([\[:])?("-?\d+n+)n("$|"\s*[,\}\]])/g,DU=e=>e===void 0||typeof e==`function`||typeof e==`symbol`,OU=e=>typeof e==`object`&&!!e&&e.constructor&&e.constructor.name===`RawJSON`,Yce=(e,t,n)=>{let r=``;typeof n==`number`?r=` `.repeat(Math.min(10,Math.max(0,Math.floor(n)))):typeof n==`string`&&(r=n.slice(0,10));let i=typeof t==`function`,a=Array.isArray(t)?new Set(t.map(String)):null,o=(e,n,r)=>(typeof r==`object`&&r&&typeof r.toJSON==`function`&&(r=r.toJSON(n)),typeof r==`string`&&xU.test(r)?r+`n`:typeof r==`bigint`?`rawJSON`in JSON?JSON.rawJSON(r.toString()):r.toString()+`n`:(i&&(r=t.call(e,n,r)),typeof r==`object`&&r&&(r instanceof Number||r instanceof String||r instanceof Boolean)&&(r=r.valueOf()),r)),s=o({"":e},``,e);if(DU(s))return;let c=typeof s!=`object`||!s,l=OU(s);if(c||l)return SU(s);let u=[],d=0,f=[{parent:{"":s},key:``,val:s,isArray:Array.isArray(s),keys:Array.isArray(s)?null:Object.keys(s),index:0,first:!0}],p=new WeakSet([s]);for(;f.length>0;){let e=f[f.length-1];e.index===0&&(u.push(e.isArray?`[`:`{`),d++);let t=!1;if(e.isArray){if(e.index=e.keys.length&&f[f.length-1]===e&&(t=!0)}t&&(d--,!e.first&&r&&u.push(` +`+r.repeat(d)),u.push(e.isArray?`]`:`}`),p.delete(e.val),f.pop())}return u.join(``)},Xce=(e,t,n)=>{try{return`rawJSON`in JSON?SU(e,(e,n)=>typeof n==`bigint`?JSON.rawJSON(n.toString()):typeof t==`function`?t(e,n):(Array.isArray(t)&&t.includes(e),n),n):e?SU(e,(e,n)=>typeof n==`string`&&xU.test(n)||typeof n==`bigint`?n.toString()+`n`:typeof t==`function`?t(e,n):(Array.isArray(t)&&t.includes(e),n),n).replace(TU,`$1$2$3`).replace(EU,`$1$2$3`):SU(e,t,n)}catch(r){if(r instanceof RangeError){let r=Yce(e,t,n);return r===void 0?void 0:`rawJSON`in JSON?r:r.replace(TU,`$1$2$3`).replace(EU,`$1$2$3`)}throw r}},kU=/* @__PURE__ */ new Map,Zce=()=>{let e=JSON.parse.toString();if(kU.has(e))return kU.get(e);try{let t=JSON.parse(`1`,(e,t,n)=>!!n?.source&&n.source===`1`);return kU.set(e,t),t}catch{return kU.set(e,!1),!1}},Qce=(e,t,n,r)=>typeof t==`string`&&wU.test(t)?BigInt(t.slice(0,-1)):typeof t==`string`&&xU.test(t)?t.slice(0,-1):typeof r==`function`?r(e,t,n):t,$ce=(e,t)=>JSON.parse(e,(e,n,r)=>{let i=typeof n==`number`&&(n>2**53-1||n<-(2**53-1)),a=r&&Jce.test(r.source);return i&&a?BigInt(r.source):typeof t==`function`?t(e,n,r):n}),AU=(2**53-1).toString(),jU=AU.length,ele=/"(?:[^"\\]|\\.)*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,tle=/^"-?\d+n+"$/,nle=(e,t)=>{let n={"":e},r=[{parent:n,key:``,visited:!1}];for(;r.length>0;){let e=r[r.length-1];if(e.visited){let{parent:n,key:i}=e,a=n[i];typeof a==`string`&&(wU.test(a)?a=BigInt(a.slice(0,-1)):xU.test(a)&&(a=a.slice(0,-1))),typeof t==`function`&&(a=t.call(n,i,a)),a===void 0?delete n[i]:n[i]=a,r.pop()}else{e.visited=!0;let t=e.parent[e.key];if(typeof t==`object`&&t){let e=Object.keys(t);for(let n=e.length-1;n>=0;n--)r.push({parent:t,key:e[n],visited:!1})}}}return n[``]},MU=e=>e.replace(ele,(e,t,n,r)=>{let i=e[0]===`"`;if(i&&tle.test(e))return e.substring(0,e.length-1)+`n"`;let a=n||r,o=t&&(t.length{if(!e)return CU(e,t);try{if(Zce())return $ce(e,t);let n=MU(e);return CU(n,(e,n,r)=>Qce(e,n,r,t))}catch(n){if(n instanceof RangeError){let n=MU(e),r=CU(n);return nle(r,t)}throw n}};var NU=class extends Error{name;status;request;response;constructor(e,t,n){ /* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */ -super(e,{cause:n.cause}),this.name=`HttpError`,this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0),`response`in n&&(this.response=n.response);let r=Object.assign({},n.request);n.request.headers.authorization&&(r.headers=Object.assign({},n.request.headers,{authorization:n.request.headers.authorization.replace(/(?``;async function uW(e){let t=e.request?.fetch||globalThis.fetch;if(!t)throw Error(`fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing`);let n=e.request?.log||console,r=e.request?.parseSuccessResponseBody!==!1,i=Ace(e.body)||Array.isArray(e.body)?xce(e.body):e.body,a=Object.fromEntries(Object.entries(e.headers).map(([e,t])=>[e,String(t)])),o;try{o=await t(e.url,{method:e.method,body:i,redirect:e.request?.redirect,headers:a,signal:e.request?.signal,...e.body&&{duplex:`half`}})}catch(t){let n=`Unknown Error`;if(t instanceof Error){if(t.name===`AbortError`)throw t.status=500,t;n=t.message,t.name===`TypeError`&&`cause`in t&&(t.cause instanceof Error?n=t.cause.message:typeof t.cause==`string`&&(n=t.cause))}let r=new cW(n,500,{request:e});throw r.cause=t,r}let s=o.status,c=o.url,l={};for(let[e,t]of o.headers)l[e]=t;let u={url:c,status:s,headers:l,data:``};if(`deprecation`in l){let t=l.link&&l.link.match(/<([^<>]+)>; rel="deprecation"/),r=t&&t.pop();n.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${l.sunset}${r?`. See ${r}`:``}`)}if(s===204||s===205)return u;if(e.method===`HEAD`){if(s<400)return u;throw new cW(o.statusText,s,{response:u,request:e})}if(s===304)throw u.data=await dW(o),new cW(`Not modified`,s,{response:u,request:e});if(s>=400)throw u.data=await dW(o),new cW(Mce(u.data),s,{response:u,request:e});return u.data=r?await dW(o):o.body,u}async function dW(e){let t=e.headers.get(`content-type`);if(!t)return e.text().catch(lW);let n=gce(t);if(jce(n)){let t=``;try{return t=await e.text(),Oce(t)}catch{return t}}return n.type.startsWith(`text/`)||n.parameters.charset?.toLowerCase()===`utf-8`&&n.type!==`application/octet-stream`?e.text().catch(lW):e.arrayBuffer().catch( +super(e,{cause:n.cause}),this.name=`HttpError`,this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0),`response`in n&&(this.response=n.response);let r=Object.assign({},n.request);n.request.headers.authorization&&(r.headers=Object.assign({},n.request.headers,{authorization:n.request.headers.authorization.replace(/(?``;async function FU(e){let t=e.request?.fetch||globalThis.fetch;if(!t)throw Error(`fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing`);let n=e.request?.log||console,r=e.request?.parseSuccessResponseBody!==!1,i=ale(e.body)||Array.isArray(e.body)?Xce(e.body):e.body,a=Object.fromEntries(Object.entries(e.headers).map(([e,t])=>[e,String(t)])),o;try{o=await t(e.url,{method:e.method,body:i,redirect:e.request?.redirect,headers:a,signal:e.request?.signal,...e.body&&{duplex:`half`}})}catch(t){let n=`Unknown Error`;if(t instanceof Error){if(t.name===`AbortError`)throw t.status=500,t;n=t.message,t.name===`TypeError`&&`cause`in t&&(t.cause instanceof Error?n=t.cause.message:typeof t.cause==`string`&&(n=t.cause))}let r=new NU(n,500,{request:e});throw r.cause=t,r}let s=o.status,c=o.url,l={};for(let[e,t]of o.headers)l[e]=t;let u={url:c,status:s,headers:l,data:``};if(`deprecation`in l){let t=l.link&&l.link.match(/<([^<>]+)>; rel="deprecation"/),r=t&&t.pop();n.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${l.sunset}${r?`. See ${r}`:``}`)}if(s===204||s===205)return u;if(e.method===`HEAD`){if(s<400)return u;throw new NU(o.statusText,s,{response:u,request:e})}if(s===304)throw u.data=await IU(o),new NU(`Not modified`,s,{response:u,request:e});if(s>=400)throw u.data=await IU(o),new NU(sle(u.data),s,{response:u,request:e});return u.data=r?await IU(o):o.body,u}async function IU(e){let t=e.headers.get(`content-type`);if(!t)return e.text().catch(PU);let n=Gce(t);if(ole(n)){let t=``;try{return t=await e.text(),rle(t)}catch{return t}}return n.type.startsWith(`text/`)||n.parameters.charset?.toLowerCase()===`utf-8`&&n.type!==`application/octet-stream`?e.text().catch(PU):e.arrayBuffer().catch( /* v8 ignore next -- @preserve */ -()=>/* @__PURE__ */ new ArrayBuffer(0))}function jce(e){return e.type===`application/json`||e.type===`application/scim+json`}function Mce(e){if(typeof e==`string`)return e;if(e instanceof ArrayBuffer)return`Unknown error`;if(typeof e==`object`&&e&&`message`in e){let t=e,n=`documentation_url`in t?` - ${t.documentation_url}`:``;return Array.isArray(t.errors)?`${t.message}: ${t.errors.map(e=>JSON.stringify(e)).join(`, `)}${n}`:`${t.message}${n}`}return`Unknown error: ${JSON.stringify(e)}`}function fW(e,t){let n=e.defaults(t);return Object.assign(function(e,t){let r=n.merge(e,t);if(!r.request||!r.request.hook)return uW(n.parse(r));let i=(e,t)=>uW(n.parse(n.merge(e,t)));return Object.assign(i,{endpoint:n,defaults:fW.bind(null,n)}),r.request.hook(i,r)},{endpoint:n,defaults:fW.bind(null,n)})}var pW=fW(hce,kce),Nce=`0.0.0-development`;function Pce(e){return`Request failed due to following response errors: +()=>/* @__PURE__ */ new ArrayBuffer(0))}function ole(e){return e.type===`application/json`||e.type===`application/scim+json`}function sle(e){if(typeof e==`string`)return e;if(e instanceof ArrayBuffer)return`Unknown error`;if(typeof e==`object`&&e&&`message`in e){let t=e,n=`documentation_url`in t?` - ${t.documentation_url}`:``;return Array.isArray(t.errors)?`${t.message}: ${t.errors.map(e=>JSON.stringify(e)).join(`, `)}${n}`:`${t.message}${n}`}return`Unknown error: ${JSON.stringify(e)}`}function LU(e,t){let n=e.defaults(t);return Object.assign(function(e,t){let r=n.merge(e,t);if(!r.request||!r.request.hook)return FU(n.parse(r));let i=(e,t)=>FU(n.parse(n.merge(e,t)));return Object.assign(i,{endpoint:n,defaults:LU.bind(null,n)}),r.request.hook(i,r)},{endpoint:n,defaults:LU.bind(null,n)})}var RU=LU(Wce,ile),cle=`0.0.0-development`;function lle(e){return`Request failed due to following response errors: `+e.errors.map(e=>` - ${e.message}`).join(` -`)}var Fce=class extends Error{constructor(e,t,n){super(Pce(n)),this.request=e,this.headers=t,this.response=n,this.errors=n.errors,this.data=n.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}request;headers;response;name=`GraphqlResponseError`;errors;data},Ice=[`method`,`baseUrl`,`url`,`headers`,`request`,`query`,`mediaType`,`operationName`],Lce=[`query`,`method`,`url`],mW=/\/api\/v3\/?$/;function Rce(e,t,n){if(n){if(typeof t==`string`&&`query`in n)return Promise.reject(/* @__PURE__ */ Error(`[@octokit/graphql] "query" cannot be used as variable name`));for(let e in n)if(Lce.includes(e))return Promise.reject(/* @__PURE__ */ Error(`[@octokit/graphql] "${e}" cannot be used as variable name`))}let r=typeof t==`string`?Object.assign({query:t},n):t,i=Object.keys(r).reduce((e,t)=>Ice.includes(t)?(e[t]=r[t],e):(e.variables||={},e.variables[t]=r[t],e),{}),a=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return mW.test(a)&&(i.url=a.replace(mW,`/api/graphql`)),e(i).then(e=>{if(e.data.errors){let t={};for(let n of Object.keys(e.headers))t[n]=e.headers[n];throw new Fce(i,t,e.data)}return e.data.data})}function hW(e,t){let n=e.defaults(t);return Object.assign((e,t)=>Rce(n,e,t),{defaults:hW.bind(null,n),endpoint:n.endpoint})}hW(pW,{headers:{"user-agent":`octokit-graphql.js/${Nce} ${AU()}`},method:`POST`,url:`/graphql`});function zce(e){return hW(e,{method:`POST`,url:`/graphql`})} +`)}var ule=class extends Error{constructor(e,t,n){super(lle(n)),this.request=e,this.headers=t,this.response=n,this.errors=n.errors,this.data=n.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}request;headers;response;name=`GraphqlResponseError`;errors;data},dle=[`method`,`baseUrl`,`url`,`headers`,`request`,`query`,`mediaType`,`operationName`],fle=[`query`,`method`,`url`],zU=/\/api\/v3\/?$/;function ple(e,t,n){if(n){if(typeof t==`string`&&`query`in n)return Promise.reject(/* @__PURE__ */ Error(`[@octokit/graphql] "query" cannot be used as variable name`));for(let e in n)if(fle.includes(e))return Promise.reject(/* @__PURE__ */ Error(`[@octokit/graphql] "${e}" cannot be used as variable name`))}let r=typeof t==`string`?Object.assign({query:t},n):t,i=Object.keys(r).reduce((e,t)=>dle.includes(t)?(e[t]=r[t],e):(e.variables||={},e.variables[t]=r[t],e),{}),a=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return zU.test(a)&&(i.url=a.replace(zU,`/api/graphql`)),e(i).then(e=>{if(e.data.errors){let t={};for(let n of Object.keys(e.headers))t[n]=e.headers[n];throw new ule(i,t,e.data)}return e.data.data})}function BU(e,t){let n=e.defaults(t);return Object.assign((e,t)=>ple(n,e,t),{defaults:BU.bind(null,n),endpoint:n.endpoint})}BU(RU,{headers:{"user-agent":`octokit-graphql.js/${cle} ${tU()}`},method:`POST`,url:`/graphql`});function mle(e){return BU(e,{method:`POST`,url:`/graphql`})} /* v8 ignore if -- @preserve */ -var gW=`(?:[a-zA-Z0-9_-]+)`,_W=`\\.`,vW=RegExp(`^${gW}${_W}${gW}${_W}${gW}$`),Bce=vW.test.bind(vW);async function Vce(e){let t=Bce(e),n=e.startsWith(`v1.`)||e.startsWith(`ghs_`),r=e.startsWith(`ghu_`);return{type:`token`,token:e,tokenType:t?`app`:n?`installation`:r?`user-to-server`:`oauth`}}function Hce(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Uce(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=Hce(e),t(i)}var Wce=function(e){if(!e)throw Error(`[@octokit/auth-token] No token passed to createTokenAuth`);if(typeof e!=`string`)throw Error(`[@octokit/auth-token] Token passed to createTokenAuth is not a string`);return e=e.replace(/^(token|bearer) +/i,``),Object.assign(Vce.bind(null,e),{hook:Uce.bind(null,e)})};const yW=`7.0.8`,bW=()=>{},Gce=console.warn.bind(console),Kce=console.error.bind(console);function qce(e={}){return typeof e.debug!=`function`&&(e.debug=bW),typeof e.info!=`function`&&(e.info=bW),typeof e.warn!=`function`&&(e.warn=Gce),typeof e.error!=`function`&&(e.error=Kce),e}const xW=`octokit-core.js/${yW} ${AU()}`;var Jce=class{static VERSION=yW;static defaults(e){return class extends this{constructor(...t){let n=t[0]||{};super(typeof e==`function`?e(n):Object.assign({},e,n,n.userAgent&&e.userAgent?{userAgent:`${n.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(e=>!t.includes(e)))}}constructor(e={}){let t=new rce.Collection,n={baseUrl:pW.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,`request`)}),mediaType:{previews:[],format:``}};if(n.headers[`user-agent`]=e.userAgent?`${e.userAgent} ${xW}`:xW,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=pW.defaults(n),this.graphql=zce(this.request).defaults(n),this.log=qce(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...r}=e,i=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:r},e.auth));t.wrap(`request`,i.hook),this.auth=i}else if(!e.auth)this.auth=async()=>({type:`unauthenticated`});else{let n=Wce(e.auth);t.wrap(`request`,n.hook),this.auth=n}let r=this.constructor;for(let t=0;t({async next(){if(!s)return{done:!0};try{let e=ele(await i({method:a,url:s,headers:o}));if(s=((e.headers.link||``).match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!s&&`total_commits`in e.data){let t=new URL(e.url),n=t.searchParams,r=parseInt(n.get(`page`)||`1`,10);r*parseInt(n.get(`per_page`)||`250`,10){if(i.done)return t;let a=!1;function o(){a=!0}return t=t.concat(r?r(i.value,o):i.value.data),a?t:EW(e,t,n,r)})}Object.assign(TW,{iterator:wW});function DW(e){return{paginate:Object.assign(TW.bind(null,e),{iterator:wW.bind(null,e)})}}DW.VERSION=$ce,new OU;const OW=Zse(),kW={baseUrl:OW,request:{agent:Jse(OW),fetch:Xse(OW)}},tle=Jce.plugin(CW,DW).defaults(kW);function nle(e,t){let n=Object.assign({},t||{}),r=qse(e,n);r&&(n.auth=r);let i=Qse(n.userAgent);return i&&(n.userAgent=i),n}const rle=new OU;function AW(e,t,...n){return new(tle.plugin(...n))(nle(e,t))}function jW(e,t,n,r){let i=DU({...n,...r},EU),a={timestamp:(/* @__PURE__ */ new Date()).toISOString(),level:e,message:t,...i};if(r!=null&&`error`in r&&r.error instanceof Error){let e=r.error;a.error={message:e.message,name:e.name,stack:e.stack}}return JSON.stringify(a)}function MW(e){return{debug:(t,n)=>{W(jW(`debug`,t,e,n))},info:(t,n)=>{Ns(jW(`info`,t,e,n))},warning:(t,n)=>{js(jW(`warning`,t,e,n))},error:(t,n)=>{As(jW(`error`,t,e,n))}}}var NW=/* @__PURE__ */ a(((e,t)=>{t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:2**53-1|| -/* istanbul ignore next */9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:`2.0.0`,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),PW=/* @__PURE__ */ a(((e,t)=>{t.exports=typeof process==`object`&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),FW=/* @__PURE__ */ a(((e,t)=>{let{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=NW(),a=PW();e=t.exports={};let o=e.re=[],s=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],u=e.t={},d=0,f=`[a-zA-Z0-9-]`,p=[[`\\s`,1],[`\\d`,i],[f,r]],m=e=>{for(let[t,n]of p)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},h=(e,t,n)=>{let r=m(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,l[i]=r,o[i]=new RegExp(t,n?`g`:void 0),s[i]=new RegExp(r,n?`g`:void 0)};h(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),h(`NUMERICIDENTIFIERLOOSE`,`\\d+`),h(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${f}*`),h(`MAINVERSION`,`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),h(`MAINVERSIONLOOSE`,`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASEIDENTIFIER`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIER]})`),h(`PRERELEASEIDENTIFIERLOOSE`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASE`,`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),h(`PRERELEASELOOSE`,`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),h(`BUILDIDENTIFIER`,`${f}+`),h(`BUILD`,`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),h(`FULLPLAIN`,`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),h(`FULL`,`^${c[u.FULLPLAIN]}$`),h(`LOOSEPLAIN`,`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),h(`LOOSE`,`^${c[u.LOOSEPLAIN]}$`),h(`GTLT`,`((?:<|>)?=?)`),h(`XRANGEIDENTIFIERLOOSE`,`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h(`XRANGEIDENTIFIER`,`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),h(`XRANGEPLAIN`,`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),h(`XRANGEPLAINLOOSE`,`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),h(`XRANGE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),h(`XRANGELOOSE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),h(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),h(`COERCE`,`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),h(`COERCEFULL`,c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?(?:${c[u.BUILD]})?(?:$|[^\\d])`),h(`COERCERTL`,c[u.COERCE],!0),h(`COERCERTLFULL`,c[u.COERCEFULL],!0),h(`LONETILDE`,`(?:~>?)`),h(`TILDETRIM`,`(\\s*)${c[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,h(`TILDE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),h(`TILDELOOSE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),h(`LONECARET`,`(?:\\^)`),h(`CARETTRIM`,`(\\s*)${c[u.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,h(`CARET`,`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),h(`CARETLOOSE`,`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),h(`COMPARATORLOOSE`,`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),h(`COMPARATOR`,`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),h(`COMPARATORTRIM`,`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,h(`HYPHENRANGE`,`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),h(`HYPHENRANGELOOSE`,`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),h(`STAR`,`(<|>)?=?\\s*\\*`),h(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),h(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),IW=/* @__PURE__ */ a(((e,t)=>{let n=Object.freeze({loose:!0}),r=Object.freeze({});t.exports=e=>e?typeof e==`object`?e:n:r})),LW=/* @__PURE__ */ a(((e,t)=>{let n=/^[0-9]+$/,r=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:er(t,e)}})),RW=/* @__PURE__ */ a(((e,t)=>{let n=PW(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=NW(),{safeRe:a,t:o}=FW(),s=IW(),{compareIdentifiers:c}=LW(),l=(e,t)=>{let n=t.split(`.`);if(n.length>e.length)return!1;for(let t=0;tr)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,t,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;let l=t.trim().match(c.loose?a[o.LOOSE]:a[o.FULL]);if(!l)throw TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);this.prerelease=l[4]?l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&tt.major?1:this.minort.minor?1:this.patcht.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let e=this.prerelease[r],i=t.prerelease[r];if(n(`prerelease compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e!==i)return c(e,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let e=this.build[r],i=t.build[r];if(n(`build compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e!==i)return c(e,i)}while(++r)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[o.PRERELEASELOOSE]:a[o.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=+!!Number(n);if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];if(n===!1&&(r=[t]),l(this.prerelease,t)){let e=this.prerelease[t.split(`.`).length];isNaN(e)&&(this.prerelease=r)}else this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),zW=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}}})),ile=/* @__PURE__ */ a(((e,t)=>{let n=zW();t.exports=(e,t)=>{let r=n(e,t);return r?r.version:null}})),ale=/* @__PURE__ */ a(((e,t)=>{let n=zW();t.exports=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null}})),ole=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t,r,i,a)=>{typeof r==`string`&&(a=i,i=r,r=void 0);try{return new n(e instanceof n?e.version:e,r).inc(t,i,a).version}catch{return null}}})),sle=/* @__PURE__ */ a(((e,t)=>{let n=zW();t.exports=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let o=a>0,s=o?r:i,c=o?i:r,l=!!s.prerelease.length;if(c.prerelease.length&&!l){if(!c.patch&&!c.minor)return`major`;if(c.compareMain(s)===0)return c.minor&&!c.patch?`minor`:`patch`}let u=l?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:u+`patch`:u+`minor`:u+`major`}})),cle=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t)=>new n(e,t).major})),lle=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t)=>new n(e,t).minor})),ule=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t)=>new n(e,t).patch})),dle=/* @__PURE__ */ a(((e,t)=>{let n=zW();t.exports=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}})),BW=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t,r)=>new n(e,r).compare(new n(t,r))})),fle=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(t,e,r)})),ple=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t)=>n(e,t,!0)})),VW=/* @__PURE__ */ a(((e,t)=>{let n=RW();t.exports=(e,t,r)=>{let i=new n(e,r),a=new n(t,r);return i.compare(a)||i.compareBuild(a)}})),mle=/* @__PURE__ */ a(((e,t)=>{let n=VW();t.exports=(e,t)=>e.sort((e,r)=>n(e,r,t))})),hle=/* @__PURE__ */ a(((e,t)=>{let n=VW();t.exports=(e,t)=>e.sort((e,r)=>n(r,e,t))})),HW=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(e,t,r)>0})),UW=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(e,t,r)<0})),WW=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(e,t,r)===0})),GW=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(e,t,r)!==0})),KW=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(e,t,r)>=0})),qW=/* @__PURE__ */ a(((e,t)=>{let n=BW();t.exports=(e,t,r)=>n(e,t,r)<=0})),JW=/* @__PURE__ */ a(((e,t)=>{let n=WW(),r=GW(),i=HW(),a=KW(),o=UW(),s=qW();t.exports=(e,t,c,l)=>{switch(t){case`===`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e===c;case`!==`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e!==c;case``:case`=`:case`==`:return n(e,c,l);case`!=`:return r(e,c,l);case`>`:return i(e,c,l);case`>=`:return a(e,c,l);case`<`:return o(e,c,l);case`<=`:return s(e,c,l);default:throw TypeError(`Invalid operator: ${t}`)}}})),gle=/* @__PURE__ */ a(((e,t)=>{let n=RW(),r=zW(),{safeRe:i,t:a}=FW();t.exports=(e,t)=>{if(e instanceof n)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let o=null;if(!t.rtl)o=e.match(t.includePrerelease?i[a.COERCEFULL]:i[a.COERCE]);else{let n=t.includePrerelease?i[a.COERCERTLFULL]:i[a.COERCERTL],r;for(;(r=n.exec(e))&&(!o||o.index+o[0].length!==e.length);)o&&r.index+r[0].length===o.index+o[0].length||(o=r),n.lastIndex=r.index+r[1].length+r[2].length;n.lastIndex=-1}if(o===null)return null;let s=o[2],c=o[3]||`0`,l=o[4]||`0`,u=t.includePrerelease&&o[5]?`-${o[5]}`:``,d=t.includePrerelease&&o[6]?`+${o[6]}`:``;return r(`${s}.${c}.${l}${u}${d}`,t)}})),_le=/* @__PURE__ */ a(((e,t)=>{let n=zW(),r=NW(),i=RW(),a=(e,t,n)=>{if(!r.RELEASE_TYPES.includes(t))return null;let i=o(e,n);return i&&s(i,t)},o=(e,t)=>{let r=e instanceof i?e.version:e;return n(r,t)},s=(e,t)=>{if(c(t))return e.version;switch(e.prerelease=[],t){case`major`:e.minor=0,e.patch=0;break;case`minor`:e.patch=0}return e.format()},c=e=>e.startsWith(`pre`);t.exports=a})),vle=/* @__PURE__ */ a(((e,t)=>{t.exports=class{constructor(){this.max=1e3,this.map=/* @__PURE__ */ new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}})),YW=/* @__PURE__ */ a(((e,t)=>{let n=/\s+/g;t.exports=class e{constructor(t,r){if(r=i(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof a)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(n,` `),this.set=this.raw.split(`||`).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let e=this.set[0];if(this.set=this.set.filter(e=>!v(e[0])),this.set.length===0)this.set=[e];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&y(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted=``;for(let e=0;e0&&(this.formatted+=`||`);let t=this.set[e];for(let e=0;e0&&(this.formatted+=` `),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(g,``);let t=((this.options.includePrerelease&&m)|(this.options.loose&&h))+`:`+e,n=r.get(t);if(n)return n;let i=this.options.loose,s=i?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];e=e.replace(s,M(this.options.includePrerelease)),o(`hyphen replace`,e),e=e.replace(c[u.COMPARATORTRIM],d),o(`comparator trim`,e),e=e.replace(c[u.TILDETRIM],f),o(`tilde trim`,e),e=e.replace(c[u.CARETTRIM],p),o(`caret trim`,e);let l=e.split(` `).map(e=>x(e,this.options)).join(` `).split(/\s+/).map(e=>j(e,this.options));i&&(l=l.filter(e=>(o(`loose invalid filter`,e,this.options),!!e.match(c[u.COMPARATORLOOSE])))),o(`range list`,l);let y=/* @__PURE__ */ new Map,b=l.map(e=>new a(e,this.options));for(let e of b){if(v(e))return[e];y.set(e.value,e)}y.size>1&&y.has(``)&&y.delete(``);let S=[...y.values()];return r.set(t,S),S}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Range is required`);return this.set.some(e=>b(e,n)&&t.set.some(t=>b(t,n)&&e.every(e=>t.every(t=>e.intersects(t,n)))))}test(e){if(!e)return!1;if(typeof e==`string`)try{e=new s(e,this.options)}catch{return!1}for(let t=0;te.value===`<0.0.0-0`,y=e=>e.value===``,b=(e,t)=>{let n=!0,r=e.slice(),i=r.pop();for(;n&&r.length;)n=r.every(e=>i.intersects(e,t)),i=r.pop();return n},x=(e,t)=>(e=e.replace(c[u.BUILD],``),o(`comp`,e,t),e=E(e,t),o(`caret`,e),e=w(e,t),o(`tildes`,e),e=O(e,t),o(`xrange`,e),e=A(e,t),o(`stars`,e),e),S=e=>!e||e.toLowerCase()===`x`||e===`*`,C=(e,t,n)=>S(e)&&!S(t)||S(t)&&n&&!S(n),w=(e,t)=>e.trim().split(/\s+/).map(e=>T(e,t)).join(` `),T=(e,t)=>{let n=t.loose?c[u.TILDELOOSE]:c[u.TILDE],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`tilde`,e,t,n,i,a,s);let c;return S(n)?c=``:S(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?c=`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:s?(o(`replaceTilde pr`,s),c=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):c=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o(`tilde return`,c),c})},E=(e,t)=>e.trim().split(/\s+/).map(e=>D(e,t)).join(` `),D=(e,t)=>{o(`caret`,e,t);let n=t.loose?c[u.CARETLOOSE]:c[u.CARET],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`caret`,e,t,n,i,a,s);let c;return S(n)?c=``:S(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?c=n===`0`?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(o(`replaceCaret pr`,s),c=n===`0`?i===`0`?`>=${n}.${i}.${a}-${s} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${s} <${+n+1}.0.0-0`):(o(`no pr`),c=n===`0`?i===`0`?`>=${n}.${i}.${a} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),o(`caret return`,c),c})},O=(e,t)=>(o(`replaceXRanges`,e,t),e.split(/\s+/).map(e=>k(e,t)).join(` `)),k=(e,t)=>{e=e.trim();let n=t.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return e.replace(n,(n,r,i,a,s,c)=>{if(o(`xRange`,e,n,r,i,a,s,c),C(i,a,s))return e;let l=S(i),u=l||S(a),d=u||S(s),f=d;return r===`=`&&f&&(r=``),c=t.includePrerelease?`-0`:``,l?n=r===`>`||r===`<`?`<0.0.0-0`:`*`:r&&f?(u&&(a=0),s=0,r===`>`?(r=`>=`,u?(i=+i+1,a=0,s=0):(a=+a+1,s=0)):r===`<=`&&(r=`<`,u?i=+i+1:a=+a+1),r===`<`&&(c=`-0`),n=`${r+i}.${a}.${s}${c}`):u?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${c} <${i}.${+a+1}.0-0`),o(`xRange return`,n),n})},A=(e,t)=>(o(`replaceStars`,e,t),e.trim().replace(c[u.STAR],``)),j=(e,t)=>(o(`replaceGTE0`,e,t),e.trim().replace(c[t.includePrerelease?u.GTE0PRE:u.GTE0],``)),M=e=>(t,n,r,i,a,o,s,c,l,u,d,f)=>(n=S(r)?``:S(i)?`>=${r}.0.0${e?`-0`:``}`:S(a)?`>=${r}.${i}.0${e?`-0`:``}`:o?`>=${n}`:`>=${n}${e?`-0`:``}`,c=S(l)?``:S(u)?`<${+l+1}.0.0-0`:S(d)?`<${l}.${+u+1}.0-0`:f?`<=${l}.${u}.${d}-${f}`:e?`<${l}.${u}.${+d+1}-0`:`<=${c}`,`${n} ${c}`.trim()),N=(e,t,n)=>{for(let n=0;n0){let r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}})),XW=/* @__PURE__ */ a(((e,t)=>{let n=Symbol(`SemVer ANY`);t.exports=class e{static get ANY(){return n}constructor(t,i){if(i=r(i),t instanceof e){if(t.loose===!!i.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(` `),s(`comparator`,t,i),this.options=i,this.loose=!!i.loose,this.parse(t),this.value=this.semver===n?``:this.operator+this.semver.version,s(`comp`,this)}parse(e){let t=this.options.loose?i[a.COMPARATORLOOSE]:i[a.COMPARATOR],r=e.match(t);if(!r)throw TypeError(`Invalid comparator: ${e}`);this.operator=r[1]===void 0?``:r[1],this.operator===`=`&&(this.operator=``),this.semver=r[2]?new c(r[2],this.options.loose):n}toString(){return this.value}test(e){if(s(`Comparator.test`,e,this.options.loose),this.semver===n||e===n)return!0;if(typeof e==`string`)try{e=new c(e,this.options)}catch{return!1}return o(e,this.operator,this.semver,this.options)}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Comparator is required`);return this.operator===``?this.value===``||new l(t.value,n).test(this.value):t.operator===``?t.value===``||new l(this.value,n).test(t.semver):(n=r(n),n.includePrerelease&&(this.value===`<0.0.0-0`||t.value===`<0.0.0-0`)||!n.includePrerelease&&(this.value.startsWith(`<0.0.0`)||t.value.startsWith(`<0.0.0`))?!1:!!(this.operator.startsWith(`>`)&&t.operator.startsWith(`>`)||this.operator.startsWith(`<`)&&t.operator.startsWith(`<`)||this.semver.version===t.semver.version&&this.operator.includes(`=`)&&t.operator.includes(`=`)||o(this.semver,`<`,t.semver,n)&&this.operator.startsWith(`>`)&&t.operator.startsWith(`<`)||o(this.semver,`>`,t.semver,n)&&this.operator.startsWith(`<`)&&t.operator.startsWith(`>`)))}};let r=IW(),{safeRe:i,t:a}=FW(),o=JW(),s=PW(),c=RW(),l=YW()})),ZW=/* @__PURE__ */ a(((e,t)=>{let n=YW();t.exports=(e,t,r)=>{try{t=new n(t,r)}catch{return!1}return t.test(e)}})),yle=/* @__PURE__ */ a(((e,t)=>{let n=YW();t.exports=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `))})),ble=/* @__PURE__ */ a(((e,t)=>{let n=RW(),r=YW();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(a&&o.compare(e)!==-1||(a=e,o=new n(a,i)))}),a}})),xle=/* @__PURE__ */ a(((e,t)=>{let n=RW(),r=YW();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(a&&o.compare(e)!==1||(a=e,o=new n(a,i)))}),a}})),Sle=/* @__PURE__ */ a(((e,t)=>{let n=RW(),r=YW(),i=HW();t.exports=(e,t)=>{e=new r(e,t);let a=new n(`0.0.0`);if(e.test(a)||(a=new n(`0.0.0-0`),e.test(a)))return a;a=null;for(let t=0;t{let t=new n(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!o||i(t,o))&&(o=t);break;case`<`:case`<=`:break; +var VU=`(?:[a-zA-Z0-9_-]+)`,HU=`\\.`,UU=RegExp(`^${VU}${HU}${VU}${HU}${VU}$`),hle=UU.test.bind(UU);async function gle(e){let t=hle(e),n=e.startsWith(`v1.`)||e.startsWith(`ghs_`),r=e.startsWith(`ghu_`);return{type:`token`,token:e,tokenType:t?`app`:n?`installation`:r?`user-to-server`:`oauth`}}function _le(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function vle(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=_le(e),t(i)}var yle=function(e){if(!e)throw Error(`[@octokit/auth-token] No token passed to createTokenAuth`);if(typeof e!=`string`)throw Error(`[@octokit/auth-token] Token passed to createTokenAuth is not a string`);return e=e.replace(/^(token|bearer) +/i,``),Object.assign(gle.bind(null,e),{hook:vle.bind(null,e)})};const WU=`7.0.8`,GU=()=>{},ble=console.warn.bind(console),xle=console.error.bind(console);function Sle(e={}){return typeof e.debug!=`function`&&(e.debug=GU),typeof e.info!=`function`&&(e.info=GU),typeof e.warn!=`function`&&(e.warn=ble),typeof e.error!=`function`&&(e.error=xle),e}const KU=`octokit-core.js/${WU} ${tU()}`;var Cle=class{static VERSION=WU;static defaults(e){return class extends this{constructor(...t){let n=t[0]||{};super(typeof e==`function`?e(n):Object.assign({},e,n,n.userAgent&&e.userAgent?{userAgent:`${n.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(e=>!t.includes(e)))}}constructor(e={}){let t=new Mce.Collection,n={baseUrl:RU.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,`request`)}),mediaType:{previews:[],format:``}};if(n.headers[`user-agent`]=e.userAgent?`${e.userAgent} ${KU}`:KU,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=RU.defaults(n),this.graphql=mle(this.request).defaults(n),this.log=Sle(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...r}=e,i=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:r},e.auth));t.wrap(`request`,i.hook),this.auth=i}else if(!e.auth)this.auth=async()=>({type:`unauthenticated`});else{let n=yle(e.auth);t.wrap(`request`,n.hook),this.auth=n}let r=this.constructor;for(let t=0;t({async next(){if(!s)return{done:!0};try{let e=kle(await i({method:a,url:s,headers:o}));if(s=((e.headers.link||``).match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!s&&`total_commits`in e.data){let t=new URL(e.url),n=t.searchParams,r=parseInt(n.get(`page`)||`1`,10);r*parseInt(n.get(`per_page`)||`250`,10){if(i.done)return t;let a=!1;function o(){a=!0}return t=t.concat(r?r(i.value,o):i.value.data),a?t:ZU(e,t,n,r)})}Object.assign(XU,{iterator:YU});function QU(e){return{paginate:Object.assign(XU.bind(null,e),{iterator:YU.bind(null,e)})}}QU.VERSION=Ole,new $H;const $U=Ece(),eW={baseUrl:$U,request:{agent:Cce($U),fetch:Tce($U)}},Ale=Cle.plugin(JU,QU).defaults(eW);function jle(e,t){let n=Object.assign({},t||{}),r=Sce(e,n);r&&(n.auth=r);let i=Dce(n.userAgent);return i&&(n.userAgent=i),n}const Mle=new $H;function tW(e,t,...n){return new(Ale.plugin(...n))(jle(e,t))}function nW(e,t,n,r){let i=QH({...n,...r},ZH),a={timestamp:(/* @__PURE__ */ new Date()).toISOString(),level:e,message:t,...i};if(r!=null&&`error`in r&&r.error instanceof Error){let e=r.error;a.error={message:e.message,name:e.name,stack:e.stack}}return JSON.stringify(a)}function rW(e){return{debug:(t,n)=>{W(nW(`debug`,t,e,n))},info:(t,n)=>{Ps(nW(`info`,t,e,n))},warning:(t,n)=>{Ms(nW(`warning`,t,e,n))},error:(t,n)=>{js(nW(`error`,t,e,n))}}}var iW=/* @__PURE__ */ a(((e,t)=>{t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:2**53-1|| +/* istanbul ignore next */9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:`2.0.0`,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),aW=/* @__PURE__ */ a(((e,t)=>{t.exports=typeof process==`object`&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),oW=/* @__PURE__ */ a(((e,t)=>{let{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=iW(),a=aW();e=t.exports={};let o=e.re=[],s=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],u=e.t={},d=0,f=`[a-zA-Z0-9-]`,p=[[`\\s`,1],[`\\d`,i],[f,r]],m=e=>{for(let[t,n]of p)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},h=(e,t,n)=>{let r=m(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,l[i]=r,o[i]=new RegExp(t,n?`g`:void 0),s[i]=new RegExp(r,n?`g`:void 0)};h(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),h(`NUMERICIDENTIFIERLOOSE`,`\\d+`),h(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${f}*`),h(`MAINVERSION`,`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),h(`MAINVERSIONLOOSE`,`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASEIDENTIFIER`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIER]})`),h(`PRERELEASEIDENTIFIERLOOSE`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASE`,`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),h(`PRERELEASELOOSE`,`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),h(`BUILDIDENTIFIER`,`${f}+`),h(`BUILD`,`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),h(`FULLPLAIN`,`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),h(`FULL`,`^${c[u.FULLPLAIN]}$`),h(`LOOSEPLAIN`,`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),h(`LOOSE`,`^${c[u.LOOSEPLAIN]}$`),h(`GTLT`,`((?:<|>)?=?)`),h(`XRANGEIDENTIFIERLOOSE`,`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h(`XRANGEIDENTIFIER`,`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),h(`XRANGEPLAIN`,`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),h(`XRANGEPLAINLOOSE`,`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),h(`XRANGE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),h(`XRANGELOOSE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),h(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),h(`COERCE`,`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),h(`COERCEFULL`,c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?(?:${c[u.BUILD]})?(?:$|[^\\d])`),h(`COERCERTL`,c[u.COERCE],!0),h(`COERCERTLFULL`,c[u.COERCEFULL],!0),h(`LONETILDE`,`(?:~>?)`),h(`TILDETRIM`,`(\\s*)${c[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,h(`TILDE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),h(`TILDELOOSE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),h(`LONECARET`,`(?:\\^)`),h(`CARETTRIM`,`(\\s*)${c[u.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,h(`CARET`,`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),h(`CARETLOOSE`,`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),h(`COMPARATORLOOSE`,`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),h(`COMPARATOR`,`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),h(`COMPARATORTRIM`,`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,h(`HYPHENRANGE`,`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),h(`HYPHENRANGELOOSE`,`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),h(`STAR`,`(<|>)?=?\\s*\\*`),h(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),h(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),sW=/* @__PURE__ */ a(((e,t)=>{let n=Object.freeze({loose:!0}),r=Object.freeze({});t.exports=e=>e?typeof e==`object`?e:n:r})),cW=/* @__PURE__ */ a(((e,t)=>{let n=/^[0-9]+$/,r=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:er(t,e)}})),lW=/* @__PURE__ */ a(((e,t)=>{let n=aW(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=iW(),{safeRe:a,t:o}=oW(),s=sW(),{compareIdentifiers:c}=cW(),l=(e,t)=>{let n=t.split(`.`);if(n.length>e.length)return!1;for(let t=0;tr)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,t,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;let l=t.trim().match(c.loose?a[o.LOOSE]:a[o.FULL]);if(!l)throw TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);this.prerelease=l[4]?l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&tt.major?1:this.minort.minor?1:this.patcht.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let e=this.prerelease[r],i=t.prerelease[r];if(n(`prerelease compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e!==i)return c(e,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let e=this.build[r],i=t.build[r];if(n(`build compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e!==i)return c(e,i)}while(++r)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[o.PRERELEASELOOSE]:a[o.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=+!!Number(n);if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];if(n===!1&&(r=[t]),l(this.prerelease,t)){let e=this.prerelease[t.split(`.`).length];isNaN(e)&&(this.prerelease=r)}else this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),uW=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}}})),Nle=/* @__PURE__ */ a(((e,t)=>{let n=uW();t.exports=(e,t)=>{let r=n(e,t);return r?r.version:null}})),Ple=/* @__PURE__ */ a(((e,t)=>{let n=uW();t.exports=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null}})),Fle=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t,r,i,a)=>{typeof r==`string`&&(a=i,i=r,r=void 0);try{return new n(e instanceof n?e.version:e,r).inc(t,i,a).version}catch{return null}}})),Ile=/* @__PURE__ */ a(((e,t)=>{let n=uW();t.exports=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let o=a>0,s=o?r:i,c=o?i:r,l=!!s.prerelease.length;if(c.prerelease.length&&!l){if(!c.patch&&!c.minor)return`major`;if(c.compareMain(s)===0)return c.minor&&!c.patch?`minor`:`patch`}let u=l?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:u+`patch`:u+`minor`:u+`major`}})),Lle=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t)=>new n(e,t).major})),Rle=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t)=>new n(e,t).minor})),zle=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t)=>new n(e,t).patch})),Ble=/* @__PURE__ */ a(((e,t)=>{let n=uW();t.exports=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}})),dW=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t,r)=>new n(e,r).compare(new n(t,r))})),Vle=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(t,e,r)})),Hle=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t)=>n(e,t,!0)})),fW=/* @__PURE__ */ a(((e,t)=>{let n=lW();t.exports=(e,t,r)=>{let i=new n(e,r),a=new n(t,r);return i.compare(a)||i.compareBuild(a)}})),Ule=/* @__PURE__ */ a(((e,t)=>{let n=fW();t.exports=(e,t)=>e.sort((e,r)=>n(e,r,t))})),Wle=/* @__PURE__ */ a(((e,t)=>{let n=fW();t.exports=(e,t)=>e.sort((e,r)=>n(r,e,t))})),pW=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(e,t,r)>0})),mW=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(e,t,r)<0})),hW=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(e,t,r)===0})),gW=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(e,t,r)!==0})),_W=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(e,t,r)>=0})),vW=/* @__PURE__ */ a(((e,t)=>{let n=dW();t.exports=(e,t,r)=>n(e,t,r)<=0})),yW=/* @__PURE__ */ a(((e,t)=>{let n=hW(),r=gW(),i=pW(),a=_W(),o=mW(),s=vW();t.exports=(e,t,c,l)=>{switch(t){case`===`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e===c;case`!==`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e!==c;case``:case`=`:case`==`:return n(e,c,l);case`!=`:return r(e,c,l);case`>`:return i(e,c,l);case`>=`:return a(e,c,l);case`<`:return o(e,c,l);case`<=`:return s(e,c,l);default:throw TypeError(`Invalid operator: ${t}`)}}})),Gle=/* @__PURE__ */ a(((e,t)=>{let n=lW(),r=uW(),{safeRe:i,t:a}=oW();t.exports=(e,t)=>{if(e instanceof n)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let o=null;if(!t.rtl)o=e.match(t.includePrerelease?i[a.COERCEFULL]:i[a.COERCE]);else{let n=t.includePrerelease?i[a.COERCERTLFULL]:i[a.COERCERTL],r;for(;(r=n.exec(e))&&(!o||o.index+o[0].length!==e.length);)o&&r.index+r[0].length===o.index+o[0].length||(o=r),n.lastIndex=r.index+r[1].length+r[2].length;n.lastIndex=-1}if(o===null)return null;let s=o[2],c=o[3]||`0`,l=o[4]||`0`,u=t.includePrerelease&&o[5]?`-${o[5]}`:``,d=t.includePrerelease&&o[6]?`+${o[6]}`:``;return r(`${s}.${c}.${l}${u}${d}`,t)}})),Kle=/* @__PURE__ */ a(((e,t)=>{let n=uW(),r=iW(),i=lW(),a=(e,t,n)=>{if(!r.RELEASE_TYPES.includes(t))return null;let i=o(e,n);return i&&s(i,t)},o=(e,t)=>{let r=e instanceof i?e.version:e;return n(r,t)},s=(e,t)=>{if(c(t))return e.version;switch(e.prerelease=[],t){case`major`:e.minor=0,e.patch=0;break;case`minor`:e.patch=0}return e.format()},c=e=>e.startsWith(`pre`);t.exports=a})),qle=/* @__PURE__ */ a(((e,t)=>{t.exports=class{constructor(){this.max=1e3,this.map=/* @__PURE__ */ new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}})),bW=/* @__PURE__ */ a(((e,t)=>{let n=/\s+/g;t.exports=class e{constructor(t,r){if(r=i(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof a)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(n,` `),this.set=this.raw.split(`||`).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let e=this.set[0];if(this.set=this.set.filter(e=>!v(e[0])),this.set.length===0)this.set=[e];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&y(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted=``;for(let e=0;e0&&(this.formatted+=`||`);let t=this.set[e];for(let e=0;e0&&(this.formatted+=` `),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(g,``);let t=((this.options.includePrerelease&&m)|(this.options.loose&&h))+`:`+e,n=r.get(t);if(n)return n;let i=this.options.loose,s=i?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];e=e.replace(s,M(this.options.includePrerelease)),o(`hyphen replace`,e),e=e.replace(c[u.COMPARATORTRIM],d),o(`comparator trim`,e),e=e.replace(c[u.TILDETRIM],f),o(`tilde trim`,e),e=e.replace(c[u.CARETTRIM],p),o(`caret trim`,e);let l=e.split(` `).map(e=>x(e,this.options)).join(` `).split(/\s+/).map(e=>j(e,this.options));i&&(l=l.filter(e=>(o(`loose invalid filter`,e,this.options),!!e.match(c[u.COMPARATORLOOSE])))),o(`range list`,l);let y=/* @__PURE__ */ new Map,b=l.map(e=>new a(e,this.options));for(let e of b){if(v(e))return[e];y.set(e.value,e)}y.size>1&&y.has(``)&&y.delete(``);let S=[...y.values()];return r.set(t,S),S}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Range is required`);return this.set.some(e=>b(e,n)&&t.set.some(t=>b(t,n)&&e.every(e=>t.every(t=>e.intersects(t,n)))))}test(e){if(!e)return!1;if(typeof e==`string`)try{e=new s(e,this.options)}catch{return!1}for(let t=0;te.value===`<0.0.0-0`,y=e=>e.value===``,b=(e,t)=>{let n=!0,r=e.slice(),i=r.pop();for(;n&&r.length;)n=r.every(e=>i.intersects(e,t)),i=r.pop();return n},x=(e,t)=>(e=e.replace(c[u.BUILD],``),o(`comp`,e,t),e=E(e,t),o(`caret`,e),e=w(e,t),o(`tildes`,e),e=O(e,t),o(`xrange`,e),e=A(e,t),o(`stars`,e),e),S=e=>!e||e.toLowerCase()===`x`||e===`*`,C=(e,t,n)=>S(e)&&!S(t)||S(t)&&n&&!S(n),w=(e,t)=>e.trim().split(/\s+/).map(e=>T(e,t)).join(` `),T=(e,t)=>{let n=t.loose?c[u.TILDELOOSE]:c[u.TILDE],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`tilde`,e,t,n,i,a,s);let c;return S(n)?c=``:S(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?c=`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:s?(o(`replaceTilde pr`,s),c=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):c=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o(`tilde return`,c),c})},E=(e,t)=>e.trim().split(/\s+/).map(e=>D(e,t)).join(` `),D=(e,t)=>{o(`caret`,e,t);let n=t.loose?c[u.CARETLOOSE]:c[u.CARET],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`caret`,e,t,n,i,a,s);let c;return S(n)?c=``:S(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:S(a)?c=n===`0`?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(o(`replaceCaret pr`,s),c=n===`0`?i===`0`?`>=${n}.${i}.${a}-${s} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${s} <${+n+1}.0.0-0`):(o(`no pr`),c=n===`0`?i===`0`?`>=${n}.${i}.${a} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),o(`caret return`,c),c})},O=(e,t)=>(o(`replaceXRanges`,e,t),e.split(/\s+/).map(e=>k(e,t)).join(` `)),k=(e,t)=>{e=e.trim();let n=t.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return e.replace(n,(n,r,i,a,s,c)=>{if(o(`xRange`,e,n,r,i,a,s,c),C(i,a,s))return e;let l=S(i),u=l||S(a),d=u||S(s),f=d;return r===`=`&&f&&(r=``),c=t.includePrerelease?`-0`:``,l?n=r===`>`||r===`<`?`<0.0.0-0`:`*`:r&&f?(u&&(a=0),s=0,r===`>`?(r=`>=`,u?(i=+i+1,a=0,s=0):(a=+a+1,s=0)):r===`<=`&&(r=`<`,u?i=+i+1:a=+a+1),r===`<`&&(c=`-0`),n=`${r+i}.${a}.${s}${c}`):u?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${c} <${i}.${+a+1}.0-0`),o(`xRange return`,n),n})},A=(e,t)=>(o(`replaceStars`,e,t),e.trim().replace(c[u.STAR],``)),j=(e,t)=>(o(`replaceGTE0`,e,t),e.trim().replace(c[t.includePrerelease?u.GTE0PRE:u.GTE0],``)),M=e=>(t,n,r,i,a,o,s,c,l,u,d,f)=>(n=S(r)?``:S(i)?`>=${r}.0.0${e?`-0`:``}`:S(a)?`>=${r}.${i}.0${e?`-0`:``}`:o?`>=${n}`:`>=${n}${e?`-0`:``}`,c=S(l)?``:S(u)?`<${+l+1}.0.0-0`:S(d)?`<${l}.${+u+1}.0-0`:f?`<=${l}.${u}.${d}-${f}`:e?`<${l}.${u}.${+d+1}-0`:`<=${c}`,`${n} ${c}`.trim()),N=(e,t,n)=>{for(let n=0;n0){let r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}})),xW=/* @__PURE__ */ a(((e,t)=>{let n=Symbol(`SemVer ANY`);t.exports=class e{static get ANY(){return n}constructor(t,i){if(i=r(i),t instanceof e){if(t.loose===!!i.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(` `),s(`comparator`,t,i),this.options=i,this.loose=!!i.loose,this.parse(t),this.value=this.semver===n?``:this.operator+this.semver.version,s(`comp`,this)}parse(e){let t=this.options.loose?i[a.COMPARATORLOOSE]:i[a.COMPARATOR],r=e.match(t);if(!r)throw TypeError(`Invalid comparator: ${e}`);this.operator=r[1]===void 0?``:r[1],this.operator===`=`&&(this.operator=``),this.semver=r[2]?new c(r[2],this.options.loose):n}toString(){return this.value}test(e){if(s(`Comparator.test`,e,this.options.loose),this.semver===n||e===n)return!0;if(typeof e==`string`)try{e=new c(e,this.options)}catch{return!1}return o(e,this.operator,this.semver,this.options)}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Comparator is required`);return this.operator===``?this.value===``||new l(t.value,n).test(this.value):t.operator===``?t.value===``||new l(this.value,n).test(t.semver):(n=r(n),n.includePrerelease&&(this.value===`<0.0.0-0`||t.value===`<0.0.0-0`)||!n.includePrerelease&&(this.value.startsWith(`<0.0.0`)||t.value.startsWith(`<0.0.0`))?!1:!!(this.operator.startsWith(`>`)&&t.operator.startsWith(`>`)||this.operator.startsWith(`<`)&&t.operator.startsWith(`<`)||this.semver.version===t.semver.version&&this.operator.includes(`=`)&&t.operator.includes(`=`)||o(this.semver,`<`,t.semver,n)&&this.operator.startsWith(`>`)&&t.operator.startsWith(`<`)||o(this.semver,`>`,t.semver,n)&&this.operator.startsWith(`<`)&&t.operator.startsWith(`>`)))}};let r=sW(),{safeRe:i,t:a}=oW(),o=yW(),s=aW(),c=lW(),l=bW()})),SW=/* @__PURE__ */ a(((e,t)=>{let n=bW();t.exports=(e,t,r)=>{try{t=new n(t,r)}catch{return!1}return t.test(e)}})),Jle=/* @__PURE__ */ a(((e,t)=>{let n=bW();t.exports=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `))})),Yle=/* @__PURE__ */ a(((e,t)=>{let n=lW(),r=bW();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(a&&o.compare(e)!==-1||(a=e,o=new n(a,i)))}),a}})),Xle=/* @__PURE__ */ a(((e,t)=>{let n=lW(),r=bW();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(a&&o.compare(e)!==1||(a=e,o=new n(a,i)))}),a}})),Zle=/* @__PURE__ */ a(((e,t)=>{let n=lW(),r=bW(),i=pW();t.exports=(e,t)=>{e=new r(e,t);let a=new n(`0.0.0`);if(e.test(a)||(a=new n(`0.0.0-0`),e.test(a)))return a;a=null;for(let t=0;t{let t=new n(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!o||i(t,o))&&(o=t);break;case`<`:case`<=`:break; /* istanbul ignore next */ -default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!a||i(a,o))&&(a=o)}return a&&e.test(a)?a:null}})),Cle=/* @__PURE__ */ a(((e,t)=>{let n=YW();t.exports=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}}})),QW=/* @__PURE__ */ a(((e,t)=>{let n=RW(),r=XW(),{ANY:i}=r,a=YW(),o=ZW(),s=HW(),c=UW(),l=qW(),u=KW();t.exports=(e,t,d,f)=>{e=new n(e,f),t=new a(t,f);let p,m,h,g,v;switch(d){case`>`:p=s,m=l,h=c,g=`>`,v=`>=`;break;case`<`:p=c,m=u,h=s,g=`<`,v=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(o(e,t,f))return!1;for(let n=0;n{e.semver===i&&(e=new r(`>=0.0.0`)),o||=e,s||=e,p(e.semver,o.semver,f)?o=e:h(e.semver,s.semver,f)&&(s=e)}),o.operator===g||o.operator===v||(!s.operator||s.operator===g)&&m(e,s.semver)||s.operator===v&&h(e,s.semver))return!1}return!0}})),wle=/* @__PURE__ */ a(((e,t)=>{let n=QW();t.exports=(e,t,r)=>n(e,t,`>`,r)})),Tle=/* @__PURE__ */ a(((e,t)=>{let n=QW();t.exports=(e,t,r)=>n(e,t,`<`,r)})),Ele=/* @__PURE__ */ a(((e,t)=>{let n=YW();t.exports=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r))})),Dle=/* @__PURE__ */ a(((e,t)=>{let n=ZW(),r=BW();t.exports=(e,t,i)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>r(e,t,i));for(let e of c)n(e,t,i)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length{let n=YW(),r=XW(),{ANY:i}=r,a=ZW(),o=BW(),s=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=u(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],u=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=/* @__PURE__ */ new Set,s,u;for(let t of e)t.operator===`>`||t.operator===`>=`?s=d(s,t,n):t.operator===`<`||t.operator===`<=`?u=f(u,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(s&&u&&(p=o(s.semver,u.semver,n),p>0||p===0&&(s.operator!==`>=`||u.operator!==`<=`)))return null;for(let e of r){if(s&&!a(e,String(s),n)||u&&!a(e,String(u),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,v,y=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1,b=s&&!n.includePrerelease&&s.semver.prerelease.length?s.semver:!1;y&&y.prerelease.length===1&&u.operator===`<`&&y.prerelease[0]===0&&(y=!1);for(let e of t){if(v=v||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,s){if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),e.operator===`>`||e.operator===`>=`){if(m=d(s,e,n),m===e&&m!==s)return!1}else if(s.operator===`>=`&&!e.test(s.semver))return!1}if(u){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`<`||e.operator===`<=`){if(h=f(u,e,n),h===e&&h!==u)return!1}else if(u.operator===`<=`&&!e.test(u.semver))return!1}if(!e.operator&&(u||s)&&p!==0)return!1}return!(s&&g&&!u&&p!==0||u&&v&&!s&&p!==0||b||y)},d=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},f=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=s})),$W=/* @__PURE__ */ a(((e,t)=>{let n=FW(),r=NW(),i=RW(),a=LW();t.exports={parse:zW(),valid:ile(),clean:ale(),inc:ole(),diff:sle(),major:cle(),minor:lle(),patch:ule(),prerelease:dle(),compare:BW(),rcompare:fle(),compareLoose:ple(),compareBuild:VW(),sort:mle(),rsort:hle(),gt:HW(),lt:UW(),eq:WW(),neq:GW(),gte:KW(),lte:qW(),cmp:JW(),coerce:gle(),truncate:_le(),Comparator:XW(),Range:YW(),satisfies:ZW(),toComparators:yle(),maxSatisfying:ble(),minSatisfying:xle(),minVersion:Sle(),validRange:Cle(),outside:QW(),gtr:wle(),ltr:Tle(),intersects:Ele(),simplifyRange:Dle(),subset:Ole(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}})),kle={version:`2.2.0`,assets:{"opencode-linux-x64.tar.gz":`6d597970a8cc448f1b9a9f645532584b339dd3ab9583bb5f063f13d83e54768f`,"opencode-linux-arm64.tar.gz":`1f1ce0fc07b9245a815ffa9d652dbb80e6b0f07e5bf74ea87d2b1c0339fbac52`,"opencode-darwin-x64.zip":`cc191a1cec9b9cd0192d78dc066bbf48730639131422fa54c87c485a821ba1d5`,"opencode-darwin-arm64.zip":`c71b1cd96541539ad38e2a75377d2f43d2a27567289a14371a182e9a0800db3d`,"opencode-linux-x64-musl.tar.gz":`41779c8bb115189a2949f5638e7007c3e75a137ec72e9219dd26ae812e561623`,"opencode-linux-arm64-musl.tar.gz":`d5aa42f33abc7af1075854e9be94224219a37d98c28289cacc5544cc88f1af82`}};const eG=`opencode`,tG=`https://github.com/anomalyco/opencode/releases/download`,nG=`https://github.com/fro-bot/agent/releases/download`,rG=`+harness.`,iG=`1.19.4`,aG=kle;function Ale(e){return Mr.join(e,eG)}const jle=/^\d+\.\d+\.\d+(?:[.-][\w.-]+)?(?:\+[\w.-]+)?$/;function oG(e){return e.includes(rG)||e.includes(`-harness.`)}function sG(e){return e.includes(rG)?e.replace(rG,`-harness.`):e}function cG(e){return sG(e)}function lG(e){let t=/^v?(\d+)\./.exec(e)?.[1];return t!==void 0&&Number(t)>=2}function uG(e){return lG(e)&&!oG(e)}function dG(){let e=Hr.platform(),t=Hr.arch();if(e!==`darwin`&&e!==`linux`||t!==`x64`&&t!==`arm64`)throw Error(`Unsupported platform: ${e}/${t}. This action supports linux/darwin × x64/arm64 only (no windows).`);return{os:e,arch:t,ext:e===`darwin`?`.zip`:`.tar.gz`}}function fG(e){return(e.startsWith(`v`)?e.slice(1):e).replaceAll(`+`,`%2B`)}function pG(e){let t=e.startsWith(`v`)?e.slice(1):e;if(!jle.test(t))throw Error(`Invalid version string: "${e}". Must match semver-ish pattern (no path traversal or shell metacharacters).`)}function Mle(e,t){pG(e);let n=`opencode-${t.os}-${t.arch}${t.ext}`;if(oG(e)){let t=fG(sG(e));return`${nG}/${t}/${n}`}let r=e.startsWith(`v`)?e:`v${e}`;return`${tG}/${r}/${n}`}function Nle(e){if(pG(e),uG(e)){let t=e.startsWith(`v`)?e:`v${e}`;return`${tG}/${t}/SHA256SUMS`}if(!oG(e))throw Error(`buildChecksumsUrl requires a harness version (must contain +harness. or -harness.)`);let t=fG(sG(e));return`${nG}/${t}/SHA256SUMS`}async function mG(e,t,n,r,i,a){let o=Nle(t);i.debug(`Downloading SHA256SUMS for release`,{url:o});let s=await r.downloadTool(o),c=zr(s,`utf8`),l=`opencode-${n.os}-${n.arch}${n.ext}`,u=c.split(` -`).map(e=>e.trim()).find(e=>{let t=e.split(/\s+/);return t.length>=2&&t.at(-1)===l});if(u===void 0)throw Error(`SHA256SUMS does not contain an entry for ${l}`);let d=u.split(/\s+/)[0];if(d===void 0||d.length===0)throw Error(`Could not parse hash from SHA256SUMS line: ${u}`);if(a!==void 0&&d.toLowerCase()!==a.toLowerCase())throw Error(`SHA256SUMS entry for ${l} disagrees with the recorded digest: SHA256SUMS has ${d}, recorded ${a}`);let f=wr(`sha256`);await new Promise((t,n)=>{let r=Rr(e);r.on(`error`,n),r.on(`data`,e=>{f.update(e)}),r.on(`end`,()=>{t()})});let p=f.digest(`hex`);if(p.toLowerCase()!==d.toLowerCase())throw Error(`SHA256 mismatch for ${l}: expected ${d}, got ${p}`);i.debug(`Archive SHA256 verified`,{filename:l,hash:p})}async function hG(e,t,n,r,i=!1){try{let{stdout:i}=await r.getExecOutput(`file`,[e],{silent:!0}),a=(t===`.zip`?[`Zip archive`,`ZIP`]:[`gzip`,`tar`,`compressed`]).some(e=>i.includes(e));return a||n.warning(`Download validation failed`,{output:i.trim()}),a}catch(e){if(i)throw Error(`Could not validate download (file command unavailable): ${Ws(e)}`);return n.debug(`Could not validate download (file command unavailable)`),!0}}async function Ple(e,t,n,r,i=iG,a=aG){let o=dG();if(uG(e))return Fle(e,o,t,n,r,a);let s=n.find(eG,cG(e),o.arch);if(s.length>0)return t.info(`OpenCode found in cache`,{version:e,path:s}),{path:s,version:e,cached:!0};try{return await _G(e,o,t,n,r)}catch(n){if(oG(e))throw Error(`Harness OpenCode download/verify failed for explicit pin "${e}": ${Ws(n)}. No stock fallback is attempted for an explicit harness pin (fail-closed).`);t.warning(`Primary version install failed, trying fallback`,{requestedVersion:e,fallbackVersion:i,error:Ws(n)})}if(e!==i)try{let e=await _G(i,o,t,n,r);return t.info(`Installed fallback version`,{version:i}),e}catch(t){throw Error(`Failed to install OpenCode (tried ${e} and ${i}): ${Ws(t)}`)}throw Error(`Failed to install OpenCode version ${e}`)}function gG(e,t,n){let r=e.startsWith(`v`)?e.slice(1):e;if(r!==n.version)throw Error(`OpenCode ${e} is a V2 pin with no recorded digest: only ${n.version} is pinned in opencode-v2-pin.json. Record the digests for ${r} there before using it.`);let i=`opencode-${t.os}-${t.arch}${t.ext}`,a=n.assets[i];if(a===void 0)throw Error(`OpenCode ${e} has no recorded digest for ${i} in opencode-v2-pin.json`);let o=`sha256-${a.slice(0,16).toLowerCase()}`;return{recordedDigest:a,cacheId:o,cacheVersion:`${r}-${o}`}}async function Fle(e,t,n,r,i,a){let{recordedDigest:o,cacheVersion:s}=gG(e,t,a),c=r.find(eG,s,t.arch);if(c.length>0)return n.info(`OpenCode found in cache`,{version:e,path:c}),{path:c,version:e,cached:!0};try{return await _G(e,t,n,r,i,{recordedDigest:o,cacheVersion:s})}catch(t){throw Error(`Stock V2 OpenCode download/verify failed for pin "${e}": ${Ws(t)}. No fallback is attempted for a V2 pin (fail-closed).`)}}async function _G(e,t,n,r,i,a){n.info(`Downloading OpenCode`,{version:e});let o=Mle(e,t),s=await r.downloadTool(o);if(a!==void 0){if(await mG(s,e,t,r,n,a.recordedDigest),!await hG(s,t.ext,n,i,!0))throw Error(`Downloaded archive appears corrupted`)}else if(oG(e))await mG(s,e,t,r,n);else if(!await hG(s,t.ext,n,i))throw Error(`Downloaded archive appears corrupted`);n.info(`Extracting OpenCode`);let c=t.ext===`.zip`?await r.extractZip(s):await r.extractTar(s);n.info(`Caching OpenCode`);let l=await r.cacheDir(c,eG,a?.cacheVersion??cG(e),t.arch);return n.info(`OpenCode installed`,{version:e,path:l}),{path:l,version:e,cached:!1}}async function Ile(e,t){if(t!==void 0&&oG(t))return e.debug(`Skipping stock latest fetch for harness-pinned version`,{version:t}),t;let n=await fetch(`https://api.github.com/repos/anomalyco/opencode/releases/latest`);if(!n.ok)throw Error(`Failed to fetch latest OpenCode version: ${n.statusText}`);let r=(await n.json()).tag_name.replace(/^v/,``);return e.info(`Latest OpenCode version`,{version:r}),r}function vG(e){let t={followSymbolicLinks:!0,implicitDescendants:!0,matchDirectories:!0,omitBrokenSymbolicLinks:!0,excludeHiddenFiles:!1};return e&&(typeof e.followSymbolicLinks==`boolean`&&(t.followSymbolicLinks=e.followSymbolicLinks,W(`followSymbolicLinks '${t.followSymbolicLinks}'`)),typeof e.implicitDescendants==`boolean`&&(t.implicitDescendants=e.implicitDescendants,W(`implicitDescendants '${t.implicitDescendants}'`)),typeof e.matchDirectories==`boolean`&&(t.matchDirectories=e.matchDirectories,W(`matchDirectories '${t.matchDirectories}'`)),typeof e.omitBrokenSymbolicLinks==`boolean`&&(t.omitBrokenSymbolicLinks=e.omitBrokenSymbolicLinks,W(`omitBrokenSymbolicLinks '${t.omitBrokenSymbolicLinks}'`)),typeof e.excludeHiddenFiles==`boolean`&&(t.excludeHiddenFiles=e.excludeHiddenFiles,W(`excludeHiddenFiles '${t.excludeHiddenFiles}'`))),t}const yG=process.platform===`win32`;function bG(e){if(e=TG(e),yG&&/^\\\\[^\\]+(\\[^\\]+)?$/.test(e))return e;let t=V.dirname(e);return yG&&/^\\\\[^\\]+\\[^\\]+\\$/.test(t)&&(t=TG(t)),t}function xG(e,t){if(dr(e,`ensureAbsoluteRoot parameter 'root' must not be empty`),dr(t,`ensureAbsoluteRoot parameter 'itemPath' must not be empty`),SG(t))return t;if(yG){if(t.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)){let e=process.cwd();return dr(e.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${e}'`),t[0].toUpperCase()===e[0].toUpperCase()?t.length===2?`${t[0]}:\\${e.substr(3)}`:(e.endsWith(`\\`)||(e+=`\\`),`${t[0]}:\\${e.substr(3)}${t.substr(2)}`):`${t[0]}:\\${t.substr(2)}`}if(wG(t).match(/^\\$|^\\[^\\]/)){let e=process.cwd();return dr(e.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${e}'`),`${e[0]}:\\${t.substr(1)}`}}return dr(SG(e),`ensureAbsoluteRoot parameter 'root' must have an absolute root`),e.endsWith(`/`)||yG&&e.endsWith(`\\`)||(e+=V.sep),e+t}function SG(e){return dr(e,`hasAbsoluteRoot parameter 'itemPath' must not be empty`),e=wG(e),yG?e.startsWith(`\\\\`)||/^[A-Z]:\\/i.test(e):e.startsWith(`/`)}function CG(e){return dr(e,`isRooted parameter 'itemPath' must not be empty`),e=wG(e),yG?e.startsWith(`\\`)||/^[A-Z]:/i.test(e):e.startsWith(`/`)}function wG(e){return e||=``,yG?(e=e.replace(/\//g,`\\`),(/^\\\\+[^\\]/.test(e)?`\\`:``)+e.replace(/\\\\+/g,`\\`)):e.replace(/\/\/+/g,`/`)}function TG(e){return e?(e=wG(e),!e.endsWith(V.sep)||e===V.sep||yG&&/^[A-Z]:\\$/i.test(e)?e:e.substr(0,e.length-1)):``}var EG;(function(e){e[e.None=0]=`None`,e[e.Directory=1]=`Directory`,e[e.File=2]=`File`,e[e.All=3]=`All`})(EG||={});const DG=process.platform===`win32`;function OG(e){e=e.filter(e=>!e.negate);let t={};for(let n of e){let e=DG?n.searchPath.toUpperCase():n.searchPath;t[e]=`candidate`}let n=[];for(let r of e){let e=DG?r.searchPath.toUpperCase():r.searchPath;if(t[e]===`included`)continue;let i=!1,a=e,o=bG(a);for(;o!==a;){if(t[o]){i=!0;break}a=o,o=bG(a)}i||(n.push(r.searchPath),t[e]=`included`)}return n}function Lle(e,t){let n=EG.None;for(let r of e)r.negate?n&=~r.match(t):n|=r.match(t);return n}function Rle(e,t){return e.some(e=>!e.negate&&e.partialMatch(t))}const kG=(e,t,n)=>{let r=e instanceof RegExp?AG(e,n):e,i=t instanceof RegExp?AG(t,n):t,a=r!==null&&i!=null&&zle(r,i,n);return a&&{start:a[0],end:a[1],pre:n.slice(0,a[0]),body:n.slice(a[0]+r.length,a[1]),post:n.slice(a[1]+i.length)}},AG=(e,t)=>{let n=t.match(e);return n?n[0]:null},zle=(e,t,n)=>{let r,i,a,o,s,c=n.indexOf(e),l=n.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(r=[],a=n.length;u>=0&&!s;){if(u===c)r.push(u),c=n.indexOf(e,u+1);else if(r.length===1){let e=r.pop();e!==void 0&&(s=[e,l])}else i=r.pop(),i!==void 0&&i=0?c:l}r.length&&o!==void 0&&(s=[a,o])}return s},jG=`\0SLASH`+Math.random()+`\0`,MG=`\0OPEN`+Math.random()+`\0`,NG=`\0CLOSE`+Math.random()+`\0`,PG=`\0COMMA`+Math.random()+`\0`,FG=`\0PERIOD`+Math.random()+`\0`,Ble=new RegExp(jG,`g`),Vle=new RegExp(MG,`g`),Hle=new RegExp(NG,`g`),Ule=new RegExp(PG,`g`),Wle=new RegExp(FG,`g`),Gle=/\\\\/g,Kle=/\\{/g,qle=/\\}/g,Jle=/\\,/g,Yle=/\\\./g;function IG(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Xle(e){return e.replace(Gle,jG).replace(Kle,MG).replace(qle,NG).replace(Jle,PG).replace(Yle,FG)}function Zle(e){return e.replace(Ble,`\\`).replace(Vle,`{`).replace(Hle,`}`).replace(Ule,`,`).replace(Wle,`.`)}function LG(e,t){for(let n=0;n=t}function RG(e,t,n,r,i,a){let o=[],s=0;for(let c=0;c=r)return o;let u=e[c]+t+n[l];if(!a||u){if(s+u.length>i)return o;o.push(u),s+=u.length}}return o}function iue(e,t,n,r){let i=e.split(/\.\./),a=[]; +default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!a||i(a,o))&&(a=o)}return a&&e.test(a)?a:null}})),Qle=/* @__PURE__ */ a(((e,t)=>{let n=bW();t.exports=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}}})),CW=/* @__PURE__ */ a(((e,t)=>{let n=lW(),r=xW(),{ANY:i}=r,a=bW(),o=SW(),s=pW(),c=mW(),l=vW(),u=_W();t.exports=(e,t,d,f)=>{e=new n(e,f),t=new a(t,f);let p,m,h,g,v;switch(d){case`>`:p=s,m=l,h=c,g=`>`,v=`>=`;break;case`<`:p=c,m=u,h=s,g=`<`,v=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(o(e,t,f))return!1;for(let n=0;n{e.semver===i&&(e=new r(`>=0.0.0`)),o||=e,s||=e,p(e.semver,o.semver,f)?o=e:h(e.semver,s.semver,f)&&(s=e)}),o.operator===g||o.operator===v||(!s.operator||s.operator===g)&&m(e,s.semver)||s.operator===v&&h(e,s.semver))return!1}return!0}})),$le=/* @__PURE__ */ a(((e,t)=>{let n=CW();t.exports=(e,t,r)=>n(e,t,`>`,r)})),eue=/* @__PURE__ */ a(((e,t)=>{let n=CW();t.exports=(e,t,r)=>n(e,t,`<`,r)})),tue=/* @__PURE__ */ a(((e,t)=>{let n=bW();t.exports=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r))})),nue=/* @__PURE__ */ a(((e,t)=>{let n=SW(),r=dW();t.exports=(e,t,i)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>r(e,t,i));for(let e of c)n(e,t,i)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length{let n=bW(),r=xW(),{ANY:i}=r,a=SW(),o=dW(),s=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=u(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],u=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=/* @__PURE__ */ new Set,s,u;for(let t of e)t.operator===`>`||t.operator===`>=`?s=d(s,t,n):t.operator===`<`||t.operator===`<=`?u=f(u,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(s&&u&&(p=o(s.semver,u.semver,n),p>0||p===0&&(s.operator!==`>=`||u.operator!==`<=`)))return null;for(let e of r){if(s&&!a(e,String(s),n)||u&&!a(e,String(u),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,v,y=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1,b=s&&!n.includePrerelease&&s.semver.prerelease.length?s.semver:!1;y&&y.prerelease.length===1&&u.operator===`<`&&y.prerelease[0]===0&&(y=!1);for(let e of t){if(v=v||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,s){if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),e.operator===`>`||e.operator===`>=`){if(m=d(s,e,n),m===e&&m!==s)return!1}else if(s.operator===`>=`&&!e.test(s.semver))return!1}if(u){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`<`||e.operator===`<=`){if(h=f(u,e,n),h===e&&h!==u)return!1}else if(u.operator===`<=`&&!e.test(u.semver))return!1}if(!e.operator&&(u||s)&&p!==0)return!1}return!(s&&g&&!u&&p!==0||u&&v&&!s&&p!==0||b||y)},d=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},f=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=s})),wW=/* @__PURE__ */ a(((e,t)=>{let n=oW(),r=iW(),i=lW(),a=cW();t.exports={parse:uW(),valid:Nle(),clean:Ple(),inc:Fle(),diff:Ile(),major:Lle(),minor:Rle(),patch:zle(),prerelease:Ble(),compare:dW(),rcompare:Vle(),compareLoose:Hle(),compareBuild:fW(),sort:Ule(),rsort:Wle(),gt:pW(),lt:mW(),eq:hW(),neq:gW(),gte:_W(),lte:vW(),cmp:yW(),coerce:Gle(),truncate:Kle(),Comparator:xW(),Range:bW(),satisfies:SW(),toComparators:Jle(),maxSatisfying:Yle(),minSatisfying:Xle(),minVersion:Zle(),validRange:Qle(),outside:CW(),gtr:$le(),ltr:eue(),intersects:tue(),simplifyRange:nue(),subset:rue(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}})),iue={version:`2.2.0`,assets:{"opencode-linux-x64.tar.gz":`6d597970a8cc448f1b9a9f645532584b339dd3ab9583bb5f063f13d83e54768f`,"opencode-linux-arm64.tar.gz":`1f1ce0fc07b9245a815ffa9d652dbb80e6b0f07e5bf74ea87d2b1c0339fbac52`,"opencode-darwin-x64.zip":`cc191a1cec9b9cd0192d78dc066bbf48730639131422fa54c87c485a821ba1d5`,"opencode-darwin-arm64.zip":`c71b1cd96541539ad38e2a75377d2f43d2a27567289a14371a182e9a0800db3d`,"opencode-linux-x64-musl.tar.gz":`41779c8bb115189a2949f5638e7007c3e75a137ec72e9219dd26ae812e561623`,"opencode-linux-arm64-musl.tar.gz":`d5aa42f33abc7af1075854e9be94224219a37d98c28289cacc5544cc88f1af82`}};const TW=`opencode`,EW=`https://github.com/anomalyco/opencode/releases/download`,DW=`https://github.com/fro-bot/agent/releases/download`,OW=`+harness.`,kW=`1.19.4`,AW=iue;function aue(e){return eee.join(e,TW)}const oue=/^\d+\.\d+\.\d+(?:[.-][\w.-]+)?(?:\+[\w.-]+)?$/;function jW(e){return e.includes(OW)||e.includes(`-harness.`)}function MW(e){return e.includes(OW)?e.replace(OW,`-harness.`):e}function NW(e){return MW(e)}function PW(e){let t=/^v?(\d+)\./.exec(e)?.[1];return t!==void 0&&Number(t)>=2}function FW(e){return PW(e)&&!jW(e)}function IW(){let e=Ur.platform(),t=Ur.arch();if(e!==`darwin`&&e!==`linux`||t!==`x64`&&t!==`arm64`)throw Error(`Unsupported platform: ${e}/${t}. This action supports linux/darwin × x64/arm64 only (no windows).`);return{os:e,arch:t,ext:e===`darwin`?`.zip`:`.tar.gz`}}function LW(e){return(e.startsWith(`v`)?e.slice(1):e).replaceAll(`+`,`%2B`)}function RW(e){let t=e.startsWith(`v`)?e.slice(1):e;if(!oue.test(t))throw Error(`Invalid version string: "${e}". Must match semver-ish pattern (no path traversal or shell metacharacters).`)}function sue(e,t){RW(e);let n=`opencode-${t.os}-${t.arch}${t.ext}`;if(jW(e)){let t=LW(MW(e));return`${DW}/${t}/${n}`}let r=e.startsWith(`v`)?e:`v${e}`;return`${EW}/${r}/${n}`}function cue(e){if(RW(e),FW(e)){let t=e.startsWith(`v`)?e:`v${e}`;return`${EW}/${t}/SHA256SUMS`}if(!jW(e))throw Error(`buildChecksumsUrl requires a harness version (must contain +harness. or -harness.)`);let t=LW(MW(e));return`${DW}/${t}/SHA256SUMS`}async function zW(e,t,n,r,i,a){let o=cue(t);i.debug(`Downloading SHA256SUMS for release`,{url:o});let s=await r.downloadTool(o),c=Br(s,`utf8`),l=`opencode-${n.os}-${n.arch}${n.ext}`,u=c.split(` +`).map(e=>e.trim()).find(e=>{let t=e.split(/\s+/);return t.length>=2&&t.at(-1)===l});if(u===void 0)throw Error(`SHA256SUMS does not contain an entry for ${l}`);let d=u.split(/\s+/)[0];if(d===void 0||d.length===0)throw Error(`Could not parse hash from SHA256SUMS line: ${u}`);if(a!==void 0&&d.toLowerCase()!==a.toLowerCase())throw Error(`SHA256SUMS entry for ${l} disagrees with the recorded digest: SHA256SUMS has ${d}, recorded ${a}`);let f=Tr(`sha256`);await new Promise((t,n)=>{let r=zr(e);r.on(`error`,n),r.on(`data`,e=>{f.update(e)}),r.on(`end`,()=>{t()})});let p=f.digest(`hex`);if(p.toLowerCase()!==d.toLowerCase())throw Error(`SHA256 mismatch for ${l}: expected ${d}, got ${p}`);i.debug(`Archive SHA256 verified`,{filename:l,hash:p})}async function BW(e,t,n,r,i=!1){try{let{stdout:i}=await r.getExecOutput(`file`,[e],{silent:!0}),a=(t===`.zip`?[`Zip archive`,`ZIP`]:[`gzip`,`tar`,`compressed`]).some(e=>i.includes(e));return a||n.warning(`Download validation failed`,{output:i.trim()}),a}catch(e){if(i)throw Error(`Could not validate download (file command unavailable): ${Rs(e)}`);return n.debug(`Could not validate download (file command unavailable)`),!0}}async function lue(e,t,n,r,i=kW,a=AW){let o=IW();if(FW(e))return uue(e,o,t,n,r,a);let s=n.find(TW,NW(e),o.arch);if(s.length>0)return t.info(`OpenCode found in cache`,{version:e,path:s}),{path:s,version:e,cached:!0};try{return await HW(e,o,t,n,r)}catch(n){if(jW(e))throw Error(`Harness OpenCode download/verify failed for explicit pin "${e}": ${Rs(n)}. No stock fallback is attempted for an explicit harness pin (fail-closed).`);t.warning(`Primary version install failed, trying fallback`,{requestedVersion:e,fallbackVersion:i,error:Rs(n)})}if(e!==i)try{let e=await HW(i,o,t,n,r);return t.info(`Installed fallback version`,{version:i}),e}catch(t){throw Error(`Failed to install OpenCode (tried ${e} and ${i}): ${Rs(t)}`)}throw Error(`Failed to install OpenCode version ${e}`)}function VW(e,t,n){let r=e.startsWith(`v`)?e.slice(1):e;if(r!==n.version)throw Error(`OpenCode ${e} is a V2 pin with no recorded digest: only ${n.version} is pinned in opencode-v2-pin.json. Record the digests for ${r} there before using it.`);let i=`opencode-${t.os}-${t.arch}${t.ext}`,a=n.assets[i];if(a===void 0)throw Error(`OpenCode ${e} has no recorded digest for ${i} in opencode-v2-pin.json`);let o=`sha256-${a.slice(0,16).toLowerCase()}`;return{recordedDigest:a,cacheId:o,cacheVersion:`${r}-${o}`}}async function uue(e,t,n,r,i,a){let{recordedDigest:o,cacheVersion:s}=VW(e,t,a),c=r.find(TW,s,t.arch);if(c.length>0)return n.info(`OpenCode found in cache`,{version:e,path:c}),{path:c,version:e,cached:!0};try{return await HW(e,t,n,r,i,{recordedDigest:o,cacheVersion:s})}catch(t){throw Error(`Stock V2 OpenCode download/verify failed for pin "${e}": ${Rs(t)}. No fallback is attempted for a V2 pin (fail-closed).`)}}async function HW(e,t,n,r,i,a){n.info(`Downloading OpenCode`,{version:e});let o=sue(e,t),s=await r.downloadTool(o);if(a!==void 0){if(await zW(s,e,t,r,n,a.recordedDigest),!await BW(s,t.ext,n,i,!0))throw Error(`Downloaded archive appears corrupted`)}else if(jW(e))await zW(s,e,t,r,n);else if(!await BW(s,t.ext,n,i))throw Error(`Downloaded archive appears corrupted`);n.info(`Extracting OpenCode`);let c=t.ext===`.zip`?await r.extractZip(s):await r.extractTar(s);n.info(`Caching OpenCode`);let l=await r.cacheDir(c,TW,a?.cacheVersion??NW(e),t.arch);return n.info(`OpenCode installed`,{version:e,path:l}),{path:l,version:e,cached:!1}}async function due(e,t){if(t!==void 0&&jW(t))return e.debug(`Skipping stock latest fetch for harness-pinned version`,{version:t}),t;let n=await fetch(`https://api.github.com/repos/anomalyco/opencode/releases/latest`);if(!n.ok)throw Error(`Failed to fetch latest OpenCode version: ${n.statusText}`);let r=(await n.json()).tag_name.replace(/^v/,``);return e.info(`Latest OpenCode version`,{version:r}),r}function UW(e){let t={followSymbolicLinks:!0,implicitDescendants:!0,matchDirectories:!0,omitBrokenSymbolicLinks:!0,excludeHiddenFiles:!1};return e&&(typeof e.followSymbolicLinks==`boolean`&&(t.followSymbolicLinks=e.followSymbolicLinks,W(`followSymbolicLinks '${t.followSymbolicLinks}'`)),typeof e.implicitDescendants==`boolean`&&(t.implicitDescendants=e.implicitDescendants,W(`implicitDescendants '${t.implicitDescendants}'`)),typeof e.matchDirectories==`boolean`&&(t.matchDirectories=e.matchDirectories,W(`matchDirectories '${t.matchDirectories}'`)),typeof e.omitBrokenSymbolicLinks==`boolean`&&(t.omitBrokenSymbolicLinks=e.omitBrokenSymbolicLinks,W(`omitBrokenSymbolicLinks '${t.omitBrokenSymbolicLinks}'`)),typeof e.excludeHiddenFiles==`boolean`&&(t.excludeHiddenFiles=e.excludeHiddenFiles,W(`excludeHiddenFiles '${t.excludeHiddenFiles}'`))),t}const WW=process.platform===`win32`;function GW(e){if(e=XW(e),WW&&/^\\\\[^\\]+(\\[^\\]+)?$/.test(e))return e;let t=V.dirname(e);return WW&&/^\\\\[^\\]+\\[^\\]+\\$/.test(t)&&(t=XW(t)),t}function KW(e,t){if(dr(e,`ensureAbsoluteRoot parameter 'root' must not be empty`),dr(t,`ensureAbsoluteRoot parameter 'itemPath' must not be empty`),qW(t))return t;if(WW){if(t.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)){let e=process.cwd();return dr(e.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${e}'`),t[0].toUpperCase()===e[0].toUpperCase()?t.length===2?`${t[0]}:\\${e.substr(3)}`:(e.endsWith(`\\`)||(e+=`\\`),`${t[0]}:\\${e.substr(3)}${t.substr(2)}`):`${t[0]}:\\${t.substr(2)}`}if(YW(t).match(/^\\$|^\\[^\\]/)){let e=process.cwd();return dr(e.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${e}'`),`${e[0]}:\\${t.substr(1)}`}}return dr(qW(e),`ensureAbsoluteRoot parameter 'root' must have an absolute root`),e.endsWith(`/`)||WW&&e.endsWith(`\\`)||(e+=V.sep),e+t}function qW(e){return dr(e,`hasAbsoluteRoot parameter 'itemPath' must not be empty`),e=YW(e),WW?e.startsWith(`\\\\`)||/^[A-Z]:\\/i.test(e):e.startsWith(`/`)}function JW(e){return dr(e,`isRooted parameter 'itemPath' must not be empty`),e=YW(e),WW?e.startsWith(`\\`)||/^[A-Z]:/i.test(e):e.startsWith(`/`)}function YW(e){return e||=``,WW?(e=e.replace(/\//g,`\\`),(/^\\\\+[^\\]/.test(e)?`\\`:``)+e.replace(/\\\\+/g,`\\`)):e.replace(/\/\/+/g,`/`)}function XW(e){return e?(e=YW(e),!e.endsWith(V.sep)||e===V.sep||WW&&/^[A-Z]:\\$/i.test(e)?e:e.substr(0,e.length-1)):``}var ZW;(function(e){e[e.None=0]=`None`,e[e.Directory=1]=`Directory`,e[e.File=2]=`File`,e[e.All=3]=`All`})(ZW||={});const QW=process.platform===`win32`;function $W(e){e=e.filter(e=>!e.negate);let t={};for(let n of e){let e=QW?n.searchPath.toUpperCase():n.searchPath;t[e]=`candidate`}let n=[];for(let r of e){let e=QW?r.searchPath.toUpperCase():r.searchPath;if(t[e]===`included`)continue;let i=!1,a=e,o=GW(a);for(;o!==a;){if(t[o]){i=!0;break}a=o,o=GW(a)}i||(n.push(r.searchPath),t[e]=`included`)}return n}function fue(e,t){let n=ZW.None;for(let r of e)r.negate?n&=~r.match(t):n|=r.match(t);return n}function pue(e,t){return e.some(e=>!e.negate&&e.partialMatch(t))}const eG=(e,t,n)=>{let r=e instanceof RegExp?tG(e,n):e,i=t instanceof RegExp?tG(t,n):t,a=r!==null&&i!=null&&mue(r,i,n);return a&&{start:a[0],end:a[1],pre:n.slice(0,a[0]),body:n.slice(a[0]+r.length,a[1]),post:n.slice(a[1]+i.length)}},tG=(e,t)=>{let n=t.match(e);return n?n[0]:null},mue=(e,t,n)=>{let r,i,a,o,s,c=n.indexOf(e),l=n.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(r=[],a=n.length;u>=0&&!s;){if(u===c)r.push(u),c=n.indexOf(e,u+1);else if(r.length===1){let e=r.pop();e!==void 0&&(s=[e,l])}else i=r.pop(),i!==void 0&&i=0?c:l}r.length&&o!==void 0&&(s=[a,o])}return s},nG=`\0SLASH`+Math.random()+`\0`,rG=`\0OPEN`+Math.random()+`\0`,iG=`\0CLOSE`+Math.random()+`\0`,aG=`\0COMMA`+Math.random()+`\0`,oG=`\0PERIOD`+Math.random()+`\0`,hue=new RegExp(nG,`g`),gue=new RegExp(rG,`g`),_ue=new RegExp(iG,`g`),vue=new RegExp(aG,`g`),yue=new RegExp(oG,`g`),bue=/\\\\/g,xue=/\\{/g,Sue=/\\}/g,Cue=/\\,/g,wue=/\\\./g;function sG(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Tue(e){return e.replace(bue,nG).replace(xue,rG).replace(Sue,iG).replace(Cue,aG).replace(wue,oG)}function Eue(e){return e.replace(hue,`\\`).replace(gue,`{`).replace(_ue,`}`).replace(vue,`,`).replace(yue,`.`)}function cG(e,t){for(let n=0;n=t}function lG(e,t,n,r,i,a){let o=[],s=0;for(let c=0;c=r)return o;let u=e[c]+t+n[l];if(!a||u){if(s+u.length>i)return o;o.push(u),s+=u.length}}return o}function Nue(e,t,n,r){let i=e.split(/\.\./),a=[]; /* c8 ignore start */ if(i[0]===void 0||i[1]===void 0)return a; /* c8 ignore stop */ -let o=IG(i[0]),s=IG(i[1]),c=Math.max(i[0].length,i[1].length),l=i.length===3&&i[2]!==void 0?Math.max(Math.abs(IG(i[2])),1):1,u=nue;s0){let r=Array(t+1).join(`0`);n=e<0?`-`+r+n.slice(1):r+n}}if(f+n.length>r)break;a.push(n),f+=n.length}return a}function zG(e,t,n,r,i,a,o){if(i>r)return[e];let s=[``],c=0,l=!1,u=!0;for(;;){let d=kG(`{`,`}`,e);if(!d)return RG(s,e,[``],t,n,l);let f=d.pre;if(/\$$/.test(f)){if(s=RG(s,f+`{`+d.body+`}`,[``],t,n,l&&!d.post.length),u=!1,!d.post.length)break;e=d.post;continue}let p=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(d.body),m=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(d.body),h=p||m,g=d.body.indexOf(`,`)>=0;if(!h&&!g){if(c=t||u+r.length>n)break outer;v.push(r),u+=r.length}}}}if(s=RG(s,f,v,t,n,l&&!d.post.length),!d.post.length)break;e=d.post}return s}const BG=e=>{if(typeof e!=`string`)throw TypeError(`invalid pattern`);if(e.length>65536)throw TypeError(`pattern is too long`)},aue={"[:alnum:]":[`\\p{L}\\p{Nl}\\p{Nd}`,!0],"[:alpha:]":[`\\p{L}\\p{Nl}`,!0],"[:ascii:]":[`\\x00-\\x7f`,!1],"[:blank:]":[`\\p{Zs}\\t`,!0],"[:cntrl:]":[`\\p{Cc}`,!0],"[:digit:]":[`\\p{Nd}`,!0],"[:graph:]":[`\\p{Z}\\p{C}`,!0,!0],"[:lower:]":[`\\p{Ll}`,!0],"[:print:]":[`\\p{C}`,!0],"[:punct:]":[`\\p{P}`,!0],"[:space:]":[`\\p{Z}\\t\\r\\n\\v\\f`,!0],"[:upper:]":[`\\p{Lu}`,!0],"[:word:]":[`\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}`,!0],"[:xdigit:]":[`A-Fa-f0-9`,!1]},VG=e=>e.replace(/[[\]\\-]/g,`\\$&`),oue=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),HG=e=>e.join(``),sue=(e,t)=>{let n=t; +let o=sG(i[0]),s=sG(i[1]),c=Math.max(i[0].length,i[1].length),l=i.length===3&&i[2]!==void 0?Math.max(Math.abs(sG(i[2])),1):1,u=jue;s0){let r=Array(t+1).join(`0`);n=e<0?`-`+r+n.slice(1):r+n}}if(f+n.length>r)break;a.push(n),f+=n.length}return a}function uG(e,t,n,r,i,a,o){if(i>r)return[e];let s=[``],c=0,l=!1,u=!0;for(;;){let d=eG(`{`,`}`,e);if(!d)return lG(s,e,[``],t,n,l);let f=d.pre;if(/\$$/.test(f)){if(s=lG(s,f+`{`+d.body+`}`,[``],t,n,l&&!d.post.length),u=!1,!d.post.length)break;e=d.post;continue}let p=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(d.body),m=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(d.body),h=p||m,g=d.body.indexOf(`,`)>=0;if(!h&&!g){if(c=t||u+r.length>n)break outer;v.push(r),u+=r.length}}}}if(s=lG(s,f,v,t,n,l&&!d.post.length),!d.post.length)break;e=d.post}return s}const dG=e=>{if(typeof e!=`string`)throw TypeError(`invalid pattern`);if(e.length>65536)throw TypeError(`pattern is too long`)},Pue={"[:alnum:]":[`\\p{L}\\p{Nl}\\p{Nd}`,!0],"[:alpha:]":[`\\p{L}\\p{Nl}`,!0],"[:ascii:]":[`\\x00-\\x7f`,!1],"[:blank:]":[`\\p{Zs}\\t`,!0],"[:cntrl:]":[`\\p{Cc}`,!0],"[:digit:]":[`\\p{Nd}`,!0],"[:graph:]":[`\\p{Z}\\p{C}`,!0,!0],"[:lower:]":[`\\p{Ll}`,!0],"[:print:]":[`\\p{C}`,!0],"[:punct:]":[`\\p{P}`,!0],"[:space:]":[`\\p{Z}\\t\\r\\n\\v\\f`,!0],"[:upper:]":[`\\p{Lu}`,!0],"[:word:]":[`\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}`,!0],"[:xdigit:]":[`A-Fa-f0-9`,!1]},fG=e=>e.replace(/[[\]\\-]/g,`\\$&`),Fue=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),pG=e=>e.join(``),Iue=(e,t)=>{let n=t; /* c8 ignore start */ if(e.charAt(n)!==`[`)throw Error(`not in a brace expression`); /* c8 ignore stop */ -let r=[],i=[],a=n+1,o=!1,s=!1,c=!1,l=!1,u=n,d=``;WHILE:for(;ad?r.push(VG(d)+`-`+VG(t)):t===d&&r.push(VG(t)),d=``,a++):e.startsWith(`-]`,a+1)?(r.push(VG(t+`-`)),a+=2):e.startsWith(`-`,a+1)?(d=t,a+=2):(r.push(VG(t)),a++)}}}if(un?t?e.replace(/\[([^/\\])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^/\\])\]/g,`$1$2`).replace(/\\([^/])/g,`$1`):t?e.replace(/\[([^/\\{}])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,`$1$2`).replace(/\\([^/{}])/g,`$1`);var WG;const cue=/* @__PURE__ */ new Set([`!`,`?`,`+`,`*`,`@`]),GG=e=>cue.has(e),KG=e=>GG(e.type),lue=/* @__PURE__ */ new Map([[`!`,[`@`]],[`?`,[`?`,`@`]],[`@`,[`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`]]]),uue=/* @__PURE__ */ new Map([[`!`,[`?`]],[`@`,[`?`]],[`+`,[`?`,`*`]]]),due=/* @__PURE__ */ new Map([[`!`,[`?`,`@`]],[`?`,[`?`,`@`]],[`@`,[`?`,`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`,`?`,`*`]]]),qG=/* @__PURE__ */ new Map([[`!`,/* @__PURE__ */ new Map([[`!`,`@`]])],[`?`,/* @__PURE__ */ new Map([[`*`,`*`],[`+`,`*`]])],[`@`,/* @__PURE__ */ new Map([[`!`,`!`],[`?`,`?`],[`@`,`@`],[`*`,`*`],[`+`,`+`]])],[`+`,/* @__PURE__ */ new Map([[`?`,`*`],[`*`,`*`]])]]),JG=`(?!\\.)`,fue=/* @__PURE__ */ new Set([`[`,`.`]),pue=/* @__PURE__ */ new Set([`..`,`.`]),mue=/* @__PURE__ */ new Set(`().*{}+?[]^$\\!`),hue=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),YG=`[^/]+?`;let gue=0;var XG=class{type;#e;#t;#n=!1;#r=[];#i;#a;#o;#s=!1;#c;#l;#u=!1;id=++gue;get depth(){return(this.#i?.depth??-1)+1}[Symbol.for(`nodejs.util.inspect.custom`)](){return{"@@type":`AST`,id:this.id,type:this.type,root:this.#e.id,parent:this.#i?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(e,t,n={}){this.type=e,e&&(this.#t=!0),this.#i=t,this.#e=this.#i?this.#i.#e:this,this.#c=this.#e===this?n:this.#e.#c,this.#o=this.#e===this?[]:this.#e.#o,e===`!`&&!this.#e.#s&&this.#o.push(this),this.#a=this.#i?this.#i.#r.length:0}get hasMagic(){ +let r=[],i=[],a=n+1,o=!1,s=!1,c=!1,l=!1,u=n,d=``;WHILE:for(;ad?r.push(fG(d)+`-`+fG(t)):t===d&&r.push(fG(t)),d=``,a++):e.startsWith(`-]`,a+1)?(r.push(fG(t+`-`)),a+=2):e.startsWith(`-`,a+1)?(d=t,a+=2):(r.push(fG(t)),a++)}}}if(un?t?e.replace(/\[([^/\\])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^/\\])\]/g,`$1$2`).replace(/\\([^/])/g,`$1`):t?e.replace(/\[([^/\\{}])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,`$1$2`).replace(/\\([^/{}])/g,`$1`);var hG;const Lue=/* @__PURE__ */ new Set([`!`,`?`,`+`,`*`,`@`]),gG=e=>Lue.has(e),_G=e=>gG(e.type),Rue=/* @__PURE__ */ new Map([[`!`,[`@`]],[`?`,[`?`,`@`]],[`@`,[`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`]]]),zue=/* @__PURE__ */ new Map([[`!`,[`?`]],[`@`,[`?`]],[`+`,[`?`,`*`]]]),Bue=/* @__PURE__ */ new Map([[`!`,[`?`,`@`]],[`?`,[`?`,`@`]],[`@`,[`?`,`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`,`?`,`*`]]]),vG=/* @__PURE__ */ new Map([[`!`,/* @__PURE__ */ new Map([[`!`,`@`]])],[`?`,/* @__PURE__ */ new Map([[`*`,`*`],[`+`,`*`]])],[`@`,/* @__PURE__ */ new Map([[`!`,`!`],[`?`,`?`],[`@`,`@`],[`*`,`*`],[`+`,`+`]])],[`+`,/* @__PURE__ */ new Map([[`?`,`*`],[`*`,`*`]])]]),yG=`(?!\\.)`,Vue=/* @__PURE__ */ new Set([`[`,`.`]),Hue=/* @__PURE__ */ new Set([`..`,`.`]),Uue=/* @__PURE__ */ new Set(`().*{}+?[]^$\\!`),Wue=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),bG=`[^/]+?`;let Gue=0;var xG=class{type;#e;#t;#n=!1;#r=[];#i;#a;#o;#s=!1;#c;#l;#u=!1;id=++Gue;get depth(){return(this.#i?.depth??-1)+1}[Symbol.for(`nodejs.util.inspect.custom`)](){return{"@@type":`AST`,id:this.id,type:this.type,root:this.#e.id,parent:this.#i?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(e,t,n={}){this.type=e,e&&(this.#t=!0),this.#i=t,this.#e=this.#i?this.#i.#e:this,this.#c=this.#e===this?n:this.#e.#c,this.#o=this.#e===this?[]:this.#e.#o,e===`!`&&!this.#e.#s&&this.#o.push(this),this.#a=this.#i?this.#i.#r.length:0}get hasMagic(){ /* c8 ignore start */ if(this.#t!==void 0)return this.#t; /* c8 ignore stop */ @@ -411,103 +411,103 @@ if(typeof t==`string`)throw Error(`string part in extglob AST??`); /* c8 ignore stop */ t.copyIn(n.#r[r])}t=n,n=t.#i}}return this}push(...e){for(let t of e)if(t!==``){ /* c8 ignore start */ -if(typeof t!=`string`&&!(t instanceof WG&&t.#i===this))throw Error(`invalid part: `+t); +if(typeof t!=`string`&&!(t instanceof hG&&t.#i===this))throw Error(`invalid part: `+t); /* c8 ignore stop */ -this.#r.push(t)}}toJSON(){let e=this.type===null?this.#r.slice().map(e=>typeof e==`string`?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#i?.type===`!`)&&e.push({}),e}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#a===0)return!0;let e=this.#i;for(let t=0;ttypeof e==`string`?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#i?.type===`!`)&&e.push({}),e}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#a===0)return!0;let e=this.#i;for(let t=0;ttypeof e!=`string`),r=this.#r.map(t=>{let[r,i,a,o]=typeof t==`string`?WG.#C(t,this.#t,n):t.toRegExpSource(e);return this.#t=this.#t||a,this.#n=this.#n||o,r}).join(``),i=``;if(this.isStart()&&typeof this.#r[0]==`string`&&!(this.#r.length===1&&pue.has(this.#r[0]))){let n=fue,a=t&&n.has(r.charAt(0))||r.startsWith(`\\.`)&&n.has(r.charAt(2))||r.startsWith(`\\.\\.`)&&n.has(r.charAt(4)),o=!t&&!e&&n.has(r.charAt(0));i=a?`(?!(?:^|/)\\.\\.?(?:$|/))`:o?JG:``}let a=``;return this.isEnd()&&this.#e.#s&&this.#i?.type===`!`&&(a=`(?:$|\\/)`),[i+r+a,UG(r),this.#t=!!this.#t,this.#n]}let n=this.type===`*`||this.type===`+`,r=this.type===`!`?`(?:(?!(?:`:`(?:`,i=this.#S(t);if(this.isStart()&&this.isEnd()&&!i&&this.type!==`!`){let e=this.toString(),t=this;return t.#r=[e],t.type=null,t.#t=void 0,[e,UG(this.toString()),!1,!1]}let a=!n||e||t?``:this.#S(!0);a===i&&(a=``),a&&(i=`(?:${i})(?:${a})*?`);let o=``;if(this.type===`!`&&this.#u)o=(this.isStart()&&!t?JG:``)+YG;else{let n=this.type===`!`?`))`+(this.isStart()&&!t&&!e?JG:``)+`[^/]*?)`:this.type===`@`?`)`:this.type===`?`?`)?`:this.type===`+`&&a?`)`:this.type===`*`&&a?`)?`:`)${this.type}`;o=r+i+n}return[o,UG(i),this.#t=!!this.#t,this.#n]}#x(){if(KG(this)){let e=0,t=!1;do{t=!0;for(let e=0;e{ +let e=this.toString(),[t,n,r,i]=this.toRegExpSource();if(!(r||this.#t||this.#c.nocase&&!this.#c.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;let a=(this.#c.nocase?`i`:``)+(i?`u`:``);return Object.assign(RegExp(`^${t}$`,a),{_src:t,_glob:e})}get options(){return this.#c}toRegExpSource(e){let t=e??!!this.#c.dot;if(this.#e===this&&(this.#x(),this.#d()),!_G(this)){let n=this.isStart()&&this.isEnd()&&!this.#r.some(e=>typeof e!=`string`),r=this.#r.map(t=>{let[r,i,a,o]=typeof t==`string`?hG.#C(t,this.#t,n):t.toRegExpSource(e);return this.#t=this.#t||a,this.#n=this.#n||o,r}).join(``),i=``;if(this.isStart()&&typeof this.#r[0]==`string`&&!(this.#r.length===1&&Hue.has(this.#r[0]))){let n=Vue,a=t&&n.has(r.charAt(0))||r.startsWith(`\\.`)&&n.has(r.charAt(2))||r.startsWith(`\\.\\.`)&&n.has(r.charAt(4)),o=!t&&!e&&n.has(r.charAt(0));i=a?`(?!(?:^|/)\\.\\.?(?:$|/))`:o?yG:``}let a=``;return this.isEnd()&&this.#e.#s&&this.#i?.type===`!`&&(a=`(?:$|\\/)`),[i+r+a,mG(r),this.#t=!!this.#t,this.#n]}let n=this.type===`*`||this.type===`+`,r=this.type===`!`?`(?:(?!(?:`:`(?:`,i=this.#S(t);if(this.isStart()&&this.isEnd()&&!i&&this.type!==`!`){let e=this.toString(),t=this;return t.#r=[e],t.type=null,t.#t=void 0,[e,mG(this.toString()),!1,!1]}let a=!n||e||t?``:this.#S(!0);a===i&&(a=``),a&&(i=`(?:${i})(?:${a})*?`);let o=``;if(this.type===`!`&&this.#u)o=(this.isStart()&&!t?yG:``)+bG;else{let n=this.type===`!`?`))`+(this.isStart()&&!t&&!e?yG:``)+`[^/]*?)`:this.type===`@`?`)`:this.type===`?`?`)?`:this.type===`+`&&a?`)`:this.type===`*`&&a?`)?`:`)${this.type}`;o=r+i+n}return[o,mG(i),this.#t=!!this.#t,this.#n]}#x(){if(_G(this)){let e=0,t=!1;do{t=!0;for(let e=0;e{ /* c8 ignore start */ if(typeof t==`string`)throw Error(`string type in extglob ast??`); /* c8 ignore stop */ -let[n,r,i,a]=t.toRegExpSource(e);return this.#n=this.#n||a,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join(`|`)}static#C(e,t,n=!1){let r=!1,i=``,a=!1,o=!1;for(let s=0;sn?t?e.replace(/[?*()[\]{}]/g,`[$&]`):e.replace(/[?*()[\]\\{}]/g,`\\$&`):t?e.replace(/[?*()[\]]/g,`[$&]`):e.replace(/[?*()[\]\\]/g,`\\$&`),ZG=(e,t,n={})=>(BG(t),!n.nocomment&&t.charAt(0)===`#`?!1:new oK(t,n).match(e)),vue=/^\*+([^+@!?*[(]*)$/,yue=e=>t=>!t.startsWith(`.`)&&t.endsWith(e),bue=e=>t=>t.endsWith(e),xue=e=>(e=e.toLowerCase(),t=>!t.startsWith(`.`)&&t.toLowerCase().endsWith(e)),Sue=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Cue=/^\*+\.\*+$/,wue=e=>!e.startsWith(`.`)&&e.includes(`.`),Tue=e=>e!==`.`&&e!==`..`&&e.includes(`.`),Eue=/^\.\*+$/,Due=e=>e!==`.`&&e!==`..`&&e.startsWith(`.`),Oue=/^\*+$/,kue=e=>e.length!==0&&!e.startsWith(`.`),Aue=e=>e.length!==0&&e!==`.`&&e!==`..`,jue=/^\?+([^+@!?*[(]*)?$/,Mue=([e,t=``])=>{let n=QG([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},Nue=([e,t=``])=>{let n=$G([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},Pue=([e,t=``])=>{let n=$G([e]);return t?e=>n(e)&&e.endsWith(t):n},Fue=([e,t=``])=>{let n=QG([e]);return t?e=>n(e)&&e.endsWith(t):n},QG=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(`.`)},$G=([e])=>{let t=e.length;return e=>e.length===t&&e!==`.`&&e!==`..`},eK=typeof process==`object`&&process?typeof process.env==`object`&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:`posix`,tK={win32:{sep:`\\`},posix:{sep:`/`}};ZG.sep=eK===`win32`?tK.win32.sep:tK.posix.sep;const nK=Symbol(`globstar **`);ZG.GLOBSTAR=nK,ZG.filter=(e,t={})=>n=>ZG(n,e,t);const rK=(e,t={})=>Object.assign({},e,t);ZG.defaults=e=>{if(!e||typeof e!=`object`||!Object.keys(e).length)return ZG;let t=ZG;return Object.assign((n,r,i={})=>t(n,r,rK(e,i)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,rK(e,n))}static defaults(n){return t.defaults(rK(e,n)).Minimatch}},AST:class extends t.AST{ +let[n,r,i,a]=t.toRegExpSource(e);return this.#n=this.#n||a,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join(`|`)}static#C(e,t,n=!1){let r=!1,i=``,a=!1,o=!1;for(let s=0;sn?t?e.replace(/[?*()[\]{}]/g,`[$&]`):e.replace(/[?*()[\]\\{}]/g,`\\$&`):t?e.replace(/[?*()[\]]/g,`[$&]`):e.replace(/[?*()[\]\\]/g,`\\$&`),SG=(e,t,n={})=>(dG(t),!n.nocomment&&t.charAt(0)===`#`?!1:new jG(t,n).match(e)),que=/^\*+([^+@!?*[(]*)$/,Jue=e=>t=>!t.startsWith(`.`)&&t.endsWith(e),Yue=e=>t=>t.endsWith(e),Xue=e=>(e=e.toLowerCase(),t=>!t.startsWith(`.`)&&t.toLowerCase().endsWith(e)),Zue=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Que=/^\*+\.\*+$/,$ue=e=>!e.startsWith(`.`)&&e.includes(`.`),ede=e=>e!==`.`&&e!==`..`&&e.includes(`.`),tde=/^\.\*+$/,nde=e=>e!==`.`&&e!==`..`&&e.startsWith(`.`),rde=/^\*+$/,ide=e=>e.length!==0&&!e.startsWith(`.`),ade=e=>e.length!==0&&e!==`.`&&e!==`..`,ode=/^\?+([^+@!?*[(]*)?$/,sde=([e,t=``])=>{let n=CG([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},cde=([e,t=``])=>{let n=wG([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},lde=([e,t=``])=>{let n=wG([e]);return t?e=>n(e)&&e.endsWith(t):n},ude=([e,t=``])=>{let n=CG([e]);return t?e=>n(e)&&e.endsWith(t):n},CG=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(`.`)},wG=([e])=>{let t=e.length;return e=>e.length===t&&e!==`.`&&e!==`..`},TG=typeof process==`object`&&process?typeof process.env==`object`&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:`posix`,EG={win32:{sep:`\\`},posix:{sep:`/`}};SG.sep=TG===`win32`?EG.win32.sep:EG.posix.sep;const DG=Symbol(`globstar **`);SG.GLOBSTAR=DG,SG.filter=(e,t={})=>n=>SG(n,e,t);const OG=(e,t={})=>Object.assign({},e,t);SG.defaults=e=>{if(!e||typeof e!=`object`||!Object.keys(e).length)return SG;let t=SG;return Object.assign((n,r,i={})=>t(n,r,OG(e,i)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,OG(e,n))}static defaults(n){return t.defaults(OG(e,n)).Minimatch}},AST:class extends t.AST{ /* c8 ignore start */ -constructor(t,n,r={}){super(t,n,rK(e,r))} +constructor(t,n,r={}){super(t,n,OG(e,r))} /* c8 ignore stop */ -static fromGlob(n,r={}){return t.AST.fromGlob(n,rK(e,r))}},unescape:(n,r={})=>t.unescape(n,rK(e,r)),escape:(n,r={})=>t.escape(n,rK(e,r)),filter:(n,r={})=>t.filter(n,rK(e,r)),defaults:n=>t.defaults(rK(e,n)),makeRe:(n,r={})=>t.makeRe(n,rK(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,rK(e,r)),match:(n,r,i={})=>t.match(n,r,rK(e,i)),sep:t.sep,GLOBSTAR:nK})};const iK=(e,t={})=>(BG(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:$le(e,{max:t.braceExpandMax}));ZG.braceExpand=iK,ZG.makeRe=(e,t={})=>new oK(e,t).makeRe(),ZG.match=(e,t,n={})=>{let r=new oK(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e};const aK=/[?*]|[+@!]\(.*?\)|\[|\]/,Iue=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`);var oK=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){BG(e),t||={},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||eK,this.isWindows=this.platform===`win32`,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,`/`)),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot===void 0?!!(this.isWindows&&this.nocase):t.windowsNoMagicRoot,this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!=`string`)return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)===`#`){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){let t=e[0]===``&&e[1]===``&&(e[2]===`?`||!aK.test(e[2]))&&!aK.test(e[3]),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>e.indexOf(!1)===-1),this.isWindows)for(let e=0;e=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;(t=e.indexOf(`**`,t+1))!==-1;){let n=t;for(;e[n+1]===`**`;)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>(e=e.reduce((e,t)=>{let n=e[e.length-1];return t===`**`&&n===`**`?e:t===`..`&&n&&n!==`..`&&n!==`.`&&n!==`**`?(e.pop(),e):(e.push(t),e)},[]),e.length===0?[``]:e))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,i-r);let a=n[r+1],o=n[r+2],s=n[r+3];if(a!==`..`||!o||o===`.`||o===`..`||!s||s===`.`||s===`..`)continue;t=!0,n.splice(r,1);let c=n.slice(0);c[r]=`**`,e.push(c),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t,n=!1){let r=0,i=0,a=[],o=``;for(;r=2&&(e=this.levelTwoFileOptimize(e)),t.includes(nK)?this.#e(e,t,n,r,i):this.#n(e,t,n,r,i)}#e(e,t,n,r,i){let a=t.indexOf(nK,i),o=t.lastIndexOf(nK),[s,c,l]=n?[t.slice(i,a),t.slice(a+1),[]]:[t.slice(i,a),t.slice(a+1,o),t.slice(o+1)];if(s.length){let t=e.slice(r,r+s.length);if(!this.#n(t,s,n,0,0))return!1;r+=s.length,i+=s.length}let u=0;if(l.length){if(l.length+r>e.length)return!1;let t=e.length-l.length;if(this.#n(e,l,n,t,0))u=l.length;else{if(e[e.length-1]!==``||r+l.length===e.length||(t--,!this.#n(e,l,n,t,0)))return!1;u=l.length+1}}if(!c.length){let t=!!u;for(let n=r;nt.unescape(n,OG(e,r)),escape:(n,r={})=>t.escape(n,OG(e,r)),filter:(n,r={})=>t.filter(n,OG(e,r)),defaults:n=>t.defaults(OG(e,n)),makeRe:(n,r={})=>t.makeRe(n,OG(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,OG(e,r)),match:(n,r,i={})=>t.match(n,r,OG(e,i)),sep:t.sep,GLOBSTAR:DG})};const kG=(e,t={})=>(dG(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Oue(e,{max:t.braceExpandMax}));SG.braceExpand=kG,SG.makeRe=(e,t={})=>new jG(e,t).makeRe(),SG.match=(e,t,n={})=>{let r=new jG(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e};const AG=/[?*]|[+@!]\(.*?\)|\[|\]/,dde=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`);var jG=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){dG(e),t||={},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||TG,this.isWindows=this.platform===`win32`,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,`/`)),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot===void 0?!!(this.isWindows&&this.nocase):t.windowsNoMagicRoot,this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!=`string`)return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)===`#`){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){let t=e[0]===``&&e[1]===``&&(e[2]===`?`||!AG.test(e[2]))&&!AG.test(e[3]),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>e.indexOf(!1)===-1),this.isWindows)for(let e=0;e=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;(t=e.indexOf(`**`,t+1))!==-1;){let n=t;for(;e[n+1]===`**`;)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>(e=e.reduce((e,t)=>{let n=e[e.length-1];return t===`**`&&n===`**`?e:t===`..`&&n&&n!==`..`&&n!==`.`&&n!==`**`?(e.pop(),e):(e.push(t),e)},[]),e.length===0?[``]:e))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,i-r);let a=n[r+1],o=n[r+2],s=n[r+3];if(a!==`..`||!o||o===`.`||o===`..`||!s||s===`.`||s===`..`)continue;t=!0,n.splice(r,1);let c=n.slice(0);c[r]=`**`,e.push(c),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t,n=!1){let r=0,i=0,a=[],o=``;for(;r=2&&(e=this.levelTwoFileOptimize(e)),t.includes(DG)?this.#e(e,t,n,r,i):this.#n(e,t,n,r,i)}#e(e,t,n,r,i){let a=t.indexOf(DG,i),o=t.lastIndexOf(DG),[s,c,l]=n?[t.slice(i,a),t.slice(a+1),[]]:[t.slice(i,a),t.slice(a+1,o),t.slice(o+1)];if(s.length){let t=e.slice(r,r+s.length);if(!this.#n(t,s,n,0,0))return!1;r+=s.length,i+=s.length}let u=0;if(l.length){if(l.length+r>e.length)return!1;let t=e.length-l.length;if(this.#n(e,l,n,t,0))u=l.length;else{if(e[e.length-1]!==``||r+l.length===e.length||(t--,!this.#n(e,l,n,t,0)))return!1;u=l.length+1}}if(!c.length){let t=!!u;for(let n=r;n{let t=e.map(e=>{if(e instanceof RegExp)for(let t of e.flags.split(``))r.add(t);return typeof e==`string`?Iue(e):e===nK?nK:e._src});t.forEach((e,r)=>{let i=t[r+1],a=t[r-1];e===nK&&a!==nK&&(a===void 0?i!==void 0&&i!==nK?t[r+1]=`(?:\\/|`+n+`\\/)?`+i:t[r]=n:i===void 0?t[r-1]=a+`(?:\\/|\\/`+n+`)?`:i!==nK&&(t[r-1]=a+`(?:\\/|\\/`+n+`\\/)`+i,t[r+1]=nK))});let i=t.filter(e=>e!==nK);if(this.partial&&i.length>=1){let e=[];for(let t=1;t<=i.length;t++)e.push(i.slice(0,t).join(`/`));return`(?:`+e.join(`|`)+`)`}return i.join(`/`)}).join(`|`),[a,o]=e.length>1?[`(?:`,`)`]:[``,``];i=`^`+a+i+o+`$`,this.partial&&(i=`^(?:\\/|`+a+i.slice(1,-1)+o+`)$`),this.negate&&(i=`^(?!`+i+`).+$`);try{this.regexp=new RegExp(i,[...r].join(``))}catch{this.regexp=!1} +}braceExpand(){return kG(this.pattern,this.options)}parse(e){dG(e);let t=this.options;if(e===`**`)return DG;if(e===``)return``;let n,r=null;(n=e.match(rde))?r=t.dot?ade:ide:(n=e.match(que))?r=(t.nocase?t.dot?Zue:Xue:t.dot?Yue:Jue)(n[1]):(n=e.match(ode))?r=(t.nocase?t.dot?cde:sde:t.dot?lde:ude)(n):(n=e.match(Que))?r=t.dot?ede:$ue:(n=e.match(tde))&&(r=nde);let i=xG.fromGlob(e,this.options).toMMPattern();return r&&typeof i==`object`&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,n=t.noglobstar?`[^/]*?`:t.dot?`(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?`:`(?:(?!(?:\\/|^)\\.).)*?`,r=new Set(t.nocase?[`i`]:[]),i=e.map(e=>{let t=e.map(e=>{if(e instanceof RegExp)for(let t of e.flags.split(``))r.add(t);return typeof e==`string`?dde(e):e===DG?DG:e._src});t.forEach((e,r)=>{let i=t[r+1],a=t[r-1];e===DG&&a!==DG&&(a===void 0?i!==void 0&&i!==DG?t[r+1]=`(?:\\/|`+n+`\\/)?`+i:t[r]=n:i===void 0?t[r-1]=a+`(?:\\/|\\/`+n+`)?`:i!==DG&&(t[r-1]=a+`(?:\\/|\\/`+n+`\\/)`+i,t[r+1]=DG))});let i=t.filter(e=>e!==DG);if(this.partial&&i.length>=1){let e=[];for(let t=1;t<=i.length;t++)e.push(i.slice(0,t).join(`/`));return`(?:`+e.join(`|`)+`)`}return i.join(`/`)}).join(`|`),[a,o]=e.length>1?[`(?:`,`)`]:[``,``];i=`^`+a+i+o+`$`,this.partial&&(i=`^(?:\\/|`+a+i.slice(1,-1)+o+`)$`),this.negate&&(i=`^(?!`+i+`).+$`);try{this.regexp=new RegExp(i,[...r].join(``))}catch{this.regexp=!1} /* c8 ignore stop */ -return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split(`/`):this.isWindows&&/^\/\/[^/]+/.test(e)?[``,...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug(`match`,e,this.pattern),this.comment)return!1;if(this.empty)return e===``;if(e===`/`&&t)return!0;let n=this.options;this.isWindows&&(e=e.split(`\\`).join(`/`));let r=this.slashSplit(e);this.debug(this.pattern,`split`,r);let i=this.set;this.debug(this.pattern,`set`,i);let a=r[r.length-1];if(!a)for(let e=r.length-2;!a&&e>=0;e--)a=r[e];for(let e of i){let i=r;if(n.matchBase&&e.length===1&&(i=[a]),this.matchOne(i,e,t))return n.flipNegate?!0:!this.negate}return!n.flipNegate&&this.negate}static defaults(e){return ZG.defaults(e).Minimatch}};ZG.AST=XG,ZG.Minimatch=oK,ZG.escape=_ue,ZG.unescape=UG;const Lue=process.platform===`win32`;var sK=class{constructor(e){if(this.segments=[],typeof e==`string`){if(dr(e,`Parameter 'itemPath' must not be empty`),e=TG(e),!CG(e))this.segments=e.split(V.sep);else{let t=e,n=bG(t);for(;n!==t;){let e=V.basename(t);this.segments.unshift(e),t=n,n=bG(t)}this.segments.unshift(t)}}else{dr(e.length>0,`Parameter 'itemPath' must not be an empty array`);for(let t=0;te.getLiteral(t)).filter(e=>!o&&!(o=e===``));this.searchPath=new sK(s).toString(),this.rootRegExp=new RegExp(e.regExpEscape(s[0]),cK?`i`:``),this.isImplicitPattern=n;let c={dot:!0,nobrace:!0,nocase:cK,nocomment:!0,noext:!0,nonegate:!0};a=cK?a.replace(/\\/g,`/`):a,this.minimatch=new oK(a,c)}match(e){return this.segments[this.segments.length-1]===`**`?(e=wG(e),!e.endsWith(V.sep)&&this.isImplicitPattern===!1&&(e=`${e}${V.sep}`)):e=TG(e),this.minimatch.match(e)?this.trailingSeparator?EG.Directory:EG.All:EG.None}partialMatch(e){return e=TG(e),bG(e)===e?this.rootRegExp.test(e):this.minimatch.matchOne(e.split(cK?/\\+/:/\/+/),this.minimatch.set[0],!0)}static globEscape(e){return(cK?e:e.replace(/\\/g,`\\\\`)).replace(/(\[)(?=[^/]+\])/g,`[[]`).replace(/\?/g,`[?]`).replace(/\*/g,`[*]`)}static fixupPattern(t,n){dr(t,`pattern cannot be empty`);let r=new sK(t).segments.map(t=>e.getLiteral(t));if(dr(r.every((e,t)=>(e!==`.`||t===0)&&e!==`..`),`Invalid pattern '${t}'. Relative pathing '.' and '..' is not allowed.`),dr(!CG(t)||r[0],`Invalid pattern '${t}'. Root segment must not contain globs.`),t=wG(t),t===`.`||t.startsWith(`.${V.sep}`))t=e.globEscape(process.cwd())+t.substr(1);else if(t===`~`||t.startsWith(`~${V.sep}`))n||=Yn.homedir(),dr(n,`Unable to determine HOME directory`),dr(SG(n),`Expected HOME directory to be a rooted path. Actual '${n}'`),t=e.globEscape(n)+t.substr(1);else if(cK&&(t.match(/^[A-Z]:$/i)||t.match(/^[A-Z]:[^\\]/i))){let n=xG(`C:\\dummy-root`,t.substr(0,2));t.length>2&&!n.endsWith(`\\`)&&(n+=`\\`),t=e.globEscape(n)+t.substr(2)}else if(cK&&(t===`\\`||t.match(/^\\[^\\]/))){let n=xG(`C:\\dummy-root`,`\\`);n.endsWith(`\\`)||(n+=`\\`),t=e.globEscape(n)+t.substr(1)}else t=xG(e.globEscape(process.cwd()),t);return wG(t)}static getLiteral(e){let t=``;for(let n=0;n=0){if(r.length>1)return``;if(r){t+=r,n=i;continue}}}t+=r}}return t}static regExpEscape(e){return e.replace(/[[\\^$.|?*+()]/g,`\\$&`)}},uK=class{constructor(e,t){this.path=e,this.level=t}},dK=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Rue=function(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values==`function`?__values(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}},fK=function(e){return this instanceof fK?(this.v=e,this):new fK(e)},zue=function(e,t,n){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var r=n.apply(e,t||[]),i,a=[];return i=Object.create((typeof AsyncIterator==`function`?AsyncIterator:Object).prototype),s(`next`),s(`throw`),s(`return`,o),i[Symbol.asyncIterator]=function(){return this},i;function o(e){return function(t){return Promise.resolve(t).then(e,d)}}function s(e,t){r[e]&&(i[e]=function(t){return new Promise(function(n,r){a.push([e,t,n,r])>1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof fK?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}};const Bue=process.platform===`win32`;var Vue=class e{constructor(e){this.patterns=[],this.searchPaths=[],this.options=vG(e)}getSearchPaths(){return this.searchPaths.slice()}glob(){return dK(this,void 0,void 0,function*(){var e,t,n,r;let i=[];try{for(var a=!0,o=Rue(this.globGenerator()),s;s=yield o.next(),e=s.done,!e;a=!0){r=s.value,a=!1;let e=r;i.push(e)}}catch(e){t={error:e}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(t)throw t.error}}return i})}globGenerator(){return zue(this,arguments,function*(){let t=vG(this.options),n=[];for(let e of this.patterns)n.push(e),t.implicitDescendants&&(e.trailingSeparator||e.segments[e.segments.length-1]!==`**`)&&n.push(new lK(e.negate,!0,e.segments.concat(`**`)));let r=[];for(let e of OG(n)){W(`Search path '${e}'`);try{yield fK($n.promises.lstat(e))}catch(e){if(e.code===`ENOENT`)continue;throw e}r.unshift(new uK(e,1))}let i=[];for(;r.length;){let a=r.pop(),o=Lle(n,a.path),s=!!o||Rle(n,a.path);if(!o&&!s)continue;let c=yield fK(e.stat(a,t,i));if(c&&!(t.excludeHiddenFiles&&V.basename(a.path).match(/^\./))){if(c.isDirectory()){if(o&EG.Directory&&t.matchDirectories)yield yield fK(a.path);else if(!s)continue;let e=a.level+1,n=(yield fK($n.promises.readdir(a.path))).map(t=>new uK(V.join(a.path,t),e));r.push(...n.reverse())}else o&EG.File&&(yield yield fK(a.path))}}})}static create(t,n){return dK(this,void 0,void 0,function*(){let r=new e(n);Bue&&(t=t.replace(/\r\n/g,` +return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split(`/`):this.isWindows&&/^\/\/[^/]+/.test(e)?[``,...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug(`match`,e,this.pattern),this.comment)return!1;if(this.empty)return e===``;if(e===`/`&&t)return!0;let n=this.options;this.isWindows&&(e=e.split(`\\`).join(`/`));let r=this.slashSplit(e);this.debug(this.pattern,`split`,r);let i=this.set;this.debug(this.pattern,`set`,i);let a=r[r.length-1];if(!a)for(let e=r.length-2;!a&&e>=0;e--)a=r[e];for(let e of i){let i=r;if(n.matchBase&&e.length===1&&(i=[a]),this.matchOne(i,e,t))return n.flipNegate?!0:!this.negate}return!n.flipNegate&&this.negate}static defaults(e){return SG.defaults(e).Minimatch}};SG.AST=xG,SG.Minimatch=jG,SG.escape=Kue,SG.unescape=mG;const fde=process.platform===`win32`;var MG=class{constructor(e){if(this.segments=[],typeof e==`string`){if(dr(e,`Parameter 'itemPath' must not be empty`),e=XW(e),!JW(e))this.segments=e.split(V.sep);else{let t=e,n=GW(t);for(;n!==t;){let e=V.basename(t);this.segments.unshift(e),t=n,n=GW(t)}this.segments.unshift(t)}}else{dr(e.length>0,`Parameter 'itemPath' must not be an empty array`);for(let t=0;te.getLiteral(t)).filter(e=>!o&&!(o=e===``));this.searchPath=new MG(s).toString(),this.rootRegExp=new RegExp(e.regExpEscape(s[0]),NG?`i`:``),this.isImplicitPattern=n;let c={dot:!0,nobrace:!0,nocase:NG,nocomment:!0,noext:!0,nonegate:!0};a=NG?a.replace(/\\/g,`/`):a,this.minimatch=new jG(a,c)}match(e){return this.segments[this.segments.length-1]===`**`?(e=YW(e),!e.endsWith(V.sep)&&this.isImplicitPattern===!1&&(e=`${e}${V.sep}`)):e=XW(e),this.minimatch.match(e)?this.trailingSeparator?ZW.Directory:ZW.All:ZW.None}partialMatch(e){return e=XW(e),GW(e)===e?this.rootRegExp.test(e):this.minimatch.matchOne(e.split(NG?/\\+/:/\/+/),this.minimatch.set[0],!0)}static globEscape(e){return(NG?e:e.replace(/\\/g,`\\\\`)).replace(/(\[)(?=[^/]+\])/g,`[[]`).replace(/\?/g,`[?]`).replace(/\*/g,`[*]`)}static fixupPattern(t,n){dr(t,`pattern cannot be empty`);let r=new MG(t).segments.map(t=>e.getLiteral(t));if(dr(r.every((e,t)=>(e!==`.`||t===0)&&e!==`..`),`Invalid pattern '${t}'. Relative pathing '.' and '..' is not allowed.`),dr(!JW(t)||r[0],`Invalid pattern '${t}'. Root segment must not contain globs.`),t=YW(t),t===`.`||t.startsWith(`.${V.sep}`))t=e.globEscape(process.cwd())+t.substr(1);else if(t===`~`||t.startsWith(`~${V.sep}`))n||=Yn.homedir(),dr(n,`Unable to determine HOME directory`),dr(qW(n),`Expected HOME directory to be a rooted path. Actual '${n}'`),t=e.globEscape(n)+t.substr(1);else if(NG&&(t.match(/^[A-Z]:$/i)||t.match(/^[A-Z]:[^\\]/i))){let n=KW(`C:\\dummy-root`,t.substr(0,2));t.length>2&&!n.endsWith(`\\`)&&(n+=`\\`),t=e.globEscape(n)+t.substr(2)}else if(NG&&(t===`\\`||t.match(/^\\[^\\]/))){let n=KW(`C:\\dummy-root`,`\\`);n.endsWith(`\\`)||(n+=`\\`),t=e.globEscape(n)+t.substr(1)}else t=KW(e.globEscape(process.cwd()),t);return YW(t)}static getLiteral(e){let t=``;for(let n=0;n=0){if(r.length>1)return``;if(r){t+=r,n=i;continue}}}t+=r}}return t}static regExpEscape(e){return e.replace(/[[\\^$.|?*+()]/g,`\\$&`)}},FG=class{constructor(e,t){this.path=e,this.level=t}},IG=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},pde=function(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values==`function`?__values(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}},LG=function(e){return this instanceof LG?(this.v=e,this):new LG(e)},mde=function(e,t,n){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var r=n.apply(e,t||[]),i,a=[];return i=Object.create((typeof AsyncIterator==`function`?AsyncIterator:Object).prototype),s(`next`),s(`throw`),s(`return`,o),i[Symbol.asyncIterator]=function(){return this},i;function o(e){return function(t){return Promise.resolve(t).then(e,d)}}function s(e,t){r[e]&&(i[e]=function(t){return new Promise(function(n,r){a.push([e,t,n,r])>1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof LG?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}};const hde=process.platform===`win32`;var gde=class e{constructor(e){this.patterns=[],this.searchPaths=[],this.options=UW(e)}getSearchPaths(){return this.searchPaths.slice()}glob(){return IG(this,void 0,void 0,function*(){var e,t,n,r;let i=[];try{for(var a=!0,o=pde(this.globGenerator()),s;s=yield o.next(),e=s.done,!e;a=!0){r=s.value,a=!1;let e=r;i.push(e)}}catch(e){t={error:e}}finally{try{!a&&!e&&(n=o.return)&&(yield n.call(o))}finally{if(t)throw t.error}}return i})}globGenerator(){return mde(this,arguments,function*(){let t=UW(this.options),n=[];for(let e of this.patterns)n.push(e),t.implicitDescendants&&(e.trailingSeparator||e.segments[e.segments.length-1]!==`**`)&&n.push(new PG(e.negate,!0,e.segments.concat(`**`)));let r=[];for(let e of $W(n)){W(`Search path '${e}'`);try{yield LG($n.promises.lstat(e))}catch(e){if(e.code===`ENOENT`)continue;throw e}r.unshift(new FG(e,1))}let i=[];for(;r.length;){let a=r.pop(),o=fue(n,a.path),s=!!o||pue(n,a.path);if(!o&&!s)continue;let c=yield LG(e.stat(a,t,i));if(c&&!(t.excludeHiddenFiles&&V.basename(a.path).match(/^\./))){if(c.isDirectory()){if(o&ZW.Directory&&t.matchDirectories)yield yield LG(a.path);else if(!s)continue;let e=a.level+1,n=(yield LG($n.promises.readdir(a.path))).map(t=>new FG(V.join(a.path,t),e));r.push(...n.reverse())}else o&ZW.File&&(yield yield LG(a.path))}}})}static create(t,n){return IG(this,void 0,void 0,function*(){let r=new e(n);hde&&(t=t.replace(/\r\n/g,` `),t=t.replace(/\r/g,` `));let i=t.split(` -`).map(e=>e.trim());for(let e of i)if(!e||e.startsWith(`#`))continue;else r.patterns.push(new lK(e));return r.searchPaths.push(...OG(r.patterns)),r})}static stat(e,t,n){return dK(this,void 0,void 0,function*(){let r;if(t.followSymbolicLinks)try{r=yield $n.promises.stat(e.path)}catch(n){if(n.code===`ENOENT`){if(t.omitBrokenSymbolicLinks){W(`Broken symlink '${e.path}'`);return}throw Error(`No information found for the path '${e.path}'. This may indicate a broken symbolic link.`)}throw n}else r=yield $n.promises.lstat(e.path);if(r.isDirectory()&&t.followSymbolicLinks){let t=yield $n.promises.realpath(e.path);for(;n.length>=e.level;)n.pop();if(n.some(e=>e===t)){W(`Symlink cycle detected for path '${e.path}' and realpath '${t}'`);return}n.push(t)}return r})}},Hue=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function Uue(e,t){return Hue(this,void 0,void 0,function*(){return yield Vue.create(e,t)})}var Wue=/* @__PURE__ */ r($W(),1),pK;(function(e){e.Gzip=`cache.tgz`,e.Zstd=`cache.tzst`})(pK||={});var mK;(function(e){e.Gzip=`gzip`,e.ZstdWithoutLong=`zstd-without-long`,e.Zstd=`zstd`})(mK||={});var hK;(function(e){e.GNU=`gnu`,e.BSD=`bsd`})(hK||={});const gK=5e3,_K=5e3,vK=`${process.env.PROGRAMFILES}\\Git\\usr\\bin\\tar.exe`,Gue=`${process.env.SYSTEMDRIVE}\\Windows\\System32\\tar.exe`,yK=`cache.tar`,bK=`manifest.txt`;var xK=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Kue=function(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values==`function`?__values(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}};function SK(){return xK(this,void 0,void 0,function*(){let e=process.platform===`win32`,t=process.env.RUNNER_TEMP||``;if(!t){let n;n=e?process.env.USERPROFILE||`C:\\`:process.platform===`darwin`?`/Users`:`/home`,t=V.join(n,`actions`,`temp`)}let n=V.join(t,Qn.randomUUID());return yield cs(n),n})}function CK(e){return $n.statSync(e).size}function wK(e){return xK(this,void 0,void 0,function*(){var t,n,r,i;let a=[],o=process.env.GITHUB_WORKSPACE??process.cwd(),s=yield Uue(e.join(` -`),{implicitDescendants:!1});try{for(var c=!0,l=Kue(s.globGenerator()),u;u=yield l.next(),t=u.done,!t;c=!0){i=u.value,c=!1;let e=i,t=V.relative(o,e).replace(RegExp(`\\${V.sep}`,`g`),`/`);W(`Matched: ${t}`),t===``?a.push(`.`):a.push(`${t}`)}}catch(e){n={error:e}}finally{try{!c&&!t&&(r=l.return)&&(yield r.call(l))}finally{if(n)throw n.error}}return a})}function TK(e){return xK(this,void 0,void 0,function*(){return pr.promisify($n.unlink)(e)})}function EK(e){return xK(this,arguments,void 0,function*(e,t=[]){let n=``;t.push(`--version`),W(`Checking ${e} ${t.join(` `)}`);try{yield bs(`${e}`,t,{ignoreReturnCode:!0,silent:!0,listeners:{stdout:e=>n+=e.toString(),stderr:e=>n+=e.toString()}})}catch(e){W(e.message)}return n=n.trim(),W(n),n})}function DK(){return xK(this,void 0,void 0,function*(){let e=yield EK(`zstd`,[`--quiet`]);return W(`zstd version: ${Wue.clean(e)}`),e===``?mK.Gzip:mK.ZstdWithoutLong})}function OK(e){return e===mK.Gzip?pK.Gzip:pK.Zstd}function que(){return xK(this,void 0,void 0,function*(){return $n.existsSync(vK)?vK:(yield EK(`tar`)).toLowerCase().includes(`gnu tar`)?ls(`tar`):``})}function kK(e,t){if(t===void 0)throw Error(`Expected ${e} but value was undefiend`);return t}function AK(e,t,n=!1){let r=e.slice();return t&&r.push(t),process.platform===`win32`&&!n&&r.push(`windows-only`),r.push(`1.0`),Qn.createHash(`sha256`).update(r.join(`|`)).digest(`hex`)}function Jue(){let e=process.env.ACTIONS_RUNTIME_TOKEN;if(!e)throw Error(`Unable to get the ACTIONS_RUNTIME_TOKEN env variable`);return e}var jK=class extends Error{constructor(e){super(e),this.name=`AbortError`}};function Yue(e,...t){qn.stderr.write(`${yr.format(e,...t)}${Ur}`)}function MK(e){return qn.env[e]}typeof qn.versions.deno==`string`&&qn.versions.deno.length,typeof qn.versions.bun==`string`&&qn.versions.bun.length;const NK=MK(`DEBUG`);let PK,FK=[],IK=[];const LK=[];NK&&zK(NK);const RK=Object.assign(e=>HK(e),{enable:zK,enabled:BK,disable:Xue,log:Yue});function zK(e){PK=e,FK=[],IK=[];let t=e.split(`,`).map(e=>e.trim());for(let e of t)e.startsWith(`-`)?IK.push(e.substring(1)):FK.push(e);for(let e of LK)e.enabled=BK(e.namespace)}function BK(e){if(e.endsWith(`*`))return!0;for(let t of IK)if(VK(e,t))return!1;for(let t of FK)if(VK(e,t))return!0;return!1}function VK(e,t){if(t.indexOf(`*`)===-1)return e===t;let n=t;if(t.indexOf(`**`)!==-1){let e=[],r=``;for(let n of t)if(n===`*`&&r===`*`)continue;else r=n,e.push(n);n=e.join(``)}let r=0,i=0,a=n.length,o=e.length,s=-1,c=-1;for(;r=0){if(i=s+1,r=c+1,r===o)return!1;for(;e[r]!==n[i];)if(r++,r===o)return!1;c=r,r++,i++;continue}else return!1;let l=r===e.length,u=i===n.length,d=i===n.length-1&&n[i]===`*`;return l&&(u||d)}function Xue(){let e=PK||``;return zK(``),e}function HK(e){let t=Object.assign(n,{enabled:BK(e),destroy:Zue,log:RK.log,namespace:e,extend:Que});function n(...n){t.enabled&&(n.length>0&&(n[0]=`${e} ${n[0]}`),t.log(...n))}return LK.push(t),t}function Zue(){let e=LK.indexOf(this);return e>=0&&(LK.splice(e,1),!0)}function Que(e){let t=HK(`${this.namespace}:${e}`);return t.log=this.log,t}const UK=[`verbose`,`info`,`warning`,`error`],WK={verbose:400,info:300,warning:200,error:100};function GK(e,t){t.log=(...t)=>{e.log(...t)}}function KK(e){return UK.includes(e)}function qK(e){let t=/* @__PURE__ */ new Set,n=MK(e.logLevelEnvVarName),r,i=RK(e.namespace);i.log=(...e)=>{RK.log(...e)};function a(e){if(e&&!KK(e))throw Error(`Unknown log level '${e}'. Acceptable values: ${UK.join(`,`)}`);r=e;let n=[];for(let e of t)o(e)&&n.push(e.namespace);RK.enable(n.join(`,`))}n&&(KK(n)?a(n):console.error(`${e.logLevelEnvVarName} set to unknown log level '${n}'; logging is not enabled. Acceptable values: ${UK.join(`, `)}.`));function o(e){return!!(r&&WK[e.level]<=WK[r])}function s(e,n){let r=Object.assign(e.extend(n),{level:n});if(GK(e,r),o(r)){let e=RK.disable();RK.enable(e+`,`+r.namespace)}return t.add(r),r}function c(){return r}function l(e){let t=i.extend(e);return GK(i,t),{error:s(t,`error`),warning:s(t,`warning`),info:s(t,`info`),verbose:s(t,`verbose`)}}return{setLogLevel:a,getLogLevel:c,createClientLogger:l,logger:i}}const JK=qK({logLevelEnvVarName:`TYPESPEC_RUNTIME_LOG_LEVEL`,namespace:`typeSpecRuntime`});JK.logger;function YK(e){return JK.createClientLogger(e)}function XK(e){return e.toLowerCase()}function $ue(e){return String(e).trim().replace(/[\r\n]/g,``)}function*ede(e){for(let t of e.values())yield[t.name,t.value]}var tde=class{_headersMap;constructor(e){if(this._headersMap=/* @__PURE__ */ new Map,e)for(let t of Object.keys(e))this.set(t,e[t])}set(e,t){this._headersMap.set(XK(e),{name:e,value:$ue(t)})}get(e){return this._headersMap.get(XK(e))?.value}has(e){return this._headersMap.has(XK(e))}delete(e){this._headersMap.delete(XK(e))}toJSON(e={}){let t={};if(e.preserveCase)for(let e of this._headersMap.values())t[e.name]=e.value;else for(let[e,n]of this._headersMap)t[e]=n.value;return t}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[Symbol.iterator](){return ede(this._headersMap)}};function ZK(e){return new tde(e)}function QK(){return crypto.randomUUID()}var nde=class{url;method;headers;timeout;withCredentials;body;multipartBody;formData;streamResponseStatusCodes;enableBrowserStreams;proxySettings;disableKeepAlive;abortSignal;requestId;allowInsecureConnection;onUploadProgress;onDownloadProgress;requestOverrides;authSchemes;constructor(e){this.url=e.url,this.body=e.body,this.headers=e.headers??ZK(),this.method=e.method??`GET`,this.timeout=e.timeout??0,this.multipartBody=e.multipartBody,this.formData=e.formData,this.disableKeepAlive=e.disableKeepAlive??!1,this.proxySettings=e.proxySettings,this.streamResponseStatusCodes=e.streamResponseStatusCodes,this.withCredentials=e.withCredentials??!1,this.abortSignal=e.abortSignal,this.onUploadProgress=e.onUploadProgress,this.onDownloadProgress=e.onDownloadProgress,this.requestId=e.requestId||QK(),this.allowInsecureConnection=e.allowInsecureConnection??!1,this.enableBrowserStreams=e.enableBrowserStreams??!1,this.requestOverrides=e.requestOverrides,this.authSchemes=e.authSchemes}};function $K(e){return new nde(e)}const eq=/* @__PURE__ */ new Set([`Deserialize`,`Serialize`,`Retry`,`Sign`]);var rde=class e{_policies=[];_orderedPolicies;constructor(e){this._policies=e?.slice(0)??[],this._orderedPolicies=void 0}addPolicy(e,t={}){if(t.phase&&t.afterPhase)throw Error(`Policies inside a phase cannot specify afterPhase.`);if(t.phase&&!eq.has(t.phase))throw Error(`Invalid phase name: ${t.phase}`);if(t.afterPhase&&!eq.has(t.afterPhase))throw Error(`Invalid afterPhase name: ${t.afterPhase}`);this._policies.push({policy:e,options:t}),this._orderedPolicies=void 0}removePolicy(e){let t=[];return this._policies=this._policies.filter(n=>e.name&&n.policy.name===e.name||e.phase&&n.options.phase===e.phase?(t.push(n.policy),!1):!0),this._orderedPolicies=void 0,t}sendRequest(e,t){return this.getOrderedPolicies().reduceRight((e,t)=>n=>t.sendRequest(n,e),t=>e.sendRequest(t))(t)}getOrderedPolicies(){return this._orderedPolicies||=this.orderPolicies(),this._orderedPolicies}clone(){return new e(this._policies)}static create(){return new e}orderPolicies(){let e=[],t=/* @__PURE__ */ new Map;function n(e){return{name:e,policies:/* @__PURE__ */ new Set,hasRun:!1,hasAfterPolicies:!1}}let r=n(`Serialize`),i=n(`None`),a=n(`Deserialize`),o=n(`Retry`),s=n(`Sign`),c=[r,i,a,o,s];function l(e){return e===`Retry`?o:e===`Serialize`?r:e===`Deserialize`?a:e===`Sign`?s:i}for(let e of this._policies){let n=e.policy,r=e.options,i=n.name;if(t.has(i))throw Error(`Duplicate policy names not allowed in pipeline`);let a={policy:n,dependsOn:/* @__PURE__ */ new Set,dependants:/* @__PURE__ */ new Set};r.afterPhase&&(a.afterPhase=l(r.afterPhase),a.afterPhase.hasAfterPolicies=!0),t.set(i,a),l(r.phase).policies.add(a)}for(let e of this._policies){let{policy:n,options:r}=e,i=n.name,a=t.get(i);if(!a)throw Error(`Missing node for policy ${i}`);if(r.afterPolicies)for(let e of r.afterPolicies){let n=t.get(e);n&&(a.dependsOn.add(n),n.dependants.add(a))}if(r.beforePolicies)for(let e of r.beforePolicies){let n=t.get(e);n&&(n.dependsOn.add(a),a.dependants.add(n))}}function u(n){n.hasRun=!0;for(let r of n.policies)if((!r.afterPhase||r.afterPhase.hasRun&&!r.afterPhase.policies.size)&&r.dependsOn.size===0){e.push(r.policy);for(let e of r.dependants)e.dependsOn.delete(r);t.delete(r.policy.name),n.policies.delete(r)}}function d(){for(let e of c){if(u(e),e.policies.size>0&&e!==i){i.hasRun||u(i);return}e.hasAfterPolicies&&u(i)}}let f=0;for(;t.size>0;){f++;let t=e.length;if(d(),e.length<=t&&f>1)throw Error(`Cannot satisfy policy dependencies due to requirements cycle.`)}return e}};function ide(){return rde.create()}function tq(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function nq(e){if(tq(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}const ade=br.custom,rq=`REDACTED`,ode=/* @__PURE__ */ `x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),sde=[`api-version`];var iq=class{allowedHeaderNames;allowedQueryParameters;constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=ode.concat(e),t=sde.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let t=/* @__PURE__ */ new Set;return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{...n,name:n.name,message:n.message};if(e===`headers`&&tq(n))return this.sanitizeHeaders(n);if(e===`url`&&typeof n==`string`)return this.sanitizeUrl(n);if(e===`query`&&tq(n))return this.sanitizeQuery(n);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(n)||tq(n)){if(t.has(n))return`[Circular]`;t.add(n)}return n}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,rq);return t.toString()}sanitizeHeaders(e){let t={};for(let n of Object.keys(e))t[n]=this.allowedHeaderNames.has(n.toLowerCase())?e[n]:rq;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let n of Object.keys(e))t[n]=this.allowedQueryParameters.has(n.toLowerCase())?e[n]:rq;return t}};const cde=new iq;var aq=class e extends Error{static REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`;static PARSE_ERROR=`PARSE_ERROR`;code;statusCode;request;response;details;constructor(t,n={}){super(t),this.name=`RestError`,this.code=n.code,this.statusCode=n.statusCode,Object.defineProperty(this,"request",{value:n.request,enumerable:!1}),Object.defineProperty(this,"response",{value:n.response,enumerable:!1});let r=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,ade,{value:()=>`RestError: ${this.message} \n ${cde.sanitize({...this,request:{...this.request,agent:r},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};function oq(e){return e instanceof aq||nq(e)&&e.name===`RestError`}function lde(e,t){return Buffer.from(e).toString(t)}function sq(e,t){return Buffer.from(e,t)}const cq=YK(`ts-http-runtime`),ude={};function lq(e){return e&&typeof e.pipe==`function`}function uq(e){return e.readable===!1?Promise.resolve():new Promise(t=>{let n=()=>{t(),e.removeListener(`close`,n),e.removeListener(`end`,n),e.removeListener(`error`,n)};e.on(`close`,n),e.on(`end`,n),e.on(`error`,n)})}function dq(e){return e&&typeof e.byteLength==`number`}var fq=class extends vr{loadedBytes=0;progressCallback;_transform(e,t,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(e){n(e)}}constructor(e){super(),this.progressCallback=e}},dde=class{cachedHttpAgent;cachedHttpsAgents=/* @__PURE__ */ new WeakMap;async sendRequest(e){let t=new AbortController,n;if(e.abortSignal){if(e.abortSignal.aborted)throw new jK(`The operation was aborted. Request has already been canceled.`);n=e=>{e.type===`abort`&&t.abort()},e.abortSignal.addEventListener(`abort`,n)}let r;e.timeout>0&&(r=setTimeout(()=>{let n=new iq;cq.info(`request to '${n.sanitizeUrl(e.url)}' timed out. canceling...`),t.abort()},e.timeout));let i=e.headers.get(`Accept-Encoding`),a=i?.includes(`gzip`)||i?.includes(`deflate`),o=typeof e.body==`function`?e.body():e.body;if(o&&!e.headers.has(`Content-Length`)){let t=hde(o);t!==null&&e.headers.set(`Content-Length`,t)}let s;try{if(o&&e.onUploadProgress){let t=e.onUploadProgress,n=new fq(t);n.on(`error`,e=>{cq.error(`Error in upload progress`,e)}),lq(o)?o.pipe(n):n.end(o),o=n}let n=await this.makeRequest(e,t,o);r!==void 0&&clearTimeout(r);let i=fde(n),c={status:n.statusCode??0,headers:i,request:e};if(e.method===`HEAD`)return n.resume(),c;s=a?pde(n,i):n;let l=e.onDownloadProgress;if(l){let e=new fq(l);e.on(`error`,e=>{cq.error(`Error in download progress`,e)}),s.pipe(e),s=e}return e.streamResponseStatusCodes?.has(1/0)||e.streamResponseStatusCodes?.has(c.status)?c.readableStreamBody=s:c.bodyAsText=await mde(s),c}finally{if(e.abortSignal&&n){let t=Promise.resolve();lq(o)&&(t=uq(o));let r=Promise.resolve();lq(s)&&(r=uq(s)),Promise.all([t,r]).then(()=>{n&&e.abortSignal?.removeEventListener(`abort`,n)}).catch(e=>{cq.warning(`Error when cleaning up abortListener on httpRequest`,e)})}}}makeRequest(e,t,n){let r=new URL(e.url),i=r.protocol!==`https:`;if(i&&!e.allowInsecureConnection)throw Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let a={agent:e.agent??this.getOrCreateAgent(e,i),hostname:r.hostname,path:`${r.pathname}${r.search}`,port:r.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0}),...e.requestOverrides};return new Promise((r,o)=>{let s=i?hr.request(a,r):Jr.request(a,r);s.once(`error`,t=>{o(new aq(t.message,{code:t.code??aq.REQUEST_SEND_ERROR,request:e}))}),t.signal.addEventListener(`abort`,()=>{let e=new jK(`The operation was aborted. Rejecting from abort signal callback while making request.`);s.destroy(e),o(e)}),n&&lq(n)?n.pipe(s):n?typeof n==`string`||Buffer.isBuffer(n)?s.end(n):dq(n)?s.end(ArrayBuffer.isView(n)?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n)):(cq.error(`Unrecognized body type`,n),o(new aq(`Unrecognized body type`))):s.end()})}getOrCreateAgent(e,t){let n=e.disableKeepAlive;if(t)return n?hr.globalAgent:(this.cachedHttpAgent||=new hr.Agent({keepAlive:!0}),this.cachedHttpAgent);{if(n&&!e.tlsSettings)return Jr.globalAgent;let t=e.tlsSettings??ude,r=this.cachedHttpsAgents.get(t);return r&&r.options.keepAlive===!n||(cq.info(`No cached TLS Agent exist, creating a new Agent`),r=new Jr.Agent({keepAlive:!n,...t}),this.cachedHttpsAgents.set(t,r)),r}}};function fde(e){let t=ZK();for(let n of Object.keys(e.headers)){let r=e.headers[n];Array.isArray(r)?r.length>0&&t.set(n,r[0]):r&&t.set(n,r)}return t}function pde(e,t){let n=t.get(`Content-Encoding`);if(n===`gzip`){let t=Cr.createGunzip();return e.pipe(t),t}if(n===`deflate`){let t=Cr.createInflate();return e.pipe(t),t}return e}function mde(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>{Buffer.isBuffer(e)?r.push(e):r.push(Buffer.from(e))}),e.on(`end`,()=>{t(Buffer.concat(r).toString(`utf8`))}),e.on(`error`,e=>{e&&e?.name===`AbortError`?n(e):n(new aq(`Error reading response as text: ${e.message}`,{code:aq.PARSE_ERROR}))})})}function hde(e){return e?Buffer.isBuffer(e)?e.length:lq(e)?null:dq(e)?e.byteLength:typeof e==`string`?Buffer.from(e).length:null:0}function gde(){return new dde}function pq(){return gde()}function _de(e={}){let t=e.logger??cq.info,n=new iq({additionalAllowedHeaderNames:e.additionalAllowedHeaderNames,additionalAllowedQueryParameters:e.additionalAllowedQueryParameters});return{name:`logPolicy`,async sendRequest(e,r){if(!t.enabled)return r(e);t(`Request: ${n.sanitize(e)}`);let i=await r(e);return t(`Response status code: ${i.status}`),t(`Headers: ${n.sanitize(i.headers)}`),i}}}function vde(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}function yde(e,t){let n=t.retryDelayInMs*2**e,r=Math.min(t.maxRetryDelayInMs,n);return{retryAfterInMs:r/2+vde(0,r/2)}}function bde(e,t,n){return new Promise((r,i)=>{let a,o,s=()=>i(new jK(n?.abortErrorMsg?n?.abortErrorMsg:`The operation was aborted.`)),c=()=>{n?.abortSignal&&o&&n.abortSignal.removeEventListener(`abort`,o)};if(o=()=>(a&&clearTimeout(a),c(),s()),n?.abortSignal&&n.abortSignal.aborted)return s();a=setTimeout(()=>{c(),r(t)},e),n?.abortSignal&&n.abortSignal.addEventListener(`abort`,o)})}function xde(e,t){let n=e.headers.get(t);if(!n)return;let r=Number(n);if(!Number.isNaN(r))return r}const mq=`Retry-After`,Sde=[`retry-after-ms`,`x-ms-retry-after-ms`,mq];function hq(e){if(e&&[429,503].includes(e.status))try{for(let t of Sde){let n=xde(e,t);if(n===0||n)return n*(t===mq?1e3:1)}let t=e.headers.get(mq);if(!t)return;let n=Date.parse(t)-Date.now();return Number.isFinite(n)?Math.max(0,n):void 0}catch{return}}function Cde(e){return Number.isFinite(hq(e))}function wde(){return{name:`throttlingRetryStrategy`,retry({response:e}){let t=hq(e);return Number.isFinite(t)?{retryAfterInMs:t}:{skipStrategy:!0}}}}function Tde(e={}){let t=e.retryDelayInMs??1e3,n=e.maxRetryDelayInMs??64e3;return{name:`exponentialRetryStrategy`,retry({retryCount:r,response:i,responseError:a}){let o=Dde(a),s=o&&e.ignoreSystemErrors,c=Ede(i),l=c&&e.ignoreHttpStatusCodes;return i&&(Cde(i)||!c)||l||s?{skipStrategy:!0}:a&&!o&&!c?{errorToThrow:a}:yde(r,{retryDelayInMs:t,maxRetryDelayInMs:n})}}}function Ede(e){return!!(e&&e.status!==void 0&&(e.status>=500||e.status===408)&&e.status!==501&&e.status!==505)}function Dde(e){return e?e.code===`ETIMEDOUT`||e.code===`ESOCKETTIMEDOUT`||e.code===`ECONNREFUSED`||e.code===`ECONNRESET`||e.code===`ENOENT`||e.code===`ENOTFOUND`:!1}const Ode=YK(`ts-http-runtime retryPolicy`);function kde(e,t={maxRetries:3}){let n=t.logger||Ode;return{name:`retryPolicy`,async sendRequest(r,i){let a,o,s=-1;retryRequest:for(;;){s+=1,a=void 0,o=void 0;try{n.info(`Retry ${s}: Attempting to send request`,r.requestId),a=await i(r),n.info(`Retry ${s}: Received a response from request`,r.requestId)}catch(e){if(n.error(`Retry ${s}: Received an error from request`,r.requestId),!oq(e))throw e;o=e,a=e.response}if(r.abortSignal?.aborted)throw n.error(`Retry ${s}: Request aborted.`),new jK;if(s>=(t.maxRetries??3)){if(n.info(`Retry ${s}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),o)throw o;if(a)return a;throw Error(`Maximum retries reached with no response or error to throw`)}n.info(`Retry ${s}: Processing ${e.length} retry strategies.`);strategiesLoop:for(let t of e){let e=t.logger||n;e.info(`Retry ${s}: Processing retry strategy ${t.name}.`);let i=t.retry({retryCount:s,response:a,responseError:o});if(i.skipStrategy){e.info(`Retry ${s}: Skipped.`);continue strategiesLoop}let{errorToThrow:c,retryAfterInMs:l,redirectTo:u}=i;if(c)throw e.error(`Retry ${s}: Retry strategy ${t.name} throws error:`,c),c;if(l||l===0){e.info(`Retry ${s}: Retry strategy ${t.name} retries after ${l}`),await bde(l,void 0,{abortSignal:r.abortSignal});continue retryRequest}if(u){e.info(`Retry ${s}: Retry strategy ${t.name} redirects to ${u}`),r.url=u;continue retryRequest}}if(o)throw n.info(`None of the retry strategies could work with the received error. Throwing it.`),o;if(a)return n.info(`None of the retry strategies could work with the received response. Returning it.`),a}}}}function Ade(e={}){return{name:`defaultRetryPolicy`,sendRequest:kde([wde(),Tde(e)],{maxRetries:e.maxRetries??3}).sendRequest}}function jde(e){if(typeof FormData<`u`&&e instanceof FormData){let t={};for(let[n,r]of e.entries()){let e=t[n];Array.isArray(e)?e.push(r):t[n]=e===void 0?[r]:[e,r]}return t}}function Mde(){return{name:`formDataPolicy`,async sendRequest(e,t){let n=jde(e.body);if(n&&(e.formData=n,e.body=void 0),e.formData){let t=e.headers.get(`Content-Type`);t&&t.indexOf(`application/x-www-form-urlencoded`)!==-1?e.body=Nde(e.formData):await Pde(e.formData,e),e.formData=void 0}return t(e)}}}function Nde(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,e.toString());else t.append(n,r.toString());return t.toString()}async function Pde(e,t){let n=t.headers.get(`Content-Type`);if(n&&!n.startsWith(`multipart/form-data`))return;t.headers.set(`Content-Type`,n??`multipart/form-data`);let r=[];for(let[t,n]of Object.entries(e))for(let e of Array.isArray(n)?n:[n])if(typeof e==`string`)r.push({headers:ZK({"Content-Disposition":`form-data; name="${t}"`}),body:sq(e,`utf-8`)});else if(typeof e!=`object`||!e)throw Error(`Unexpected value for key ${t}: ${e}. Value should be serialized to string first.`);else{let n=e.name||`blob`,i=ZK();i.set(`Content-Disposition`,`form-data; name="${t}"; filename="${n}"`),i.set(`Content-Type`,e.type||`application/octet-stream`),r.push({headers:i,body:e})}t.multipartBody={parts:r}}function Fde(e){return{name:`agentPolicy`,sendRequest:async(t,n)=>(t.agent||=e,n(t))}}function Ide(e){return{name:`tlsPolicy`,sendRequest:async(t,n)=>(t.tlsSettings||=e,n(t))}}var Lde=/* @__PURE__ */ a(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),gq=/* @__PURE__ */ a(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=Lde(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),Rde=/* @__PURE__ */ a(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=/* @__PURE__ */ `#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=gq()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),zde=/* @__PURE__ */ i({createSupportsColor:()=>vq,default:()=>xq});function _q(e,t=globalThis.Deno?globalThis.Deno.args:qn.argv){let n=e.startsWith(`-`)?``:e.length===1?`-`:`--`,r=t.indexOf(n+e),i=t.indexOf(`--`);return r!==-1&&(i===-1||r=2,has16m:e>=3}}function Hde(e,{streamIsTTY:t,sniffFlags:n=!0}={}){let r=Bde();r!==void 0&&(bq=r);let i=n?bq:r;if(i===0)return 0;if(n){if(_q(`color=16m`)||_q(`color=full`)||_q(`color=truecolor`))return 3;if(_q(`color=256`))return 2}if(`TF_BUILD`in yq&&`AGENT_NAME`in yq)return 1;if(e&&!t&&i===void 0)return 0;let a=i||0;if(yq.TERM===`dumb`)return a;if(qn.platform===`win32`){let e=Hr.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in yq)return[`GITHUB_ACTIONS`,`GITEA_ACTIONS`,`CIRCLECI`].some(e=>e in yq)?3:[`TRAVIS`,`APPVEYOR`,`GITLAB_CI`,`BUILDKITE`,`DRONE`].some(e=>e in yq)||yq.CI_NAME===`codeship`?1:a;if(`TEAMCITY_VERSION`in yq)return+!!/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(yq.TEAMCITY_VERSION);if(yq.COLORTERM===`truecolor`||yq.TERM===`xterm-kitty`||yq.TERM===`xterm-ghostty`||yq.TERM===`wezterm`)return 3;if(`TERM_PROGRAM`in yq){let e=Number.parseInt((yq.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(yq.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(yq.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(yq.TERM)||`COLORTERM`in yq?1:a}function vq(e,t={}){return Vde(Hde(e,{streamIsTTY:e&&e.isTTY,...t}))}var yq,bq,xq,Ude=n((()=>{({env:yq}=qn),_q(`no-color`)||_q(`no-colors`)||_q(`color=false`)||_q(`color=never`)?bq=0:(_q(`color`)||_q(`colors`)||_q(`color=true`)||_q(`color=always`))&&(bq=1),xq={stdout:vq({isTTY:Qr.isatty(1)}),stderr:vq({isTTY:Qr.isatty(2)})}})),Wde=/* @__PURE__ */ a(((n,r)=>{let i=t(`tty`),a=t(`util`);n.init=f,n.log=l,n.formatArgs=s,n.save=u,n.load=d,n.useColors=o,n.destroy=a.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),n.colors=[6,2,3,4,5,1];try{let t=(Ude(),e(zde));t&&(t.stderr||t).level>=2&&(n.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}n.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function o(){return`colors`in n.inspectOpts?!!n.inspectOpts.colors:i.isatty(process.stderr.fd)}function s(e){let{namespace:t,useColors:n}=this;if(n){let n=this.color,i=`\x1B[3`+(n<8?n:`8;5;`+n),a=` ${i};1m${t} \u001B[0m`;e[0]=a+e[0].split(` +`).map(e=>e.trim());for(let e of i)if(!e||e.startsWith(`#`))continue;else r.patterns.push(new PG(e));return r.searchPaths.push(...$W(r.patterns)),r})}static stat(e,t,n){return IG(this,void 0,void 0,function*(){let r;if(t.followSymbolicLinks)try{r=yield $n.promises.stat(e.path)}catch(n){if(n.code===`ENOENT`){if(t.omitBrokenSymbolicLinks){W(`Broken symlink '${e.path}'`);return}throw Error(`No information found for the path '${e.path}'. This may indicate a broken symbolic link.`)}throw n}else r=yield $n.promises.lstat(e.path);if(r.isDirectory()&&t.followSymbolicLinks){let t=yield $n.promises.realpath(e.path);for(;n.length>=e.level;)n.pop();if(n.some(e=>e===t)){W(`Symlink cycle detected for path '${e.path}' and realpath '${t}'`);return}n.push(t)}return r})}},_de=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function vde(e,t){return _de(this,void 0,void 0,function*(){return yield gde.create(e,t)})}var yde=/* @__PURE__ */ r(wW(),1),RG;(function(e){e.Gzip=`cache.tgz`,e.Zstd=`cache.tzst`})(RG||={});var zG;(function(e){e.Gzip=`gzip`,e.ZstdWithoutLong=`zstd-without-long`,e.Zstd=`zstd`})(zG||={});var BG;(function(e){e.GNU=`gnu`,e.BSD=`bsd`})(BG||={});const VG=5e3,HG=5e3,UG=`${process.env.PROGRAMFILES}\\Git\\usr\\bin\\tar.exe`,bde=`${process.env.SYSTEMDRIVE}\\Windows\\System32\\tar.exe`,WG=`cache.tar`,GG=`manifest.txt`;var KG=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},xde=function(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof __values==`function`?__values(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}};function qG(){return KG(this,void 0,void 0,function*(){let e=process.platform===`win32`,t=process.env.RUNNER_TEMP||``;if(!t){let n;n=e?process.env.USERPROFILE||`C:\\`:process.platform===`darwin`?`/Users`:`/home`,t=V.join(n,`actions`,`temp`)}let n=V.join(t,Qn.randomUUID());return yield ls(n),n})}function JG(e){return $n.statSync(e).size}function YG(e){return KG(this,void 0,void 0,function*(){var t,n,r,i;let a=[],o=process.env.GITHUB_WORKSPACE??process.cwd(),s=yield vde(e.join(` +`),{implicitDescendants:!1});try{for(var c=!0,l=xde(s.globGenerator()),u;u=yield l.next(),t=u.done,!t;c=!0){i=u.value,c=!1;let e=i,t=V.relative(o,e).replace(RegExp(`\\${V.sep}`,`g`),`/`);W(`Matched: ${t}`),t===``?a.push(`.`):a.push(`${t}`)}}catch(e){n={error:e}}finally{try{!c&&!t&&(r=l.return)&&(yield r.call(l))}finally{if(n)throw n.error}}return a})}function XG(e){return KG(this,void 0,void 0,function*(){return pr.promisify($n.unlink)(e)})}function ZG(e){return KG(this,arguments,void 0,function*(e,t=[]){let n=``;t.push(`--version`),W(`Checking ${e} ${t.join(` `)}`);try{yield xs(`${e}`,t,{ignoreReturnCode:!0,silent:!0,listeners:{stdout:e=>n+=e.toString(),stderr:e=>n+=e.toString()}})}catch(e){W(e.message)}return n=n.trim(),W(n),n})}function QG(){return KG(this,void 0,void 0,function*(){let e=yield ZG(`zstd`,[`--quiet`]);return W(`zstd version: ${yde.clean(e)}`),e===``?zG.Gzip:zG.ZstdWithoutLong})}function $G(e){return e===zG.Gzip?RG.Gzip:RG.Zstd}function Sde(){return KG(this,void 0,void 0,function*(){return $n.existsSync(UG)?UG:(yield ZG(`tar`)).toLowerCase().includes(`gnu tar`)?us(`tar`):``})}function eK(e,t){if(t===void 0)throw Error(`Expected ${e} but value was undefiend`);return t}function tK(e,t,n=!1){let r=e.slice();return t&&r.push(t),process.platform===`win32`&&!n&&r.push(`windows-only`),r.push(`1.0`),Qn.createHash(`sha256`).update(r.join(`|`)).digest(`hex`)}function Cde(){let e=process.env.ACTIONS_RUNTIME_TOKEN;if(!e)throw Error(`Unable to get the ACTIONS_RUNTIME_TOKEN env variable`);return e}var nK=class extends Error{constructor(e){super(e),this.name=`AbortError`}};function wde(e,...t){qn.stderr.write(`${br.format(e,...t)}${Wr}`)}function rK(e){return qn.env[e]}typeof qn.versions.deno==`string`&&qn.versions.deno.length,typeof qn.versions.bun==`string`&&qn.versions.bun.length;const iK=rK(`DEBUG`);let aK,oK=[],sK=[];const cK=[];iK&&uK(iK);const lK=Object.assign(e=>pK(e),{enable:uK,enabled:dK,disable:Tde,log:wde});function uK(e){aK=e,oK=[],sK=[];let t=e.split(`,`).map(e=>e.trim());for(let e of t)e.startsWith(`-`)?sK.push(e.substring(1)):oK.push(e);for(let e of cK)e.enabled=dK(e.namespace)}function dK(e){if(e.endsWith(`*`))return!0;for(let t of sK)if(fK(e,t))return!1;for(let t of oK)if(fK(e,t))return!0;return!1}function fK(e,t){if(t.indexOf(`*`)===-1)return e===t;let n=t;if(t.indexOf(`**`)!==-1){let e=[],r=``;for(let n of t)if(n===`*`&&r===`*`)continue;else r=n,e.push(n);n=e.join(``)}let r=0,i=0,a=n.length,o=e.length,s=-1,c=-1;for(;r=0){if(i=s+1,r=c+1,r===o)return!1;for(;e[r]!==n[i];)if(r++,r===o)return!1;c=r,r++,i++;continue}else return!1;let l=r===e.length,u=i===n.length,d=i===n.length-1&&n[i]===`*`;return l&&(u||d)}function Tde(){let e=aK||``;return uK(``),e}function pK(e){let t=Object.assign(n,{enabled:dK(e),destroy:Ede,log:lK.log,namespace:e,extend:Dde});function n(...n){t.enabled&&(n.length>0&&(n[0]=`${e} ${n[0]}`),t.log(...n))}return cK.push(t),t}function Ede(){let e=cK.indexOf(this);return e>=0&&(cK.splice(e,1),!0)}function Dde(e){let t=pK(`${this.namespace}:${e}`);return t.log=this.log,t}const mK=[`verbose`,`info`,`warning`,`error`],hK={verbose:400,info:300,warning:200,error:100};function gK(e,t){t.log=(...t)=>{e.log(...t)}}function _K(e){return mK.includes(e)}function vK(e){let t=/* @__PURE__ */ new Set,n=rK(e.logLevelEnvVarName),r,i=lK(e.namespace);i.log=(...e)=>{lK.log(...e)};function a(e){if(e&&!_K(e))throw Error(`Unknown log level '${e}'. Acceptable values: ${mK.join(`,`)}`);r=e;let n=[];for(let e of t)o(e)&&n.push(e.namespace);lK.enable(n.join(`,`))}n&&(_K(n)?a(n):console.error(`${e.logLevelEnvVarName} set to unknown log level '${n}'; logging is not enabled. Acceptable values: ${mK.join(`, `)}.`));function o(e){return!!(r&&hK[e.level]<=hK[r])}function s(e,n){let r=Object.assign(e.extend(n),{level:n});if(gK(e,r),o(r)){let e=lK.disable();lK.enable(e+`,`+r.namespace)}return t.add(r),r}function c(){return r}function l(e){let t=i.extend(e);return gK(i,t),{error:s(t,`error`),warning:s(t,`warning`),info:s(t,`info`),verbose:s(t,`verbose`)}}return{setLogLevel:a,getLogLevel:c,createClientLogger:l,logger:i}}const yK=vK({logLevelEnvVarName:`TYPESPEC_RUNTIME_LOG_LEVEL`,namespace:`typeSpecRuntime`});yK.logger;function bK(e){return yK.createClientLogger(e)}function xK(e){return e.toLowerCase()}function Ode(e){return String(e).trim().replace(/[\r\n]/g,``)}function*kde(e){for(let t of e.values())yield[t.name,t.value]}var Ade=class{_headersMap;constructor(e){if(this._headersMap=/* @__PURE__ */ new Map,e)for(let t of Object.keys(e))this.set(t,e[t])}set(e,t){this._headersMap.set(xK(e),{name:e,value:Ode(t)})}get(e){return this._headersMap.get(xK(e))?.value}has(e){return this._headersMap.has(xK(e))}delete(e){this._headersMap.delete(xK(e))}toJSON(e={}){let t={};if(e.preserveCase)for(let e of this._headersMap.values())t[e.name]=e.value;else for(let[e,n]of this._headersMap)t[e]=n.value;return t}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[Symbol.iterator](){return kde(this._headersMap)}};function SK(e){return new Ade(e)}function CK(){return crypto.randomUUID()}var jde=class{url;method;headers;timeout;withCredentials;body;multipartBody;formData;streamResponseStatusCodes;enableBrowserStreams;proxySettings;disableKeepAlive;abortSignal;requestId;allowInsecureConnection;onUploadProgress;onDownloadProgress;requestOverrides;authSchemes;constructor(e){this.url=e.url,this.body=e.body,this.headers=e.headers??SK(),this.method=e.method??`GET`,this.timeout=e.timeout??0,this.multipartBody=e.multipartBody,this.formData=e.formData,this.disableKeepAlive=e.disableKeepAlive??!1,this.proxySettings=e.proxySettings,this.streamResponseStatusCodes=e.streamResponseStatusCodes,this.withCredentials=e.withCredentials??!1,this.abortSignal=e.abortSignal,this.onUploadProgress=e.onUploadProgress,this.onDownloadProgress=e.onDownloadProgress,this.requestId=e.requestId||CK(),this.allowInsecureConnection=e.allowInsecureConnection??!1,this.enableBrowserStreams=e.enableBrowserStreams??!1,this.requestOverrides=e.requestOverrides,this.authSchemes=e.authSchemes}};function wK(e){return new jde(e)}const TK=/* @__PURE__ */ new Set([`Deserialize`,`Serialize`,`Retry`,`Sign`]);var Mde=class e{_policies=[];_orderedPolicies;constructor(e){this._policies=e?.slice(0)??[],this._orderedPolicies=void 0}addPolicy(e,t={}){if(t.phase&&t.afterPhase)throw Error(`Policies inside a phase cannot specify afterPhase.`);if(t.phase&&!TK.has(t.phase))throw Error(`Invalid phase name: ${t.phase}`);if(t.afterPhase&&!TK.has(t.afterPhase))throw Error(`Invalid afterPhase name: ${t.afterPhase}`);this._policies.push({policy:e,options:t}),this._orderedPolicies=void 0}removePolicy(e){let t=[];return this._policies=this._policies.filter(n=>e.name&&n.policy.name===e.name||e.phase&&n.options.phase===e.phase?(t.push(n.policy),!1):!0),this._orderedPolicies=void 0,t}sendRequest(e,t){return this.getOrderedPolicies().reduceRight((e,t)=>n=>t.sendRequest(n,e),t=>e.sendRequest(t))(t)}getOrderedPolicies(){return this._orderedPolicies||=this.orderPolicies(),this._orderedPolicies}clone(){return new e(this._policies)}static create(){return new e}orderPolicies(){let e=[],t=/* @__PURE__ */ new Map;function n(e){return{name:e,policies:/* @__PURE__ */ new Set,hasRun:!1,hasAfterPolicies:!1}}let r=n(`Serialize`),i=n(`None`),a=n(`Deserialize`),o=n(`Retry`),s=n(`Sign`),c=[r,i,a,o,s];function l(e){return e===`Retry`?o:e===`Serialize`?r:e===`Deserialize`?a:e===`Sign`?s:i}for(let e of this._policies){let n=e.policy,r=e.options,i=n.name;if(t.has(i))throw Error(`Duplicate policy names not allowed in pipeline`);let a={policy:n,dependsOn:/* @__PURE__ */ new Set,dependants:/* @__PURE__ */ new Set};r.afterPhase&&(a.afterPhase=l(r.afterPhase),a.afterPhase.hasAfterPolicies=!0),t.set(i,a),l(r.phase).policies.add(a)}for(let e of this._policies){let{policy:n,options:r}=e,i=n.name,a=t.get(i);if(!a)throw Error(`Missing node for policy ${i}`);if(r.afterPolicies)for(let e of r.afterPolicies){let n=t.get(e);n&&(a.dependsOn.add(n),n.dependants.add(a))}if(r.beforePolicies)for(let e of r.beforePolicies){let n=t.get(e);n&&(n.dependsOn.add(a),a.dependants.add(n))}}function u(n){n.hasRun=!0;for(let r of n.policies)if((!r.afterPhase||r.afterPhase.hasRun&&!r.afterPhase.policies.size)&&r.dependsOn.size===0){e.push(r.policy);for(let e of r.dependants)e.dependsOn.delete(r);t.delete(r.policy.name),n.policies.delete(r)}}function d(){for(let e of c){if(u(e),e.policies.size>0&&e!==i){i.hasRun||u(i);return}e.hasAfterPolicies&&u(i)}}let f=0;for(;t.size>0;){f++;let t=e.length;if(d(),e.length<=t&&f>1)throw Error(`Cannot satisfy policy dependencies due to requirements cycle.`)}return e}};function Nde(){return Mde.create()}function EK(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function DK(e){if(EK(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}const Pde=xr.custom,OK=`REDACTED`,Fde=/* @__PURE__ */ `x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),Ide=[`api-version`];var kK=class{allowedHeaderNames;allowedQueryParameters;constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=Fde.concat(e),t=Ide.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let t=/* @__PURE__ */ new Set;return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{...n,name:n.name,message:n.message};if(e===`headers`&&EK(n))return this.sanitizeHeaders(n);if(e===`url`&&typeof n==`string`)return this.sanitizeUrl(n);if(e===`query`&&EK(n))return this.sanitizeQuery(n);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(n)||EK(n)){if(t.has(n))return`[Circular]`;t.add(n)}return n}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,OK);return t.toString()}sanitizeHeaders(e){let t={};for(let n of Object.keys(e))t[n]=this.allowedHeaderNames.has(n.toLowerCase())?e[n]:OK;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let n of Object.keys(e))t[n]=this.allowedQueryParameters.has(n.toLowerCase())?e[n]:OK;return t}};const Lde=new kK;var AK=class e extends Error{static REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`;static PARSE_ERROR=`PARSE_ERROR`;code;statusCode;request;response;details;constructor(t,n={}){super(t),this.name=`RestError`,this.code=n.code,this.statusCode=n.statusCode,Object.defineProperty(this,"request",{value:n.request,enumerable:!1}),Object.defineProperty(this,"response",{value:n.response,enumerable:!1});let r=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,Pde,{value:()=>`RestError: ${this.message} \n ${Lde.sanitize({...this,request:{...this.request,agent:r},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};function jK(e){return e instanceof AK||DK(e)&&e.name===`RestError`}function Rde(e,t){return Buffer.from(e).toString(t)}function MK(e,t){return Buffer.from(e,t)}const NK=bK(`ts-http-runtime`),zde={};function PK(e){return e&&typeof e.pipe==`function`}function FK(e){return e.readable===!1?Promise.resolve():new Promise(t=>{let n=()=>{t(),e.removeListener(`close`,n),e.removeListener(`end`,n),e.removeListener(`error`,n)};e.on(`close`,n),e.on(`end`,n),e.on(`error`,n)})}function IK(e){return e&&typeof e.byteLength==`number`}var LK=class extends yr{loadedBytes=0;progressCallback;_transform(e,t,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(e){n(e)}}constructor(e){super(),this.progressCallback=e}},Bde=class{cachedHttpAgent;cachedHttpsAgents=/* @__PURE__ */ new WeakMap;async sendRequest(e){let t=new AbortController,n;if(e.abortSignal){if(e.abortSignal.aborted)throw new nK(`The operation was aborted. Request has already been canceled.`);n=e=>{e.type===`abort`&&t.abort()},e.abortSignal.addEventListener(`abort`,n)}let r;e.timeout>0&&(r=setTimeout(()=>{let n=new kK;NK.info(`request to '${n.sanitizeUrl(e.url)}' timed out. canceling...`),t.abort()},e.timeout));let i=e.headers.get(`Accept-Encoding`),a=i?.includes(`gzip`)||i?.includes(`deflate`),o=typeof e.body==`function`?e.body():e.body;if(o&&!e.headers.has(`Content-Length`)){let t=Wde(o);t!==null&&e.headers.set(`Content-Length`,t)}let s;try{if(o&&e.onUploadProgress){let t=e.onUploadProgress,n=new LK(t);n.on(`error`,e=>{NK.error(`Error in upload progress`,e)}),PK(o)?o.pipe(n):n.end(o),o=n}let n=await this.makeRequest(e,t,o);r!==void 0&&clearTimeout(r);let i=Vde(n),c={status:n.statusCode??0,headers:i,request:e};if(e.method===`HEAD`)return n.resume(),c;s=a?Hde(n,i):n;let l=e.onDownloadProgress;if(l){let e=new LK(l);e.on(`error`,e=>{NK.error(`Error in download progress`,e)}),s.pipe(e),s=e}return e.streamResponseStatusCodes?.has(1/0)||e.streamResponseStatusCodes?.has(c.status)?c.readableStreamBody=s:c.bodyAsText=await Ude(s),c}finally{if(e.abortSignal&&n){let t=Promise.resolve();PK(o)&&(t=FK(o));let r=Promise.resolve();PK(s)&&(r=FK(s)),Promise.all([t,r]).then(()=>{n&&e.abortSignal?.removeEventListener(`abort`,n)}).catch(e=>{NK.warning(`Error when cleaning up abortListener on httpRequest`,e)})}}}makeRequest(e,t,n){let r=new URL(e.url),i=r.protocol!==`https:`;if(i&&!e.allowInsecureConnection)throw Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let a={agent:e.agent??this.getOrCreateAgent(e,i),hostname:r.hostname,path:`${r.pathname}${r.search}`,port:r.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0}),...e.requestOverrides};return new Promise((r,o)=>{let s=i?gr.request(a,r):Yr.request(a,r);s.once(`error`,t=>{o(new AK(t.message,{code:t.code??AK.REQUEST_SEND_ERROR,request:e}))}),t.signal.addEventListener(`abort`,()=>{let e=new nK(`The operation was aborted. Rejecting from abort signal callback while making request.`);s.destroy(e),o(e)}),n&&PK(n)?n.pipe(s):n?typeof n==`string`||Buffer.isBuffer(n)?s.end(n):IK(n)?s.end(ArrayBuffer.isView(n)?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n)):(NK.error(`Unrecognized body type`,n),o(new AK(`Unrecognized body type`))):s.end()})}getOrCreateAgent(e,t){let n=e.disableKeepAlive;if(t)return n?gr.globalAgent:(this.cachedHttpAgent||=new gr.Agent({keepAlive:!0}),this.cachedHttpAgent);{if(n&&!e.tlsSettings)return Yr.globalAgent;let t=e.tlsSettings??zde,r=this.cachedHttpsAgents.get(t);return r&&r.options.keepAlive===!n||(NK.info(`No cached TLS Agent exist, creating a new Agent`),r=new Yr.Agent({keepAlive:!n,...t}),this.cachedHttpsAgents.set(t,r)),r}}};function Vde(e){let t=SK();for(let n of Object.keys(e.headers)){let r=e.headers[n];Array.isArray(r)?r.length>0&&t.set(n,r[0]):r&&t.set(n,r)}return t}function Hde(e,t){let n=t.get(`Content-Encoding`);if(n===`gzip`){let t=wr.createGunzip();return e.pipe(t),t}if(n===`deflate`){let t=wr.createInflate();return e.pipe(t),t}return e}function Ude(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>{Buffer.isBuffer(e)?r.push(e):r.push(Buffer.from(e))}),e.on(`end`,()=>{t(Buffer.concat(r).toString(`utf8`))}),e.on(`error`,e=>{e&&e?.name===`AbortError`?n(e):n(new AK(`Error reading response as text: ${e.message}`,{code:AK.PARSE_ERROR}))})})}function Wde(e){return e?Buffer.isBuffer(e)?e.length:PK(e)?null:IK(e)?e.byteLength:typeof e==`string`?Buffer.from(e).length:null:0}function Gde(){return new Bde}function RK(){return Gde()}function Kde(e={}){let t=e.logger??NK.info,n=new kK({additionalAllowedHeaderNames:e.additionalAllowedHeaderNames,additionalAllowedQueryParameters:e.additionalAllowedQueryParameters});return{name:`logPolicy`,async sendRequest(e,r){if(!t.enabled)return r(e);t(`Request: ${n.sanitize(e)}`);let i=await r(e);return t(`Response status code: ${i.status}`),t(`Headers: ${n.sanitize(i.headers)}`),i}}}function qde(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}function Jde(e,t){let n=t.retryDelayInMs*2**e,r=Math.min(t.maxRetryDelayInMs,n);return{retryAfterInMs:r/2+qde(0,r/2)}}function Yde(e,t,n){return new Promise((r,i)=>{let a,o,s=()=>i(new nK(n?.abortErrorMsg?n?.abortErrorMsg:`The operation was aborted.`)),c=()=>{n?.abortSignal&&o&&n.abortSignal.removeEventListener(`abort`,o)};if(o=()=>(a&&clearTimeout(a),c(),s()),n?.abortSignal&&n.abortSignal.aborted)return s();a=setTimeout(()=>{c(),r(t)},e),n?.abortSignal&&n.abortSignal.addEventListener(`abort`,o)})}function Xde(e,t){let n=e.headers.get(t);if(!n)return;let r=Number(n);if(!Number.isNaN(r))return r}const zK=`Retry-After`,Zde=[`retry-after-ms`,`x-ms-retry-after-ms`,zK];function BK(e){if(e&&[429,503].includes(e.status))try{for(let t of Zde){let n=Xde(e,t);if(n===0||n)return n*(t===zK?1e3:1)}let t=e.headers.get(zK);if(!t)return;let n=Date.parse(t)-Date.now();return Number.isFinite(n)?Math.max(0,n):void 0}catch{return}}function Qde(e){return Number.isFinite(BK(e))}function $de(){return{name:`throttlingRetryStrategy`,retry({response:e}){let t=BK(e);return Number.isFinite(t)?{retryAfterInMs:t}:{skipStrategy:!0}}}}function efe(e={}){let t=e.retryDelayInMs??1e3,n=e.maxRetryDelayInMs??64e3;return{name:`exponentialRetryStrategy`,retry({retryCount:r,response:i,responseError:a}){let o=nfe(a),s=o&&e.ignoreSystemErrors,c=tfe(i),l=c&&e.ignoreHttpStatusCodes;return i&&(Qde(i)||!c)||l||s?{skipStrategy:!0}:a&&!o&&!c?{errorToThrow:a}:Jde(r,{retryDelayInMs:t,maxRetryDelayInMs:n})}}}function tfe(e){return!!(e&&e.status!==void 0&&(e.status>=500||e.status===408)&&e.status!==501&&e.status!==505)}function nfe(e){return e?e.code===`ETIMEDOUT`||e.code===`ESOCKETTIMEDOUT`||e.code===`ECONNREFUSED`||e.code===`ECONNRESET`||e.code===`ENOENT`||e.code===`ENOTFOUND`:!1}const rfe=bK(`ts-http-runtime retryPolicy`);function ife(e,t={maxRetries:3}){let n=t.logger||rfe;return{name:`retryPolicy`,async sendRequest(r,i){let a,o,s=-1;retryRequest:for(;;){s+=1,a=void 0,o=void 0;try{n.info(`Retry ${s}: Attempting to send request`,r.requestId),a=await i(r),n.info(`Retry ${s}: Received a response from request`,r.requestId)}catch(e){if(n.error(`Retry ${s}: Received an error from request`,r.requestId),!jK(e))throw e;o=e,a=e.response}if(r.abortSignal?.aborted)throw n.error(`Retry ${s}: Request aborted.`),new nK;if(s>=(t.maxRetries??3)){if(n.info(`Retry ${s}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),o)throw o;if(a)return a;throw Error(`Maximum retries reached with no response or error to throw`)}n.info(`Retry ${s}: Processing ${e.length} retry strategies.`);strategiesLoop:for(let t of e){let e=t.logger||n;e.info(`Retry ${s}: Processing retry strategy ${t.name}.`);let i=t.retry({retryCount:s,response:a,responseError:o});if(i.skipStrategy){e.info(`Retry ${s}: Skipped.`);continue strategiesLoop}let{errorToThrow:c,retryAfterInMs:l,redirectTo:u}=i;if(c)throw e.error(`Retry ${s}: Retry strategy ${t.name} throws error:`,c),c;if(l||l===0){e.info(`Retry ${s}: Retry strategy ${t.name} retries after ${l}`),await Yde(l,void 0,{abortSignal:r.abortSignal});continue retryRequest}if(u){e.info(`Retry ${s}: Retry strategy ${t.name} redirects to ${u}`),r.url=u;continue retryRequest}}if(o)throw n.info(`None of the retry strategies could work with the received error. Throwing it.`),o;if(a)return n.info(`None of the retry strategies could work with the received response. Returning it.`),a}}}}function afe(e={}){return{name:`defaultRetryPolicy`,sendRequest:ife([$de(),efe(e)],{maxRetries:e.maxRetries??3}).sendRequest}}function ofe(e){if(typeof FormData<`u`&&e instanceof FormData){let t={};for(let[n,r]of e.entries()){let e=t[n];Array.isArray(e)?e.push(r):t[n]=e===void 0?[r]:[e,r]}return t}}function sfe(){return{name:`formDataPolicy`,async sendRequest(e,t){let n=ofe(e.body);if(n&&(e.formData=n,e.body=void 0),e.formData){let t=e.headers.get(`Content-Type`);t&&t.indexOf(`application/x-www-form-urlencoded`)!==-1?e.body=cfe(e.formData):await lfe(e.formData,e),e.formData=void 0}return t(e)}}}function cfe(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,e.toString());else t.append(n,r.toString());return t.toString()}async function lfe(e,t){let n=t.headers.get(`Content-Type`);if(n&&!n.startsWith(`multipart/form-data`))return;t.headers.set(`Content-Type`,n??`multipart/form-data`);let r=[];for(let[t,n]of Object.entries(e))for(let e of Array.isArray(n)?n:[n])if(typeof e==`string`)r.push({headers:SK({"Content-Disposition":`form-data; name="${t}"`}),body:MK(e,`utf-8`)});else if(typeof e!=`object`||!e)throw Error(`Unexpected value for key ${t}: ${e}. Value should be serialized to string first.`);else{let n=e.name||`blob`,i=SK();i.set(`Content-Disposition`,`form-data; name="${t}"; filename="${n}"`),i.set(`Content-Type`,e.type||`application/octet-stream`),r.push({headers:i,body:e})}t.multipartBody={parts:r}}function ufe(e){return{name:`agentPolicy`,sendRequest:async(t,n)=>(t.agent||=e,n(t))}}function dfe(e){return{name:`tlsPolicy`,sendRequest:async(t,n)=>(t.tlsSettings||=e,n(t))}}var ffe=/* @__PURE__ */ a(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),VK=/* @__PURE__ */ a(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=ffe(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),pfe=/* @__PURE__ */ a(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=/* @__PURE__ */ `#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=VK()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),mfe=/* @__PURE__ */ i({createSupportsColor:()=>UK,default:()=>KK});function HK(e,t=globalThis.Deno?globalThis.Deno.args:qn.argv){let n=e.startsWith(`-`)?``:e.length===1?`-`:`--`,r=t.indexOf(n+e),i=t.indexOf(`--`);return r!==-1&&(i===-1||r=2,has16m:e>=3}}function _fe(e,{streamIsTTY:t,sniffFlags:n=!0}={}){let r=hfe();r!==void 0&&(GK=r);let i=n?GK:r;if(i===0)return 0;if(n){if(HK(`color=16m`)||HK(`color=full`)||HK(`color=truecolor`))return 3;if(HK(`color=256`))return 2}if(`TF_BUILD`in WK&&`AGENT_NAME`in WK)return 1;if(e&&!t&&i===void 0)return 0;let a=i||0;if(WK.TERM===`dumb`)return a;if(qn.platform===`win32`){let e=Ur.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in WK)return[`GITHUB_ACTIONS`,`GITEA_ACTIONS`,`CIRCLECI`].some(e=>e in WK)?3:[`TRAVIS`,`APPVEYOR`,`GITLAB_CI`,`BUILDKITE`,`DRONE`].some(e=>e in WK)||WK.CI_NAME===`codeship`?1:a;if(`TEAMCITY_VERSION`in WK)return+!!/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(WK.TEAMCITY_VERSION);if(WK.COLORTERM===`truecolor`||WK.TERM===`xterm-kitty`||WK.TERM===`xterm-ghostty`||WK.TERM===`wezterm`)return 3;if(`TERM_PROGRAM`in WK){let e=Number.parseInt((WK.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(WK.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(WK.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(WK.TERM)||`COLORTERM`in WK?1:a}function UK(e,t={}){return gfe(_fe(e,{streamIsTTY:e&&e.isTTY,...t}))}var WK,GK,KK,vfe=n((()=>{({env:WK}=qn),HK(`no-color`)||HK(`no-colors`)||HK(`color=false`)||HK(`color=never`)?GK=0:(HK(`color`)||HK(`colors`)||HK(`color=true`)||HK(`color=always`))&&(GK=1),KK={stdout:UK({isTTY:$r.isatty(1)}),stderr:UK({isTTY:$r.isatty(2)})}})),yfe=/* @__PURE__ */ a(((n,r)=>{let i=t(`tty`),a=t(`util`);n.init=f,n.log=l,n.formatArgs=s,n.save=u,n.load=d,n.useColors=o,n.destroy=a.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),n.colors=[6,2,3,4,5,1];try{let t=(vfe(),e(mfe));t&&(t.stderr||t).level>=2&&(n.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}n.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function o(){return`colors`in n.inspectOpts?!!n.inspectOpts.colors:i.isatty(process.stderr.fd)}function s(e){let{namespace:t,useColors:n}=this;if(n){let n=this.color,i=`\x1B[3`+(n<8?n:`8;5;`+n),a=` ${i};1m${t} \u001B[0m`;e[0]=a+e[0].split(` `).join(` `+a),e.push(i+`m+`+r.exports.humanize(this.diff)+`\x1B[0m`)}else e[0]=c()+t+` `+e[0]}function c(){return n.inspectOpts.hideDate?``:(/* @__PURE__ */ new Date()).toISOString()+` `}function l(...e){return process.stderr.write(a.formatWithOptions(n.inspectOpts,...e)+` -`)}function u(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function d(){return process.env.DEBUG}function f(e){e.inspectOpts={};let t=Object.keys(n.inspectOpts);for(let r=0;re.trim()).join(` `)},p.O=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts)}})),Sq=/* @__PURE__ */ a(((e,t)=>{t.exports=typeof process>`u`||process.type===`renderer`||process.browser===!0||process.__nwjs?Rde():Wde()})),Gde=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t};Object.defineProperty(e,"__esModule",{value:!0}),e.req=e.json=e.toBuffer=void 0;let s=o(t(`http`)),c=o(t(`https`));async function l(e){let t=0,n=[];for await(let r of e)t+=r.length,n.push(r);return Buffer.concat(n,t)}e.toBuffer=l;async function u(e){let t=(await l(e)).toString(`utf8`);try{return JSON.parse(t)}catch(e){let n=e;throw n.message+=` (input: ${t})`,n}}e.json=u;function d(e,t={}){let n=((typeof e==`string`?e:e.href).startsWith(`https:`)?c:s).request(e,t),r=new Promise((e,t)=>{n.once(`response`,e).once(`error`,t).end()});return n.then=r.then.bind(r),n}e.req=d})),Cq=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t},s=r&&r.__exportStar||function(e,t){for(var n in e)n!=="default"&&!Object.prototype.hasOwnProperty.call(t,n)&&i(t,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.Agent=void 0;let c=o(t(`net`)),l=o(t(`http`)),u=t(`https`);s(Gde(),e);let d=Symbol(`AgentBaseInternalState`);e.Agent=class extends l.Agent{constructor(e){super(e),this[d]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==`boolean`)return e.secureEndpoint;if(typeof e.protocol==`string`)return e.protocol===`https:`}let{stack:t}=/* @__PURE__ */ Error();return typeof t==`string`&&t.split(` -`).some(e=>e.indexOf(`(https.js:`)!==-1||e.indexOf(`node:https:`)!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let t=new c.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let n=this.sockets[e],r=n.indexOf(t);r!==-1&&(n.splice(r,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?u.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,t,n){let r={...t,secureEndpoint:this.isSecureEndpoint(t)},i=this.getName(r),a=this.incrementSockets(i);Promise.resolve().then(()=>this.connect(e,r)).then(o=>{if(this.decrementSockets(i,a),o instanceof l.Agent)try{return o.addRequest(e,r)}catch(e){return n(e)}this[d].currentSocket=o,super.createSocket(e,t,n)},e=>{this.decrementSockets(i,a),n(e)})}createConnection(){let e=this[d].currentSocket;if(this[d].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[d].defaultPort??(this.protocol===`https:`?443:80)}set defaultPort(e){this[d]&&(this[d].defaultPort=e)}get protocol(){return this[d].protocol??(this.isSecureEndpoint()?`https:`:`http:`)}set protocol(e){this[d]&&(this[d].protocol=e)}}})),Kde=/* @__PURE__ */ a(((e,t,n)=>{var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.parseProxyResponse=void 0;let i=(0,r(Sq()).default)(`https-proxy-agent:parse-proxy-response`);function a(e){return new Promise((t,n)=>{let r=0,a=[];function o(){let t=e.read();t?u(t):e.once(`readable`,o)}function s(){e.removeListener(`end`,c),e.removeListener(`error`,l),e.removeListener(`readable`,o)}function c(){s(),i(`onend`),n(/* @__PURE__ */ Error(`Proxy connection ended before receiving CONNECT response`))}function l(e){s(),i(`onerror %o`,e),n(e)}function u(c){a.push(c),r+=c.length;let l=Buffer.concat(a,r),u=l.indexOf(`\r +`)}function u(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function d(){return process.env.DEBUG}function f(e){e.inspectOpts={};let t=Object.keys(n.inspectOpts);for(let r=0;re.trim()).join(` `)},p.O=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts)}})),qK=/* @__PURE__ */ a(((e,t)=>{t.exports=typeof process>`u`||process.type===`renderer`||process.browser===!0||process.__nwjs?pfe():yfe()})),bfe=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t};Object.defineProperty(e,"__esModule",{value:!0}),e.req=e.json=e.toBuffer=void 0;let s=o(t(`http`)),c=o(t(`https`));async function l(e){let t=0,n=[];for await(let r of e)t+=r.length,n.push(r);return Buffer.concat(n,t)}e.toBuffer=l;async function u(e){let t=(await l(e)).toString(`utf8`);try{return JSON.parse(t)}catch(e){let n=e;throw n.message+=` (input: ${t})`,n}}e.json=u;function d(e,t={}){let n=((typeof e==`string`?e:e.href).startsWith(`https:`)?c:s).request(e,t),r=new Promise((e,t)=>{n.once(`response`,e).once(`error`,t).end()});return n.then=r.then.bind(r),n}e.req=d})),JK=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t},s=r&&r.__exportStar||function(e,t){for(var n in e)n!=="default"&&!Object.prototype.hasOwnProperty.call(t,n)&&i(t,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.Agent=void 0;let c=o(t(`net`)),l=o(t(`http`)),u=t(`https`);s(bfe(),e);let d=Symbol(`AgentBaseInternalState`);e.Agent=class extends l.Agent{constructor(e){super(e),this[d]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==`boolean`)return e.secureEndpoint;if(typeof e.protocol==`string`)return e.protocol===`https:`}let{stack:t}=/* @__PURE__ */ Error();return typeof t==`string`&&t.split(` +`).some(e=>e.indexOf(`(https.js:`)!==-1||e.indexOf(`node:https:`)!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let t=new c.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let n=this.sockets[e],r=n.indexOf(t);r!==-1&&(n.splice(r,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?u.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,t,n){let r={...t,secureEndpoint:this.isSecureEndpoint(t)},i=this.getName(r),a=this.incrementSockets(i);Promise.resolve().then(()=>this.connect(e,r)).then(o=>{if(this.decrementSockets(i,a),o instanceof l.Agent)try{return o.addRequest(e,r)}catch(e){return n(e)}this[d].currentSocket=o,super.createSocket(e,t,n)},e=>{this.decrementSockets(i,a),n(e)})}createConnection(){let e=this[d].currentSocket;if(this[d].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[d].defaultPort??(this.protocol===`https:`?443:80)}set defaultPort(e){this[d]&&(this[d].defaultPort=e)}get protocol(){return this[d].protocol??(this.isSecureEndpoint()?`https:`:`http:`)}set protocol(e){this[d]&&(this[d].protocol=e)}}})),xfe=/* @__PURE__ */ a(((e,t,n)=>{var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.parseProxyResponse=void 0;let i=(0,r(qK()).default)(`https-proxy-agent:parse-proxy-response`);function a(e){return new Promise((t,n)=>{let r=0,a=[];function o(){let t=e.read();t?u(t):e.once(`readable`,o)}function s(){e.removeListener(`end`,c),e.removeListener(`error`,l),e.removeListener(`readable`,o)}function c(){s(),i(`onend`),n(/* @__PURE__ */ Error(`Proxy connection ended before receiving CONNECT response`))}function l(e){s(),i(`onerror %o`,e),n(e)}function u(c){a.push(c),r+=c.length;let l=Buffer.concat(a,r),u=l.indexOf(`\r \r `);if(u===-1){i(`have not received end of HTTP headers yet...`),o();return}let d=l.slice(0,u).toString(`ascii`).split(`\r -`),f=d.shift();if(!f)return e.destroy(),n(/* @__PURE__ */ Error(`No header received from proxy CONNECT response`));let p=f.split(` `),m=+p[1],h=p.slice(2).join(` `),g={};for(let t of d){if(!t)continue;let r=t.indexOf(`:`);if(r===-1)return e.destroy(),n(/* @__PURE__ */ Error(`Invalid header from proxy CONNECT response: "${t}"`));let i=t.slice(0,r).toLowerCase(),a=t.slice(r+1).trimStart(),o=g[i];typeof o==`string`?g[i]=[o,a]:Array.isArray(o)?o.push(a):g[i]=a}i(`got proxy server response: %o %o`,f,g),s(),t({connect:{statusCode:m,statusText:h,headers:g},buffered:l})}e.on(`error`,l),e.on(`end`,c),o()})}e.parseProxyResponse=a})),qde=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t},s=r&&r.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.HttpsProxyAgent=void 0;let c=o(t(`net`)),l=o(t(`tls`)),u=s(t(`assert`)),d=s(Sq()),f=Cq(),p=t(`url`),m=Kde(),h=(0,d.default)(`https-proxy-agent`),g=e=>e.servername===void 0&&e.host&&!c.isIP(e.host)?{...e,servername:e.host}:e;var v=class extends f.Agent{constructor(e,t){super(t),this.options={path:void 0},this.proxy=typeof e==`string`?new p.URL(e):e,this.proxyHeaders=t?.headers??{},h(`Creating new HttpsProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={ALPNProtocols:[`http/1.1`],...t?b(t,`headers`):null,host:n,port:r}}async connect(e,t){let{proxy:n}=this;if(!t.host)throw TypeError(`No "host" provided`);let r;n.protocol===`https:`?(h("Creating `tls.Socket`: %o",this.connectOpts),r=l.connect(g(this.connectOpts))):(h("Creating `net.Socket`: %o",this.connectOpts),r=c.connect(this.connectOpts));let i=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders},a=c.isIPv6(t.host)?`[${t.host}]`:t.host,o=`CONNECT ${a}:${t.port} HTTP/1.1\r\n`;if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;i[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}i.Host=`${a}:${t.port}`,i[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let e of Object.keys(i))o+=`${e}: ${i[e]}\r\n`;let s=(0,m.parseProxyResponse)(r);r.write(`${o}\r\n`);let{connect:d,buffered:f}=await s;if(e.emit(`proxyConnect`,d),this.emit(`proxyConnect`,d,e),d.statusCode===200)return e.once(`socket`,y),t.secureEndpoint?(h(`Upgrading socket connection to TLS`),l.connect({...b(g(t),`host`,`path`,`port`),socket:r})):r;r.destroy();let p=new c.Socket({writable:!1});return p.readable=!0,e.once(`socket`,e=>{h(`Replaying proxy buffer for failed request`),(0,u.default)(e.listenerCount(`data`)>0),e.push(f),e.push(null)}),p}};v.protocols=[`http`,`https`],e.HttpsProxyAgent=v;function y(e){e.resume()}function b(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),Jde=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t},s=r&&r.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.HttpProxyAgent=void 0;let c=o(t(`net`)),l=o(t(`tls`)),u=s(Sq()),d=t(`events`),f=Cq(),p=t(`url`),m=(0,u.default)(`http-proxy-agent`);var h=class extends f.Agent{constructor(e,t){super(t),this.proxy=typeof e==`string`?new p.URL(e):e,this.proxyHeaders=t?.headers??{},m(`Creating new HttpProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={...t?g(t,`headers`):null,host:n,port:r}}addRequest(e,t){e._header=null,this.setRequestProps(e,t),super.addRequest(e,t)}setRequestProps(e,t){let{proxy:n}=this,r=`${t.secureEndpoint?`https:`:`http:`}//${e.getHeader(`host`)||`localhost`}`,i=new p.URL(e.path,r);t.port!==80&&(i.port=String(t.port)),e.path=String(i);let a=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;a[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}a[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let t of Object.keys(a)){let n=a[t];n&&e.setHeader(t,n)}}async connect(e,t){e._header=null,e.path.includes(`://`)||this.setRequestProps(e,t);let n,r;m(`Regenerating stored HTTP header string for request`),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(m(`Patching connection write() output buffer with updated header`),n=e.outputData[0].data,r=n.indexOf(`\r +`),f=d.shift();if(!f)return e.destroy(),n(/* @__PURE__ */ Error(`No header received from proxy CONNECT response`));let p=f.split(` `),m=+p[1],h=p.slice(2).join(` `),g={};for(let t of d){if(!t)continue;let r=t.indexOf(`:`);if(r===-1)return e.destroy(),n(/* @__PURE__ */ Error(`Invalid header from proxy CONNECT response: "${t}"`));let i=t.slice(0,r).toLowerCase(),a=t.slice(r+1).trimStart(),o=g[i];typeof o==`string`?g[i]=[o,a]:Array.isArray(o)?o.push(a):g[i]=a}i(`got proxy server response: %o %o`,f,g),s(),t({connect:{statusCode:m,statusText:h,headers:g},buffered:l})}e.on(`error`,l),e.on(`end`,c),o()})}e.parseProxyResponse=a})),Sfe=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t},s=r&&r.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.HttpsProxyAgent=void 0;let c=o(t(`net`)),l=o(t(`tls`)),u=s(t(`assert`)),d=s(qK()),f=JK(),p=t(`url`),m=xfe(),h=(0,d.default)(`https-proxy-agent`),g=e=>e.servername===void 0&&e.host&&!c.isIP(e.host)?{...e,servername:e.host}:e;var v=class extends f.Agent{constructor(e,t){super(t),this.options={path:void 0},this.proxy=typeof e==`string`?new p.URL(e):e,this.proxyHeaders=t?.headers??{},h(`Creating new HttpsProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={ALPNProtocols:[`http/1.1`],...t?b(t,`headers`):null,host:n,port:r}}async connect(e,t){let{proxy:n}=this;if(!t.host)throw TypeError(`No "host" provided`);let r;n.protocol===`https:`?(h("Creating `tls.Socket`: %o",this.connectOpts),r=l.connect(g(this.connectOpts))):(h("Creating `net.Socket`: %o",this.connectOpts),r=c.connect(this.connectOpts));let i=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders},a=c.isIPv6(t.host)?`[${t.host}]`:t.host,o=`CONNECT ${a}:${t.port} HTTP/1.1\r\n`;if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;i[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}i.Host=`${a}:${t.port}`,i[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let e of Object.keys(i))o+=`${e}: ${i[e]}\r\n`;let s=(0,m.parseProxyResponse)(r);r.write(`${o}\r\n`);let{connect:d,buffered:f}=await s;if(e.emit(`proxyConnect`,d),this.emit(`proxyConnect`,d,e),d.statusCode===200)return e.once(`socket`,y),t.secureEndpoint?(h(`Upgrading socket connection to TLS`),l.connect({...b(g(t),`host`,`path`,`port`),socket:r})):r;r.destroy();let p=new c.Socket({writable:!1});return p.readable=!0,e.once(`socket`,e=>{h(`Replaying proxy buffer for failed request`),(0,u.default)(e.listenerCount(`data`)>0),e.push(f),e.push(null)}),p}};v.protocols=[`http`,`https`],e.HttpsProxyAgent=v;function y(e){e.resume()}function b(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),Cfe=/* @__PURE__ */ a(((e,n,r)=>{var i=r&&r.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),a=r&&r.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),o=r&&r.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return a(t,e),t},s=r&&r.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.HttpProxyAgent=void 0;let c=o(t(`net`)),l=o(t(`tls`)),u=s(qK()),d=t(`events`),f=JK(),p=t(`url`),m=(0,u.default)(`http-proxy-agent`);var h=class extends f.Agent{constructor(e,t){super(t),this.proxy=typeof e==`string`?new p.URL(e):e,this.proxyHeaders=t?.headers??{},m(`Creating new HttpProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={...t?g(t,`headers`):null,host:n,port:r}}addRequest(e,t){e._header=null,this.setRequestProps(e,t),super.addRequest(e,t)}setRequestProps(e,t){let{proxy:n}=this,r=`${t.secureEndpoint?`https:`:`http:`}//${e.getHeader(`host`)||`localhost`}`,i=new p.URL(e.path,r);t.port!==80&&(i.port=String(t.port)),e.path=String(i);let a=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;a[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}a[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let t of Object.keys(a)){let n=a[t];n&&e.setHeader(t,n)}}async connect(e,t){e._header=null,e.path.includes(`://`)||this.setRequestProps(e,t);let n,r;m(`Regenerating stored HTTP header string for request`),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(m(`Patching connection write() output buffer with updated header`),n=e.outputData[0].data,r=n.indexOf(`\r \r -`)+4,e.outputData[0].data=e._header+n.substring(r),m(`Output buffer: %o`,e.outputData[0].data));let i;return this.proxy.protocol===`https:`?(m("Creating `tls.Socket`: %o",this.connectOpts),i=l.connect(this.connectOpts)):(m("Creating `net.Socket`: %o",this.connectOpts),i=c.connect(this.connectOpts)),await(0,d.once)(i,`connect`),i}};h.protocols=[`http`,`https`],e.HttpProxyAgent=h;function g(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),Yde=qde(),Xde=Jde();const wq=[];let Tq=!1;const Zde=/* @__PURE__ */ new Map;function Eq(e){if(process.env[e])return process.env[e];if(process.env[e.toLowerCase()])return process.env[e.toLowerCase()]}function Dq(){if(!process)return;let e=Eq(`HTTPS_PROXY`),t=Eq(`ALL_PROXY`),n=Eq(`HTTP_PROXY`);return e||t||n}function Qde(e,t,n){if(t.length===0)return!1;let r=new URL(e).hostname;if(n?.has(r))return n.get(r);let i=!1;for(let e of t)e[0]===`.`?(r.endsWith(e)||r.length===e.length-1&&r===e.slice(1))&&(i=!0):r===e&&(i=!0);return n?.set(r,i),i}function $de(){let e=Eq(`NO_PROXY`);return Tq=!0,e?e.split(`,`).map(e=>e.trim()).filter(e=>e.length):[]}function Oq(e){if(!e&&(e=Dq(),!e))return;let t=new URL(e);return{host:(t.protocol?t.protocol+`//`:``)+t.hostname,port:Number.parseInt(t.port||`80`),username:t.username,password:t.password}}function efe(){let e=Dq();return e?new URL(e):void 0}function kq(e){let t;try{t=new URL(e.host)}catch{throw Error(`Expecting a valid host string in proxy settings, but found "${e.host}".`)}return t.port=String(e.port),e.username&&(t.username=e.username),e.password&&(t.password=e.password),t}function Aq(e,t,n){if(e.agent)return;let r=new URL(e.url).protocol!==`https:`;e.tlsSettings&&cq.warning(`TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.`),r?(t.httpProxyAgent||=new Xde.HttpProxyAgent(n),e.agent=t.httpProxyAgent):(t.httpsProxyAgent||=new Yde.HttpsProxyAgent(n),e.agent=t.httpsProxyAgent)}function tfe(e,t){Tq||wq.push(...$de());let n=e?kq(e):efe(),r={};return{name:`proxyPolicy`,async sendRequest(e,i){return!e.proxySettings&&n&&!Qde(e.url,t?.customNoProxyList??wq,t?.customNoProxyList?void 0:Zde)?Aq(e,r,n):e.proxySettings&&Aq(e,r,kq(e.proxySettings)),i(e)}}}function nfe(){return{name:`decompressResponsePolicy`,async sendRequest(e,t){return e.method!==`HEAD`&&e.headers.set(`Accept-Encoding`,`gzip,deflate`),t(e)}}}const jq=[`GET`,`HEAD`];function rfe(e={}){let{maxRetries:t=20,allowCrossOriginRedirects:n=!1}=e;return{name:`redirectPolicy`,async sendRequest(e,r){return Mq(r,await r(e),t,n)}}}async function Mq(e,t,n,r,i=0){let{request:a,status:o,headers:s}=t,c=s.get(`location`);if(c&&(o===300||o===301&&jq.includes(a.method)||o===302&&jq.includes(a.method)||o===303&&a.method===`POST`||o===307)&&itypeof e==`function`?e():e).map(afe);return Xr.from((async function*(){for(let e of t)for await(let t of e)yield t})())}}function sfe(){return`----AzSDKFormBoundary${QK()}`}function cfe(e){let t=``;for(let[n,r]of e)t+=`${n}: ${r}\r\n`;return t}function lfe(e){if(e instanceof Uint8Array)return e.byteLength;if(Nq(e))return e.size===-1?void 0:e.size}function ufe(e){let t=0;for(let n of e){let e=lfe(n);if(e===void 0)return;t+=e}return t}async function dfe(e,t,n){let r=[sq(`--${n}`,`utf-8`),...t.flatMap(e=>[sq(`\r -`,`utf-8`),sq(cfe(e.headers),`utf-8`),sq(`\r -`,`utf-8`),e.body,sq(`\r\n--${n}`,`utf-8`)]),sq(`--\r +`)+4,e.outputData[0].data=e._header+n.substring(r),m(`Output buffer: %o`,e.outputData[0].data));let i;return this.proxy.protocol===`https:`?(m("Creating `tls.Socket`: %o",this.connectOpts),i=l.connect(this.connectOpts)):(m("Creating `net.Socket`: %o",this.connectOpts),i=c.connect(this.connectOpts)),await(0,d.once)(i,`connect`),i}};h.protocols=[`http`,`https`],e.HttpProxyAgent=h;function g(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),wfe=Sfe(),Tfe=Cfe();const YK=[];let XK=!1;const Efe=/* @__PURE__ */ new Map;function ZK(e){if(process.env[e])return process.env[e];if(process.env[e.toLowerCase()])return process.env[e.toLowerCase()]}function QK(){if(!process)return;let e=ZK(`HTTPS_PROXY`),t=ZK(`ALL_PROXY`),n=ZK(`HTTP_PROXY`);return e||t||n}function Dfe(e,t,n){if(t.length===0)return!1;let r=new URL(e).hostname;if(n?.has(r))return n.get(r);let i=!1;for(let e of t)e[0]===`.`?(r.endsWith(e)||r.length===e.length-1&&r===e.slice(1))&&(i=!0):r===e&&(i=!0);return n?.set(r,i),i}function Ofe(){let e=ZK(`NO_PROXY`);return XK=!0,e?e.split(`,`).map(e=>e.trim()).filter(e=>e.length):[]}function $K(e){if(!e&&(e=QK(),!e))return;let t=new URL(e);return{host:(t.protocol?t.protocol+`//`:``)+t.hostname,port:Number.parseInt(t.port||`80`),username:t.username,password:t.password}}function kfe(){let e=QK();return e?new URL(e):void 0}function eq(e){let t;try{t=new URL(e.host)}catch{throw Error(`Expecting a valid host string in proxy settings, but found "${e.host}".`)}return t.port=String(e.port),e.username&&(t.username=e.username),e.password&&(t.password=e.password),t}function tq(e,t,n){if(e.agent)return;let r=new URL(e.url).protocol!==`https:`;e.tlsSettings&&NK.warning(`TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.`),r?(t.httpProxyAgent||=new Tfe.HttpProxyAgent(n),e.agent=t.httpProxyAgent):(t.httpsProxyAgent||=new wfe.HttpsProxyAgent(n),e.agent=t.httpsProxyAgent)}function Afe(e,t){XK||YK.push(...Ofe());let n=e?eq(e):kfe(),r={};return{name:`proxyPolicy`,async sendRequest(e,i){return!e.proxySettings&&n&&!Dfe(e.url,t?.customNoProxyList??YK,t?.customNoProxyList?void 0:Efe)?tq(e,r,n):e.proxySettings&&tq(e,r,eq(e.proxySettings)),i(e)}}}function jfe(){return{name:`decompressResponsePolicy`,async sendRequest(e,t){return e.method!==`HEAD`&&e.headers.set(`Accept-Encoding`,`gzip,deflate`),t(e)}}}const nq=[`GET`,`HEAD`];function Mfe(e={}){let{maxRetries:t=20,allowCrossOriginRedirects:n=!1}=e;return{name:`redirectPolicy`,async sendRequest(e,r){return rq(r,await r(e),t,n)}}}async function rq(e,t,n,r,i=0){let{request:a,status:o,headers:s}=t,c=s.get(`location`);if(c&&(o===300||o===301&&nq.includes(a.method)||o===302&&nq.includes(a.method)||o===303&&a.method===`POST`||o===307)&&itypeof e==`function`?e():e).map(Pfe);return Zr.from((async function*(){for(let e of t)for await(let t of e)yield t})())}}function Ife(){return`----AzSDKFormBoundary${CK()}`}function Lfe(e){let t=``;for(let[n,r]of e)t+=`${n}: ${r}\r\n`;return t}function Rfe(e){if(e instanceof Uint8Array)return e.byteLength;if(iq(e))return e.size===-1?void 0:e.size}function zfe(e){let t=0;for(let n of e){let e=Rfe(n);if(e===void 0)return;t+=e}return t}async function Bfe(e,t,n){let r=[MK(`--${n}`,`utf-8`),...t.flatMap(e=>[MK(`\r +`,`utf-8`),MK(Lfe(e.headers),`utf-8`),MK(`\r +`,`utf-8`),e.body,MK(`\r\n--${n}`,`utf-8`)]),MK(`--\r \r -`,`utf-8`)],i=ufe(r);i&&e.headers.set(`Content-Length`,i),e.body=await ofe(r)}const Iq=`multipartPolicy`,ffe=/* @__PURE__ */ new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);function pfe(e){if(e.length>70)throw Error(`Multipart boundary "${e}" exceeds maximum length of 70 characters`);if(Array.from(e).some(e=>!ffe.has(e)))throw Error(`Multipart boundary "${e}" contains invalid characters`)}function mfe(){return{name:Iq,async sendRequest(e,t){if(!e.multipartBody)return t(e);if(e.body)throw Error(`multipartBody and regular body cannot be set at the same time`);let n=e.multipartBody.boundary,r=e.headers.get(`Content-Type`)??`multipart/mixed`,i=r.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!i)throw Error(`Got multipart request body, but content-type header was not multipart: ${r}`);let[,a,o]=i;if(o&&n&&o!==n)throw Error(`Multipart boundary was specified as ${o} in the header, but got ${n} in the request body`);return n??=o,n?pfe(n):n=sfe(),e.headers.set(`Content-Type`,`${a}; boundary=${n}`),await dfe(e,e.multipartBody.parts,n),e.multipartBody=void 0,t(e)}}}const Lq=qK({logLevelEnvVarName:`AZURE_LOG_LEVEL`,namespace:`azure`});Lq.logger;function Rq(e){return Lq.createClientLogger(e)}const hfe=Rq(`core-rest-pipeline`);var zq=class extends Error{constructor(e){super(e),this.name=`AbortError`}};function gfe(e,t){let{cleanupBeforeAbort:n,abortSignal:r,abortErrorMsg:i}=t??{};return new Promise((t,a)=>{function o(){a(new zq(i??`The operation was aborted.`))}function s(){r?.removeEventListener(`abort`,c)}function c(){n?.(),s(),o()}if(r?.aborted)return o();try{e(e=>{s(),t(e)},e=>{s(),a(e)})}catch(e){a(e)}r?.addEventListener(`abort`,c)})}function Bq(e,t){let n,{abortSignal:r,abortErrorMsg:i}=t??{};return gfe(t=>{n=setTimeout(t,e)},{cleanupBeforeAbort:()=>clearTimeout(n),abortSignal:r,abortErrorMsg:i??`The delay was aborted.`})}function Vq(e){if(nq(e))return e.message;{let t;try{t=typeof e==`object`&&e?JSON.stringify(e):String(e)}catch{t=`[unable to stringify input]`}return`Unknown error ${t}`}}function _fe(e){return nq(e)}function Hq(){return QK()}function vfe(e,t){return lde(e,t)}function yfe(e,t){return sq(e,t)}function Uq(e){return Oq(e)}const Wq={span:Symbol.for(`@azure/core-tracing span`),namespace:Symbol.for(`@azure/core-tracing namespace`)};function bfe(e={}){let t=new xfe(e.parentContext);return e.span&&(t=t.setValue(Wq.span,e.span)),e.namespace&&(t=t.setValue(Wq.namespace,e.namespace)),t}var xfe=class e{_contextMap;constructor(t){this._contextMap=t instanceof e?new Map(t._contextMap):/* @__PURE__ */ new Map}setValue(t,n){let r=new e(this);return r._contextMap.set(t,n),r}getValue(e){return this._contextMap.get(e)}deleteValue(t){let n=new e(this);return n._contextMap.delete(t),n}};const Gq=(/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.state=void 0,e.state={instrumenterImplementation:void 0}})))().state;function Sfe(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{},addEvent:()=>{}}}function Cfe(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(e,t)=>({span:Sfe(),tracingContext:bfe({parentContext:t.tracingContext})}),withContext(e,t,...n){return t(...n)}}}function Kq(){return Gq.instrumenterImplementation||=Cfe(),Gq.instrumenterImplementation}function qq(e){let{namespace:t,packageName:n,packageVersion:r}=e;function i(e,i,a){let o=Kq().startSpan(e,{...a,packageName:n,packageVersion:r,tracingContext:i?.tracingOptions?.tracingContext}),s=o.tracingContext,c=o.span;return s.getValue(Wq.namespace)||(s=s.setValue(Wq.namespace,t)),c.setAttribute(`az.namespace`,s.getValue(Wq.namespace)),{span:c,updatedOptions:Object.assign({},i,{tracingOptions:{...i?.tracingOptions,tracingContext:s}})}}async function a(e,t,n,r){let{span:a,updatedOptions:s}=i(e,t,r);try{let e=await o(s.tracingOptions.tracingContext,()=>Promise.resolve(n(s,a)));return a.setStatus({status:`success`}),e}catch(e){throw a.setStatus({status:`error`,error:e}),e}finally{a.end()}}function o(e,t,...n){return Kq().withContext(e,t,...n)}function s(e){return Kq().parseTraceparentHeader(e)}function c(e){return Kq().createRequestHeaders(e)}return{startSpan:i,withSpan:a,withContext:o,parseTraceparentHeader:s,createRequestHeaders:c}}function wfe(e){return oq(e)}const Tfe={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:12e4};async function Efe(e,t,n){async function r(){if(Date.now()e.getToken(t,s),a.retryIntervalInMs,r?.expiresOnTimestamp??Date.now()).then(e=>(n=null,r=e,i=s.tenantId,r)).catch(e=>{throw n=null,r=null,i=void 0,e})),n}return async(e,t)=>{let n=!!t.claims,a=i!==t.tenantId;return n&&(r=null),a||n||o.mustRefresh?s(e,t):(o.shouldRefresh&&s(e,t),r)}}async function Jq(e,t){try{return[await t(e),void 0]}catch(e){if(wfe(e)&&e.response)return[e.response,e];throw e}}async function Ofe(e){let{scopes:t,getAccessToken:n,request:r}=e,i=await n(t,{abortSignal:r.abortSignal,tracingOptions:r.tracingOptions,enableCae:!0});i&&e.request.headers.set(`Authorization`,`Bearer ${i.token}`)}function Yq(e){return e.status===401&&e.headers.has(`WWW-Authenticate`)}async function Xq(e,t){let{scopes:n}=e,r=await e.getAccessToken(n,{enableCae:!0,claims:t});return r?(e.request.headers.set(`Authorization`,`${r.tokenType??`Bearer`} ${r.token}`),!0):!1}function kfe(e){let{credential:t,scopes:n,challengeCallbacks:r}=e,i=e.logger||hfe,a={authorizeRequest:r?.authorizeRequest?.bind(r)??Ofe,authorizeRequestOnChallenge:r?.authorizeRequestOnChallenge?.bind(r)},o=t?Dfe(t):()=>Promise.resolve(null);return{name:`bearerTokenAuthenticationPolicy`,async sendRequest(e,t){if(!e.url.toLowerCase().startsWith(`https://`))throw Error(`Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.`);await a.authorizeRequest({scopes:Array.isArray(n)?n:[n],request:e,getAccessToken:o,logger:i});let r,s,c;if([r,s]=await Jq(e,t),Yq(r)){let l=Zq(r.headers.get(`WWW-Authenticate`));if(l){let a;try{a=atob(l)}catch{return i.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${l}`),r}c=await Xq({scopes:Array.isArray(n)?n:[n],response:r,request:e,getAccessToken:o,logger:i},a),c&&([r,s]=await Jq(e,t))}else if(a.authorizeRequestOnChallenge&&(c=await a.authorizeRequestOnChallenge({scopes:Array.isArray(n)?n:[n],request:e,response:r,getAccessToken:o,logger:i}),c&&([r,s]=await Jq(e,t)),Yq(r)&&(l=Zq(r.headers.get(`WWW-Authenticate`)??``),l))){let a;try{a=atob(l)}catch{return i.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${l}`),r}c=await Xq({scopes:Array.isArray(n)?n:[n],response:r,request:e,getAccessToken:o,logger:i},a),c&&([r,s]=await Jq(e,t))}}if(s)throw s;return r}}}function Afe(e){let t=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,n=/(\w+)="([^"]*)"/g,r=[],i;for(;(i=t.exec(e))!==null;){let e=i[1],t=i[2],a={},o;for(;(o=n.exec(t))!==null;)a[o[1]]=o[2];r.push({scheme:e,params:a})}return r}function Zq(e){if(e)return Afe(e).find(e=>e.scheme===`Bearer`&&e.params.claims&&e.params.error===`insufficient_claims`)?.params.claims}function Qq(e){let t=e;return t&&typeof t.getToken==`function`&&(t.signRequest===void 0||t.getToken.length>0)}const $q=`DisableKeepAlivePolicy`;function jfe(){return{name:$q,async sendRequest(e,t){return e.disableKeepAlive=!0,t(e)}}}function Mfe(e){return e.getOrderedPolicies().some(e=>e.name===$q)}function eJ(e){return ZK(e)}function Nfe(e){return $K(e)}function tJ(e){return vfe(e,`base64`)}function nJ(e){return yfe(e,`base64`)}function Pfe(e,t){return t!==`Composite`&&t!==`Dictionary`&&(typeof e==`string`||typeof e==`number`||typeof e==`boolean`||t?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||e==null)}const Ffe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ife(e){return Ffe.test(e)}const Lfe=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function Rfe(e){return Lfe.test(e)}function zfe(e){let t={...e.headers,...e.body};return e.hasNullableType&&Object.getOwnPropertyNames(t).length===0?e.shouldWrapBody?{body:null}:null:e.shouldWrapBody?{...e.headers,body:e.body}:t}function rJ(e,t){let n=e.parsedHeaders;if(e.request.method===`HEAD`)return{...n,body:e.parsedBody};let r=t&&t.bodyMapper,i=!!r?.nullable,a=r?.type.name;if(a===`Stream`)return{...n,blobBody:e.blobBody,readableStreamBody:e.readableStreamBody};let o=a===`Composite`&&r.type.modelProperties||{},s=Object.keys(o).some(e=>o[e].serializedName===``);if(a===`Sequence`||s){let t=e.parsedBody??[];for(let n of Object.keys(o))o[n].serializedName&&(t[n]=e.parsedBody?.[n]);if(n)for(let e of Object.keys(n))t[e]=n[e];return i&&!e.parsedBody&&!n&&Object.getOwnPropertyNames(o).length===0?null:t}return zfe({body:e.parsedBody,headers:n,hasNullableType:i,shouldWrapBody:Pfe(e.parsedBody,a)})}var Bfe=class{modelMappers;isXML;constructor(e={},t=!1){this.modelMappers=e,this.isXML=t}validateConstraints(e,t,n){let r=(e,r)=>{throw Error(`"${n}" with value "${t}" should satisfy the constraint "${e}": ${r}.`)};if(e.constraints&&t!=null){let{ExclusiveMaximum:n,ExclusiveMinimum:i,InclusiveMaximum:a,InclusiveMinimum:o,MaxItems:s,MaxLength:c,MinItems:l,MinLength:u,MultipleOf:d,Pattern:f,UniqueItems:p}=e.constraints;if(n!==void 0&&t>=n&&r(`ExclusiveMaximum`,n),i!==void 0&&t<=i&&r(`ExclusiveMinimum`,i),a!==void 0&&t>a&&r(`InclusiveMaximum`,a),o!==void 0&&ts&&r(`MaxItems`,s),c!==void 0&&t.length>c&&r(`MaxLength`,c),l!==void 0&&t.lengthn.indexOf(e)!==t)&&r(`UniqueItems`,p)}}serialize(e,t,n,r={xml:{}}){let i={xml:{rootName:r.xml.rootName??``,includeRoot:r.xml.includeRoot??!1,xmlCharKey:r.xml.xmlCharKey??`_`}},a={},o=e.type.name;n||=e.serializedName,o.match(/^Sequence$/i)!==null&&(a=[]),e.isConstant&&(t=e.defaultValue);let{required:s,nullable:c}=e;if(s&&c&&t===void 0)throw Error(`${n} cannot be undefined.`);if(s&&!c&&t==null)throw Error(`${n} cannot be null or undefined.`);if(!s&&c===!1&&t===null)throw Error(`${n} cannot be null.`);return t==null?a=t:o.match(/^any$/i)===null?o.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)===null?o.match(/^Enum$/i)===null?o.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)===null?o.match(/^ByteArray$/i)===null?o.match(/^Base64Url$/i)===null?o.match(/^Sequence$/i)===null?o.match(/^Dictionary$/i)===null?o.match(/^Composite$/i)!==null&&(a=epe(this,e,t,n,!!this.isXML,i)):a=Qfe(this,e,t,n,!!this.isXML,i):a=Zfe(this,e,t,n,!!this.isXML,i):a=Yfe(n,t):a=Jfe(n,t):a=Xfe(o,t,n):a=qfe(n,e.type.allowedValues,t):a=Kfe(o,n,t):a=t,a}deserialize(e,t,n,r={xml:{}}){let i={xml:{rootName:r.xml.rootName??``,includeRoot:r.xml.includeRoot??!1,xmlCharKey:r.xml.xmlCharKey??`_`},ignoreUnknownProperties:r.ignoreUnknownProperties??!1};if(t==null)return this.isXML&&e.type.name===`Sequence`&&!e.xmlIsWrapped&&(t=[]),e.defaultValue!==void 0&&(t=e.defaultValue),t;let a,o=e.type.name;if(n||=e.serializedName,o.match(/^Composite$/i)!==null)a=npe(this,e,t,n,i);else{if(this.isXML){let e=i.xml.xmlCharKey;t.$!==void 0&&t[e]!==void 0&&(t=t[e])}o.match(/^Number$/i)===null?o.match(/^Boolean$/i)===null?o.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)===null?o.match(/^(Date|DateTime|DateTimeRfc1123)$/i)===null?o.match(/^UnixTime$/i)===null?o.match(/^ByteArray$/i)===null?o.match(/^Base64Url$/i)===null?o.match(/^Sequence$/i)===null?o.match(/^Dictionary$/i)!==null&&(a=rpe(this,e,t,n,i)):a=ipe(this,e,t,n,i):a=Ufe(t):a=nJ(t):a=Gfe(t):a=new Date(t):a=t:a=t===`true`||t!==`false`&&t:(a=parseFloat(t),isNaN(a)&&(a=t))}return e.isConstant&&(a=e.defaultValue),a}};function iJ(e={},t=!1){return new Bfe(e,t)}function Vfe(e,t){let n=e.length;for(;n-1>=0&&e[n-1]===t;)--n;return e.substr(0,n)}function Hfe(e){if(e){if(!(e instanceof Uint8Array))throw Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);return Vfe(tJ(e),`=`).replace(/\+/g,`-`).replace(/\//g,`_`)}}function Ufe(e){if(e){if(e&&typeof e.valueOf()!=`string`)throw Error(`Please provide an input of type string for converting to Uint8Array`);return e=e.replace(/-/g,`+`).replace(/_/g,`/`),nJ(e)}}function aJ(e){let t=[],n=``;if(e){let r=e.split(`.`);for(let e of r)e.charAt(e.length-1)===`\\`?n+=e.substr(0,e.length-1)+`.`:(n+=e,t.push(n),n=``)}return t}function Wfe(e){if(e)return typeof e.valueOf()==`string`&&(e=new Date(e)),Math.floor(e.getTime()/1e3)}function Gfe(e){if(e)return/* @__PURE__ */ new Date(e*1e3)}function Kfe(e,t,n){if(n!=null){if(e.match(/^Number$/i)!==null){if(typeof n!=`number`)throw Error(`${t} with value ${n} must be of type number.`)}else if(e.match(/^String$/i)!==null){if(typeof n.valueOf()!=`string`)throw Error(`${t} with value "${n}" must be of type string.`)}else if(e.match(/^Uuid$/i)!==null){if(!(typeof n.valueOf()==`string`&&Rfe(n)))throw Error(`${t} with value "${n}" must be of type string and a valid uuid.`)}else if(e.match(/^Boolean$/i)!==null){if(typeof n!=`boolean`)throw Error(`${t} with value ${n} must be of type boolean.`)}else if(e.match(/^Stream$/i)!==null){let e=typeof n;if(e!==`string`&&typeof n.pipe!=`function`&&typeof n.tee!=`function`&&!(n instanceof ArrayBuffer)&&!ArrayBuffer.isView(n)&&!((typeof Blob==`function`||typeof Blob==`object`)&&n instanceof Blob)&&e!==`function`)throw Error(`${t} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return n}function qfe(e,t,n){if(!t)throw Error(`Please provide a set of allowedValues to validate ${e} as an Enum Type.`);if(!t.some(e=>typeof e.valueOf()==`string`?e.toLowerCase()===n.toLowerCase():e===n))throw Error(`${n} is not a valid value for ${e}. The valid values are: ${JSON.stringify(t)}.`);return n}function Jfe(e,t){if(t!=null){if(!(t instanceof Uint8Array))throw Error(`${e} must be of type Uint8Array.`);t=tJ(t)}return t}function Yfe(e,t){if(t!=null){if(!(t instanceof Uint8Array))throw Error(`${e} must be of type Uint8Array.`);t=Hfe(t)}return t}function Xfe(e,t,n){if(t!=null){if(e.match(/^Date$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in ISO8601 format.`);t=t instanceof Date?t.toISOString().substring(0,10):new Date(t).toISOString().substring(0,10)}else if(e.match(/^DateTime$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in ISO8601 format.`);t=t instanceof Date?t.toISOString():new Date(t).toISOString()}else if(e.match(/^DateTimeRfc1123$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in RFC-1123 format.`);t=t instanceof Date?t.toUTCString():new Date(t).toUTCString()}else if(e.match(/^UnixTime$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);t=Wfe(t)}else if(e.match(/^TimeSpan$/i)!==null&&!Ife(t))throw Error(`${n} must be a string in ISO 8601 format. Instead was "${t}".`)}return t}function Zfe(e,t,n,r,i,a){if(!Array.isArray(n))throw Error(`${r} must be of type Array.`);let o=t.type.element;if(!o||typeof o!=`object`)throw Error(`"element" metadata for an Array must be defined in the mapper and it must be of type "object" in ${r}.`);o.type.name===`Composite`&&o.type.className&&(o=e.modelMappers[o.type.className]??o);let s=[];for(let t=0;te!==i)&&Object.defineProperty(o,i,{value:e.serialize(c,n[i],r+`["`+i+`"]`,a),enumerable:!0,configurable:!0,writable:!0})}return o}return n}function cJ(e,t,n,r){if(!n||!e.xmlNamespace)return t;let i={[e.xmlNamespacePrefix?`xmlns:${e.xmlNamespacePrefix}`:`xmlns`]:e.xmlNamespace};if([`Composite`].includes(e.type.name)){if(t.$)return t;{let e={...t};return e.$=i,e}}let a={};return a[r.xml.xmlCharKey]=t,a.$=i,a}function tpe(e,t){return[`$`,t.xml.xmlCharKey].includes(e)}function npe(e,t,n,r,i){let a=i.xml.xmlCharKey??`_`;uJ(e,t)&&(t=lJ(e,t,n,`serializedName`));let o=sJ(e,t,r),s={},c=[];for(let l of Object.keys(o)){let u=o[l],d=aJ(o[l].serializedName);c.push(d[0]);let{serializedName:f,xmlName:p,xmlElementName:m}=u,h=r;f!==``&&f!==void 0&&(h=r+`.`+f);let g=u.headerCollectionPrefix;if(g){let t={};for(let r of Object.keys(n))r.startsWith(g)&&(t[r.substring(g.length)]=e.deserialize(u.type.value,n[r],h,i)),c.push(r);s[l]=t}else if(e.isXML){if(u.xmlIsAttribute&&n.$)s[l]=e.deserialize(u,n.$[p],h,i);else if(u.xmlIsMsText)n[a]===void 0?typeof n==`string`&&(s[l]=n):s[l]=n[a];else{let t=m||p||f;if(u.xmlIsWrapped){let t=n[p]?.[m]??[];Object.defineProperty(s,l,{value:e.deserialize(u,t,h,i),enumerable:!0,configurable:!0,writable:!0}),c.push(p)}else{let r=n[t];s[l]=e.deserialize(u,r,h,i),c.push(t)}}}else{let r,a=n,c=0;for(let e of d){if(!a)break;c++,a=a[e]}a===null&&c{for(let t of Object.keys(o))if(aJ(o[t].serializedName)[0]===e)return!1;return!0};for(let a of Object.keys(n))if(t(a)){let t=e.deserialize(l,n[a],r+`["`+a+`"]`,i);Object.defineProperty(s,a,{value:t,enumerable:!0,configurable:!0,writable:!0})}}else if(n&&!i.ignoreUnknownProperties)for(let e of Object.keys(n))s[e]===void 0&&!c.includes(e)&&!tpe(e,i)&&Object.defineProperty(s,e,{value:n[e],enumerable:!0,configurable:!0,writable:!0});return s}function rpe(e,t,n,r,i){let a=t.type.value;if(!a||typeof a!=`object`)throw Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${r}`);if(n){let t={};for(let o of Object.keys(n))t[o]=e.deserialize(a,n[o],r,i);return t}return n}function ipe(e,t,n,r,i){let a=t.type.element;if(!a||typeof a!=`object`)throw Error(`"element" metadata for an Array must be defined in the mapper and it must be of type "object" in ${r}`);if(n){Array.isArray(n)||(n=[n]),a.type.name===`Composite`&&a.type.className&&(a=e.modelMappers[a.type.className]??a);let t=[];for(let o=0;o{if(t.multipartBody)for(let e of t.multipartBody.parts)vJ(e.body)&&(e.body=mpe(e.body));return e.sendRequest(t,n)}}}function gpe(){return nfe()}function _pe(e={}){return Ade(e)}function vpe(){return Mde()}function ype(e,t){return tfe(e,t)}function bpe(e=`x-ms-client-request-id`){return{name:`setClientRequestIdPolicy`,async sendRequest(t,n){return t.headers.has(e)||t.headers.set(e,t.requestId),n(t)}}}function xpe(e){return Fde(e)}function Spe(e){return Ide(e)}const bJ=aq;function xJ(e){return oq(e)}function Cpe(e={}){let t=hJ(e.userAgentPrefix),n=new iq({additionalAllowedQueryParameters:e.additionalAllowedQueryParameters}),r=wpe();return{name:`tracingPolicy`,async sendRequest(e,i){if(!r)return i(e);let a=await t,o={"http.url":n.sanitizeUrl(e.url),"http.method":e.method,"http.user_agent":a,requestId:e.requestId};a&&(o[`http.user_agent`]=a);let{span:s,tracingContext:c}=Tpe(r,e,o)??{};if(!s||!c)return i(e);try{let t=await r.withContext(c,i,e);return Dpe(s,t),t}catch(e){throw Epe(s,e),e}}}}function wpe(){try{return qq({namespace:``,packageName:`@azure/core-rest-pipeline`,packageVersion:mJ})}catch(e){pJ.warning(`Error when creating the TracingClient: ${Vq(e)}`);return}}function Tpe(e,t,n){try{let{span:r,updatedOptions:i}=e.startSpan(`HTTP ${t.method}`,{tracingOptions:t.tracingOptions},{spanKind:`client`,spanAttributes:n});if(!r.isRecording()){r.end();return}let a=e.createRequestHeaders(i.tracingOptions.tracingContext);for(let[e,n]of Object.entries(a))t.headers.set(e,n);return{span:r,tracingContext:i.tracingOptions.tracingContext}}catch(e){pJ.warning(`Skipping creating a tracing span due to an error: ${Vq(e)}`);return}}function Epe(e,t){try{e.setStatus({status:`error`,error:_fe(t)?t:void 0}),xJ(t)&&t.statusCode&&e.setAttribute(`http.status_code`,t.statusCode),e.end()}catch(e){pJ.warning(`Skipping tracing span processing due to an error: ${Vq(e)}`)}}function Dpe(e,t){try{e.setAttribute(`http.status_code`,t.status);let n=t.headers.get(`x-ms-request-id`);n&&e.setAttribute(`serviceRequestId`,n),t.status>=400&&e.setStatus({status:`error`}),e.end()}catch(e){pJ.warning(`Skipping tracing span processing due to an error: ${Vq(e)}`)}}function SJ(e){if(e instanceof AbortSignal)return{abortSignal:e};if(e.aborted)return{abortSignal:AbortSignal.abort(`reason`in e?e.reason:void 0)};let t=new AbortController,n=!0;function r(){n&&=(e.removeEventListener(`abort`,i),!1)}function i(){t.abort(`reason`in e?e.reason:void 0),r()}return e.addEventListener(`abort`,i),{abortSignal:t.signal,cleanup:r}}function Ope(){return{name:`wrapAbortSignalLikePolicy`,sendRequest:async(e,t)=>{if(!e.abortSignal)return t(e);let{abortSignal:n,cleanup:r}=SJ(e.abortSignal);e.abortSignal=n;try{return await t(e)}finally{r?.()}}}}function kpe(e){let t=ope();return e.agent&&t.addPolicy(xpe(e.agent)),e.tlsOptions&&t.addPolicy(Spe(e.tlsOptions)),t.addPolicy(ype(e.proxyOptions)),t.addPolicy(gpe()),t.addPolicy(Ope()),t.addPolicy(vpe(),{beforePolicies:[yJ]}),t.addPolicy(ppe(e.userAgentOptions)),t.addPolicy(bpe(e.telemetryOptions?.clientRequestIdHeaderName)),t.addPolicy(hpe(),{afterPhase:`Deserialize`}),t.addPolicy(_pe(e.retryOptions),{phase:`Retry`}),t.addPolicy(Cpe({...e.userAgentOptions,...e.loggingOptions}),{afterPhase:`Retry`}),t.addPolicy(cpe(e.redirectOptions),{afterPhase:`Retry`}),t.addPolicy(spe(e.loggingOptions),{afterPhase:`Sign`}),t}function Ape(){let e=pq();return{async sendRequest(t){let{abortSignal:n,cleanup:r}=t.abortSignal?SJ(t.abortSignal):{};try{return t.abortSignal=n,await e.sendRequest(t)}finally{r?.()}}}}function jpe(e){return $K(e)}const Mpe={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:12e4};async function Npe(e,t,n){async function r(){if(Date.now()e.getToken(t,s),a.retryIntervalInMs,r?.expiresOnTimestamp??Date.now()).then(e=>(n=null,r=e,i=s.tenantId,r)).catch(e=>{throw n=null,r=null,i=void 0,e})),n}return async(e,t)=>{let n=!!t.claims,a=i!==t.tenantId;return n&&(r=null),a||n||o.mustRefresh?s(e,t):(o.shouldRefresh&&s(e,t),r)}}async function CJ(e,t){try{return[await t(e),void 0]}catch(e){if(xJ(e)&&e.response)return[e.response,e];throw e}}async function Fpe(e){let{scopes:t,getAccessToken:n,request:r}=e,i=await n(t,{abortSignal:r.abortSignal,tracingOptions:r.tracingOptions,enableCae:!0});i&&e.request.headers.set(`Authorization`,`Bearer ${i.token}`)}function wJ(e){return e.status===401&&e.headers.has(`WWW-Authenticate`)}async function TJ(e,t){let{scopes:n}=e,r=await e.getAccessToken(n,{enableCae:!0,claims:t});return r?(e.request.headers.set(`Authorization`,`${r.tokenType??`Bearer`} ${r.token}`),!0):!1}function Ipe(e){let{credential:t,scopes:n,challengeCallbacks:r}=e,i=e.logger||pJ,a={authorizeRequest:r?.authorizeRequest?.bind(r)??Fpe,authorizeRequestOnChallenge:r?.authorizeRequestOnChallenge?.bind(r)},o=t?Ppe(t):()=>Promise.resolve(null);return{name:`bearerTokenAuthenticationPolicy`,async sendRequest(e,t){if(!e.url.toLowerCase().startsWith(`https://`))throw Error(`Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.`);await a.authorizeRequest({scopes:Array.isArray(n)?n:[n],request:e,getAccessToken:o,logger:i});let r,s,c;if([r,s]=await CJ(e,t),wJ(r)){let l=EJ(r.headers.get(`WWW-Authenticate`));if(l){let a;try{a=atob(l)}catch{return i.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${l}`),r}c=await TJ({scopes:Array.isArray(n)?n:[n],response:r,request:e,getAccessToken:o,logger:i},a),c&&([r,s]=await CJ(e,t))}else if(a.authorizeRequestOnChallenge&&(c=await a.authorizeRequestOnChallenge({scopes:Array.isArray(n)?n:[n],request:e,response:r,getAccessToken:o,logger:i}),c&&([r,s]=await CJ(e,t)),wJ(r)&&(l=EJ(r.headers.get(`WWW-Authenticate`)??``),l))){let a;try{a=atob(l)}catch{return i.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${l}`),r}c=await TJ({scopes:Array.isArray(n)?n:[n],response:r,request:e,getAccessToken:o,logger:i},a),c&&([r,s]=await CJ(e,t))}}if(s)throw s;return r}}}function Lpe(e){let t=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,n=/(\w+)="([^"]*)"/g,r=[],i;for(;(i=t.exec(e))!==null;){let e=i[1],t=i[2],a={},o;for(;(o=n.exec(t))!==null;)a[o[1]]=o[2];r.push({scheme:e,params:a})}return r}function EJ(e){if(e)return Lpe(e).find(e=>e.scheme===`Bearer`&&e.params.claims&&e.params.error===`insufficient_claims`)?.params.claims}const DJ=(/* @__PURE__ */ a((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.state=void 0,e.state={operationRequestMap:/* @__PURE__ */ new WeakMap}})))().state;function OJ(e,t,n){let r=t.parameterPath,i=t.mapper,a;if(typeof r==`string`&&(r=[r]),Array.isArray(r)){if(r.length>0){if(i.isConstant)a=i.defaultValue;else{let t=kJ(e,r);!t.propertyFound&&n&&(t=kJ(n,r));let o=!1;t.propertyFound||(o=i.required||r[0]===`options`&&r.length===2),a=o?i.defaultValue:t.propertyValue}}}else{i.required&&(a={});for(let[t,o]of Object.entries(r)){let r=i.type.modelProperties[t],s=OJ(e,{parameterPath:o,mapper:r},n);s!==void 0&&(a||={},Object.defineProperty(a,t,{value:s,enumerable:!0,configurable:!0,writable:!0}))}}return a}function kJ(e,t){let n={propertyFound:!1},r=0;for(;r=200&&n.status<300);s.headersMapper&&(a.parsedHeaders=o.serializer.deserialize(s.headersMapper,a.headers.toJSON(),`operationRes.parsedHeaders`,{xml:{},ignoreUnknownProperties:!0}))}return a}function Gpe(e){let t=Object.keys(e.responses);return t.length===0||t.length===1&&t[0]==="default"}function Kpe(e,t,n,r){let i=200<=e.status&&e.status<300;if(Gpe(t)?i:n){if(n){if(!n.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1}}let a=n??t.responses.default,o=e.request.streamResponseStatusCodes?.has(e.status)?`Unexpected status code: ${e.status}`:e.bodyAsText,s=new bJ(o,{statusCode:e.status,request:e.request,response:e});if(!a&&!(e.parsedBody?.error?.code&&e.parsedBody?.error?.message))throw s;let c=a?.bodyMapper,l=a?.headersMapper;try{if(e.parsedBody){let n=e.parsedBody,i;if(c){let e=n;if(t.isXML&&c.type.name===fJ.Sequence){e=[];let t=c.xmlElementName;typeof n==`object`&&t&&(e=n[t])}i=t.serializer.deserialize(c,e,`error.response.parsedBody`,r)}let a=n.error||i||n;s.code=a.code,a.message&&(s.message=a.message),c&&(s.response.parsedBody=i)}e.headers&&l&&(s.response.parsedHeaders=t.serializer.deserialize(l,e.headers.toJSON(),`operationRes.parsedHeaders`))}catch(t){s.message=`Error "${t.message}" occurred in deserializing the responseBody - "${e.bodyAsText}" for the default response.`}return{error:s,shouldReturnResponse:!1}}async function qpe(e,t,n,r,i){if(!n.request.streamResponseStatusCodes?.has(n.status)&&n.bodyAsText){let a=n.bodyAsText,o=n.headers.get(`Content-Type`)||``,s=o?o.split(`;`).map(e=>e.toLowerCase()):[];try{if(s.length===0||s.some(t=>e.indexOf(t)!==-1))return n.parsedBody=JSON.parse(a),n;if(s.some(e=>t.indexOf(e)!==-1)){if(!i)throw Error(`Parsing XML not supported.`);return n.parsedBody=await i(a,r.xml),n}}catch(e){let t=`Error "${e}" occurred while parsing the response body - ${n.bodyAsText}.`,r=e.code||bJ.PARSE_ERROR;throw new bJ(t,{code:r,statusCode:n.status,request:n.request,response:n})}}return n}function Jpe(e){let t=/* @__PURE__ */ new Set;for(let[n,r]of Object.entries(e.responses))r.bodyMapper&&r.bodyMapper.type.name===fJ.Stream&&t.add(Number(n));return t}function MJ(e){let{parameterPath:t,mapper:n}=e,r;return r=typeof t==`string`?t:Array.isArray(t)?t.join(`.`):n.serializedName,r}function Ype(e={}){let t=e.stringifyXML;return{name:`serializationPolicy`,sendRequest(e,n){let r=jJ(e),i=r?.operationSpec,a=r?.operationArguments;return i&&a&&(Xpe(e,a,i),Zpe(e,a,i,t)),n(e)}}}function Xpe(e,t,n){if(n.headerParameters)for(let r of n.headerParameters){let i=OJ(t,r);if(i!=null||r.mapper.required){i=n.serializer.serialize(r.mapper,i,MJ(r));let t=r.mapper.headerCollectionPrefix;if(t)for(let n of Object.keys(i))e.headers.set(t+n,i[n]);else e.headers.set(r.mapper.serializedName||MJ(r),i)}}let r=t.options?.requestOptions?.customHeaders;if(r)for(let t of Object.keys(r))e.headers.set(t,r[t])}function Zpe(e,t,n,r=function(){throw Error(`XML serialization unsupported!`)}){let i=t.options?.serializerOptions,a={xml:{rootName:i?.xml.rootName??``,includeRoot:i?.xml.includeRoot??!1,xmlCharKey:i?.xml.xmlCharKey??`_`}},o=a.xml.xmlCharKey;if(n.requestBody&&n.requestBody.mapper){e.body=OJ(t,n.requestBody);let i=n.requestBody.mapper,{required:s,serializedName:c,xmlName:l,xmlElementName:u,xmlNamespace:d,xmlNamespacePrefix:f,nullable:p}=i,m=i.type.name;try{if(e.body!==void 0&&e.body!==null||p&&e.body===null||s){let t=MJ(n.requestBody);e.body=n.serializer.serialize(i,e.body,t,a);let s=m===fJ.Stream;if(n.isXML){let t=f?`xmlns:${f}`:`xmlns`,n=Qpe(d,t,m,e.body,a);m===fJ.Sequence?e.body=r($pe(n,u||l||c,t,d),{rootName:l||c,xmlCharKey:o}):s||(e.body=r(n,{rootName:l||c,xmlCharKey:o}))}else if(m===fJ.String&&(n.contentType?.match(`text/plain`)||n.mediaType===`text`))return;else s||(e.body=JSON.stringify(e.body))}}catch(e){throw Error(`Error "${e.message}" occurred in serializing the payload - ${JSON.stringify(c,void 0,` `)}.`)}}else if(n.formDataParameters&&n.formDataParameters.length>0){e.formData={};for(let r of n.formDataParameters){let i=OJ(t,r);if(i!=null){let t=r.mapper.serializedName||MJ(r);e.formData[t]=n.serializer.serialize(r.mapper,i,MJ(r),a)}}}}function Qpe(e,t,n,r,i){if(e&&![`Composite`,`Sequence`,`Dictionary`].includes(n)){let n={};return n[i.xml.xmlCharKey]=r,n.$={[t]:e},n}return r}function $pe(e,t,n,r){if(Array.isArray(e)||(e=[e]),!n||!r)return{[t]:e};let i={[t]:e};return i.$={[n]:r},i}function NJ(e={}){let t=kpe(e??{});return e.credentialOptions&&t.addPolicy(Ipe({credential:e.credentialOptions.credential,scopes:e.credentialOptions.credentialScopes})),t.addPolicy(Ype(e.serializationOptions),{phase:`Serialize`}),t.addPolicy(Vpe(e.deserializationOptions),{phase:`Deserialize`}),t}let PJ;function eme(){return PJ||=Ape(),PJ}const tme={CSV:`,`,SSV:` `,Multi:`Multi`,TSV:` `,Pipes:`|`};function nme(e,t,n,r){let i=rme(t,n,r),a=!1,o=FJ(e,i);if(t.path){let e=FJ(t.path,i);t.path===`/{nextLink}`&&e.startsWith(`/`)&&(e=e.substring(1)),ime(e)?(o=e,a=!0):o=ame(o,e)}let{queryParams:s,sequenceParams:c}=ome(t,n,r);return o=cme(o,s,c,a),o}function FJ(e,t){let n=e;for(let[e,r]of t)n=n.split(e).join(r);return n}function rme(e,t,n){let r=/* @__PURE__ */ new Map;if(e.urlParameters?.length)for(let i of e.urlParameters){let a=OJ(t,i,n),o=MJ(i);a=e.serializer.serialize(i.mapper,a,o),i.skipEncoding||(a=encodeURIComponent(a)),r.set(`{${i.mapper.serializedName||o}}`,a)}return r}function ime(e){return e.includes(`://`)}function ame(e,t){if(!t)return e;let n=new URL(e),r=n.pathname;r.endsWith(`/`)||(r=`${r}/`),t.startsWith(`/`)&&(t=t.substring(1));let i=t.indexOf(`?`);if(i!==-1){let e=t.substring(0,i),a=t.substring(i+1);r+=e,a&&(n.search=n.search?`${n.search}&${a}`:a)}else r+=t;return Object.assign(n,{pathname:r}),n.toString()}function ome(e,t,n){let r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Set;if(e.queryParameters?.length)for(let a of e.queryParameters){a.mapper.type.name===`Sequence`&&a.mapper.serializedName&&i.add(a.mapper.serializedName);let o=OJ(t,a,n);if(o!=null||a.mapper.required){o=e.serializer.serialize(a.mapper,o,MJ(a));let t=a.collectionFormat?tme[a.collectionFormat]:``;if(Array.isArray(o)&&(o=o.map(e=>e??``)),a.collectionFormat===`Multi`&&o.length===0)continue;Array.isArray(o)&&(a.collectionFormat===`SSV`||a.collectionFormat===`TSV`)&&(o=o.join(t)),a.skipEncoding||(o=Array.isArray(o)?o.map(e=>encodeURIComponent(e)):encodeURIComponent(o)),Array.isArray(o)&&(a.collectionFormat===`CSV`||a.collectionFormat===`Pipes`)&&(o=o.join(t)),r.set(a.mapper.serializedName||MJ(a),o)}}return{queryParams:r,sequenceParams:i}}function sme(e){let t=/* @__PURE__ */ new Map;if(!e||e[0]!==`?`)return t;e=e.slice(1);let n=e.split(`&`);for(let e of n){let[n,r]=e.split(`=`,2),i=t.get(n);i?Array.isArray(i)?i.push(r):t.set(n,[i,r]):t.set(n,r)}return t}function cme(e,t,n,r=!1){if(t.size===0)return e;let i=new URL(e),a=sme(i.search);for(let[e,i]of t){let t=a.get(e);if(Array.isArray(t)){if(Array.isArray(i)){t.push(...i);let n=new Set(t);a.set(e,Array.from(n))}else t.push(i)}else t?(Array.isArray(i)?i.unshift(t):n.has(e)&&a.set(e,[t,i]),r||a.set(e,i)):a.set(e,i)}let o=[];for(let[e,t]of a)if(typeof t==`string`)o.push(`${e}=${t}`);else if(Array.isArray(t))for(let n of t)o.push(`${e}=${n}`);else o.push(`${e}=${t}`);return i.search=o.length?`?${o.join(`&`)}`:``,i.toString()}const lme=Rq(`core-client`);var ume=class{_endpoint;_requestContentType;_allowInsecureConnection;_httpClient;pipeline;constructor(e={}){if(this._requestContentType=e.requestContentType,this._endpoint=e.endpoint??e.baseUri,e.baseUri&&lme.warning(`The baseUri option for SDK Clients has been deprecated, please use endpoint instead.`),this._allowInsecureConnection=e.allowInsecureConnection,this._httpClient=e.httpClient||eme(),this.pipeline=e.pipeline||dme(e),e.additionalPolicies?.length)for(let{policy:t,position:n}of e.additionalPolicies){let e=n===`perRetry`?`Sign`:void 0;this.pipeline.addPolicy(t,{afterPhase:e})}}sendRequest(e){return this.pipeline.sendRequest(this._httpClient,e)}async sendOperationRequest(e,t){let n=t.baseUrl||this._endpoint;if(!n)throw Error(`If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.`);let r=jpe({url:nme(n,t,e,this)});r.method=t.httpMethod;let i=jJ(r);i.operationSpec=t,i.operationArguments=e;let a=t.contentType||this._requestContentType;a&&t.requestBody&&r.headers.set(`Content-Type`,a);let o=e.options;if(o){let e=o.requestOptions;e&&(e.timeout&&(r.timeout=e.timeout),e.onUploadProgress&&(r.onUploadProgress=e.onUploadProgress),e.onDownloadProgress&&(r.onDownloadProgress=e.onDownloadProgress),e.shouldDeserialize!==void 0&&(i.shouldDeserialize=e.shouldDeserialize),e.allowInsecureConnection&&(r.allowInsecureConnection=!0)),o.abortSignal&&(r.abortSignal=o.abortSignal),o.tracingOptions&&(r.tracingOptions=o.tracingOptions)}this._allowInsecureConnection&&(r.allowInsecureConnection=!0),r.streamResponseStatusCodes===void 0&&(r.streamResponseStatusCodes=Jpe(t));try{let e=await this.sendRequest(r),n=rJ(e,t.responses[e.status]);return o?.onResponse&&o.onResponse(e,n),n}catch(e){if(typeof e==`object`&&e?.response){let n=e.response,r=rJ(n,t.responses[e.statusCode]||t.responses.default);e.details=r,o?.onResponse&&o.onResponse(n,r,e)}throw e}}};function dme(e){let t=fme(e),n=e.credential&&t?{credentialScopes:t,credential:e.credential}:void 0;return NJ({...e,credentialOptions:n})}function fme(e){if(e.credentialScopes)return e.credentialScopes;if(e.endpoint)return`${e.endpoint}/.default`;if(e.baseUri)return`${e.baseUri}/.default`;if(e.credential)throw Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`)}const IJ={DefaultScope:`/.default`,HeaderConstants:{AUTHORIZATION:`authorization`}};function pme(e){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(e)}const LJ=async e=>{let t=vme(e.request),n=gme(e.response);if(n){let r=_me(n),i=hme(e,r),a=mme(r);if(!a)return!1;let o=await e.getAccessToken(i,{...t,tenantId:a});return o?(e.request.headers.set(IJ.HeaderConstants.AUTHORIZATION,`${o.tokenType??`Bearer`} ${o.token}`),!0):!1}return!1};function mme(e){let t=new URL(e.authorization_uri).pathname.split(`/`)[1];if(t&&pme(t))return t}function hme(e,t){if(!t.resource_id)return e.scopes;let n=new URL(t.resource_id),r=new URL(IJ.DefaultScope,n.origin).toString();return r===`https://disk.azure.com/.default`&&(r=`https://disk.azure.com//.default`),[r]}function gme(e){let t=e.headers.get(`WWW-Authenticate`);if(e.status===401&&t)return t}function _me(e){return`${e.slice(7).trim()} `.split(` `).filter(e=>e).map(e=>(([e,t])=>({[e]:t}))(e.trim().split(`=`))).reduce((e,t)=>({...e,...t}),{})}function vme(e){return{abortSignal:e.abortSignal,requestOptions:{timeout:e.timeout},tracingOptions:e.tracingOptions}}const RJ=Symbol(`Original PipelineRequest`),yme=Symbol.for(`@azure/core-client original request`);function zJ(e,t={}){let n=e[RJ],r=eJ(e.headers.toJson({preserveCase:!0}));if(n)return n.headers=r,n;{let n=Nfe({url:e.url,method:e.method,headers:r,withCredentials:e.withCredentials,timeout:e.timeout,requestId:e.requestId,abortSignal:e.abortSignal,body:e.body,formData:e.formData,disableKeepAlive:!!e.keepAlive,onDownloadProgress:e.onDownloadProgress,onUploadProgress:e.onUploadProgress,proxySettings:e.proxySettings,streamResponseStatusCodes:e.streamResponseStatusCodes,agent:e.agent,requestOverrides:e.requestOverrides});return t.originalRequest&&(n[yme]=t.originalRequest),n}}function BJ(e,t){let n=t?.originalRequest??e,r={url:e.url,method:e.method,headers:VJ(e.headers),withCredentials:e.withCredentials,timeout:e.timeout,requestId:e.headers.get(`x-ms-client-request-id`)||e.requestId,abortSignal:e.abortSignal,body:e.body,formData:e.formData,keepAlive:!!e.disableKeepAlive,onDownloadProgress:e.onDownloadProgress,onUploadProgress:e.onUploadProgress,proxySettings:e.proxySettings,streamResponseStatusCodes:e.streamResponseStatusCodes,agent:e.agent,requestOverrides:e.requestOverrides,clone(){throw Error(`Cannot clone a non-proxied WebResourceLike`)},prepare(){throw Error(`WebResourceLike.prepare() is not supported by @azure/core-http-compat`)},validateRequestProperties(){}};return t?.createProxy?new Proxy(r,{get(t,i,a){return i===RJ?e:i===`clone`?()=>BJ(zJ(r,{originalRequest:n}),{createProxy:!0,originalRequest:n}):Reflect.get(t,i,a)},set(t,n,r,i){return n===`keepAlive`&&(e.disableKeepAlive=!r),typeof n==`string`&&[`url`,`method`,`withCredentials`,`timeout`,`requestId`,`abortSignal`,`body`,`formData`,`onDownloadProgress`,`onUploadProgress`,`proxySettings`,`streamResponseStatusCodes`,`agent`,`requestOverrides`].includes(n)&&(e[n]=r),Reflect.set(t,n,r,i)}}):r}function VJ(e){return new bme(e.toJSON({preserveCase:!0}))}function HJ(e){return e.toLowerCase()}var bme=class e{_headersMap;constructor(e){if(this._headersMap={},e)for(let t in e)this.set(t,e[t])}set(e,t){this._headersMap[HJ(e)]={name:e,value:t.toString()}}get(e){let t=this._headersMap[HJ(e)];return t?t.value:void 0}contains(e){return!!this._headersMap[HJ(e)]}remove(e){let t=this.contains(e);return delete this._headersMap[HJ(e)],t}rawHeaders(){return this.toJson({preserveCase:!0})}headersArray(){let e=[];for(let t in this._headersMap)e.push(this._headersMap[t]);return e}headerNames(){let e=[],t=this.headersArray();for(let n=0;nGJ(await e.sendRequest(BJ(t,{createProxy:!0})))}}const Cme=/* @__PURE__ */ RegExp(`^[:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`);function YJ(e,t){let n=[],r=t.exec(e);for(;r;){let i=[];i.startIndex=t.lastIndex-r[0].length;let a=r.length;for(let e=0;e`&&e[a]!==` `&&e[a]!==` `&&e[a]!==` -`&&e[a]!==`\r`;a++)c+=e[a];if(c=c.trim(),c[c.length-1]===`/`&&(c=c.substring(0,c.length-1),a--),!jme(c)){let t;return t=c.trim().length===0?`Invalid space after '<'.`:`Tag '`+c+`' is an invalid name.`,iY(`InvalidTag`,t,aY(e,a))}let l=Eme(e,a);if(l===!1)return iY(`InvalidAttr`,`Attributes for '`+c+`' have open quote.`,aY(e,a));let u=l.value;if(a=l.index,u[u.length-1]===`/`){let n=a-u.length;u=u.substring(0,u.length-1);let i=rY(u,t);if(i===!0)r=!0;else return iY(i.err.code,i.err.msg,aY(e,n+i.err.line))}else if(s){if(!l.tagClosed)return iY(`InvalidTag`,`Closing tag '`+c+`' doesn't have proper closing.`,aY(e,a));if(u.trim().length>0)return iY(`InvalidTag`,`Closing tag '`+c+`' can't have attributes or invalid starting.`,aY(e,o));if(n.length===0)return iY(`InvalidTag`,`Closing tag '`+c+`' has not been opened.`,aY(e,o));{let t=n.pop();if(c!==t.tagName){let n=aY(e,t.tagStartPos);return iY(`InvalidTag`,`Expected closing tag '`+t.tagName+`' (opened in line `+n.line+`, col `+n.col+`) instead of closing tag '`+c+`'.`,aY(e,o))}n.length==0&&(i=!0)}}else{let s=rY(u,t);if(s!==!0)return iY(s.err.code,s.err.msg,aY(e,a-u.length+s.err.line));if(i===!0)return iY(`InvalidXml`,`Multiple possible root nodes found.`,aY(e,a));t.unpairedTags.indexOf(c)!==-1||n.push({tagName:c,tagStartPos:o}),r=!0}for(a++;a0?iY(`InvalidXml`,`Invalid '`+JSON.stringify(n.map(e=>e.tagName),null,4).replace(/\r?\n/g,``)+`' found.`,{line:1,col:1}):!0:iY(`InvalidXml`,`Start tag expected.`,1)}function eY(e){return e===` `||e===` `||e===` -`||e===`\r`}function tY(e,t){let n=t;for(;t5&&r===`xml`)return iY(`InvalidXml`,`XML declaration allowed only at the start of the document.`,aY(e,t));if(e[t]==`?`&&e[t+1]==`>`){t++;break}continue}return t}function nY(e,t){if(e.length>t+5&&e[t+1]===`-`&&e[t+2]===`-`){for(t+=3;t`){t+=2;break}}else if(e.length>t+8&&e[t+1]===`D`&&e[t+2]===`O`&&e[t+3]===`C`&&e[t+4]===`T`&&e[t+5]===`Y`&&e[t+6]===`P`&&e[t+7]===`E`){let n=1;for(t+=8;t`&&(n--,n===0))break}else if(e.length>t+9&&e[t+1]===`[`&&e[t+2]===`C`&&e[t+3]===`D`&&e[t+4]===`A`&&e[t+5]===`T`&&e[t+6]===`A`&&e[t+7]===`[`){for(t+=8;t`){t+=2;break}}return t}function Eme(e,t){let n=``,r=``,i=!1;for(;t`&&r===``){i=!0;break}n+=e[t]}return r===``&&{value:n,index:t,tagClosed:i}}const Dme=/* @__PURE__ */ RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,`g`);function rY(e,t){let n=YJ(e,Dme),r={};for(let e=0;e`,lt:`<`,quot:`"`},Nme={nbsp:`\xA0`,copy:`©`,reg:`®`,trade:`™`,mdash:`—`,ndash:`–`,hellip:`…`,laquo:`«`,raquo:`»`,lsquo:`‘`,rsquo:`’`,ldquo:`“`,rdquo:`”`,bull:`•`,para:`¶`,sect:`§`,deg:`°`,frac12:`½`,frac14:`¼`,frac34:`¾`},cY=Object.freeze({ALLOW:`allow`,BLOCK:`block`,THROW:`throw`}),Pme=/* @__PURE__ */ new Set(`!?\\\\/[]$%{}^&*()<>|+`);function lY(e){if(e[0]===`#`)throw Error(`[EntityReplacer] Invalid character '#' in entity name: "${e}"`);for(let t of e)if(Pme.has(t))throw Error(`[EntityReplacer] Invalid character '${t}' in entity name: "${e}"`);return e}function uY(...e){let t=Object.create(null);for(let n of e)if(n)for(let e of Object.keys(n)){let r=n[e];if(typeof r==`string`)t[e]=r;else if(r&&typeof r==`object`&&r.val!==void 0){let n=r.val;typeof n==`string`&&(t[e]=n)}}return t}const dY=`external`,fY=`base`;function Fme(e){return!e||e===dY?/* @__PURE__ */ new Set([dY]):e===`all`?/* @__PURE__ */ new Set([`all`]):e===fY?/* @__PURE__ */ new Set([fY]):Array.isArray(e)?new Set(e):/* @__PURE__ */ new Set([dY])}const pY=Object.freeze({allow:0,leave:1,remove:2,throw:3}),Ime=/* @__PURE__ */ new Set([9,10,13]);function Lme(e){if(!e)return{xmlVersion:1,onLevel:pY.allow,nullLevel:pY.remove};let t=e.xmlVersion===1.1?1.1:1,n=pY[e.onNCR]??pY.allow,r=pY[e.nullNCR]??pY.remove;return{xmlVersion:t,onLevel:n,nullLevel:Math.max(r,pY.remove)}}var Rme=class{constructor(e={}){this._limit=e.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck=typeof e.postCheck==`function`?e.postCheck:e=>e,this._limitTiers=Fme(this._limit.applyLimitsTo??dY),this._numericAllowed=e.numericAllowed??!0,this._baseMap=uY(sY,e.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(e.remove&&Array.isArray(e.remove)?e.remove:[]),this._leaveSet=new Set(e.leave&&Array.isArray(e.leave)?e.leave:[]);let t=Lme(e.ncr);this._ncrXmlVersion=t.xmlVersion,this._ncrOnLevel=t.onLevel,this._ncrNullLevel=t.nullLevel,this._onExternalEntity=typeof e.onExternalEntity==`function`?e.onExternalEntity:null,this._onInputEntity=typeof e.onInputEntity==`function`?e.onInputEntity:null}_applyRegistrationHook(e,t,n,r){if(!e)return!0;let i=e(t,n);if(i===cY.BLOCK)return!1;if(i===cY.THROW)throw Error(`[EntityDecoder] Registration of ${r} entity "&${t};" was rejected by hook`);return!0}setExternalEntities(e){if(e)for(let t of Object.keys(e))lY(t);if(!this._onExternalEntity){this._externalMap=uY(e);return}let t=uY(e),n=Object.create(null);for(let[e,r]of Object.entries(t))this._applyRegistrationHook(this._onExternalEntity,e,r,`external`)&&(n[e]=r);this._externalMap=n}addExternalEntity(e,t){lY(e),typeof t==`string`&&t.indexOf(`&`)===-1&&this._applyRegistrationHook(this._onExternalEntity,e,t,`external`)&&(this._externalMap[e]=t)}addInputEntities(e){if(this._totalExpansions=0,this._expandedLength=0,!this._onInputEntity){this._inputMap=uY(e);return}let t=uY(e),n=Object.create(null);for(let[e,r]of Object.entries(t))this._applyRegistrationHook(this._onInputEntity,e,r,`input`)&&(n[e]=r);this._inputMap=n}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(e){this._ncrXmlVersion=e===1.1?1.1:1}decode(e){if(typeof e!=`string`||e.length===0||e.indexOf(`&`)===-1)return e;let t=e,n=[],r=e.length,i=0,a=0,o=this._maxTotalExpansions>0,s=this._maxExpandedLength>0,c=o||s;for(;a=r||e.charCodeAt(t)!==59){a++;continue}let l=e.slice(a+1,t);if(l.length===0){a++;continue}let u,d;if(this._removeSet.has(l))u=``,d===void 0&&(d=dY);else if(this._leaveSet.has(l)){a++;continue}else if(l.charCodeAt(0)===35){let e=this._resolveNCR(l);if(e===void 0){a++;continue}u=e,d=fY}else{let e=this._resolveName(l);u=e?.value,d=e?.tier}if(u===void 0)a++;else if(a>i&&n.push(e.slice(i,a)),n.push(u),i=t+1,a=i,c&&this._tierCounts(d)){if(o&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(s){let e=u.length-(l.length+2);if(e>0&&(this._expandedLength+=e,this._expandedLength>this._maxExpandedLength))throw Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}i=55296&&e<=57343||this._ncrXmlVersion===1&&e>=1&&e<=31&&!Ime.has(e)?pY.remove:-1}_applyNCRAction(e,t,n){switch(e){case pY.allow:return String.fromCodePoint(n);case pY.remove:return``;case pY.leave:return;case pY.throw:throw Error(`[EntityDecoder] Prohibited numeric character reference &${t}; (U+${n.toString(16).toUpperCase().padStart(4,`0`)})`);default:return String.fromCodePoint(n)}}_resolveNCR(e){let t=e.charCodeAt(1),n;if(n=t===120||t===88?parseInt(e.slice(2),16):parseInt(e.slice(1),10),Number.isNaN(n)||n<0||n>1114111)return;let r=this._classifyNCR(n);if(!this._numericAllowed&&rZJ.includes(e)?`__`+e:e,zme={preserveOrder:!1,attributeNamePrefix:`@_`,attributesGroupName:!1,textNodeName:`#text`,ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0,unicode:!1},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:mY};function Bme(e,t){if(typeof e!=`string`)return;let n=e.toLowerCase();if(ZJ.some(e=>n===e.toLowerCase())||QJ.some(e=>n===e.toLowerCase()))throw Error(`[SECURITY] Invalid ${t}: "${e}" is a reserved JavaScript keyword that could cause prototype pollution`)}function hY(e,t){return typeof e==`boolean`?{enabled:e,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:`all`}:typeof e==`object`&&e?{enabled:e.enabled!==!1,maxEntitySize:Math.max(1,e.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,e.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,e.maxTotalExpansions??1/0),maxExpandedLength:Math.max(1,e.maxExpandedLength??1e5),maxEntityCount:Math.max(1,e.maxEntityCount??1e3),allowedTags:e.allowedTags??null,tagFilter:e.tagFilter??null,appliesTo:e.appliesTo??`all`}:hY(!0)}const Vme=function(e){let t=Object.assign({},zme,e),n=[{value:t.attributeNamePrefix,name:`attributeNamePrefix`},{value:t.attributesGroupName,name:`attributesGroupName`},{value:t.textNodeName,name:`textNodeName`},{value:t.cdataPropName,name:`cdataPropName`},{value:t.commentPropName,name:`commentPropName`}];for(let{value:e,name:t}of n)e&&Bme(e,t);return t.onDangerousProperty===null&&(t.onDangerousProperty=mY),t.processEntities=hY(t.processEntities,t.htmlEntities),t.unpairedTagsSet=new Set(t.unpairedTags),t.stopNodes&&Array.isArray(t.stopNodes)&&(t.stopNodes=t.stopNodes.map(e=>typeof e==`string`&&e.startsWith(`*.`)?`..`+e.substring(2):e)),t};let gY;gY=typeof Symbol==`function`?Symbol(`XML Node Metadata`):`@@xmlMetadata`;var _Y=class{constructor(e){this.tagname=e,this.child=[],this[`:@`]=Object.create(null)}add(e,t){e===`__proto__`&&(e=`#__proto__`),this.child.push({[e]:t})}addChild(e,t){e.tagname===`__proto__`&&(e.tagname=`#__proto__`),e[`:@`]&&Object.keys(e[`:@`]).length>0?this.child.push({[e.tagname]:e.child,":@":e[`:@`]}):this.child.push({[e.tagname]:e.child}),t!==void 0&&(this.child[this.child.length-1][gY]={startIndex:t})}static getMetaDataSymbol(){return gY}};const vY=(e,t,n=``)=>{let r=`[${e.replace(`:`,``)}][${t.replace(`:`,``)}]*`;return{name:RegExp(`^[${e}][${t}]*$`,n),ncName:RegExp(`^${r}$`,n),qName:RegExp(`^${r}(?::${r})?$`,n),nmToken:RegExp(`^[${t}]+$`,n),nmTokens:RegExp(`^[${t}]+(?:\\s+[${t}]+)*$`,n)}},Hme=vY(`:A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈-῿\u200C-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�`,`:A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈-῿\u200C-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�\\-\\.\\d·̀-ͯ‿-⁀`),Ume=vY(`:A-Za-z_À-˿Ͱ-ͽͿ-҆҈-῿\u200C-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿`,`:A-Za-z_À-˿Ͱ-ͽͿ-҆҈-῿\u200C-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿\\-\\.\\d·̀-ͯ҇‿-⁀`,`u`),Wme=vY(`:A-Za-z_`,`:A-Za-z_\\-\\.\\d`),Gme=(e=`1.0`,t=!1)=>t?Wme:e===`1.1`?Ume:Hme,yY=(e,{xmlVersion:t=`1.0`,asciiOnly:n=!1}={})=>Gme(t,n).qName.test(e);var Kme=class{constructor(e,t){this.suppressValidationErr=!e,this.options=e,this.xmlVersion=t||1}setXmlVersion(e=1){this.xmlVersion=e}readDocType(e,t){let n=Object.create(null),r=0;if(e[t+3]===`O`&&e[t+4]===`C`&&e[t+5]===`T`&&e[t+6]===`Y`&&e[t+7]===`P`&&e[t+8]===`E`){t+=9;let i=1,a=!1,o=!1,s=``;for(;t=this.options.maxEntityCount)throw Error(`Entity count (${r+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);n[i]=a,r++}}else if(a&&xY(e,`!ELEMENT`,t)){t+=8;let{index:n}=this.readElementExp(e,t+1);t=n}else if(a&&xY(e,`!ATTLIST`,t))t+=8;else if(a&&xY(e,`!NOTATION`,t)){t+=9;let{index:n}=this.readNotationExp(e,t+1,this.suppressValidationErr);t=n}else if(xY(e,`!--`,t))o=!0;else throw Error(`Invalid DOCTYPE`);i++,s=``}else if(e[t]===`>`){if(o?e[t-1]===`-`&&e[t-2]===`-`&&(o=!1,i--):i--,i===0)break}else e[t]===`[`?a=!0:s+=e[t];if(i!==0)throw Error(`Unclosed DOCTYPE`)}else throw Error(`Invalid Tag instead of DOCTYPE`);return{entities:n,i:t}}readEntityExp(e,t){t=bY(e,t);let n=t;for(;tthis.options.maxEntitySize)throw Error(`Entity "${r}" size (${i.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return t--,[r,i,t]}readNotationExp(e,t){t=bY(e,t);let n=t;for(;t{for(;t=48&&i<=57||i===45)){if(i<1632){if(EY.has(i)){n=r;break}}else if(i>=55296&&i<=56319){if(r+1=56320&&t<=57343){let e=65536+(i-55296<<10)+(t-56320);if(CY.has(e)){n=r;break}}}}else if(TY[i-1632]!==255||EY.has(i)){n=r;break}}}if(n===-1)return e;let r=[];n>0&&r.push(e.slice(0,n));for(let i=n;i=48&&n<=57||n===45){r.push(e[i]);continue}if(n<1632){r.push(EY.has(n)?`-`:e[i]);continue}if(n>=55296&&n<=56319){if(i+1=56320&&t<=57343){let e=65536+(n-55296<<10)+(t-56320),a=CY.get(e);if(a!==void 0){r.push(String.fromCharCode(a+48)),i++;continue}}}r.push(e[i]);continue}if(EY.has(n)){r.push(`-`);continue}let a=TY[n-wY];r.push(a===255?e[i]:String.fromCharCode(a+48))}return r.join(``)}const Yme=/^[-+]?0x[a-fA-F0-9]+$/,Xme=/^0b[01]+$/,Zme=/^0o[0-7]+$/,Qme=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,$me={hex:!0,binary:!1,octal:!1,leadingZeros:!0,decimalPoint:`.`,eNotation:!0,infinity:`original`,unicode:!1};function ehe(e,t={}){if(t=Object.assign({},$me,t),!e||typeof e!=`string`)return e;let n=e.trim();if(n.length===0||t.skipLike!==void 0&&t.skipLike.test(n))return e;if(n===`0`||t.unicode&&(n=Jme(n),n===`0`))return 0;if(t.hex&&Yme.test(n))return DY(n,16);if(t.binary&&Xme.test(n))return DY(n,2);if(t.octal&&Zme.test(n))return DY(n,8);if(!isFinite(n))return ihe(e,Number(n),t);if(n.includes(`e`)||n.includes(`E`))return nhe(e,n,t);{let r=Qme.exec(n);if(r){let i=r[1]||``,a=r[2],o=rhe(r[3]),s=i?e[a.length+1]===`.`:e[a.length]===`.`;if(!t.leadingZeros&&(a.length>1||a.length===1&&!s))return e;{let r=Number(n),s=String(r);if(r===0)return r;if(s.search(/[eE]/)!==-1)return t.eNotation?r:e;if(n.indexOf(`.`)!==-1)return s===`0`||s===o||s===`${i}${o}`?r:e;let c=a?o:n;return a?c===s||i+c===s?r:e:c===s||c===i+s?r:e}}return e}}const the=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function nhe(e,t,n){if(!n.eNotation)return e;let r=t.match(the);if(r){let i=r[1]||``,a=r[3].indexOf(`e`)===-1?`E`:`e`,o=r[2],s=i?e[o.length+1]===a:e[o.length]===a;return o.length>1&&s?e:o.length===1&&(r[3].startsWith(`.${a}`)||r[3][0]===a)?Number(t):o.length>0?n.leadingZeros&&!s?(t=(r[1]||``)+r[3],Number(t)):e:Number(t)}return e}function rhe(e){return e&&e.indexOf(`.`)!==-1&&(e=e.replace(/0+$/,``),e===`.`?e=`0`:e[0]===`.`?e=`0`+e:e[e.length-1]===`.`&&(e=e.substring(0,e.length-1))),e}function DY(e,t){let n=e.trim();if((t===2||t===8)&&(e=n.substring(2)),parseInt)return parseInt(e,t);if(Number.parseInt)return Number.parseInt(e,t);if(window&&window.parseInt)return window.parseInt(e,t);throw Error(`parseInt, Number.parseInt, window.parseInt are not supported`)}function ihe(e,t,n){let r=t===1/0;switch(n.infinity.toLowerCase()){case`null`:return null;case`infinity`:return t;case`string`:return r?`Infinity`:`-Infinity`;default:return e}}function ahe(e){return typeof e==`function`?e:Array.isArray(e)?t=>{for(let n of e)if(typeof n==`string`&&t===n||n instanceof RegExp&&n.test(t))return!0}:()=>!1}var OY=class{constructor(e,t={},n){this.pattern=e,this.separator=t.separator||`.`,this.segments=this._parse(e),this.data=n,this._hasDeepWildcard=this.segments.some(e=>e.type===`deep-wildcard`),this._hasAttributeCondition=this.segments.some(e=>e.attrName!==void 0),this._hasPositionSelector=this.segments.some(e=>e.position!==void 0)}_parse(e){let t=[],n=0,r=``;for(;n0?e[e.length-1].tag:void 0}getCurrentNamespace(){let e=this._matcher.path;return e.length>0?e[e.length-1].namespace:void 0}getAttrValue(e){let t=this._matcher.path;if(t.length!==0)return t[t.length-1].values?.[e]}hasAttr(e){let t=this._matcher.path;if(t.length===0)return!1;let n=t[t.length-1];return n.values!==void 0&&e in n.values}getAnyParentAttr(e){return this._matcher.getAnyParentAttr(e)}hasAnyParentAttr(e){return this._matcher.hasAnyParentAttr(e)}getPosition(){let e=this._matcher.path;return e.length===0?-1:e[e.length-1].position??0}getCounter(){let e=this._matcher.path;return e.length===0?-1:e[e.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(e,t=!0){return this._matcher.toString(e,t)}toArray(){return this._matcher.path.map(e=>e.tag)}matches(e){return this._matcher.matches(e)}matchesAny(e){return e.matchesAny(this._matcher)}},che=class{constructor(e={}){this.separator=e.separator||`.`,this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new she(this),this._keptAttrs=[]}push(e,t=null,n=null,r=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);let i=this.path.length,a=this.siblingStacks[i];a||(a={counts:/* @__PURE__ */ new Map,total:0},this.siblingStacks[i]=a);let o=n?`${n}:${e}`:e,s=a.counts.get(o)||0,c=a.total;a.counts.set(o,s+1),a.total++;let l={tag:e,position:c,counter:s};n!=null&&(l.namespace=n),t!=null&&(l.values=t),this.path.push(l);let u=this.path.length,d=r===null?null:r.keep;if(d!=null&&d.length>0&&t)for(let e=0;ethis.path.length+1&&(this.siblingStacks.length=this.path.length+1);let t=this.path.length+1;for(;this._keptAttrs.length>0&&this._keptAttrs[this._keptAttrs.length-1].depth>=t;)this._keptAttrs.pop();return e}updateCurrent(e){if(this.path.length>0){let t=this.path[this.path.length-1];e!=null&&(t.values=e)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(e){if(this.path.length!==0)return this.path[this.path.length-1].values?.[e]}hasAttr(e){if(this.path.length===0)return!1;let t=this.path[this.path.length-1];return t.values!==void 0&&e in t.values}getAnyParentAttr(e){let t=this._keptAttrs;for(let n=t.length-1;n>=0;n--)if(t[n].name===e)return t[n].value}hasAnyParentAttr(e){let t=this._keptAttrs;for(let n=t.length-1;n>=0;n--)if(t[n].name===e)return!0;return!1}getPosition(){return this.path.length===0?-1:this.path[this.path.length-1].position??0}getCounter(){return this.path.length===0?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(e,t=!0){let n=e||this.separator;if(n===this.separator&&t===!0){if(this._pathStringCache!==null)return this._pathStringCache;let e=this.path.map(e=>e.namespace?`${e.namespace}:${e.tag}`:e.tag).join(n);return this._pathStringCache=e,e}return this.path.map(e=>t&&e.namespace?`${e.namespace}:${e.tag}`:e.tag).join(n)}toArray(){return this.path.map(e=>e.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[],this._keptAttrs=[]}matches(e){let t=e.segments;return t.length===0?!1:e.hasDeepWildcard()?this._matchWithDeepWildcard(t):this._matchSimple(t)}_matchSimple(e){if(this.path.length!==e.length)return!1;for(let t=0;t=0&&t>=0;){let r=e[n];if(r.type===`deep-wildcard`){if(n--,n<0)return!0;let r=e[n],i=!1;for(let e=t;e>=0;e--)if(this._matchSegment(r,this.path[e],e===this.path.length-1)){t=e-1,n--,i=!0;break}if(!i)return!1}else{if(!this._matchSegment(r,this.path[t],t===this.path.length-1))return!1;t--,n--}}return n<0}_matchSegment(e,t,n){if(e.tag!==`*`&&e.tag!==t.tag||e.namespace!==void 0&&e.namespace!==`*`&&e.namespace!==t.namespace||e.attrName!==void 0&&(!n||!t.values||!(e.attrName in t.values)||e.attrValue!==void 0&&String(t.values[e.attrName])!==String(e.attrValue)))return!1;if(e.position!==void 0){if(!n)return!1;let r=t.counter??0;if(e.position===`first`&&r!==0||e.position===`odd`&&r%2!=1||e.position===`even`&&r%2!=0||e.position===`nth`&&r!==e.positionValue)return!1}return!0}matchesAny(e){return e.matchesAny(this)}snapshot(){return{path:this.path.map(e=>({...e})),siblingStacks:this.siblingStacks.map(e=>e&&{counts:new Map(e.counts),total:e.total}),keptAttrs:this._keptAttrs.map(e=>({...e}))}}restore(e){this._pathStringCache=null,this.path=e.path.map(e=>({...e})),this.siblingStacks=e.siblingStacks.map(e=>e&&{counts:new Map(e.counts),total:e.total}),this._keptAttrs=(e.keptAttrs||[]).map(e=>({...e}))}readOnly(){return this._view}};const kY=[{id:`html-script-open`,description:`