{"version":3,"file":"index.umd.cjs","sources":["../src/utils/cache.ts","../src/init.ts","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/version.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/_shims/registry.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/_shims/MultipartBody.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/_shims/web-runtime.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/_shims/index.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/error.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/streaming.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/uploads.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/core.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/pagination.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resource.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/chat/completions.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/chat/chat.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/audio/speech.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/audio/transcriptions.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/audio/translations.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/audio/audio.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/assistants/files.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/assistants/assistants.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/lib/RunnableFunction.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/lib/chatCompletionUtils.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/lib/AbstractChatCompletionRunner.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/lib/ChatCompletionRunner.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/lib/ChatCompletionStream.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/chat/completions.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/chat/chat.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/threads/messages/files.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/threads/messages/messages.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/threads/runs/steps.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/threads/runs/runs.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/threads/threads.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/beta/beta.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/completions.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/embeddings.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/files.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/fine-tuning/jobs.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/fine-tuning/fine-tuning.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/images.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/models.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/resources/moderations.mjs","../node_modules/.pnpm/openai@4.28.0/node_modules/openai/index.mjs","../src/translate.ts","../src/entries.ts","../node_modules/.pnpm/pyodide@0.25.0/node_modules/pyodide/pyodide.mjs","../src/init.py?raw","../src/console.py?raw","../__vite-browser-external","../node_modules/.pnpm/webidl-conversions@3.0.1/node_modules/webidl-conversions/lib/index.js","../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/utils.js","../node_modules/.pnpm/punycode@2.3.1/node_modules/punycode/punycode.es6.js","../node_modules/.pnpm/tr46@0.0.3/node_modules/tr46/index.js","../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/url-state-machine.js","../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/URL-impl.js","../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/URL.js","../node_modules/.pnpm/whatwg-url@5.0.0/node_modules/whatwg-url/lib/public-api.js","../node_modules/.pnpm/node-fetch@2.7.0/node_modules/node-fetch/lib/index.mjs"],"sourcesContent":["export function cacheSingleton<T extends () => any>(target: T): T {\r\n  const UNSET = {};\r\n  let result: any = UNSET;\r\n\r\n  return (() => {\r\n    if (result !== UNSET)\r\n      return result;\r\n\r\n    result = target();\r\n    return result;\r\n  }) as T;\r\n}\r\n","import type { PyodideInterface } from \"pyodide\";\r\n\r\nimport { cacheSingleton } from \"./utils/cache\";\r\n\r\nasync function initPyodide(indexURL: string = \"https://cdn.jsdelivr.net/pyodide/v0.25.0/full/\", env?: Record<string, string>, packages: string[] = [\"micropip\", \"typing-extensions\"]) {\r\n  const { loadPyodide } = await import(\"pyodide\");\r\n  return await loadPyodide({ indexURL, env: { ...env }, packages });\r\n}\r\n\r\nasync function initPy() {\r\n  const [py, { AsyncClient }, version, { default: initCode }] = await Promise.all([\r\n    initPyodide(),\r\n    import(\"./translate\"),\r\n    import(\"openai/version\"),\r\n    import(\"./init.py?raw\"),\r\n  ]);\r\n\r\n  py.registerJsModule(\"openai\", { AsyncClient, Client: () => null, version, __all__: null });\r\n  py.registerJsModule(\"httpx\", { AsyncClient: () => null, Client: () => null });\r\n\r\n  await py.runPythonAsync(initCode);\r\n\r\n  return py;\r\n}\r\n\r\nexport const getPy: () => Promise<PyodideInterface> = cacheSingleton(initPy);\r\n\r\nexport async function initConsole() {\r\n  const [py, { default: initConsoleCode }] = await Promise.all([getPy(), import(\"./console.py?raw\")]);\r\n  await py.runPythonAsync(initConsoleCode);\r\n}\r\n","export const VERSION = '4.28.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map","export let auto = false;\nexport let kind = undefined;\nexport let fetch = undefined;\nexport let Request = undefined;\nexport let Response = undefined;\nexport let Headers = undefined;\nexport let FormData = undefined;\nexport let Blob = undefined;\nexport let File = undefined;\nexport let ReadableStream = undefined;\nexport let getMultipartRequestOptions = undefined;\nexport let getDefaultAgent = undefined;\nexport let fileFromPath = undefined;\nexport let isFsReadStream = undefined;\nexport function setShims(shims, options = { auto: false }) {\n    if (auto) {\n        throw new Error(`you must \\`import 'openai/shims/${shims.kind}'\\` before importing anything else from openai`);\n    }\n    if (kind) {\n        throw new Error(`can't \\`import 'openai/shims/${shims.kind}'\\` after \\`import 'openai/shims/${kind}'\\``);\n    }\n    auto = options.auto;\n    kind = shims.kind;\n    fetch = shims.fetch;\n    Request = shims.Request;\n    Response = shims.Response;\n    Headers = shims.Headers;\n    FormData = shims.FormData;\n    Blob = shims.Blob;\n    File = shims.File;\n    ReadableStream = shims.ReadableStream;\n    getMultipartRequestOptions = shims.getMultipartRequestOptions;\n    getDefaultAgent = shims.getDefaultAgent;\n    fileFromPath = shims.fileFromPath;\n    isFsReadStream = shims.isFsReadStream;\n}\n//# sourceMappingURL=registry.mjs.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nexport class MultipartBody {\n    constructor(body) {\n        this.body = body;\n    }\n    get [Symbol.toStringTag]() {\n        return 'MultipartBody';\n    }\n}\n//# sourceMappingURL=MultipartBody.mjs.map","import { MultipartBody } from \"./MultipartBody.mjs\";\nexport function getRuntime({ manuallyImported } = {}) {\n    const recommendation = manuallyImported ?\n        `You may need to use polyfills`\n        : `Add one of these imports before your first \\`import … from 'openai'\\`:\n- \\`import 'openai/shims/node'\\` (if you're running on Node)\n- \\`import 'openai/shims/web'\\` (otherwise)\n`;\n    let _fetch, _Request, _Response, _Headers;\n    try {\n        // @ts-ignore\n        _fetch = fetch;\n        // @ts-ignore\n        _Request = Request;\n        // @ts-ignore\n        _Response = Response;\n        // @ts-ignore\n        _Headers = Headers;\n    }\n    catch (error) {\n        throw new Error(`this environment is missing the following Web Fetch API type: ${error.message}. ${recommendation}`);\n    }\n    return {\n        kind: 'web',\n        fetch: _fetch,\n        Request: _Request,\n        Response: _Response,\n        Headers: _Headers,\n        FormData: \n        // @ts-ignore\n        typeof FormData !== 'undefined' ? FormData : (class FormData {\n            // @ts-ignore\n            constructor() {\n                throw new Error(`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${recommendation}`);\n            }\n        }),\n        Blob: typeof Blob !== 'undefined' ? Blob : (class Blob {\n            constructor() {\n                throw new Error(`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${recommendation}`);\n            }\n        }),\n        File: \n        // @ts-ignore\n        typeof File !== 'undefined' ? File : (class File {\n            // @ts-ignore\n            constructor() {\n                throw new Error(`file uploads aren't supported in this environment yet as 'File' is undefined. ${recommendation}`);\n            }\n        }),\n        ReadableStream: \n        // @ts-ignore\n        typeof ReadableStream !== 'undefined' ? ReadableStream : (class ReadableStream {\n            // @ts-ignore\n            constructor() {\n                throw new Error(`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${recommendation}`);\n            }\n        }),\n        getMultipartRequestOptions: async (\n        // @ts-ignore\n        form, opts) => ({\n            ...opts,\n            body: new MultipartBody(form),\n        }),\n        getDefaultAgent: (url) => undefined,\n        fileFromPath: () => {\n            throw new Error('The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/openai/openai-node#file-uploads');\n        },\n        isFsReadStream: (value) => false,\n    };\n}\n//# sourceMappingURL=web-runtime.mjs.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nimport * as shims from './registry.mjs';\nimport * as auto from 'openai/_shims/auto/runtime';\nif (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });\nexport * from './registry.mjs';\n","// File generated from our OpenAPI spec by Stainless.\nimport { castToError } from \"./core.mjs\";\nexport class OpenAIError extends Error {\n}\nexport class APIError extends OpenAIError {\n    constructor(status, error, message, headers) {\n        super(`${APIError.makeMessage(status, error, message)}`);\n        this.status = status;\n        this.headers = headers;\n        const data = error;\n        this.error = data;\n        this.code = data?.['code'];\n        this.param = data?.['param'];\n        this.type = data?.['type'];\n    }\n    static makeMessage(status, error, message) {\n        const msg = error?.message ?\n            typeof error.message === 'string' ?\n                error.message\n                : JSON.stringify(error.message)\n            : error ? JSON.stringify(error)\n                : message;\n        if (status && msg) {\n            return `${status} ${msg}`;\n        }\n        if (status) {\n            return `${status} status code (no body)`;\n        }\n        if (msg) {\n            return msg;\n        }\n        return '(no status code or body)';\n    }\n    static generate(status, errorResponse, message, headers) {\n        if (!status) {\n            return new APIConnectionError({ cause: castToError(errorResponse) });\n        }\n        const error = errorResponse?.['error'];\n        if (status === 400) {\n            return new BadRequestError(status, error, message, headers);\n        }\n        if (status === 401) {\n            return new AuthenticationError(status, error, message, headers);\n        }\n        if (status === 403) {\n            return new PermissionDeniedError(status, error, message, headers);\n        }\n        if (status === 404) {\n            return new NotFoundError(status, error, message, headers);\n        }\n        if (status === 409) {\n            return new ConflictError(status, error, message, headers);\n        }\n        if (status === 422) {\n            return new UnprocessableEntityError(status, error, message, headers);\n        }\n        if (status === 429) {\n            return new RateLimitError(status, error, message, headers);\n        }\n        if (status >= 500) {\n            return new InternalServerError(status, error, message, headers);\n        }\n        return new APIError(status, error, message, headers);\n    }\n}\nexport class APIUserAbortError extends APIError {\n    constructor({ message } = {}) {\n        super(undefined, undefined, message || 'Request was aborted.', undefined);\n        this.status = undefined;\n    }\n}\nexport class APIConnectionError extends APIError {\n    constructor({ message, cause }) {\n        super(undefined, undefined, message || 'Connection error.', undefined);\n        this.status = undefined;\n        // in some environments the 'cause' property is already declared\n        // @ts-ignore\n        if (cause)\n            this.cause = cause;\n    }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n    constructor({ message } = {}) {\n        super({ message: message ?? 'Request timed out.' });\n    }\n}\nexport class BadRequestError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 400;\n    }\n}\nexport class AuthenticationError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 401;\n    }\n}\nexport class PermissionDeniedError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 403;\n    }\n}\nexport class NotFoundError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 404;\n    }\n}\nexport class ConflictError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 409;\n    }\n}\nexport class UnprocessableEntityError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 422;\n    }\n}\nexport class RateLimitError extends APIError {\n    constructor() {\n        super(...arguments);\n        this.status = 429;\n    }\n}\nexport class InternalServerError extends APIError {\n}\n//# sourceMappingURL=error.mjs.map","import { ReadableStream } from \"./_shims/index.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { APIError } from 'openai/error';\nexport class Stream {\n    constructor(iterator, controller) {\n        this.iterator = iterator;\n        this.controller = controller;\n    }\n    static fromSSEResponse(response, controller) {\n        let consumed = false;\n        const decoder = new SSEDecoder();\n        async function* iterMessages() {\n            if (!response.body) {\n                controller.abort();\n                throw new OpenAIError(`Attempted to iterate over a response with no body`);\n            }\n            const lineDecoder = new LineDecoder();\n            const iter = readableStreamAsyncIterable(response.body);\n            for await (const chunk of iter) {\n                for (const line of lineDecoder.decode(chunk)) {\n                    const sse = decoder.decode(line);\n                    if (sse)\n                        yield sse;\n                }\n            }\n            for (const line of lineDecoder.flush()) {\n                const sse = decoder.decode(line);\n                if (sse)\n                    yield sse;\n            }\n        }\n        async function* iterator() {\n            if (consumed) {\n                throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n            }\n            consumed = true;\n            let done = false;\n            try {\n                for await (const sse of iterMessages()) {\n                    if (done)\n                        continue;\n                    if (sse.data.startsWith('[DONE]')) {\n                        done = true;\n                        continue;\n                    }\n                    if (sse.event === null) {\n                        let data;\n                        try {\n                            data = JSON.parse(sse.data);\n                        }\n                        catch (e) {\n                            console.error(`Could not parse message into JSON:`, sse.data);\n                            console.error(`From chunk:`, sse.raw);\n                            throw e;\n                        }\n                        if (data && data.error) {\n                            throw new APIError(undefined, data.error, undefined, undefined);\n                        }\n                        yield data;\n                    }\n                }\n                done = true;\n            }\n            catch (e) {\n                // If the user calls `stream.controller.abort()`, we should exit without throwing.\n                if (e instanceof Error && e.name === 'AbortError')\n                    return;\n                throw e;\n            }\n            finally {\n                // If the user `break`s, abort the ongoing request.\n                if (!done)\n                    controller.abort();\n            }\n        }\n        return new Stream(iterator, controller);\n    }\n    /**\n     * Generates a Stream from a newline-separated ReadableStream\n     * where each item is a JSON value.\n     */\n    static fromReadableStream(readableStream, controller) {\n        let consumed = false;\n        async function* iterLines() {\n            const lineDecoder = new LineDecoder();\n            const iter = readableStreamAsyncIterable(readableStream);\n            for await (const chunk of iter) {\n                for (const line of lineDecoder.decode(chunk)) {\n                    yield line;\n                }\n            }\n            for (const line of lineDecoder.flush()) {\n                yield line;\n            }\n        }\n        async function* iterator() {\n            if (consumed) {\n                throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n            }\n            consumed = true;\n            let done = false;\n            try {\n                for await (const line of iterLines()) {\n                    if (done)\n                        continue;\n                    if (line)\n                        yield JSON.parse(line);\n                }\n                done = true;\n            }\n            catch (e) {\n                // If the user calls `stream.controller.abort()`, we should exit without throwing.\n                if (e instanceof Error && e.name === 'AbortError')\n                    return;\n                throw e;\n            }\n            finally {\n                // If the user `break`s, abort the ongoing request.\n                if (!done)\n                    controller.abort();\n            }\n        }\n        return new Stream(iterator, controller);\n    }\n    [Symbol.asyncIterator]() {\n        return this.iterator();\n    }\n    /**\n     * Splits the stream into two streams which can be\n     * independently read from at different speeds.\n     */\n    tee() {\n        const left = [];\n        const right = [];\n        const iterator = this.iterator();\n        const teeIterator = (queue) => {\n            return {\n                next: () => {\n                    if (queue.length === 0) {\n                        const result = iterator.next();\n                        left.push(result);\n                        right.push(result);\n                    }\n                    return queue.shift();\n                },\n            };\n        };\n        return [\n            new Stream(() => teeIterator(left), this.controller),\n            new Stream(() => teeIterator(right), this.controller),\n        ];\n    }\n    /**\n     * Converts this stream to a newline-separated ReadableStream of\n     * JSON stringified values in the stream\n     * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n     */\n    toReadableStream() {\n        const self = this;\n        let iter;\n        const encoder = new TextEncoder();\n        return new ReadableStream({\n            async start() {\n                iter = self[Symbol.asyncIterator]();\n            },\n            async pull(ctrl) {\n                try {\n                    const { value, done } = await iter.next();\n                    if (done)\n                        return ctrl.close();\n                    const bytes = encoder.encode(JSON.stringify(value) + '\\n');\n                    ctrl.enqueue(bytes);\n                }\n                catch (err) {\n                    ctrl.error(err);\n                }\n            },\n            async cancel() {\n                await iter.return?.();\n            },\n        });\n    }\n}\nclass SSEDecoder {\n    constructor() {\n        this.event = null;\n        this.data = [];\n        this.chunks = [];\n    }\n    decode(line) {\n        if (line.endsWith('\\r')) {\n            line = line.substring(0, line.length - 1);\n        }\n        if (!line) {\n            // empty line and we didn't previously encounter any messages\n            if (!this.event && !this.data.length)\n                return null;\n            const sse = {\n                event: this.event,\n                data: this.data.join('\\n'),\n                raw: this.chunks,\n            };\n            this.event = null;\n            this.data = [];\n            this.chunks = [];\n            return sse;\n        }\n        this.chunks.push(line);\n        if (line.startsWith(':')) {\n            return null;\n        }\n        let [fieldname, _, value] = partition(line, ':');\n        if (value.startsWith(' ')) {\n            value = value.substring(1);\n        }\n        if (fieldname === 'event') {\n            this.event = value;\n        }\n        else if (fieldname === 'data') {\n            this.data.push(value);\n        }\n        return null;\n    }\n}\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nclass LineDecoder {\n    constructor() {\n        this.buffer = [];\n        this.trailingCR = false;\n    }\n    decode(chunk) {\n        let text = this.decodeText(chunk);\n        if (this.trailingCR) {\n            text = '\\r' + text;\n            this.trailingCR = false;\n        }\n        if (text.endsWith('\\r')) {\n            this.trailingCR = true;\n            text = text.slice(0, -1);\n        }\n        if (!text) {\n            return [];\n        }\n        const trailingNewline = LineDecoder.NEWLINE_CHARS.has(text[text.length - 1] || '');\n        let lines = text.split(LineDecoder.NEWLINE_REGEXP);\n        if (lines.length === 1 && !trailingNewline) {\n            this.buffer.push(lines[0]);\n            return [];\n        }\n        if (this.buffer.length > 0) {\n            lines = [this.buffer.join('') + lines[0], ...lines.slice(1)];\n            this.buffer = [];\n        }\n        if (!trailingNewline) {\n            this.buffer = [lines.pop() || ''];\n        }\n        return lines;\n    }\n    decodeText(bytes) {\n        if (bytes == null)\n            return '';\n        if (typeof bytes === 'string')\n            return bytes;\n        // Node:\n        if (typeof Buffer !== 'undefined') {\n            if (bytes instanceof Buffer) {\n                return bytes.toString();\n            }\n            if (bytes instanceof Uint8Array) {\n                return Buffer.from(bytes).toString();\n            }\n            throw new OpenAIError(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global \"Buffer\" defined, which this library assumes to be Node. Please report this error.`);\n        }\n        // Browser\n        if (typeof TextDecoder !== 'undefined') {\n            if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {\n                this.textDecoder ?? (this.textDecoder = new TextDecoder('utf8'));\n                return this.textDecoder.decode(bytes);\n            }\n            throw new OpenAIError(`Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform. Please report this error.`);\n        }\n        throw new OpenAIError(`Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`);\n    }\n    flush() {\n        if (!this.buffer.length && !this.trailingCR) {\n            return [];\n        }\n        const lines = [this.buffer.join('')];\n        this.buffer = [];\n        this.trailingCR = false;\n        return lines;\n    }\n}\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r', '\\x0b', '\\x0c', '\\x1c', '\\x1d', '\\x1e', '\\x85', '\\u2028', '\\u2029']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r\\x0b\\x0c\\x1c\\x1d\\x1e\\x85\\u2028\\u2029]/g;\nfunction partition(str, delimiter) {\n    const index = str.indexOf(delimiter);\n    if (index !== -1) {\n        return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n    }\n    return [str, '', ''];\n}\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function readableStreamAsyncIterable(stream) {\n    if (stream[Symbol.asyncIterator])\n        return stream;\n    const reader = stream.getReader();\n    return {\n        async next() {\n            try {\n                const result = await reader.read();\n                if (result?.done)\n                    reader.releaseLock(); // release lock when stream becomes closed\n                return result;\n            }\n            catch (e) {\n                reader.releaseLock(); // release lock when stream becomes errored\n                throw e;\n            }\n        },\n        async return() {\n            const cancelPromise = reader.cancel();\n            reader.releaseLock();\n            await cancelPromise;\n            return { done: true, value: undefined };\n        },\n        [Symbol.asyncIterator]() {\n            return this;\n        },\n    };\n}\n//# sourceMappingURL=streaming.mjs.map","import { FormData, File, getMultipartRequestOptions, isFsReadStream, } from \"./_shims/index.mjs\";\nexport { fileFromPath } from \"./_shims/index.mjs\";\nexport const isResponseLike = (value) => value != null &&\n    typeof value === 'object' &&\n    typeof value.url === 'string' &&\n    typeof value.blob === 'function';\nexport const isFileLike = (value) => value != null &&\n    typeof value === 'object' &&\n    typeof value.name === 'string' &&\n    typeof value.lastModified === 'number' &&\n    isBlobLike(value);\n/**\n * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check\n * adds the arrayBuffer() method type because it is available and used at runtime\n */\nexport const isBlobLike = (value) => value != null &&\n    typeof value === 'object' &&\n    typeof value.size === 'number' &&\n    typeof value.type === 'string' &&\n    typeof value.text === 'function' &&\n    typeof value.slice === 'function' &&\n    typeof value.arrayBuffer === 'function';\nexport const isUploadable = (value) => {\n    return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);\n};\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file.  Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options = {}) {\n    // If it's a promise, resolve it.\n    value = await value;\n    if (isResponseLike(value)) {\n        const blob = await value.blob();\n        name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop() ?? 'unknown_file');\n        return new File([blob], name, options);\n    }\n    const bits = await getBytes(value);\n    name || (name = getName(value) ?? 'unknown_file');\n    if (!options.type) {\n        const type = bits[0]?.type;\n        if (typeof type === 'string') {\n            options = { ...options, type };\n        }\n    }\n    return new File(bits, name, options);\n}\nasync function getBytes(value) {\n    let parts = [];\n    if (typeof value === 'string' ||\n        ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n        value instanceof ArrayBuffer) {\n        parts.push(value);\n    }\n    else if (isBlobLike(value)) {\n        parts.push(await value.arrayBuffer());\n    }\n    else if (isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.\n    ) {\n        for await (const chunk of value) {\n            parts.push(chunk); // TODO, consider validating?\n        }\n    }\n    else {\n        throw new Error(`Unexpected data type: ${typeof value}; constructor: ${value?.constructor\n            ?.name}; props: ${propsForError(value)}`);\n    }\n    return parts;\n}\nfunction propsForError(value) {\n    const props = Object.getOwnPropertyNames(value);\n    return `[${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\nfunction getName(value) {\n    return (getStringFromMaybeBuffer(value.name) ||\n        getStringFromMaybeBuffer(value.filename) ||\n        // For fs.ReadStream\n        getStringFromMaybeBuffer(value.path)?.split(/[\\\\/]/).pop());\n}\nconst getStringFromMaybeBuffer = (x) => {\n    if (typeof x === 'string')\n        return x;\n    if (typeof Buffer !== 'undefined' && x instanceof Buffer)\n        return String(x);\n    return undefined;\n};\nconst isAsyncIterableIterator = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\nexport const isMultipartBody = (body) => body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts) => {\n    if (!hasUploadableValue(opts.body))\n        return opts;\n    const form = await createForm(opts.body);\n    return getMultipartRequestOptions(form, opts);\n};\nexport const multipartFormRequestOptions = async (opts) => {\n    const form = await createForm(opts.body);\n    return getMultipartRequestOptions(form, opts);\n};\nexport const createForm = async (body) => {\n    const form = new FormData();\n    await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n    return form;\n};\nconst hasUploadableValue = (value) => {\n    if (isUploadable(value))\n        return true;\n    if (Array.isArray(value))\n        return value.some(hasUploadableValue);\n    if (value && typeof value === 'object') {\n        for (const k in value) {\n            if (hasUploadableValue(value[k]))\n                return true;\n        }\n    }\n    return false;\n};\nconst addFormValue = async (form, key, value) => {\n    if (value === undefined)\n        return;\n    if (value == null) {\n        throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n    }\n    // TODO: make nested formats configurable\n    if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        form.append(key, String(value));\n    }\n    else if (isUploadable(value)) {\n        const file = await toFile(value);\n        form.append(key, file);\n    }\n    else if (Array.isArray(value)) {\n        await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n    }\n    else if (typeof value === 'object') {\n        await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n    }\n    else {\n        throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n    }\n};\n//# sourceMappingURL=uploads.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractPage_client;\nimport { VERSION } from \"./version.mjs\";\nimport { Stream } from \"./streaming.mjs\";\nimport { OpenAIError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, } from \"./error.mjs\";\nimport { kind as shimsKind, getDefaultAgent, fetch, } from \"./_shims/index.mjs\";\nimport { isMultipartBody } from \"./uploads.mjs\";\nexport { maybeMultipartFormRequestOptions, multipartFormRequestOptions, createForm, } from \"./uploads.mjs\";\nasync function defaultParseResponse(props) {\n    const { response } = props;\n    if (props.options.stream) {\n        debug('response', response.status, response.url, response.headers, response.body);\n        // Note: there is an invariant here that isn't represented in the type system\n        // that if you set `stream: true` the response type must also be `Stream<T>`\n        if (props.options.__streamClass) {\n            return props.options.__streamClass.fromSSEResponse(response, props.controller);\n        }\n        return Stream.fromSSEResponse(response, props.controller);\n    }\n    // fetch refuses to read the body when the status code is 204.\n    if (response.status === 204) {\n        return null;\n    }\n    if (props.options.__binaryResponse) {\n        return response;\n    }\n    const contentType = response.headers.get('content-type');\n    const isJSON = contentType?.includes('application/json') || contentType?.includes('application/vnd.api+json');\n    if (isJSON) {\n        const json = await response.json();\n        debug('response', response.status, response.url, response.headers, json);\n        return json;\n    }\n    const text = await response.text();\n    debug('response', response.status, response.url, response.headers, text);\n    // TODO handle blob, arraybuffer, other content types, etc.\n    return text;\n}\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n    constructor(responsePromise, parseResponse = defaultParseResponse) {\n        super((resolve) => {\n            // this is maybe a bit weird but this has to be a no-op to not implicitly\n            // parse the response body; instead .then, .catch, .finally are overridden\n            // to parse the response\n            resolve(null);\n        });\n        this.responsePromise = responsePromise;\n        this.parseResponse = parseResponse;\n    }\n    _thenUnwrap(transform) {\n        return new APIPromise(this.responsePromise, async (props) => transform(await this.parseResponse(props)));\n    }\n    /**\n     * Gets the raw `Response` instance instead of parsing the response\n     * data.\n     *\n     * If you want to parse the response body but still get the `Response`\n     * instance, you can use {@link withResponse()}.\n     *\n     * 👋 Getting the wrong TypeScript type for `Response`?\n     * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n     * or add one of these imports before your first `import … from 'openai'`:\n     * - `import 'openai/shims/node'` (if you're running on Node)\n     * - `import 'openai/shims/web'` (otherwise)\n     */\n    asResponse() {\n        return this.responsePromise.then((p) => p.response);\n    }\n    /**\n     * Gets the parsed response data and the raw `Response` instance.\n     *\n     * If you just want to get the raw `Response` instance without parsing it,\n     * you can use {@link asResponse()}.\n     *\n     *\n     * 👋 Getting the wrong TypeScript type for `Response`?\n     * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n     * or add one of these imports before your first `import … from 'openai'`:\n     * - `import 'openai/shims/node'` (if you're running on Node)\n     * - `import 'openai/shims/web'` (otherwise)\n     */\n    async withResponse() {\n        const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n        return { data, response };\n    }\n    parse() {\n        if (!this.parsedPromise) {\n            this.parsedPromise = this.responsePromise.then(this.parseResponse);\n        }\n        return this.parsedPromise;\n    }\n    then(onfulfilled, onrejected) {\n        return this.parse().then(onfulfilled, onrejected);\n    }\n    catch(onrejected) {\n        return this.parse().catch(onrejected);\n    }\n    finally(onfinally) {\n        return this.parse().finally(onfinally);\n    }\n}\nexport class APIClient {\n    constructor({ baseURL, maxRetries = 2, timeout = 600000, // 10 minutes\n    httpAgent, fetch: overridenFetch, }) {\n        this.baseURL = baseURL;\n        this.maxRetries = validatePositiveInteger('maxRetries', maxRetries);\n        this.timeout = validatePositiveInteger('timeout', timeout);\n        this.httpAgent = httpAgent;\n        this.fetch = overridenFetch ?? fetch;\n    }\n    authHeaders(opts) {\n        return {};\n    }\n    /**\n     * Override this to add your own default headers, for example:\n     *\n     *  {\n     *    ...super.defaultHeaders(),\n     *    Authorization: 'Bearer 123',\n     *  }\n     */\n    defaultHeaders(opts) {\n        return {\n            Accept: 'application/json',\n            'Content-Type': 'application/json',\n            'User-Agent': this.getUserAgent(),\n            ...getPlatformHeaders(),\n            ...this.authHeaders(opts),\n        };\n    }\n    /**\n     * Override this to add your own headers validation:\n     */\n    validateHeaders(headers, customHeaders) { }\n    defaultIdempotencyKey() {\n        return `stainless-node-retry-${uuid4()}`;\n    }\n    get(path, opts) {\n        return this.methodRequest('get', path, opts);\n    }\n    post(path, opts) {\n        return this.methodRequest('post', path, opts);\n    }\n    patch(path, opts) {\n        return this.methodRequest('patch', path, opts);\n    }\n    put(path, opts) {\n        return this.methodRequest('put', path, opts);\n    }\n    delete(path, opts) {\n        return this.methodRequest('delete', path, opts);\n    }\n    methodRequest(method, path, opts) {\n        return this.request(Promise.resolve(opts).then((opts) => ({ method, path, ...opts })));\n    }\n    getAPIList(path, Page, opts) {\n        return this.requestAPIList(Page, { method: 'get', path, ...opts });\n    }\n    calculateContentLength(body) {\n        if (typeof body === 'string') {\n            if (typeof Buffer !== 'undefined') {\n                return Buffer.byteLength(body, 'utf8').toString();\n            }\n            if (typeof TextEncoder !== 'undefined') {\n                const encoder = new TextEncoder();\n                const encoded = encoder.encode(body);\n                return encoded.length.toString();\n            }\n        }\n        return null;\n    }\n    buildRequest(options) {\n        const { method, path, query, headers: headers = {} } = options;\n        const body = isMultipartBody(options.body) ? options.body.body\n            : options.body ? JSON.stringify(options.body, null, 2)\n                : null;\n        const contentLength = this.calculateContentLength(body);\n        const url = this.buildURL(path, query);\n        if ('timeout' in options)\n            validatePositiveInteger('timeout', options.timeout);\n        const timeout = options.timeout ?? this.timeout;\n        const httpAgent = options.httpAgent ?? this.httpAgent ?? getDefaultAgent(url);\n        const minAgentTimeout = timeout + 1000;\n        if (typeof httpAgent?.options?.timeout === 'number' &&\n            minAgentTimeout > (httpAgent.options.timeout ?? 0)) {\n            // Allow any given request to bump our agent active socket timeout.\n            // This may seem strange, but leaking active sockets should be rare and not particularly problematic,\n            // and without mutating agent we would need to create more of them.\n            // This tradeoff optimizes for performance.\n            httpAgent.options.timeout = minAgentTimeout;\n        }\n        if (this.idempotencyHeader && method !== 'get') {\n            if (!options.idempotencyKey)\n                options.idempotencyKey = this.defaultIdempotencyKey();\n            headers[this.idempotencyHeader] = options.idempotencyKey;\n        }\n        const reqHeaders = this.buildHeaders({ options, headers, contentLength });\n        const req = {\n            method,\n            ...(body && { body: body }),\n            headers: reqHeaders,\n            ...(httpAgent && { agent: httpAgent }),\n            // @ts-ignore node-fetch uses a custom AbortSignal type that is\n            // not compatible with standard web types\n            signal: options.signal ?? null,\n        };\n        return { req, url, timeout };\n    }\n    buildHeaders({ options, headers, contentLength, }) {\n        const reqHeaders = {};\n        if (contentLength) {\n            reqHeaders['content-length'] = contentLength;\n        }\n        const defaultHeaders = this.defaultHeaders(options);\n        applyHeadersMut(reqHeaders, defaultHeaders);\n        applyHeadersMut(reqHeaders, headers);\n        // let builtin fetch set the Content-Type for multipart bodies\n        if (isMultipartBody(options.body) && shimsKind !== 'node') {\n            delete reqHeaders['content-type'];\n        }\n        this.validateHeaders(reqHeaders, headers);\n        return reqHeaders;\n    }\n    /**\n     * Used as a callback for mutating the given `FinalRequestOptions` object.\n     */\n    async prepareOptions(options) { }\n    /**\n     * Used as a callback for mutating the given `RequestInit` object.\n     *\n     * This is useful for cases where you want to add certain headers based off of\n     * the request properties, e.g. `method` or `url`.\n     */\n    async prepareRequest(request, { url, options }) { }\n    parseHeaders(headers) {\n        return (!headers ? {}\n            : Symbol.iterator in headers ?\n                Object.fromEntries(Array.from(headers).map((header) => [...header]))\n                : { ...headers });\n    }\n    makeStatusError(status, error, message, headers) {\n        return APIError.generate(status, error, message, headers);\n    }\n    request(options, remainingRetries = null) {\n        return new APIPromise(this.makeRequest(options, remainingRetries));\n    }\n    async makeRequest(optionsInput, retriesRemaining) {\n        const options = await optionsInput;\n        if (retriesRemaining == null) {\n            retriesRemaining = options.maxRetries ?? this.maxRetries;\n        }\n        await this.prepareOptions(options);\n        const { req, url, timeout } = this.buildRequest(options);\n        await this.prepareRequest(req, { url, options });\n        debug('request', url, options, req.headers);\n        if (options.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        const controller = new AbortController();\n        const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n        if (response instanceof Error) {\n            if (options.signal?.aborted) {\n                throw new APIUserAbortError();\n            }\n            if (retriesRemaining) {\n                return this.retryRequest(options, retriesRemaining);\n            }\n            if (response.name === 'AbortError') {\n                throw new APIConnectionTimeoutError();\n            }\n            throw new APIConnectionError({ cause: response });\n        }\n        const responseHeaders = createResponseHeaders(response.headers);\n        if (!response.ok) {\n            if (retriesRemaining && this.shouldRetry(response)) {\n                const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n                debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders);\n                return this.retryRequest(options, retriesRemaining, responseHeaders);\n            }\n            const errText = await response.text().catch((e) => castToError(e).message);\n            const errJSON = safeJSON(errText);\n            const errMessage = errJSON ? undefined : errText;\n            const retryMessage = retriesRemaining ? `(error; no more retries left)` : `(error; not retryable)`;\n            debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders, errMessage);\n            const err = this.makeStatusError(response.status, errJSON, errMessage, responseHeaders);\n            throw err;\n        }\n        return { response, options, controller };\n    }\n    requestAPIList(Page, options) {\n        const request = this.makeRequest(options, null);\n        return new PagePromise(this, request, Page);\n    }\n    buildURL(path, query) {\n        const url = isAbsoluteURL(path) ?\n            new URL(path)\n            : new URL(this.baseURL + (this.baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n        const defaultQuery = this.defaultQuery();\n        if (!isEmptyObj(defaultQuery)) {\n            query = { ...defaultQuery, ...query };\n        }\n        if (typeof query === 'object' && query && !Array.isArray(query)) {\n            url.search = this.stringifyQuery(query);\n        }\n        return url.toString();\n    }\n    stringifyQuery(query) {\n        return Object.entries(query)\n            .filter(([_, value]) => typeof value !== 'undefined')\n            .map(([key, value]) => {\n            if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n                return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n            }\n            if (value === null) {\n                return `${encodeURIComponent(key)}=`;\n            }\n            throw new OpenAIError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`);\n        })\n            .join('&');\n    }\n    async fetchWithTimeout(url, init, ms, controller) {\n        const { signal, ...options } = init || {};\n        if (signal)\n            signal.addEventListener('abort', () => controller.abort());\n        const timeout = setTimeout(() => controller.abort(), ms);\n        return (this.getRequestClient()\n            // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n            .fetch.call(undefined, url, { signal: controller.signal, ...options })\n            .finally(() => {\n            clearTimeout(timeout);\n        }));\n    }\n    getRequestClient() {\n        return { fetch: this.fetch };\n    }\n    shouldRetry(response) {\n        // Note this is not a standard header.\n        const shouldRetryHeader = response.headers.get('x-should-retry');\n        // If the server explicitly says whether or not to retry, obey.\n        if (shouldRetryHeader === 'true')\n            return true;\n        if (shouldRetryHeader === 'false')\n            return false;\n        // Retry on request timeouts.\n        if (response.status === 408)\n            return true;\n        // Retry on lock timeouts.\n        if (response.status === 409)\n            return true;\n        // Retry on rate limits.\n        if (response.status === 429)\n            return true;\n        // Retry internal errors.\n        if (response.status >= 500)\n            return true;\n        return false;\n    }\n    async retryRequest(options, retriesRemaining, responseHeaders) {\n        let timeoutMillis;\n        // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n        const retryAfterMillisHeader = responseHeaders?.['retry-after-ms'];\n        if (retryAfterMillisHeader) {\n            const timeoutMs = parseFloat(retryAfterMillisHeader);\n            if (!Number.isNaN(timeoutMs)) {\n                timeoutMillis = timeoutMs;\n            }\n        }\n        // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n        const retryAfterHeader = responseHeaders?.['retry-after'];\n        if (retryAfterHeader && !timeoutMillis) {\n            const timeoutSeconds = parseFloat(retryAfterHeader);\n            if (!Number.isNaN(timeoutSeconds)) {\n                timeoutMillis = timeoutSeconds * 1000;\n            }\n            else {\n                timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n            }\n        }\n        // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n        // just do what it says, but otherwise calculate a default\n        if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n            const maxRetries = options.maxRetries ?? this.maxRetries;\n            timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n        }\n        await sleep(timeoutMillis);\n        return this.makeRequest(options, retriesRemaining - 1);\n    }\n    calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n        const initialRetryDelay = 0.5;\n        const maxRetryDelay = 8.0;\n        const numRetries = maxRetries - retriesRemaining;\n        // Apply exponential backoff, but not more than the max.\n        const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n        // Apply some jitter, take up to at most 25 percent of the retry time.\n        const jitter = 1 - Math.random() * 0.25;\n        return sleepSeconds * jitter * 1000;\n    }\n    getUserAgent() {\n        return `${this.constructor.name}/JS ${VERSION}`;\n    }\n}\nexport class AbstractPage {\n    constructor(client, response, body, options) {\n        _AbstractPage_client.set(this, void 0);\n        __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n        this.options = options;\n        this.response = response;\n        this.body = body;\n    }\n    hasNextPage() {\n        const items = this.getPaginatedItems();\n        if (!items.length)\n            return false;\n        return this.nextPageInfo() != null;\n    }\n    async getNextPage() {\n        const nextInfo = this.nextPageInfo();\n        if (!nextInfo) {\n            throw new OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n        }\n        const nextOptions = { ...this.options };\n        if ('params' in nextInfo && typeof nextOptions.query === 'object') {\n            nextOptions.query = { ...nextOptions.query, ...nextInfo.params };\n        }\n        else if ('url' in nextInfo) {\n            const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];\n            for (const [key, value] of params) {\n                nextInfo.url.searchParams.set(key, value);\n            }\n            nextOptions.query = undefined;\n            nextOptions.path = nextInfo.url.toString();\n        }\n        return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n    }\n    async *iterPages() {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        let page = this;\n        yield page;\n        while (page.hasNextPage()) {\n            page = await page.getNextPage();\n            yield page;\n        }\n    }\n    async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n        for await (const page of this.iterPages()) {\n            for (const item of page.getPaginatedItems()) {\n                yield item;\n            }\n        }\n    }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n *    for await (const item of client.items.list()) {\n *      console.log(item)\n *    }\n */\nexport class PagePromise extends APIPromise {\n    constructor(client, request, Page) {\n        super(request, async (props) => new Page(client, props.response, await defaultParseResponse(props), props.options));\n    }\n    /**\n     * Allow auto-paginating iteration on an unawaited list call, eg:\n     *\n     *    for await (const item of client.items.list()) {\n     *      console.log(item)\n     *    }\n     */\n    async *[Symbol.asyncIterator]() {\n        const page = await this;\n        for await (const item of page) {\n            yield item;\n        }\n    }\n}\nexport const createResponseHeaders = (headers) => {\n    return new Proxy(Object.fromEntries(\n    // @ts-ignore\n    headers.entries()), {\n        get(target, name) {\n            const key = name.toString();\n            return target[key.toLowerCase()] || target[key];\n        },\n    });\n};\n// This is required so that we can determine if a given object matches the RequestOptions\n// type at runtime. While this requires duplication, it is enforced by the TypeScript\n// compiler such that any missing / extraneous keys will cause an error.\nconst requestOptionsKeys = {\n    method: true,\n    path: true,\n    query: true,\n    body: true,\n    headers: true,\n    maxRetries: true,\n    stream: true,\n    timeout: true,\n    httpAgent: true,\n    signal: true,\n    idempotencyKey: true,\n    __binaryResponse: true,\n    __streamClass: true,\n};\nexport const isRequestOptions = (obj) => {\n    return (typeof obj === 'object' &&\n        obj !== null &&\n        !isEmptyObj(obj) &&\n        Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k)));\n};\nconst getPlatformProperties = () => {\n    if (typeof Deno !== 'undefined' && Deno.build != null) {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': normalizePlatform(Deno.build.os),\n            'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n            'X-Stainless-Runtime': 'deno',\n            'X-Stainless-Runtime-Version': Deno.version,\n        };\n    }\n    if (typeof EdgeRuntime !== 'undefined') {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': 'Unknown',\n            'X-Stainless-Arch': `other:${EdgeRuntime}`,\n            'X-Stainless-Runtime': 'edge',\n            'X-Stainless-Runtime-Version': process.version,\n        };\n    }\n    // Check if Node.js\n    if (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': normalizePlatform(process.platform),\n            'X-Stainless-Arch': normalizeArch(process.arch),\n            'X-Stainless-Runtime': 'node',\n            'X-Stainless-Runtime-Version': process.version,\n        };\n    }\n    const browserInfo = getBrowserInfo();\n    if (browserInfo) {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': 'Unknown',\n            'X-Stainless-Arch': 'unknown',\n            'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n            'X-Stainless-Runtime-Version': browserInfo.version,\n        };\n    }\n    // TODO add support for Cloudflare workers, etc.\n    return {\n        'X-Stainless-Lang': 'js',\n        'X-Stainless-Package-Version': VERSION,\n        'X-Stainless-OS': 'Unknown',\n        'X-Stainless-Arch': 'unknown',\n        'X-Stainless-Runtime': 'unknown',\n        'X-Stainless-Runtime-Version': 'unknown',\n    };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n    if (typeof navigator === 'undefined' || !navigator) {\n        return null;\n    }\n    // NOTE: The order matters here!\n    const browserPatterns = [\n        { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n    ];\n    // Find the FIRST matching browser\n    for (const { key, pattern } of browserPatterns) {\n        const match = pattern.exec(navigator.userAgent);\n        if (match) {\n            const major = match[1] || 0;\n            const minor = match[2] || 0;\n            const patch = match[3] || 0;\n            return { browser: key, version: `${major}.${minor}.${patch}` };\n        }\n    }\n    return null;\n}\nconst normalizeArch = (arch) => {\n    // Node docs:\n    // - https://nodejs.org/api/process.html#processarch\n    // Deno docs:\n    // - https://doc.deno.land/deno/stable/~/Deno.build\n    if (arch === 'x32')\n        return 'x32';\n    if (arch === 'x86_64' || arch === 'x64')\n        return 'x64';\n    if (arch === 'arm')\n        return 'arm';\n    if (arch === 'aarch64' || arch === 'arm64')\n        return 'arm64';\n    if (arch)\n        return `other:${arch}`;\n    return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n    // Node platforms:\n    // - https://nodejs.org/api/process.html#processplatform\n    // Deno platforms:\n    // - https://doc.deno.land/deno/stable/~/Deno.build\n    // - https://github.com/denoland/deno/issues/14799\n    platform = platform.toLowerCase();\n    // NOTE: this iOS check is untested and may not work\n    // Node does not work natively on IOS, there is a fork at\n    // https://github.com/nodejs-mobile/nodejs-mobile\n    // however it is unknown at the time of writing how to detect if it is running\n    if (platform.includes('ios'))\n        return 'iOS';\n    if (platform === 'android')\n        return 'Android';\n    if (platform === 'darwin')\n        return 'MacOS';\n    if (platform === 'win32')\n        return 'Windows';\n    if (platform === 'freebsd')\n        return 'FreeBSD';\n    if (platform === 'openbsd')\n        return 'OpenBSD';\n    if (platform === 'linux')\n        return 'Linux';\n    if (platform)\n        return `Other:${platform}`;\n    return 'Unknown';\n};\nlet _platformHeaders;\nconst getPlatformHeaders = () => {\n    return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\nexport const safeJSON = (text) => {\n    try {\n        return JSON.parse(text);\n    }\n    catch (err) {\n        return undefined;\n    }\n};\n// https://stackoverflow.com/a/19709846\nconst startsWithSchemeRegexp = new RegExp('^(?:[a-z]+:)?//', 'i');\nconst isAbsoluteURL = (url) => {\n    return startsWithSchemeRegexp.test(url);\n};\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst validatePositiveInteger = (name, n) => {\n    if (typeof n !== 'number' || !Number.isInteger(n)) {\n        throw new OpenAIError(`${name} must be an integer`);\n    }\n    if (n < 0) {\n        throw new OpenAIError(`${name} must be a positive integer`);\n    }\n    return n;\n};\nexport const castToError = (err) => {\n    if (err instanceof Error)\n        return err;\n    return new Error(err);\n};\nexport const ensurePresent = (value) => {\n    if (value == null)\n        throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n    return value;\n};\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n    if (typeof process !== 'undefined') {\n        return process.env?.[env]?.trim() ?? undefined;\n    }\n    if (typeof Deno !== 'undefined') {\n        return Deno.env?.get?.(env)?.trim();\n    }\n    return undefined;\n};\nexport const coerceInteger = (value) => {\n    if (typeof value === 'number')\n        return Math.round(value);\n    if (typeof value === 'string')\n        return parseInt(value, 10);\n    throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n    if (typeof value === 'number')\n        return value;\n    if (typeof value === 'string')\n        return parseFloat(value);\n    throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n    if (typeof value === 'boolean')\n        return value;\n    if (typeof value === 'string')\n        return value === 'true';\n    return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n    if (value === undefined) {\n        return undefined;\n    }\n    return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n    if (value === undefined) {\n        return undefined;\n    }\n    return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n    if (value === undefined) {\n        return undefined;\n    }\n    return coerceBoolean(value);\n};\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n    if (!obj)\n        return true;\n    for (const _k in obj)\n        return false;\n    return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n * Copies headers from \"newHeaders\" onto \"targetHeaders\",\n * using lower-case for all properties,\n * ignoring any keys with undefined values,\n * and deleting any keys with null values.\n */\nfunction applyHeadersMut(targetHeaders, newHeaders) {\n    for (const k in newHeaders) {\n        if (!hasOwn(newHeaders, k))\n            continue;\n        const lowerKey = k.toLowerCase();\n        if (!lowerKey)\n            continue;\n        const val = newHeaders[k];\n        if (val === null) {\n            delete targetHeaders[lowerKey];\n        }\n        else if (val !== undefined) {\n            targetHeaders[lowerKey] = val;\n        }\n    }\n}\nexport function debug(action, ...args) {\n    if (typeof process !== 'undefined' && process.env['DEBUG'] === 'true') {\n        console.log(`OpenAI:DEBUG:${action}`, ...args);\n    }\n}\n/**\n * https://stackoverflow.com/a/2117523\n */\nconst uuid4 = () => {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        const r = (Math.random() * 16) | 0;\n        const v = c === 'x' ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n    });\n};\nexport const isRunningInBrowser = () => {\n    return (\n    // @ts-ignore\n    typeof window !== 'undefined' &&\n        // @ts-ignore\n        typeof window.document !== 'undefined' &&\n        // @ts-ignore\n        typeof navigator !== 'undefined');\n};\nexport const isHeadersProtocol = (headers) => {\n    return typeof headers?.get === 'function';\n};\nexport const getRequiredHeader = (headers, header) => {\n    const lowerCasedHeader = header.toLowerCase();\n    if (isHeadersProtocol(headers)) {\n        // to deal with the case where the header looks like Stainless-Event-Id\n        const intercapsHeader = header[0]?.toUpperCase() +\n            header.substring(1).replace(/([^\\w])(\\w)/g, (_m, g1, g2) => g1 + g2.toUpperCase());\n        for (const key of [header, lowerCasedHeader, header.toUpperCase(), intercapsHeader]) {\n            const value = headers.get(key);\n            if (value) {\n                return value;\n            }\n        }\n    }\n    for (const [key, value] of Object.entries(headers)) {\n        if (key.toLowerCase() === lowerCasedHeader) {\n            if (Array.isArray(value)) {\n                if (value.length <= 1)\n                    return value[0];\n                console.warn(`Received ${value.length} entries for the ${header} header, using the first entry.`);\n                return value[0];\n            }\n            return value;\n        }\n    }\n    throw new Error(`Could not find ${header} header`);\n};\n/**\n * Encodes a string to Base64 format.\n */\nexport const toBase64 = (str) => {\n    if (!str)\n        return '';\n    if (typeof Buffer !== 'undefined') {\n        return Buffer.from(str).toString('base64');\n    }\n    if (typeof btoa !== 'undefined') {\n        return btoa(str);\n    }\n    throw new OpenAIError('Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined');\n};\nexport function isObj(obj) {\n    return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n//# sourceMappingURL=core.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { AbstractPage } from \"./core.mjs\";\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page extends AbstractPage {\n    constructor(client, response, body, options) {\n        super(client, response, body, options);\n        this.data = body.data || [];\n        this.object = body.object;\n    }\n    getPaginatedItems() {\n        return this.data ?? [];\n    }\n    // @deprecated Please use `nextPageInfo()` instead\n    /**\n     * This page represents a response that isn't actually paginated at the API level\n     * so there will never be any next page params.\n     */\n    nextPageParams() {\n        return null;\n    }\n    nextPageInfo() {\n        return null;\n    }\n}\nexport class CursorPage extends AbstractPage {\n    constructor(client, response, body, options) {\n        super(client, response, body, options);\n        this.data = body.data || [];\n    }\n    getPaginatedItems() {\n        return this.data ?? [];\n    }\n    // @deprecated Please use `nextPageInfo()` instead\n    nextPageParams() {\n        const info = this.nextPageInfo();\n        if (!info)\n            return null;\n        if ('params' in info)\n            return info.params;\n        const params = Object.fromEntries(info.url.searchParams);\n        if (!Object.keys(params).length)\n            return null;\n        return params;\n    }\n    nextPageInfo() {\n        const data = this.getPaginatedItems();\n        if (!data.length) {\n            return null;\n        }\n        const id = data[data.length - 1]?.id;\n        if (!id) {\n            return null;\n        }\n        return { params: { after: id } };\n    }\n}\n//# sourceMappingURL=pagination.mjs.map","// File generated from our OpenAPI spec by Stainless.\nexport class APIResource {\n    constructor(client) {\n        this._client = client;\n    }\n}\n//# sourceMappingURL=resource.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nexport class Completions extends APIResource {\n    create(body, options) {\n        return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false });\n    }\n}\n(function (Completions) {\n})(Completions || (Completions = {}));\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport * as CompletionsAPI from 'openai/resources/chat/completions';\nexport class Chat extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.completions = new CompletionsAPI.Completions(this._client);\n    }\n}\n(function (Chat) {\n    Chat.Completions = CompletionsAPI.Completions;\n})(Chat || (Chat = {}));\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nexport class Speech extends APIResource {\n    /**\n     * Generates audio from the input text.\n     */\n    create(body, options) {\n        return this._client.post('/audio/speech', { body, ...options, __binaryResponse: true });\n    }\n}\n(function (Speech) {\n})(Speech || (Speech = {}));\n//# sourceMappingURL=speech.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { multipartFormRequestOptions } from 'openai/core';\nexport class Transcriptions extends APIResource {\n    /**\n     * Transcribes audio into the input language.\n     */\n    create(body, options) {\n        return this._client.post('/audio/transcriptions', multipartFormRequestOptions({ body, ...options }));\n    }\n}\n(function (Transcriptions) {\n})(Transcriptions || (Transcriptions = {}));\n//# sourceMappingURL=transcriptions.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { multipartFormRequestOptions } from 'openai/core';\nexport class Translations extends APIResource {\n    /**\n     * Translates audio into English.\n     */\n    create(body, options) {\n        return this._client.post('/audio/translations', multipartFormRequestOptions({ body, ...options }));\n    }\n}\n(function (Translations) {\n})(Translations || (Translations = {}));\n//# sourceMappingURL=translations.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport * as SpeechAPI from 'openai/resources/audio/speech';\nimport * as TranscriptionsAPI from 'openai/resources/audio/transcriptions';\nimport * as TranslationsAPI from 'openai/resources/audio/translations';\nexport class Audio extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n        this.translations = new TranslationsAPI.Translations(this._client);\n        this.speech = new SpeechAPI.Speech(this._client);\n    }\n}\n(function (Audio) {\n    Audio.Transcriptions = TranscriptionsAPI.Transcriptions;\n    Audio.Translations = TranslationsAPI.Translations;\n    Audio.Speech = SpeechAPI.Speech;\n})(Audio || (Audio = {}));\n//# sourceMappingURL=audio.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as FilesAPI from 'openai/resources/beta/assistants/files';\nimport { CursorPage } from 'openai/pagination';\nexport class Files extends APIResource {\n    /**\n     * Create an assistant file by attaching a\n     * [File](https://platform.openai.com/docs/api-reference/files) to an\n     * [assistant](https://platform.openai.com/docs/api-reference/assistants).\n     */\n    create(assistantId, body, options) {\n        return this._client.post(`/assistants/${assistantId}/files`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Retrieves an AssistantFile.\n     */\n    retrieve(assistantId, fileId, options) {\n        return this._client.get(`/assistants/${assistantId}/files/${fileId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    list(assistantId, query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list(assistantId, {}, query);\n        }\n        return this._client.getAPIList(`/assistants/${assistantId}/files`, AssistantFilesPage, {\n            query,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Delete an assistant file.\n     */\n    del(assistantId, fileId, options) {\n        return this._client.delete(`/assistants/${assistantId}/files/${fileId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\nexport class AssistantFilesPage extends CursorPage {\n}\n(function (Files) {\n    Files.AssistantFilesPage = FilesAPI.AssistantFilesPage;\n})(Files || (Files = {}));\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as AssistantsAPI from 'openai/resources/beta/assistants/assistants';\nimport * as FilesAPI from 'openai/resources/beta/assistants/files';\nimport { CursorPage } from 'openai/pagination';\nexport class Assistants extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.files = new FilesAPI.Files(this._client);\n    }\n    /**\n     * Create an assistant with a model and instructions.\n     */\n    create(body, options) {\n        return this._client.post('/assistants', {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Retrieves an assistant.\n     */\n    retrieve(assistantId, options) {\n        return this._client.get(`/assistants/${assistantId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Modifies an assistant.\n     */\n    update(assistantId, body, options) {\n        return this._client.post(`/assistants/${assistantId}`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    list(query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list({}, query);\n        }\n        return this._client.getAPIList('/assistants', AssistantsPage, {\n            query,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Delete an assistant.\n     */\n    del(assistantId, options) {\n        return this._client.delete(`/assistants/${assistantId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\nexport class AssistantsPage extends CursorPage {\n}\n(function (Assistants) {\n    Assistants.AssistantsPage = AssistantsAPI.AssistantsPage;\n    Assistants.Files = FilesAPI.Files;\n    Assistants.AssistantFilesPage = FilesAPI.AssistantFilesPage;\n})(Assistants || (Assistants = {}));\n//# sourceMappingURL=assistants.mjs.map","export function isRunnableFunctionWithParse(fn) {\n    return typeof fn.parse === 'function';\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n *\n * @deprecated - please use ParsingToolFunction instead.\n */\nexport class ParsingFunction {\n    constructor(input) {\n        this.function = input.function;\n        this.parse = input.parse;\n        this.parameters = input.parameters;\n        this.description = input.description;\n        this.name = input.name;\n    }\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction {\n    constructor(input) {\n        this.type = 'function';\n        this.function = input;\n    }\n}\n//# sourceMappingURL=RunnableFunction.mjs.map","export const isAssistantMessage = (message) => {\n    return message?.role === 'assistant';\n};\nexport const isFunctionMessage = (message) => {\n    return message?.role === 'function';\n};\nexport const isToolMessage = (message) => {\n    return message?.role === 'tool';\n};\nexport function isPresent(obj) {\n    return obj != null;\n}\n//# sourceMappingURL=chatCompletionUtils.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_connectedPromise, _AbstractChatCompletionRunner_resolveConnectedPromise, _AbstractChatCompletionRunner_rejectConnectedPromise, _AbstractChatCompletionRunner_endPromise, _AbstractChatCompletionRunner_resolveEndPromise, _AbstractChatCompletionRunner_rejectEndPromise, _AbstractChatCompletionRunner_listeners, _AbstractChatCompletionRunner_ended, _AbstractChatCompletionRunner_errored, _AbstractChatCompletionRunner_aborted, _AbstractChatCompletionRunner_catchingPromiseCreated, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionCall, _AbstractChatCompletionRunner_getFinalFunctionCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_handleError, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nimport { APIUserAbortError, OpenAIError } from 'openai/error';\nimport { isRunnableFunctionWithParse, } from \"./RunnableFunction.mjs\";\nimport { isAssistantMessage, isFunctionMessage, isToolMessage } from \"./chatCompletionUtils.mjs\";\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport class AbstractChatCompletionRunner {\n    constructor() {\n        _AbstractChatCompletionRunner_instances.add(this);\n        this.controller = new AbortController();\n        _AbstractChatCompletionRunner_connectedPromise.set(this, void 0);\n        _AbstractChatCompletionRunner_resolveConnectedPromise.set(this, () => { });\n        _AbstractChatCompletionRunner_rejectConnectedPromise.set(this, () => { });\n        _AbstractChatCompletionRunner_endPromise.set(this, void 0);\n        _AbstractChatCompletionRunner_resolveEndPromise.set(this, () => { });\n        _AbstractChatCompletionRunner_rejectEndPromise.set(this, () => { });\n        _AbstractChatCompletionRunner_listeners.set(this, {});\n        this._chatCompletions = [];\n        this.messages = [];\n        _AbstractChatCompletionRunner_ended.set(this, false);\n        _AbstractChatCompletionRunner_errored.set(this, false);\n        _AbstractChatCompletionRunner_aborted.set(this, false);\n        _AbstractChatCompletionRunner_catchingPromiseCreated.set(this, false);\n        _AbstractChatCompletionRunner_handleError.set(this, (error) => {\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_errored, true, \"f\");\n            if (error instanceof Error && error.name === 'AbortError') {\n                error = new APIUserAbortError();\n            }\n            if (error instanceof APIUserAbortError) {\n                __classPrivateFieldSet(this, _AbstractChatCompletionRunner_aborted, true, \"f\");\n                return this._emit('abort', error);\n            }\n            if (error instanceof OpenAIError) {\n                return this._emit('error', error);\n            }\n            if (error instanceof Error) {\n                const openAIError = new OpenAIError(error.message);\n                // @ts-ignore\n                openAIError.cause = error;\n                return this._emit('error', openAIError);\n            }\n            return this._emit('error', new OpenAIError(String(error)));\n        });\n        __classPrivateFieldSet(this, _AbstractChatCompletionRunner_connectedPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_resolveConnectedPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_rejectConnectedPromise, reject, \"f\");\n        }), \"f\");\n        __classPrivateFieldSet(this, _AbstractChatCompletionRunner_endPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_resolveEndPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_rejectEndPromise, reject, \"f\");\n        }), \"f\");\n        // Don't let these promises cause unhandled rejection errors.\n        // we will manually cause an unhandled rejection error later\n        // if the user hasn't registered any error listener or called\n        // any promise-returning method.\n        __classPrivateFieldGet(this, _AbstractChatCompletionRunner_connectedPromise, \"f\").catch(() => { });\n        __classPrivateFieldGet(this, _AbstractChatCompletionRunner_endPromise, \"f\").catch(() => { });\n    }\n    _run(executor) {\n        // Unfortunately if we call `executor()` immediately we get runtime errors about\n        // references to `this` before the `super()` constructor call returns.\n        setTimeout(() => {\n            executor().then(() => {\n                this._emitFinal();\n                this._emit('end');\n            }, __classPrivateFieldGet(this, _AbstractChatCompletionRunner_handleError, \"f\"));\n        }, 0);\n    }\n    _addChatCompletion(chatCompletion) {\n        this._chatCompletions.push(chatCompletion);\n        this._emit('chatCompletion', chatCompletion);\n        const message = chatCompletion.choices[0]?.message;\n        if (message)\n            this._addMessage(message);\n        return chatCompletion;\n    }\n    _addMessage(message, emit = true) {\n        if (!('content' in message))\n            message.content = null;\n        this.messages.push(message);\n        if (emit) {\n            this._emit('message', message);\n            if ((isFunctionMessage(message) || isToolMessage(message)) && message.content) {\n                // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n                this._emit('functionCallResult', message.content);\n            }\n            else if (isAssistantMessage(message) && message.function_call) {\n                this._emit('functionCall', message.function_call);\n            }\n            else if (isAssistantMessage(message) && message.tool_calls) {\n                for (const tool_call of message.tool_calls) {\n                    if (tool_call.type === 'function') {\n                        this._emit('functionCall', tool_call.function);\n                    }\n                }\n            }\n        }\n    }\n    _connected() {\n        if (this.ended)\n            return;\n        __classPrivateFieldGet(this, _AbstractChatCompletionRunner_resolveConnectedPromise, \"f\").call(this);\n        this._emit('connect');\n    }\n    get ended() {\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_ended, \"f\");\n    }\n    get errored() {\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_errored, \"f\");\n    }\n    get aborted() {\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_aborted, \"f\");\n    }\n    abort() {\n        this.controller.abort();\n    }\n    /**\n     * Adds the listener function to the end of the listeners array for the event.\n     * No checks are made to see if the listener has already been added. Multiple calls passing\n     * the same combination of event and listener will result in the listener being added, and\n     * called, multiple times.\n     * @returns this ChatCompletionStream, so that calls can be chained\n     */\n    on(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event] = []);\n        listeners.push({ listener });\n        return this;\n    }\n    /**\n     * Removes the specified listener from the listener array for the event.\n     * off() will remove, at most, one instance of a listener from the listener array. If any single\n     * listener has been added multiple times to the listener array for the specified event, then\n     * off() must be called multiple times to remove each instance.\n     * @returns this ChatCompletionStream, so that calls can be chained\n     */\n    off(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event];\n        if (!listeners)\n            return this;\n        const index = listeners.findIndex((l) => l.listener === listener);\n        if (index >= 0)\n            listeners.splice(index, 1);\n        return this;\n    }\n    /**\n     * Adds a one-time listener function for the event. The next time the event is triggered,\n     * this listener is removed and then invoked.\n     * @returns this ChatCompletionStream, so that calls can be chained\n     */\n    once(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event] = []);\n        listeners.push({ listener, once: true });\n        return this;\n    }\n    /**\n     * This is similar to `.once()`, but returns a Promise that resolves the next time\n     * the event is triggered, instead of calling a listener callback.\n     * @returns a Promise that resolves the next time given event is triggered,\n     * or rejects if an error is emitted.  (If you request the 'error' event,\n     * returns a promise that resolves with the error).\n     *\n     * Example:\n     *\n     *   const message = await stream.emitted('message') // rejects if the stream errors\n     */\n    emitted(event) {\n        return new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_catchingPromiseCreated, true, \"f\");\n            if (event !== 'error')\n                this.once('error', reject);\n            this.once(event, resolve);\n        });\n    }\n    async done() {\n        __classPrivateFieldSet(this, _AbstractChatCompletionRunner_catchingPromiseCreated, true, \"f\");\n        await __classPrivateFieldGet(this, _AbstractChatCompletionRunner_endPromise, \"f\");\n    }\n    /**\n     * @returns a promise that resolves with the final ChatCompletion, or rejects\n     * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n     */\n    async finalChatCompletion() {\n        await this.done();\n        const completion = this._chatCompletions[this._chatCompletions.length - 1];\n        if (!completion)\n            throw new OpenAIError('stream ended without producing a ChatCompletion');\n        return completion;\n    }\n    /**\n     * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n     * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n     */\n    async finalContent() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n    }\n    /**\n     * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n     * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n     */\n    async finalMessage() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n    }\n    /**\n     * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n     * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n     */\n    async finalFunctionCall() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n    }\n    async finalFunctionCallResult() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n    }\n    async totalUsage() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n    }\n    allChatCompletions() {\n        return [...this._chatCompletions];\n    }\n    _emit(event, ...args) {\n        // make sure we don't emit any events after end\n        if (__classPrivateFieldGet(this, _AbstractChatCompletionRunner_ended, \"f\")) {\n            return;\n        }\n        if (event === 'end') {\n            __classPrivateFieldSet(this, _AbstractChatCompletionRunner_ended, true, \"f\");\n            __classPrivateFieldGet(this, _AbstractChatCompletionRunner_resolveEndPromise, \"f\").call(this);\n        }\n        const listeners = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event];\n        if (listeners) {\n            __classPrivateFieldGet(this, _AbstractChatCompletionRunner_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n            listeners.forEach(({ listener }) => listener(...args));\n        }\n        if (event === 'abort') {\n            const error = args[0];\n            if (!__classPrivateFieldGet(this, _AbstractChatCompletionRunner_catchingPromiseCreated, \"f\") && !listeners?.length) {\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _AbstractChatCompletionRunner_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _AbstractChatCompletionRunner_rejectEndPromise, \"f\").call(this, error);\n            this._emit('end');\n            return;\n        }\n        if (event === 'error') {\n            // NOTE: _emit('error', error) should only be called from #handleError().\n            const error = args[0];\n            if (!__classPrivateFieldGet(this, _AbstractChatCompletionRunner_catchingPromiseCreated, \"f\") && !listeners?.length) {\n                // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n                // If you are seeing stack traces here, make sure to handle errors via either:\n                // - runner.on('error', () => ...)\n                // - await runner.done()\n                // - await runner.finalChatCompletion()\n                // - etc.\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _AbstractChatCompletionRunner_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _AbstractChatCompletionRunner_rejectEndPromise, \"f\").call(this, error);\n            this._emit('end');\n        }\n    }\n    _emitFinal() {\n        const completion = this._chatCompletions[this._chatCompletions.length - 1];\n        if (completion)\n            this._emit('finalChatCompletion', completion);\n        const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n        if (finalMessage)\n            this._emit('finalMessage', finalMessage);\n        const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n        if (finalContent)\n            this._emit('finalContent', finalContent);\n        const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n        if (finalFunctionCall)\n            this._emit('finalFunctionCall', finalFunctionCall);\n        const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n        if (finalFunctionCallResult != null)\n            this._emit('finalFunctionCallResult', finalFunctionCallResult);\n        if (this._chatCompletions.some((c) => c.usage)) {\n            this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n        }\n    }\n    async _createChatCompletion(completions, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n        const chatCompletion = await completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n        this._connected();\n        return this._addChatCompletion(chatCompletion);\n    }\n    async _runChatCompletion(completions, params, options) {\n        for (const message of params.messages) {\n            this._addMessage(message, false);\n        }\n        return await this._createChatCompletion(completions, params, options);\n    }\n    async _runFunctions(completions, params, options) {\n        const role = 'function';\n        const { function_call = 'auto', stream, ...restParams } = params;\n        const singleFunctionToCall = typeof function_call !== 'string' && function_call?.name;\n        const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n        const functionsByName = {};\n        for (const f of params.functions) {\n            functionsByName[f.name || f.function.name] = f;\n        }\n        const functions = params.functions.map((f) => ({\n            name: f.name || f.function.name,\n            parameters: f.parameters,\n            description: f.description,\n        }));\n        for (const message of params.messages) {\n            this._addMessage(message, false);\n        }\n        for (let i = 0; i < maxChatCompletions; ++i) {\n            const chatCompletion = await this._createChatCompletion(completions, {\n                ...restParams,\n                function_call,\n                functions,\n                messages: [...this.messages],\n            }, options);\n            const message = chatCompletion.choices[0]?.message;\n            if (!message) {\n                throw new OpenAIError(`missing message in ChatCompletion response`);\n            }\n            if (!message.function_call)\n                return;\n            const { name, arguments: args } = message.function_call;\n            const fn = functionsByName[name];\n            if (!fn) {\n                const content = `Invalid function_call: ${JSON.stringify(name)}. Available options are: ${functions\n                    .map((f) => JSON.stringify(f.name))\n                    .join(', ')}. Please try again`;\n                this._addMessage({ role, name, content });\n                continue;\n            }\n            else if (singleFunctionToCall && singleFunctionToCall !== name) {\n                const content = `Invalid function_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n                this._addMessage({ role, name, content });\n                continue;\n            }\n            let parsed;\n            try {\n                parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n            }\n            catch (error) {\n                this._addMessage({\n                    role,\n                    name,\n                    content: error instanceof Error ? error.message : String(error),\n                });\n                continue;\n            }\n            // @ts-expect-error it can't rule out `never` type.\n            const rawContent = await fn.function(parsed, this);\n            const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n            this._addMessage({ role, name, content });\n            if (singleFunctionToCall)\n                return;\n        }\n    }\n    async _runTools(completions, params, options) {\n        const role = 'tool';\n        const { tool_choice = 'auto', stream, ...restParams } = params;\n        const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;\n        const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n        const functionsByName = {};\n        for (const f of params.tools) {\n            if (f.type === 'function') {\n                functionsByName[f.function.name || f.function.function.name] = f.function;\n            }\n        }\n        const tools = 'tools' in params ?\n            params.tools.map((t) => t.type === 'function' ?\n                {\n                    type: 'function',\n                    function: {\n                        name: t.function.name || t.function.function.name,\n                        parameters: t.function.parameters,\n                        description: t.function.description,\n                    },\n                }\n                : t)\n            : undefined;\n        for (const message of params.messages) {\n            this._addMessage(message, false);\n        }\n        for (let i = 0; i < maxChatCompletions; ++i) {\n            const chatCompletion = await this._createChatCompletion(completions, {\n                ...restParams,\n                tool_choice,\n                tools,\n                messages: [...this.messages],\n            }, options);\n            const message = chatCompletion.choices[0]?.message;\n            if (!message) {\n                throw new OpenAIError(`missing message in ChatCompletion response`);\n            }\n            if (!message.tool_calls) {\n                return;\n            }\n            for (const tool_call of message.tool_calls) {\n                if (tool_call.type !== 'function')\n                    continue;\n                const tool_call_id = tool_call.id;\n                const { name, arguments: args } = tool_call.function;\n                const fn = functionsByName[name];\n                if (!fn) {\n                    const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${tools\n                        .map((f) => JSON.stringify(f.function.name))\n                        .join(', ')}. Please try again`;\n                    this._addMessage({ role, tool_call_id, content });\n                    continue;\n                }\n                else if (singleFunctionToCall && singleFunctionToCall !== name) {\n                    const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n                    this._addMessage({ role, tool_call_id, content });\n                    continue;\n                }\n                let parsed;\n                try {\n                    parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n                }\n                catch (error) {\n                    const content = error instanceof Error ? error.message : String(error);\n                    this._addMessage({ role, tool_call_id, content });\n                    continue;\n                }\n                // @ts-expect-error it can't rule out `never` type.\n                const rawContent = await fn.function(parsed, this);\n                const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n                this._addMessage({ role, tool_call_id, content });\n                if (singleFunctionToCall) {\n                    return;\n                }\n            }\n        }\n        return;\n    }\n}\n_AbstractChatCompletionRunner_connectedPromise = new WeakMap(), _AbstractChatCompletionRunner_resolveConnectedPromise = new WeakMap(), _AbstractChatCompletionRunner_rejectConnectedPromise = new WeakMap(), _AbstractChatCompletionRunner_endPromise = new WeakMap(), _AbstractChatCompletionRunner_resolveEndPromise = new WeakMap(), _AbstractChatCompletionRunner_rejectEndPromise = new WeakMap(), _AbstractChatCompletionRunner_listeners = new WeakMap(), _AbstractChatCompletionRunner_ended = new WeakMap(), _AbstractChatCompletionRunner_errored = new WeakMap(), _AbstractChatCompletionRunner_aborted = new WeakMap(), _AbstractChatCompletionRunner_catchingPromiseCreated = new WeakMap(), _AbstractChatCompletionRunner_handleError = new WeakMap(), _AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n    return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n    let i = this.messages.length;\n    while (i-- > 0) {\n        const message = this.messages[i];\n        if (isAssistantMessage(message)) {\n            return { ...message, content: message.content ?? null };\n        }\n    }\n    throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionCall = function _AbstractChatCompletionRunner_getFinalFunctionCall() {\n    for (let i = this.messages.length - 1; i >= 0; i--) {\n        const message = this.messages[i];\n        if (isAssistantMessage(message) && message?.function_call) {\n            return message.function_call;\n        }\n        if (isAssistantMessage(message) && message?.tool_calls?.length) {\n            return message.tool_calls.at(-1)?.function;\n        }\n    }\n    return;\n}, _AbstractChatCompletionRunner_getFinalFunctionCallResult = function _AbstractChatCompletionRunner_getFinalFunctionCallResult() {\n    for (let i = this.messages.length - 1; i >= 0; i--) {\n        const message = this.messages[i];\n        if (isFunctionMessage(message) && message.content != null) {\n            return message.content;\n        }\n        if (isToolMessage(message) &&\n            message.content != null &&\n            this.messages.some((x) => x.role === 'assistant' &&\n                x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n            return message.content;\n        }\n    }\n    return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n    const total = {\n        completion_tokens: 0,\n        prompt_tokens: 0,\n        total_tokens: 0,\n    };\n    for (const { usage } of this._chatCompletions) {\n        if (usage) {\n            total.completion_tokens += usage.completion_tokens;\n            total.prompt_tokens += usage.prompt_tokens;\n            total.total_tokens += usage.total_tokens;\n        }\n    }\n    return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n    if (params.n != null && params.n > 1) {\n        throw new OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n    }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n    return (typeof rawContent === 'string' ? rawContent\n        : rawContent === undefined ? 'undefined'\n            : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.mjs.map","import { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { isAssistantMessage } from \"./chatCompletionUtils.mjs\";\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner {\n    /** @deprecated - please use `runTools` instead. */\n    static runFunctions(completions, params, options) {\n        const runner = new ChatCompletionRunner();\n        const opts = {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n        };\n        runner._run(() => runner._runFunctions(completions, params, opts));\n        return runner;\n    }\n    static runTools(completions, params, options) {\n        const runner = new ChatCompletionRunner();\n        const opts = {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n        };\n        runner._run(() => runner._runTools(completions, params, opts));\n        return runner;\n    }\n    _addMessage(message) {\n        super._addMessage(message);\n        if (isAssistantMessage(message) && message.content) {\n            this._emit('content', message.content);\n        }\n    }\n}\n//# sourceMappingURL=ChatCompletionRunner.mjs.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ChatCompletionStream_instances, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_addChunk, _ChatCompletionStream_endRequest, _ChatCompletionStream_accumulateChatCompletion;\nimport { OpenAIError, APIUserAbortError } from 'openai/error';\nimport { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { Stream } from 'openai/streaming';\nexport class ChatCompletionStream extends AbstractChatCompletionRunner {\n    constructor() {\n        super(...arguments);\n        _ChatCompletionStream_instances.add(this);\n        _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n    }\n    get currentChatCompletionSnapshot() {\n        return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n    }\n    /**\n     * Intended for use on the frontend, consuming a stream produced with\n     * `.toReadableStream()` on the backend.\n     *\n     * Note that messages sent to the model do not appear in `.on('message')`\n     * in this context.\n     */\n    static fromReadableStream(stream) {\n        const runner = new ChatCompletionStream();\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    static createChatCompletion(completions, params, options) {\n        const runner = new ChatCompletionStream();\n        runner._run(() => runner._runChatCompletion(completions, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n        return runner;\n    }\n    async _createChatCompletion(completions, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n        const stream = await completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n        this._connected();\n        for await (const chunk of stream) {\n            __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n    }\n    async _fromReadableStream(readableStream, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n        this._connected();\n        const stream = Stream.fromReadableStream(readableStream, this.controller);\n        let chatId;\n        for await (const chunk of stream) {\n            if (chatId && chatId !== chunk.id) {\n                // A new request has been made.\n                this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n            }\n            __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n            chatId = chunk.id;\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n    }\n    [(_ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n    }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n        if (this.ended)\n            return;\n        const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n        this._emit('chunk', chunk, completion);\n        const delta = chunk.choices[0]?.delta?.content;\n        const snapshot = completion.choices[0]?.message;\n        if (delta != null && snapshot?.role === 'assistant' && snapshot?.content) {\n            this._emit('content', delta, snapshot.content);\n        }\n    }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n        if (this.ended) {\n            throw new OpenAIError(`stream has ended, this shouldn't happen`);\n        }\n        const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n        if (!snapshot) {\n            throw new OpenAIError(`request ended without sending any chunks`);\n        }\n        __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n        return finalizeChatCompletion(snapshot);\n    }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n        var _a, _b, _c;\n        let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n        const { choices, ...rest } = chunk;\n        if (!snapshot) {\n            snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n                ...rest,\n                choices: [],\n            }, \"f\");\n        }\n        else {\n            Object.assign(snapshot, rest);\n        }\n        for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n            let choice = snapshot.choices[index];\n            if (!choice) {\n                choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n            }\n            if (logprobs) {\n                if (!choice.logprobs) {\n                    choice.logprobs = Object.assign({}, logprobs);\n                }\n                else {\n                    const { content, ...rest } = logprobs;\n                    Object.assign(choice.logprobs, rest);\n                    if (content) {\n                        (_a = choice.logprobs).content ?? (_a.content = []);\n                        choice.logprobs.content.push(...content);\n                    }\n                }\n            }\n            if (finish_reason)\n                choice.finish_reason = finish_reason;\n            Object.assign(choice, other);\n            if (!delta)\n                continue; // Shouldn't happen; just in case.\n            const { content, function_call, role, tool_calls, ...rest } = delta;\n            Object.assign(choice.message, rest);\n            if (content)\n                choice.message.content = (choice.message.content || '') + content;\n            if (role)\n                choice.message.role = role;\n            if (function_call) {\n                if (!choice.message.function_call) {\n                    choice.message.function_call = function_call;\n                }\n                else {\n                    if (function_call.name)\n                        choice.message.function_call.name = function_call.name;\n                    if (function_call.arguments) {\n                        (_b = choice.message.function_call).arguments ?? (_b.arguments = '');\n                        choice.message.function_call.arguments += function_call.arguments;\n                    }\n                }\n            }\n            if (tool_calls) {\n                if (!choice.message.tool_calls)\n                    choice.message.tool_calls = [];\n                for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n                    const tool_call = ((_c = choice.message.tool_calls)[index] ?? (_c[index] = {}));\n                    Object.assign(tool_call, rest);\n                    if (id)\n                        tool_call.id = id;\n                    if (type)\n                        tool_call.type = type;\n                    if (fn)\n                        tool_call.function ?? (tool_call.function = { arguments: '' });\n                    if (fn?.name)\n                        tool_call.function.name = fn.name;\n                    if (fn?.arguments)\n                        tool_call.function.arguments += fn.arguments;\n                }\n            }\n        }\n        return snapshot;\n    }, Symbol.asyncIterator)]() {\n        const pushQueue = [];\n        const readQueue = [];\n        let done = false;\n        this.on('chunk', (chunk) => {\n            const reader = readQueue.shift();\n            if (reader) {\n                reader(chunk);\n            }\n            else {\n                pushQueue.push(chunk);\n            }\n        });\n        this.on('end', () => {\n            done = true;\n            for (const reader of readQueue) {\n                reader(undefined);\n            }\n            readQueue.length = 0;\n        });\n        return {\n            next: async () => {\n                if (!pushQueue.length) {\n                    if (done) {\n                        return { value: undefined, done: true };\n                    }\n                    return new Promise((resolve) => readQueue.push(resolve)).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n                }\n                const chunk = pushQueue.shift();\n                return { value: chunk, done: false };\n            },\n        };\n    }\n    toReadableStream() {\n        const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n        return stream.toReadableStream();\n    }\n}\nfunction finalizeChatCompletion(snapshot) {\n    const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n    return {\n        ...rest,\n        id,\n        choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n            if (!finish_reason)\n                throw new OpenAIError(`missing finish_reason for choice ${index}`);\n            const { content = null, function_call, tool_calls, ...messageRest } = message;\n            const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n            if (!role)\n                throw new OpenAIError(`missing role for choice ${index}`);\n            if (function_call) {\n                const { arguments: args, name } = function_call;\n                if (args == null)\n                    throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n                if (!name)\n                    throw new OpenAIError(`missing function_call.name for choice ${index}`);\n                return {\n                    ...choiceRest,\n                    message: { content, function_call: { arguments: args, name }, role },\n                    finish_reason,\n                    index,\n                    logprobs,\n                };\n            }\n            if (tool_calls) {\n                return {\n                    ...choiceRest,\n                    index,\n                    finish_reason,\n                    logprobs,\n                    message: {\n                        ...messageRest,\n                        role,\n                        content,\n                        tool_calls: tool_calls.map((tool_call, i) => {\n                            const { function: fn, type, id, ...toolRest } = tool_call;\n                            const { arguments: args, name, ...fnRest } = fn || {};\n                            if (id == null)\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n                            if (type == null)\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n                            if (name == null)\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n                            if (args == null)\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n                            return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n                        }),\n                    },\n                };\n            }\n            return {\n                ...choiceRest,\n                message: { ...messageRest, content, role },\n                finish_reason,\n                index,\n                logprobs,\n            };\n        }),\n        created,\n        model,\n        object: 'chat.completion',\n        ...(system_fingerprint ? { system_fingerprint } : {}),\n    };\n}\nfunction str(x) {\n    return JSON.stringify(x);\n}\n//# sourceMappingURL=ChatCompletionStream.mjs.map","import { ChatCompletionStream } from \"./ChatCompletionStream.mjs\";\nexport class ChatCompletionStreamingRunner extends ChatCompletionStream {\n    static fromReadableStream(stream) {\n        const runner = new ChatCompletionStreamingRunner();\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    /** @deprecated - please use `runTools` instead. */\n    static runFunctions(completions, params, options) {\n        const runner = new ChatCompletionStreamingRunner();\n        const opts = {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n        };\n        runner._run(() => runner._runFunctions(completions, params, opts));\n        return runner;\n    }\n    static runTools(completions, params, options) {\n        const runner = new ChatCompletionStreamingRunner();\n        const opts = {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n        };\n        runner._run(() => runner._runTools(completions, params, opts));\n        return runner;\n    }\n}\n//# sourceMappingURL=ChatCompletionStreamingRunner.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { ChatCompletionRunner } from 'openai/lib/ChatCompletionRunner';\nexport { ChatCompletionRunner } from 'openai/lib/ChatCompletionRunner';\nimport { ChatCompletionStreamingRunner, } from 'openai/lib/ChatCompletionStreamingRunner';\nexport { ChatCompletionStreamingRunner, } from 'openai/lib/ChatCompletionStreamingRunner';\nexport { ParsingFunction, ParsingToolFunction, } from 'openai/lib/RunnableFunction';\nimport { ChatCompletionStream } from 'openai/lib/ChatCompletionStream';\nexport { ChatCompletionStream } from 'openai/lib/ChatCompletionStream';\nexport class Completions extends APIResource {\n    runFunctions(body, options) {\n        if (body.stream) {\n            return ChatCompletionStreamingRunner.runFunctions(this._client.chat.completions, body, options);\n        }\n        return ChatCompletionRunner.runFunctions(this._client.chat.completions, body, options);\n    }\n    runTools(body, options) {\n        if (body.stream) {\n            return ChatCompletionStreamingRunner.runTools(this._client.chat.completions, body, options);\n        }\n        return ChatCompletionRunner.runTools(this._client.chat.completions, body, options);\n    }\n    /**\n     * Creates a chat completion stream\n     */\n    stream(body, options) {\n        return ChatCompletionStream.createChatCompletion(this._client.chat.completions, body, options);\n    }\n}\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport * as CompletionsAPI from 'openai/resources/beta/chat/completions';\nexport class Chat extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.completions = new CompletionsAPI.Completions(this._client);\n    }\n}\n(function (Chat) {\n    Chat.Completions = CompletionsAPI.Completions;\n})(Chat || (Chat = {}));\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as FilesAPI from 'openai/resources/beta/threads/messages/files';\nimport { CursorPage } from 'openai/pagination';\nexport class Files extends APIResource {\n    /**\n     * Retrieves a message file.\n     */\n    retrieve(threadId, messageId, fileId, options) {\n        return this._client.get(`/threads/${threadId}/messages/${messageId}/files/${fileId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    list(threadId, messageId, query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list(threadId, messageId, {}, query);\n        }\n        return this._client.getAPIList(`/threads/${threadId}/messages/${messageId}/files`, MessageFilesPage, {\n            query,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\nexport class MessageFilesPage extends CursorPage {\n}\n(function (Files) {\n    Files.MessageFilesPage = FilesAPI.MessageFilesPage;\n})(Files || (Files = {}));\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as MessagesAPI from 'openai/resources/beta/threads/messages/messages';\nimport * as FilesAPI from 'openai/resources/beta/threads/messages/files';\nimport { CursorPage } from 'openai/pagination';\nexport class Messages extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.files = new FilesAPI.Files(this._client);\n    }\n    /**\n     * Create a message.\n     */\n    create(threadId, body, options) {\n        return this._client.post(`/threads/${threadId}/messages`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Retrieve a message.\n     */\n    retrieve(threadId, messageId, options) {\n        return this._client.get(`/threads/${threadId}/messages/${messageId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Modifies a message.\n     */\n    update(threadId, messageId, body, options) {\n        return this._client.post(`/threads/${threadId}/messages/${messageId}`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    list(threadId, query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list(threadId, {}, query);\n        }\n        return this._client.getAPIList(`/threads/${threadId}/messages`, ThreadMessagesPage, {\n            query,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\nexport class ThreadMessagesPage extends CursorPage {\n}\n(function (Messages) {\n    Messages.ThreadMessagesPage = MessagesAPI.ThreadMessagesPage;\n    Messages.Files = FilesAPI.Files;\n    Messages.MessageFilesPage = FilesAPI.MessageFilesPage;\n})(Messages || (Messages = {}));\n//# sourceMappingURL=messages.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as StepsAPI from 'openai/resources/beta/threads/runs/steps';\nimport { CursorPage } from 'openai/pagination';\nexport class Steps extends APIResource {\n    /**\n     * Retrieves a run step.\n     */\n    retrieve(threadId, runId, stepId, options) {\n        return this._client.get(`/threads/${threadId}/runs/${runId}/steps/${stepId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    list(threadId, runId, query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list(threadId, runId, {}, query);\n        }\n        return this._client.getAPIList(`/threads/${threadId}/runs/${runId}/steps`, RunStepsPage, {\n            query,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\nexport class RunStepsPage extends CursorPage {\n}\n(function (Steps) {\n    Steps.RunStepsPage = StepsAPI.RunStepsPage;\n})(Steps || (Steps = {}));\n//# sourceMappingURL=steps.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as RunsAPI from 'openai/resources/beta/threads/runs/runs';\nimport * as StepsAPI from 'openai/resources/beta/threads/runs/steps';\nimport { CursorPage } from 'openai/pagination';\nexport class Runs extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.steps = new StepsAPI.Steps(this._client);\n    }\n    /**\n     * Create a run.\n     */\n    create(threadId, body, options) {\n        return this._client.post(`/threads/${threadId}/runs`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Retrieves a run.\n     */\n    retrieve(threadId, runId, options) {\n        return this._client.get(`/threads/${threadId}/runs/${runId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Modifies a run.\n     */\n    update(threadId, runId, body, options) {\n        return this._client.post(`/threads/${threadId}/runs/${runId}`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    list(threadId, query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list(threadId, {}, query);\n        }\n        return this._client.getAPIList(`/threads/${threadId}/runs`, RunsPage, {\n            query,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Cancels a run that is `in_progress`.\n     */\n    cancel(threadId, runId, options) {\n        return this._client.post(`/threads/${threadId}/runs/${runId}/cancel`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * When a run has the `status: \"requires_action\"` and `required_action.type` is\n     * `submit_tool_outputs`, this endpoint can be used to submit the outputs from the\n     * tool calls once they're all completed. All outputs must be submitted in a single\n     * request.\n     */\n    submitToolOutputs(threadId, runId, body, options) {\n        return this._client.post(`/threads/${threadId}/runs/${runId}/submit_tool_outputs`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\nexport class RunsPage extends CursorPage {\n}\n(function (Runs) {\n    Runs.RunsPage = RunsAPI.RunsPage;\n    Runs.Steps = StepsAPI.Steps;\n    Runs.RunStepsPage = StepsAPI.RunStepsPage;\n})(Runs || (Runs = {}));\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as MessagesAPI from 'openai/resources/beta/threads/messages/messages';\nimport * as RunsAPI from 'openai/resources/beta/threads/runs/runs';\nexport class Threads extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.runs = new RunsAPI.Runs(this._client);\n        this.messages = new MessagesAPI.Messages(this._client);\n    }\n    create(body = {}, options) {\n        if (isRequestOptions(body)) {\n            return this.create({}, body);\n        }\n        return this._client.post('/threads', {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Retrieves a thread.\n     */\n    retrieve(threadId, options) {\n        return this._client.get(`/threads/${threadId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Modifies a thread.\n     */\n    update(threadId, body, options) {\n        return this._client.post(`/threads/${threadId}`, {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Delete a thread.\n     */\n    del(threadId, options) {\n        return this._client.delete(`/threads/${threadId}`, {\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n    /**\n     * Create a thread and run it in one request.\n     */\n    createAndRun(body, options) {\n        return this._client.post('/threads/runs', {\n            body,\n            ...options,\n            headers: { 'OpenAI-Beta': 'assistants=v1', ...options?.headers },\n        });\n    }\n}\n(function (Threads) {\n    Threads.Runs = RunsAPI.Runs;\n    Threads.RunsPage = RunsAPI.RunsPage;\n    Threads.Messages = MessagesAPI.Messages;\n    Threads.ThreadMessagesPage = MessagesAPI.ThreadMessagesPage;\n})(Threads || (Threads = {}));\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport * as AssistantsAPI from 'openai/resources/beta/assistants/assistants';\nimport * as ChatAPI from 'openai/resources/beta/chat/chat';\nimport * as ThreadsAPI from 'openai/resources/beta/threads/threads';\nexport class Beta extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.chat = new ChatAPI.Chat(this._client);\n        this.assistants = new AssistantsAPI.Assistants(this._client);\n        this.threads = new ThreadsAPI.Threads(this._client);\n    }\n}\n(function (Beta) {\n    Beta.Chat = ChatAPI.Chat;\n    Beta.Assistants = AssistantsAPI.Assistants;\n    Beta.AssistantsPage = AssistantsAPI.AssistantsPage;\n    Beta.Threads = ThreadsAPI.Threads;\n})(Beta || (Beta = {}));\n//# sourceMappingURL=beta.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nexport class Completions extends APIResource {\n    create(body, options) {\n        return this._client.post('/completions', { body, ...options, stream: body.stream ?? false });\n    }\n}\n(function (Completions) {\n})(Completions || (Completions = {}));\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nexport class Embeddings extends APIResource {\n    /**\n     * Creates an embedding vector representing the input text.\n     */\n    create(body, options) {\n        return this._client.post('/embeddings', { body, ...options });\n    }\n}\n(function (Embeddings) {\n})(Embeddings || (Embeddings = {}));\n//# sourceMappingURL=embeddings.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport { sleep } from 'openai/core';\nimport { APIConnectionTimeoutError } from 'openai/error';\nimport * as FilesAPI from 'openai/resources/files';\nimport { multipartFormRequestOptions } from 'openai/core';\nimport { Page } from 'openai/pagination';\nexport class Files extends APIResource {\n    /**\n     * Upload a file that can be used across various endpoints. The size of all the\n     * files uploaded by one organization can be up to 100 GB.\n     *\n     * The size of individual files can be a maximum of 512 MB or 2 million tokens for\n     * Assistants. See the\n     * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools) to\n     * learn more about the types of files supported. The Fine-tuning API only supports\n     * `.jsonl` files.\n     *\n     * Please [contact us](https://help.openai.com/) if you need to increase these\n     * storage limits.\n     */\n    create(body, options) {\n        return this._client.post('/files', multipartFormRequestOptions({ body, ...options }));\n    }\n    /**\n     * Returns information about a specific file.\n     */\n    retrieve(fileId, options) {\n        return this._client.get(`/files/${fileId}`, options);\n    }\n    list(query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list({}, query);\n        }\n        return this._client.getAPIList('/files', FileObjectsPage, { query, ...options });\n    }\n    /**\n     * Delete a file.\n     */\n    del(fileId, options) {\n        return this._client.delete(`/files/${fileId}`, options);\n    }\n    /**\n     * Returns the contents of the specified file.\n     */\n    content(fileId, options) {\n        return this._client.get(`/files/${fileId}/content`, { ...options, __binaryResponse: true });\n    }\n    /**\n     * Returns the contents of the specified file.\n     *\n     * @deprecated The `.content()` method should be used instead\n     */\n    retrieveContent(fileId, options) {\n        return this._client.get(`/files/${fileId}/content`, {\n            ...options,\n            headers: { Accept: 'application/json', ...options?.headers },\n        });\n    }\n    /**\n     * Waits for the given file to be processed, default timeout is 30 mins.\n     */\n    async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n        const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n        const start = Date.now();\n        let file = await this.retrieve(id);\n        while (!file.status || !TERMINAL_STATES.has(file.status)) {\n            await sleep(pollInterval);\n            file = await this.retrieve(id);\n            if (Date.now() - start > maxWait) {\n                throw new APIConnectionTimeoutError({\n                    message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n                });\n            }\n        }\n        return file;\n    }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class FileObjectsPage extends Page {\n}\n(function (Files) {\n    Files.FileObjectsPage = FilesAPI.FileObjectsPage;\n})(Files || (Files = {}));\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { isRequestOptions } from 'openai/core';\nimport * as JobsAPI from 'openai/resources/fine-tuning/jobs';\nimport { CursorPage } from 'openai/pagination';\nexport class Jobs extends APIResource {\n    /**\n     * Creates a fine-tuning job which begins the process of creating a new model from\n     * a given dataset.\n     *\n     * Response includes details of the enqueued job including job status and the name\n     * of the fine-tuned models once complete.\n     *\n     * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n     */\n    create(body, options) {\n        return this._client.post('/fine_tuning/jobs', { body, ...options });\n    }\n    /**\n     * Get info about a fine-tuning job.\n     *\n     * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n     */\n    retrieve(fineTuningJobId, options) {\n        return this._client.get(`/fine_tuning/jobs/${fineTuningJobId}`, options);\n    }\n    list(query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.list({}, query);\n        }\n        return this._client.getAPIList('/fine_tuning/jobs', FineTuningJobsPage, { query, ...options });\n    }\n    /**\n     * Immediately cancel a fine-tune job.\n     */\n    cancel(fineTuningJobId, options) {\n        return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/cancel`, options);\n    }\n    listEvents(fineTuningJobId, query = {}, options) {\n        if (isRequestOptions(query)) {\n            return this.listEvents(fineTuningJobId, {}, query);\n        }\n        return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/events`, FineTuningJobEventsPage, {\n            query,\n            ...options,\n        });\n    }\n}\nexport class FineTuningJobsPage extends CursorPage {\n}\nexport class FineTuningJobEventsPage extends CursorPage {\n}\n(function (Jobs) {\n    Jobs.FineTuningJobsPage = JobsAPI.FineTuningJobsPage;\n    Jobs.FineTuningJobEventsPage = JobsAPI.FineTuningJobEventsPage;\n})(Jobs || (Jobs = {}));\n//# sourceMappingURL=jobs.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport * as JobsAPI from 'openai/resources/fine-tuning/jobs';\nexport class FineTuning extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.jobs = new JobsAPI.Jobs(this._client);\n    }\n}\n(function (FineTuning) {\n    FineTuning.Jobs = JobsAPI.Jobs;\n    FineTuning.FineTuningJobsPage = JobsAPI.FineTuningJobsPage;\n    FineTuning.FineTuningJobEventsPage = JobsAPI.FineTuningJobEventsPage;\n})(FineTuning || (FineTuning = {}));\n//# sourceMappingURL=fine-tuning.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport { multipartFormRequestOptions } from 'openai/core';\nexport class Images extends APIResource {\n    /**\n     * Creates a variation of a given image.\n     */\n    createVariation(body, options) {\n        return this._client.post('/images/variations', multipartFormRequestOptions({ body, ...options }));\n    }\n    /**\n     * Creates an edited or extended image given an original image and a prompt.\n     */\n    edit(body, options) {\n        return this._client.post('/images/edits', multipartFormRequestOptions({ body, ...options }));\n    }\n    /**\n     * Creates an image given a prompt.\n     */\n    generate(body, options) {\n        return this._client.post('/images/generations', { body, ...options });\n    }\n}\n(function (Images) {\n})(Images || (Images = {}));\n//# sourceMappingURL=images.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nimport * as ModelsAPI from 'openai/resources/models';\nimport { Page } from 'openai/pagination';\nexport class Models extends APIResource {\n    /**\n     * Retrieves a model instance, providing basic information about the model such as\n     * the owner and permissioning.\n     */\n    retrieve(model, options) {\n        return this._client.get(`/models/${model}`, options);\n    }\n    /**\n     * Lists the currently available models, and provides basic information about each\n     * one such as the owner and availability.\n     */\n    list(options) {\n        return this._client.getAPIList('/models', ModelsPage, options);\n    }\n    /**\n     * Delete a fine-tuned model. You must have the Owner role in your organization to\n     * delete a model.\n     */\n    del(model, options) {\n        return this._client.delete(`/models/${model}`, options);\n    }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class ModelsPage extends Page {\n}\n(function (Models) {\n    Models.ModelsPage = ModelsAPI.ModelsPage;\n})(Models || (Models = {}));\n//# sourceMappingURL=models.mjs.map","// File generated from our OpenAPI spec by Stainless.\nimport { APIResource } from 'openai/resource';\nexport class Moderations extends APIResource {\n    /**\n     * Classifies if text violates OpenAI's Content Policy\n     */\n    create(body, options) {\n        return this._client.post('/moderations', { body, ...options });\n    }\n}\n(function (Moderations) {\n})(Moderations || (Moderations = {}));\n//# sourceMappingURL=moderations.mjs.map","// File generated from our OpenAPI spec by Stainless.\nvar _a;\nimport * as Core from \"./core.mjs\";\nimport * as Errors from \"./error.mjs\";\nimport * as Uploads from \"./uploads.mjs\";\nimport * as Pagination from 'openai/pagination';\nimport * as API from 'openai/resources/index';\n/** API Client for interfacing with the OpenAI API. */\nexport class OpenAI extends Core.APIClient {\n    /**\n     * API Client for interfacing with the OpenAI API.\n     *\n     * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n     * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n     * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n     * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n     * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n     * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n     * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n     * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n     * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n     * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n     */\n    constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('OPENAI_API_KEY'), organization = Core.readEnv('OPENAI_ORG_ID') ?? null, ...opts } = {}) {\n        if (apiKey === undefined) {\n            throw new Errors.OpenAIError(\"The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).\");\n        }\n        const options = {\n            apiKey,\n            organization,\n            ...opts,\n            baseURL: baseURL || `https://api.openai.com/v1`,\n        };\n        if (!options.dangerouslyAllowBrowser && Core.isRunningInBrowser()) {\n            throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n        }\n        super({\n            baseURL: options.baseURL,\n            timeout: options.timeout ?? 600000 /* 10 minutes */,\n            httpAgent: options.httpAgent,\n            maxRetries: options.maxRetries,\n            fetch: options.fetch,\n        });\n        this.completions = new API.Completions(this);\n        this.chat = new API.Chat(this);\n        this.embeddings = new API.Embeddings(this);\n        this.files = new API.Files(this);\n        this.images = new API.Images(this);\n        this.audio = new API.Audio(this);\n        this.moderations = new API.Moderations(this);\n        this.models = new API.Models(this);\n        this.fineTuning = new API.FineTuning(this);\n        this.beta = new API.Beta(this);\n        this._options = options;\n        this.apiKey = apiKey;\n        this.organization = organization;\n    }\n    defaultQuery() {\n        return this._options.defaultQuery;\n    }\n    defaultHeaders(opts) {\n        return {\n            ...super.defaultHeaders(opts),\n            'OpenAI-Organization': this.organization,\n            ...this._options.defaultHeaders,\n        };\n    }\n    authHeaders(opts) {\n        return { Authorization: `Bearer ${this.apiKey}` };\n    }\n}\n_a = OpenAI;\nOpenAI.OpenAI = _a;\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nexport const { OpenAIError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } = Errors;\nexport var toFile = Uploads.toFile;\nexport var fileFromPath = Uploads.fileFromPath;\n(function (OpenAI) {\n    // Helper functions\n    OpenAI.toFile = Uploads.toFile;\n    OpenAI.fileFromPath = Uploads.fileFromPath;\n    OpenAI.Page = Pagination.Page;\n    OpenAI.CursorPage = Pagination.CursorPage;\n    OpenAI.Completions = API.Completions;\n    OpenAI.Chat = API.Chat;\n    OpenAI.Embeddings = API.Embeddings;\n    OpenAI.Files = API.Files;\n    OpenAI.FileObjectsPage = API.FileObjectsPage;\n    OpenAI.Images = API.Images;\n    OpenAI.Audio = API.Audio;\n    OpenAI.Moderations = API.Moderations;\n    OpenAI.Models = API.Models;\n    OpenAI.ModelsPage = API.ModelsPage;\n    OpenAI.FineTuning = API.FineTuning;\n    OpenAI.Beta = API.Beta;\n})(OpenAI || (OpenAI = {}));\nexport default OpenAI;\n//# sourceMappingURL=index.mjs.map","import type * as Core from \"openai/core\";\r\nimport type { PyProxy } from \"pyodide/ffi\";\r\n\r\nimport { type ClientOptions, OpenAI } from \"openai\";\r\n\r\ninterface PyClientOptions {\r\n  api_key?: string;\r\n  base_url?: string;\r\n  organization?: string;\r\n  timeout?: number;\r\n  max_retries?: number;\r\n  defaultHeaders?: PyProxy;\r\n  defaultQuery?: PyProxy;\r\n}\r\n\r\nexport function toJs(obj: PyProxy) {\r\n  return obj.toJs({ dict_converter: Object.fromEntries });\r\n}\r\n\r\nexport async function toPyOptions(options: ClientOptions) {\r\n  const { getPy: initPy } = await import(\"./init\");\r\n\r\n  const py = await initPy();\r\n\r\n  return {\r\n    api_key: options.apiKey,\r\n    base_url: options.baseURL,\r\n    organization: options.organization,\r\n    timeout: options.timeout,\r\n    max_retries: py.toPy(options.maxRetries),\r\n    defaultHeaders: py.toPy(options.defaultHeaders),\r\n    http_client: null,\r\n  } as PyClientOptions;\r\n}\r\n\r\nexport const env = {\r\n  OPENAI_API_KEY: undefined,\r\n  OPENAI_BASE_URL: undefined,\r\n};\r\n\r\nexport function toJsOptions(options: PyClientOptions) {\r\n  return {\r\n    baseURL: options.base_url ?? env.OPENAI_BASE_URL,\r\n    apiKey: options.api_key ?? env.OPENAI_API_KEY ?? \"\",\r\n    organization: options.organization,\r\n    timeout: options.timeout,\r\n    maxRetries: options.max_retries,\r\n    defaultQuery: options.defaultQuery?.toJs() as Core.DefaultQuery,\r\n    defaultHeaders: options.defaultHeaders?.toJs() as Core.Headers,\r\n    dangerouslyAllowBrowser: true,\r\n  } as ClientOptions;\r\n}\r\n\r\nexport function AsyncClient(options: PyClientOptions) {\r\n  return new OpenAI(toJsOptions(options));\r\n}\r\n\r\nexport function toAsync(source: string) {\r\n  return source\r\n    .replaceAll(/(\\S+|\\(.*\\))\\.invoke/g, \"await $1.ainvoke\")\r\n    .replaceAll(\"ChatComplete\", \"AsyncChatComplete\")\r\n    .replaceAll(\"complete(\", \"await complete(\")\r\n    .replaceAll(/for (\\w+) in generate/g, \"async for $1 in generate\");\r\n}\r\n\r\nexport function patchSource(source: string) {\r\n  const shouldStrip = source.includes(\">>> \");\r\n\r\n  return (\r\n    shouldStrip\r\n      ? source.split(\"\\n\").filter(line => line.startsWith(\">>>\") || line.startsWith(\"...\")).map(line => toAsync(line.slice(4)))\r\n      : source.split(\"\\n\").map(toAsync)\r\n  ).join(\"\\n\");\r\n}\r\n\r\nexport function reformatInputSource(source: string) {\r\n  return source.split(\"\\n\").map((value, index) => (index ? \"... \" : \">>> \") + value).join(\"\\n\");\r\n}\r\n","import type { ClientOptions } from \"openai\";\r\nimport type { ChatCompletionCreateParams, CompletionCreateParams } from \"openai/src/resources/index.js\";\r\nimport type { PyCallable, PyProxy } from \"pyodide/ffi\";\r\n\r\nimport { getPy } from \"./init\";\r\nimport { toJs, toPyOptions } from \"./translate\";\r\n\r\nexport type ChatCompletionParams = Omit<ChatCompletionCreateParams, \"messages\" | \"stream\">;\r\nexport type TextCompletionParams = Omit<CompletionCreateParams, \"prompt\" | \"stream\">;\r\nexport type Role = \"system\" | \"user\" | \"assistant\";\r\nexport interface Message { role: Role; content: string; name?: string }\r\n\r\nexport default async () => {\r\n  const py = await getPy();\r\n\r\n  class Template {\r\n    proxy: PyProxy;\r\n\r\n    constructor(text: string);\r\n    constructor(input: string | PyProxy) {\r\n      if (typeof input === \"string\")\r\n        this.proxy = py.runPython(`Template(${JSON.stringify(input)})`);\r\n      else\r\n        this.proxy = input;\r\n    }\r\n\r\n    static fetch(url: string | URL) {\r\n      return new Template(py.runPython(`Template.fetch(${JSON.stringify(String(url))})`));\r\n    }\r\n\r\n    static async afetch(url: string | URL) {\r\n      return new Template(py.runPython(`await Template.afetch(${JSON.stringify(String(url))})`));\r\n    }\r\n\r\n    render(context?: Record<string, unknown> | Map<string, unknown>) {\r\n      return this.proxy.render(context && py.toPy(context)) as string;\r\n    }\r\n\r\n    async arender(context?: Record<string, unknown> | Map<string, unknown>) {\r\n      return (await this.proxy.arender(context && py.toPy(context))) as string;\r\n    }\r\n  }\r\n\r\n  return {\r\n    Template,\r\n    Node: py.runPython(\"Node\"),\r\n    AsyncChatGenerate(clientOptions: ClientOptions) {\r\n      return async function* (input: string, options?: ChatCompletionParams) {\r\n        const generate: PyCallable = (py.runPython(\"AsyncChatGenerate\") as PyCallable).callKwargs(await toPyOptions(clientOptions));\r\n        yield * generate.callKwargs(input, { ...options });\r\n        generate.destroy();\r\n      };\r\n    },\r\n    AsyncTextGenerate(clientOptions: ClientOptions) {\r\n      return async function* (input: string, options?: TextCompletionParams) {\r\n        const generate: PyCallable = (py.runPython(\"AsyncTextGenerate\") as PyCallable).callKwargs(await toPyOptions(clientOptions));\r\n        yield * generate.callKwargs(input, { ...options });\r\n        generate.destroy();\r\n      };\r\n    },\r\n    parse_chat_markup(text: string) {\r\n      return toJs(py.runPython(\"parse_chat_markup\")(text)) as Message[];\r\n    },\r\n    promplate: py.pyimport(\"promplate\"),\r\n  };\r\n};\r\n","var oe=Object.create;var k=Object.defineProperty;var ae=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ce=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty;var f=(t,e)=>k(t,\"name\",{value:e,configurable:!0}),E=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,c)=>(typeof require<\"u\"?require:e)[c]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+t+'\" is not supported')});var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var de=(t,e,c,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of se(e))!le.call(t,a)&&a!==c&&k(t,a,{get:()=>e[a],enumerable:!(o=ae(e,a))||o.enumerable});return t};var fe=(t,e,c)=>(c=t!=null?oe(ce(t)):{},de(e||!t||!t.__esModule?k(c,\"default\",{value:t,enumerable:!0}):c,t));var $=T((R,U)=>{(function(t,e){\"use strict\";typeof define==\"function\"&&define.amd?define(\"stackframe\",[],e):typeof R==\"object\"?U.exports=e():t.StackFrame=e()})(R,function(){\"use strict\";function t(d){return!isNaN(parseFloat(d))&&isFinite(d)}f(t,\"_isNumber\");function e(d){return d.charAt(0).toUpperCase()+d.substring(1)}f(e,\"_capitalize\");function c(d){return function(){return this[d]}}f(c,\"_getter\");var o=[\"isConstructor\",\"isEval\",\"isNative\",\"isToplevel\"],a=[\"columnNumber\",\"lineNumber\"],r=[\"fileName\",\"functionName\",\"source\"],n=[\"args\"],u=[\"evalOrigin\"],i=o.concat(a,r,n,u);function s(d){if(d)for(var y=0;y<i.length;y++)d[i[y]]!==void 0&&this[\"set\"+e(i[y])](d[i[y]])}f(s,\"StackFrame\"),s.prototype={getArgs:function(){return this.args},setArgs:function(d){if(Object.prototype.toString.call(d)!==\"[object Array]\")throw new TypeError(\"Args must be an Array\");this.args=d},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(d){if(d instanceof s)this.evalOrigin=d;else if(d instanceof Object)this.evalOrigin=new s(d);else throw new TypeError(\"Eval Origin must be an Object or StackFrame\")},toString:function(){var d=this.getFileName()||\"\",y=this.getLineNumber()||\"\",h=this.getColumnNumber()||\"\",v=this.getFunctionName()||\"\";return this.getIsEval()?d?\"[eval] (\"+d+\":\"+y+\":\"+h+\")\":\"[eval]:\"+y+\":\"+h:v?v+\" (\"+d+\":\"+y+\":\"+h+\")\":d+\":\"+y+\":\"+h}},s.fromString=f(function(y){var h=y.indexOf(\"(\"),v=y.lastIndexOf(\")\"),ee=y.substring(0,h),te=y.substring(h+1,v).split(\",\"),I=y.substring(v+1);if(I.indexOf(\"@\")===0)var N=/@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(I,\"\"),re=N[1],ne=N[2],ie=N[3];return new s({functionName:ee,args:te||void 0,fileName:re,lineNumber:ne||void 0,columnNumber:ie||void 0})},\"StackFrame$$fromString\");for(var l=0;l<o.length;l++)s.prototype[\"get\"+e(o[l])]=c(o[l]),s.prototype[\"set\"+e(o[l])]=function(d){return function(y){this[d]=!!y}}(o[l]);for(var m=0;m<a.length;m++)s.prototype[\"get\"+e(a[m])]=c(a[m]),s.prototype[\"set\"+e(a[m])]=function(d){return function(y){if(!t(y))throw new TypeError(d+\" must be a Number\");this[d]=Number(y)}}(a[m]);for(var p=0;p<r.length;p++)s.prototype[\"get\"+e(r[p])]=c(r[p]),s.prototype[\"set\"+e(r[p])]=function(d){return function(y){this[d]=String(y)}}(r[p]);return s})});var C=T((x,M)=>{(function(t,e){\"use strict\";typeof define==\"function\"&&define.amd?define(\"error-stack-parser\",[\"stackframe\"],e):typeof x==\"object\"?M.exports=e($()):t.ErrorStackParser=e(t.StackFrame)})(x,f(function(e){\"use strict\";var c=/(^|@)\\S+:\\d+/,o=/^\\s*at .*(\\S+:\\d+|\\(native\\))/m,a=/^(eval@)?(\\[native code])?$/;return{parse:f(function(n){if(typeof n.stacktrace<\"u\"||typeof n[\"opera#sourceloc\"]<\"u\")return this.parseOpera(n);if(n.stack&&n.stack.match(o))return this.parseV8OrIE(n);if(n.stack)return this.parseFFOrSafari(n);throw new Error(\"Cannot parse given Error object\")},\"ErrorStackParser$$parse\"),extractLocation:f(function(n){if(n.indexOf(\":\")===-1)return[n];var u=/(.+?)(?::(\\d+))?(?::(\\d+))?$/,i=u.exec(n.replace(/[()]/g,\"\"));return[i[1],i[2]||void 0,i[3]||void 0]},\"ErrorStackParser$$extractLocation\"),parseV8OrIE:f(function(n){var u=n.stack.split(`\n`).filter(function(i){return!!i.match(o)},this);return u.map(function(i){i.indexOf(\"(eval \")>-1&&(i=i.replace(/eval code/g,\"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g,\"\"));var s=i.replace(/^\\s+/,\"\").replace(/\\(eval code/g,\"(\").replace(/^.*?\\s+/,\"\"),l=s.match(/ (\\(.+\\)$)/);s=l?s.replace(l[0],\"\"):s;var m=this.extractLocation(l?l[1]:s),p=l&&s||void 0,d=[\"eval\",\"<anonymous>\"].indexOf(m[0])>-1?void 0:m[0];return new e({functionName:p,fileName:d,lineNumber:m[1],columnNumber:m[2],source:i})},this)},\"ErrorStackParser$$parseV8OrIE\"),parseFFOrSafari:f(function(n){var u=n.stack.split(`\n`).filter(function(i){return!i.match(a)},this);return u.map(function(i){if(i.indexOf(\" > eval\")>-1&&(i=i.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,\":$1\")),i.indexOf(\"@\")===-1&&i.indexOf(\":\")===-1)return new e({functionName:i});var s=/((.*\".+\"[^@]*)?[^@]*)(?:@)/,l=i.match(s),m=l&&l[1]?l[1]:void 0,p=this.extractLocation(i.replace(s,\"\"));return new e({functionName:m,fileName:p[0],lineNumber:p[1],columnNumber:p[2],source:i})},this)},\"ErrorStackParser$$parseFFOrSafari\"),parseOpera:f(function(n){return!n.stacktrace||n.message.indexOf(`\n`)>-1&&n.message.split(`\n`).length>n.stacktrace.split(`\n`).length?this.parseOpera9(n):n.stack?this.parseOpera11(n):this.parseOpera10(n)},\"ErrorStackParser$$parseOpera\"),parseOpera9:f(function(n){for(var u=/Line (\\d+).*script (?:in )?(\\S+)/i,i=n.message.split(`\n`),s=[],l=2,m=i.length;l<m;l+=2){var p=u.exec(i[l]);p&&s.push(new e({fileName:p[2],lineNumber:p[1],source:i[l]}))}return s},\"ErrorStackParser$$parseOpera9\"),parseOpera10:f(function(n){for(var u=/Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i,i=n.stacktrace.split(`\n`),s=[],l=0,m=i.length;l<m;l+=2){var p=u.exec(i[l]);p&&s.push(new e({functionName:p[3]||void 0,fileName:p[2],lineNumber:p[1],source:i[l]}))}return s},\"ErrorStackParser$$parseOpera10\"),parseOpera11:f(function(n){var u=n.stack.split(`\n`).filter(function(i){return!!i.match(c)&&!i.match(/^Error created at/)},this);return u.map(function(i){var s=i.split(\"@\"),l=this.extractLocation(s.pop()),m=s.shift()||\"\",p=m.replace(/<anonymous function(: (\\w+))?>/,\"$2\").replace(/\\([^)]*\\)/g,\"\")||void 0,d;m.match(/\\(([^)]*)\\)/)&&(d=m.replace(/^[^(]+\\(([^)]*)\\)$/,\"$1\"));var y=d===void 0||d===\"[arguments not available]\"?void 0:d.split(\",\");return new e({functionName:p,args:y,fileName:l[0],lineNumber:l[1],columnNumber:l[2],source:i})},this)},\"ErrorStackParser$$parseOpera11\")}},\"ErrorStackParser\"))});var z=fe(C());var g=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\"&&typeof process.browser>\"u\",F=g&&typeof module<\"u\"&&typeof module.exports<\"u\"&&typeof E<\"u\"&&typeof __dirname<\"u\",j=g&&!F,ue=typeof Deno<\"u\",B=!g&&!ue,W=B&&typeof window<\"u\"&&typeof document<\"u\"&&typeof document.createElement<\"u\"&&typeof sessionStorage<\"u\",H=B&&typeof importScripts<\"u\"&&typeof self<\"u\";var q,_,P,V,L,pe=`\"fetch\" is not defined, maybe you're using node < 18? From Pyodide >= 0.25.0, node >= 18 is required. Older versions of Node.js may work, but it is not guaranteed or supported. Falling back to \"node-fetch\".`;async function D(){if(!g||(q=(await import(\"url\")).default,L=await import(\"fs/promises\"),globalThis.fetch?_=fetch:(console.warn(pe),_=(await import(\"node-fetch\")).default),V=(await import(\"vm\")).default,P=await import(\"path\"),A=P.sep,typeof E<\"u\"))return;let t=await import(\"fs\"),e=await import(\"crypto\"),c=await import(\"ws\"),o=await import(\"child_process\"),a={fs:t,crypto:e,ws:c,child_process:o};globalThis.require=function(r){return a[r]}}f(D,\"initNodeModules\");function me(t,e){return P.resolve(e||\".\",t)}f(me,\"node_resolvePath\");function ye(t,e){return e===void 0&&(e=location),new URL(t,e).toString()}f(ye,\"browser_resolvePath\");var S;g?S=me:S=ye;var A;g||(A=\"/\");function ge(t,e){return t.startsWith(\"file://\")&&(t=t.slice(7)),t.includes(\"://\")?{response:_(t)}:{binary:L.readFile(t).then(c=>new Uint8Array(c.buffer,c.byteOffset,c.byteLength))}}f(ge,\"node_getBinaryResponse\");function he(t,e){let c=new URL(t,location);return{response:fetch(c,e?{integrity:e}:{})}}f(he,\"browser_getBinaryResponse\");var b;g?b=ge:b=he;async function G(t,e){let{response:c,binary:o}=b(t,e);if(o)return o;let a=await c;if(!a.ok)throw new Error(`Failed to load '${t}': request failed.`);return new Uint8Array(await a.arrayBuffer())}f(G,\"loadBinaryFile\");var w;if(W)w=f(async t=>await import(t),\"loadScript\");else if(H)w=f(async t=>{try{globalThis.importScripts(t)}catch(e){if(e instanceof TypeError)await import(t);else throw e}},\"loadScript\");else if(g)w=ve;else throw new Error(\"Cannot determine runtime environment\");async function ve(t){t.startsWith(\"file://\")&&(t=t.slice(7)),t.includes(\"://\")?V.runInThisContext(await(await _(t)).text()):await import(q.pathToFileURL(t).href)}f(ve,\"nodeLoadScript\");async function K(t){if(g){await D();let e=await L.readFile(t);return JSON.parse(e)}else return await(await fetch(t)).json()}f(K,\"loadLockFile\");async function X(){if(F)return __dirname;let t;try{throw new Error}catch(o){t=o}let e=z.default.parse(t)[0].fileName;if(j){let o=await import(\"path\");return(await import(\"url\")).fileURLToPath(o.dirname(e))}let c=e.lastIndexOf(A);if(c===-1)throw new Error(\"Could not extract indexURL path from pyodide module location\");return e.slice(0,c)}f(X,\"calculateDirname\");function J(t){let e=t.FS,c=t.FS.filesystems.MEMFS,o=t.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:function(r){if(!r.opts.fileSystemHandle)throw new Error(\"opts.fileSystemHandle is required\");return c.mount.apply(null,arguments)},syncfs:async(r,n,u)=>{try{let i=a.getLocalSet(r),s=await a.getRemoteSet(r),l=n?s:i,m=n?i:s;await a.reconcile(r,l,m),u(null)}catch(i){u(i)}},getLocalSet:r=>{let n=Object.create(null);function u(l){return l!==\".\"&&l!==\"..\"}f(u,\"isRealDir\");function i(l){return m=>o.join2(l,m)}f(i,\"toAbsolute\");let s=e.readdir(r.mountpoint).filter(u).map(i(r.mountpoint));for(;s.length;){let l=s.pop(),m=e.stat(l);e.isDir(m.mode)&&s.push.apply(s,e.readdir(l).filter(u).map(i(l))),n[l]={timestamp:m.mtime,mode:m.mode}}return{type:\"local\",entries:n}},getRemoteSet:async r=>{let n=Object.create(null),u=await we(r.opts.fileSystemHandle);for(let[i,s]of u)i!==\".\"&&(n[o.join2(r.mountpoint,i)]={timestamp:s.kind===\"file\"?(await s.getFile()).lastModifiedDate:new Date,mode:s.kind===\"file\"?a.FILE_MODE:a.DIR_MODE});return{type:\"remote\",entries:n,handles:u}},loadLocalEntry:r=>{let u=e.lookupPath(r).node,i=e.stat(r);if(e.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(e.isFile(i.mode))return u.contents=c.getFileDataAsTypedArray(u),{timestamp:i.mtime,mode:i.mode,contents:u.contents};throw new Error(\"node type not supported\")},storeLocalEntry:(r,n)=>{if(e.isDir(n.mode))e.mkdirTree(r,n.mode);else if(e.isFile(n.mode))e.writeFile(r,n.contents,{canOwn:!0});else throw new Error(\"node type not supported\");e.chmod(r,n.mode),e.utime(r,n.timestamp,n.timestamp)},removeLocalEntry:r=>{var n=e.stat(r);e.isDir(n.mode)?e.rmdir(r):e.isFile(n.mode)&&e.unlink(r)},loadRemoteEntry:async r=>{if(r.kind===\"file\"){let n=await r.getFile();return{contents:new Uint8Array(await n.arrayBuffer()),mode:a.FILE_MODE,timestamp:n.lastModifiedDate}}else{if(r.kind===\"directory\")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error(\"unknown kind: \"+r.kind)}},storeRemoteEntry:async(r,n,u)=>{let i=r.get(o.dirname(n)),s=e.isFile(u.mode)?await i.getFileHandle(o.basename(n),{create:!0}):await i.getDirectoryHandle(o.basename(n),{create:!0});if(s.kind===\"file\"){let l=await s.createWritable();await l.write(u.contents),await l.close()}r.set(n,s)},removeRemoteEntry:async(r,n)=>{await r.get(o.dirname(n)).removeEntry(o.basename(n)),r.delete(n)},reconcile:async(r,n,u)=>{let i=0,s=[];Object.keys(n.entries).forEach(function(p){let d=n.entries[p],y=u.entries[p];(!y||e.isFile(d.mode)&&d.timestamp.getTime()>y.timestamp.getTime())&&(s.push(p),i++)}),s.sort();let l=[];if(Object.keys(u.entries).forEach(function(p){n.entries[p]||(l.push(p),i++)}),l.sort().reverse(),!i)return;let m=n.type===\"remote\"?n.handles:u.handles;for(let p of s){let d=o.normalize(p.replace(r.mountpoint,\"/\")).substring(1);if(u.type===\"local\"){let y=m.get(d),h=await a.loadRemoteEntry(y);a.storeLocalEntry(p,h)}else{let y=a.loadLocalEntry(p);await a.storeRemoteEntry(m,d,y)}}for(let p of l)if(u.type===\"local\")a.removeLocalEntry(p);else{let d=o.normalize(p.replace(r.mountpoint,\"/\")).substring(1);await a.removeRemoteEntry(m,d)}}};t.FS.filesystems.NATIVEFS_ASYNC=a}f(J,\"initializeNativeFS\");var we=f(async t=>{let e=[];async function c(a){for await(let r of a.values())e.push(r),r.kind===\"directory\"&&await c(r)}f(c,\"collect\"),await c(t);let o=new Map;o.set(\".\",t);for(let a of e){let r=(await t.resolve(a)).join(\"/\");o.set(r,a)}return o},\"getFsHandles\");function Y(){let t={};return t.noImageDecoding=!0,t.noAudioDecoding=!0,t.noWasmDecoding=!1,t.preRun=[],t.quit=(e,c)=>{throw t.exited={status:e,toThrow:c},c},t}f(Y,\"createModule\");function be(t,e){t.preRun.push(function(){let c=\"/\";try{t.FS.mkdirTree(e)}catch(o){console.error(`Error occurred while making a home directory '${e}':`),console.error(o),console.error(`Using '${c}' for a home directory instead`),e=c}t.FS.chdir(e)})}f(be,\"createHomeDirectory\");function Ee(t,e){t.preRun.push(function(){Object.assign(t.ENV,e)})}f(Ee,\"setEnvironment\");function _e(t,e){t.preRun.push(()=>{for(let c of e)t.FS.mkdirTree(c),t.FS.mount(t.FS.filesystems.NODEFS,{root:c},c)})}f(_e,\"mountLocalDirectories\");function Se(t,e){let c=G(e);t.preRun.push(()=>{let o=t._py_version_major(),a=t._py_version_minor();t.FS.mkdirTree(\"/lib\"),t.FS.mkdirTree(`/lib/python${o}.${a}/site-packages`),t.addRunDependency(\"install-stdlib\"),c.then(r=>{t.FS.writeFile(`/lib/python${o}${a}.zip`,r)}).catch(r=>{console.error(\"Error occurred while installing the standard library:\"),console.error(r)}).finally(()=>{t.removeRunDependency(\"install-stdlib\")})})}f(Se,\"installStdlib\");function Q(t,e){let c;e.stdLibURL!=null?c=e.stdLibURL:c=e.indexURL+\"python_stdlib.zip\",Se(t,c),be(t,e.env.HOME),Ee(t,e.env),_e(t,e._node_mounts),t.preRun.push(()=>J(t))}f(Q,\"initializeFileSystem\");function Z(t,e){let{binary:c,response:o}=b(e+\"pyodide.asm.wasm\");t.instantiateWasm=function(a,r){return async function(){try{let n;o?n=await WebAssembly.instantiateStreaming(o,a):n=await WebAssembly.instantiate(await c,a);let{instance:u,module:i}=n;typeof WasmOffsetConverter<\"u\"&&(wasmOffsetConverter=new WasmOffsetConverter(wasmBinary,i)),r(u,i)}catch(n){console.warn(\"wasm instantiation failed!\"),console.warn(n)}}(),{}}}f(Z,\"preloadWasm\");var O=\"0.25.0\";async function We(t={}){await D();let e=t.indexURL||await X();e=S(e),e.endsWith(\"/\")||(e+=\"/\"),t.indexURL=e;let c={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,lockFileURL:e+\"pyodide-lock.json\",args:[],_node_mounts:[],env:{},packageCacheDir:e,packages:[]},o=Object.assign(c,t);o.env.HOME||(o.env.HOME=\"/home/pyodide\");let a=Y();a.print=o.stdout,a.printErr=o.stderr,a.arguments=o.args;let r={config:o};a.API=r,r.lockFilePromise=K(o.lockFileURL),Z(a,e),Q(a,o);let n=new Promise(s=>a.postRun=s);if(a.locateFile=s=>o.indexURL+s,typeof _createPyodideModule!=\"function\"){let s=`${o.indexURL}pyodide.asm.js`;await w(s)}if(await _createPyodideModule(a),await n,a.exited)throw a.exited.toThrow;if(t.pyproxyToStringRepr&&r.setPyProxyToStringMethod(!0),r.version!==O)throw new Error(`Pyodide version does not match: '${O}' <==> '${r.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);a.locateFile=s=>{throw new Error(\"Didn't expect to load any more file_packager files!\")};let u=r.finalizeBootstrap();if(u.version.includes(\"dev\")||r.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${u.version}/full/`),await r.packageIndexReady,r._pyodide._importhook.register_module_not_found_hook(r._import_name_to_package_name,r.lockfile_unvendored_stdlibs_and_test),r.lockfile_info.version!==O)throw new Error(\"Lock file version doesn't match Pyodide version\");return r.package_loader.init_loaded_packages(),o.fullStdLib&&await u.loadPackage(r.lockfile_unvendored_stdlibs),r.initializeStreams(o.stdin,o.stdout,o.stderr),u}f(We,\"loadPyodide\");export{We as loadPyodide,O as version};\n//# sourceMappingURL=pyodide.mjs.map\n","export default \"# type: ignore\\n\\nfrom micropip import install\\n\\nawait install(\\n    [\\n        \\\"promplate==0.3.3.4\\\",\\n        \\\"promplate-pyodide==0.0.1\\\",\\n    ]\\n)\\ndel install\\n\\nfrom promplate_pyodide import patch_promplate\\n\\npatch_promplate(True)\\n\\nfrom promplate import *\\nfrom promplate.llm.openai import *\\n\"","export default \"import builtins\\n\\nfrom pyodide.console import ConsoleFuture, PyodideConsole\\nfrom pyodide.ffi import to_js\\n\\n\\nasync def get_wrapped(future: ConsoleFuture):\\n    res = await future\\n    return to_js([res, None if res is None else repr(res)], depth=1)\\n\\n\\ndef complete(source: str):\\n    return to_js(console.complete(source), depth=2)\\n\\n\\nconsole = PyodideConsole({\\\"__name__\\\": \\\"__main__\\\", \\\"__builtins__\\\": builtins})\\n\"","export default {}","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n    return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n        return Math.floor(x);\n    } else {\n        return Math.round(x);\n    }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n    if (!typeOpts.unsigned) {\n        --bitLength;\n    }\n    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n    const upperBound = Math.pow(2, bitLength) - 1;\n\n    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n    return function(V, opts) {\n        if (!opts) opts = {};\n\n        let x = +V;\n\n        if (opts.enforceRange) {\n            if (!Number.isFinite(x)) {\n                throw new TypeError(\"Argument is not a finite number\");\n            }\n\n            x = sign(x) * Math.floor(Math.abs(x));\n            if (x < lowerBound || x > upperBound) {\n                throw new TypeError(\"Argument is not in byte range\");\n            }\n\n            return x;\n        }\n\n        if (!isNaN(x) && opts.clamp) {\n            x = evenRound(x);\n\n            if (x < lowerBound) x = lowerBound;\n            if (x > upperBound) x = upperBound;\n            return x;\n        }\n\n        if (!Number.isFinite(x) || x === 0) {\n            return 0;\n        }\n\n        x = sign(x) * Math.floor(Math.abs(x));\n        x = x % moduloVal;\n\n        if (!typeOpts.unsigned && x >= moduloBound) {\n            return x - moduloVal;\n        } else if (typeOpts.unsigned) {\n            if (x < 0) {\n              x += moduloVal;\n            } else if (x === -0) { // don't return negative zero\n              return 0;\n            }\n        }\n\n        return x;\n    }\n}\n\nconversions[\"void\"] = function () {\n    return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n    return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n    const x = +V;\n\n    if (!Number.isFinite(x)) {\n        throw new TypeError(\"Argument is not a finite floating-point value\");\n    }\n\n    return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n    const x = +V;\n\n    if (isNaN(x)) {\n        throw new TypeError(\"Argument is NaN\");\n    }\n\n    return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n    if (!opts) opts = {};\n\n    if (opts.treatNullAsEmptyString && V === null) {\n        return \"\";\n    }\n\n    return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n    const x = String(V);\n    let c = undefined;\n    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n        if (c > 255) {\n            throw new TypeError(\"Argument is not a valid bytestring\");\n        }\n    }\n\n    return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n    const S = String(V);\n    const n = S.length;\n    const U = [];\n    for (let i = 0; i < n; ++i) {\n        const c = S.charCodeAt(i);\n        if (c < 0xD800 || c > 0xDFFF) {\n            U.push(String.fromCodePoint(c));\n        } else if (0xDC00 <= c && c <= 0xDFFF) {\n            U.push(String.fromCodePoint(0xFFFD));\n        } else {\n            if (i === n - 1) {\n                U.push(String.fromCodePoint(0xFFFD));\n            } else {\n                const d = S.charCodeAt(i + 1);\n                if (0xDC00 <= d && d <= 0xDFFF) {\n                    const a = c & 0x3FF;\n                    const b = d & 0x3FF;\n                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n                    ++i;\n                } else {\n                    U.push(String.fromCodePoint(0xFFFD));\n                }\n            }\n        }\n    }\n\n    return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n    if (!(V instanceof Date)) {\n        throw new TypeError(\"Argument is not a Date object\");\n    }\n    if (isNaN(V)) {\n        return undefined;\n    }\n\n    return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n    if (!(V instanceof RegExp)) {\n        V = new RegExp(V);\n    }\n\n    return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n  const keys = Object.getOwnPropertyNames(source);\n  for (let i = 0; i < keys.length; ++i) {\n    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n  }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n  return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n  return wrapper[module.exports.implSymbol];\n};\n\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n  TRANSITIONAL: 0,\n  NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n  return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n  var start = 0;\n  var end = mappingTable.length - 1;\n\n  while (start <= end) {\n    var mid = Math.floor((start + end) / 2);\n\n    var target = mappingTable[mid];\n    if (target[0][0] <= val && target[0][1] >= val) {\n      return target;\n    } else if (target[0][0] > val) {\n      end = mid - 1;\n    } else {\n      start = mid + 1;\n    }\n  }\n\n  return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n  return string\n    // replace every surrogate pair with a BMP symbol\n    .replace(regexAstralSymbols, '_')\n    // then get the length\n    .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n  var hasError = false;\n  var processed = \"\";\n\n  var len = countSymbols(domain_name);\n  for (var i = 0; i < len; ++i) {\n    var codePoint = domain_name.codePointAt(i);\n    var status = findStatus(codePoint);\n\n    switch (status[1]) {\n      case \"disallowed\":\n        hasError = true;\n        processed += String.fromCodePoint(codePoint);\n        break;\n      case \"ignored\":\n        break;\n      case \"mapped\":\n        processed += String.fromCodePoint.apply(String, status[2]);\n        break;\n      case \"deviation\":\n        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n          processed += String.fromCodePoint.apply(String, status[2]);\n        } else {\n          processed += String.fromCodePoint(codePoint);\n        }\n        break;\n      case \"valid\":\n        processed += String.fromCodePoint(codePoint);\n        break;\n      case \"disallowed_STD3_mapped\":\n        if (useSTD3) {\n          hasError = true;\n          processed += String.fromCodePoint(codePoint);\n        } else {\n          processed += String.fromCodePoint.apply(String, status[2]);\n        }\n        break;\n      case \"disallowed_STD3_valid\":\n        if (useSTD3) {\n          hasError = true;\n        }\n\n        processed += String.fromCodePoint(codePoint);\n        break;\n    }\n  }\n\n  return {\n    string: processed,\n    error: hasError\n  };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n  if (label.substr(0, 4) === \"xn--\") {\n    label = punycode.toUnicode(label);\n    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n  }\n\n  var error = false;\n\n  if (normalize(label) !== label ||\n      (label[3] === \"-\" && label[4] === \"-\") ||\n      label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n      label.indexOf(\".\") !== -1 ||\n      label.search(combiningMarksRegex) === 0) {\n    error = true;\n  }\n\n  var len = countSymbols(label);\n  for (var i = 0; i < len; ++i) {\n    var status = findStatus(label.codePointAt(i));\n    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n         status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n      error = true;\n      break;\n    }\n  }\n\n  return {\n    label: label,\n    error: error\n  };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n  var result = mapChars(domain_name, useSTD3, processing_option);\n  result.string = normalize(result.string);\n\n  var labels = result.string.split(\".\");\n  for (var i = 0; i < labels.length; ++i) {\n    try {\n      var validation = validateLabel(labels[i]);\n      labels[i] = validation.label;\n      result.error = result.error || validation.error;\n    } catch(e) {\n      result.error = true;\n    }\n  }\n\n  return {\n    string: labels.join(\".\"),\n    error: result.error\n  };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n  var result = processing(domain_name, useSTD3, processing_option);\n  var labels = result.string.split(\".\");\n  labels = labels.map(function(l) {\n    try {\n      return punycode.toASCII(l);\n    } catch(e) {\n      result.error = true;\n      return l;\n    }\n  });\n\n  if (verifyDnsLength) {\n    var total = labels.slice(0, labels.length - 1).join(\".\").length;\n    if (total.length > 253 || total.length === 0) {\n      result.error = true;\n    }\n\n    for (var i=0; i < labels.length; ++i) {\n      if (labels.length > 63 || labels.length === 0) {\n        result.error = true;\n        break;\n      }\n    }\n  }\n\n  if (result.error) return null;\n  return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n  return {\n    domain: result.string,\n    error: result.error\n  };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n  ftp: 21,\r\n  file: null,\r\n  gopher: 70,\r\n  http: 80,\r\n  https: 443,\r\n  ws: 80,\r\n  wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n  return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n  const c = input[idx];\r\n  return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n  return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n  return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n  return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n  buffer = buffer.toLowerCase();\r\n  return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n  return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n  return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n  return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n  let hex = c.toString(16).toUpperCase();\r\n  if (hex.length === 1) {\r\n    hex = \"0\" + hex;\r\n  }\r\n\r\n  return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n  const buf = new Buffer(c);\r\n\r\n  let str = \"\";\r\n\r\n  for (let i = 0; i < buf.length; ++i) {\r\n    str += percentEncode(buf[i]);\r\n  }\r\n\r\n  return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n  const input = new Buffer(str);\r\n  const output = [];\r\n  for (let i = 0; i < input.length; ++i) {\r\n    if (input[i] !== 37) {\r\n      output.push(input[i]);\r\n    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n      i += 2;\r\n    } else {\r\n      output.push(input[i]);\r\n    }\r\n  }\r\n  return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n  return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n  const cStr = String.fromCodePoint(c);\r\n\r\n  if (encodeSetPredicate(c)) {\r\n    return utf8PercentEncode(cStr);\r\n  }\r\n\r\n  return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n  let R = 10;\r\n\r\n  if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n    input = input.substring(2);\r\n    R = 16;\r\n  } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n    input = input.substring(1);\r\n    R = 8;\r\n  }\r\n\r\n  if (input === \"\") {\r\n    return 0;\r\n  }\r\n\r\n  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n  if (regex.test(input)) {\r\n    return failure;\r\n  }\r\n\r\n  return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n  const parts = input.split(\".\");\r\n  if (parts[parts.length - 1] === \"\") {\r\n    if (parts.length > 1) {\r\n      parts.pop();\r\n    }\r\n  }\r\n\r\n  if (parts.length > 4) {\r\n    return input;\r\n  }\r\n\r\n  const numbers = [];\r\n  for (const part of parts) {\r\n    if (part === \"\") {\r\n      return input;\r\n    }\r\n    const n = parseIPv4Number(part);\r\n    if (n === failure) {\r\n      return input;\r\n    }\r\n\r\n    numbers.push(n);\r\n  }\r\n\r\n  for (let i = 0; i < numbers.length - 1; ++i) {\r\n    if (numbers[i] > 255) {\r\n      return failure;\r\n    }\r\n  }\r\n  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n    return failure;\r\n  }\r\n\r\n  let ipv4 = numbers.pop();\r\n  let counter = 0;\r\n\r\n  for (const n of numbers) {\r\n    ipv4 += n * Math.pow(256, 3 - counter);\r\n    ++counter;\r\n  }\r\n\r\n  return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n  let output = \"\";\r\n  let n = address;\r\n\r\n  for (let i = 1; i <= 4; ++i) {\r\n    output = String(n % 256) + output;\r\n    if (i !== 4) {\r\n      output = \".\" + output;\r\n    }\r\n    n = Math.floor(n / 256);\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n  const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n  let pieceIndex = 0;\r\n  let compress = null;\r\n  let pointer = 0;\r\n\r\n  input = punycode.ucs2.decode(input);\r\n\r\n  if (input[pointer] === 58) {\r\n    if (input[pointer + 1] !== 58) {\r\n      return failure;\r\n    }\r\n\r\n    pointer += 2;\r\n    ++pieceIndex;\r\n    compress = pieceIndex;\r\n  }\r\n\r\n  while (pointer < input.length) {\r\n    if (pieceIndex === 8) {\r\n      return failure;\r\n    }\r\n\r\n    if (input[pointer] === 58) {\r\n      if (compress !== null) {\r\n        return failure;\r\n      }\r\n      ++pointer;\r\n      ++pieceIndex;\r\n      compress = pieceIndex;\r\n      continue;\r\n    }\r\n\r\n    let value = 0;\r\n    let length = 0;\r\n\r\n    while (length < 4 && isASCIIHex(input[pointer])) {\r\n      value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n      ++pointer;\r\n      ++length;\r\n    }\r\n\r\n    if (input[pointer] === 46) {\r\n      if (length === 0) {\r\n        return failure;\r\n      }\r\n\r\n      pointer -= length;\r\n\r\n      if (pieceIndex > 6) {\r\n        return failure;\r\n      }\r\n\r\n      let numbersSeen = 0;\r\n\r\n      while (input[pointer] !== undefined) {\r\n        let ipv4Piece = null;\r\n\r\n        if (numbersSeen > 0) {\r\n          if (input[pointer] === 46 && numbersSeen < 4) {\r\n            ++pointer;\r\n          } else {\r\n            return failure;\r\n          }\r\n        }\r\n\r\n        if (!isASCIIDigit(input[pointer])) {\r\n          return failure;\r\n        }\r\n\r\n        while (isASCIIDigit(input[pointer])) {\r\n          const number = parseInt(at(input, pointer));\r\n          if (ipv4Piece === null) {\r\n            ipv4Piece = number;\r\n          } else if (ipv4Piece === 0) {\r\n            return failure;\r\n          } else {\r\n            ipv4Piece = ipv4Piece * 10 + number;\r\n          }\r\n          if (ipv4Piece > 255) {\r\n            return failure;\r\n          }\r\n          ++pointer;\r\n        }\r\n\r\n        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n        ++numbersSeen;\r\n\r\n        if (numbersSeen === 2 || numbersSeen === 4) {\r\n          ++pieceIndex;\r\n        }\r\n      }\r\n\r\n      if (numbersSeen !== 4) {\r\n        return failure;\r\n      }\r\n\r\n      break;\r\n    } else if (input[pointer] === 58) {\r\n      ++pointer;\r\n      if (input[pointer] === undefined) {\r\n        return failure;\r\n      }\r\n    } else if (input[pointer] !== undefined) {\r\n      return failure;\r\n    }\r\n\r\n    address[pieceIndex] = value;\r\n    ++pieceIndex;\r\n  }\r\n\r\n  if (compress !== null) {\r\n    let swaps = pieceIndex - compress;\r\n    pieceIndex = 7;\r\n    while (pieceIndex !== 0 && swaps > 0) {\r\n      const temp = address[compress + swaps - 1];\r\n      address[compress + swaps - 1] = address[pieceIndex];\r\n      address[pieceIndex] = temp;\r\n      --pieceIndex;\r\n      --swaps;\r\n    }\r\n  } else if (compress === null && pieceIndex !== 8) {\r\n    return failure;\r\n  }\r\n\r\n  return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n  let output = \"\";\r\n  const seqResult = findLongestZeroSequence(address);\r\n  const compress = seqResult.idx;\r\n  let ignore0 = false;\r\n\r\n  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n    if (ignore0 && address[pieceIndex] === 0) {\r\n      continue;\r\n    } else if (ignore0) {\r\n      ignore0 = false;\r\n    }\r\n\r\n    if (compress === pieceIndex) {\r\n      const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n      output += separator;\r\n      ignore0 = true;\r\n      continue;\r\n    }\r\n\r\n    output += address[pieceIndex].toString(16);\r\n\r\n    if (pieceIndex !== 7) {\r\n      output += \":\";\r\n    }\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n  if (input[0] === \"[\") {\r\n    if (input[input.length - 1] !== \"]\") {\r\n      return failure;\r\n    }\r\n\r\n    return parseIPv6(input.substring(1, input.length - 1));\r\n  }\r\n\r\n  if (!isSpecialArg) {\r\n    return parseOpaqueHost(input);\r\n  }\r\n\r\n  const domain = utf8PercentDecode(input);\r\n  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n  if (asciiDomain === null) {\r\n    return failure;\r\n  }\r\n\r\n  if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n    return failure;\r\n  }\r\n\r\n  const ipv4Host = parseIPv4(asciiDomain);\r\n  if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n    return ipv4Host;\r\n  }\r\n\r\n  return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n  if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n    return failure;\r\n  }\r\n\r\n  let output = \"\";\r\n  const decoded = punycode.ucs2.decode(input);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n  }\r\n  return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n  let maxIdx = null;\r\n  let maxLen = 1; // only find elements > 1\r\n  let currStart = null;\r\n  let currLen = 0;\r\n\r\n  for (let i = 0; i < arr.length; ++i) {\r\n    if (arr[i] !== 0) {\r\n      if (currLen > maxLen) {\r\n        maxIdx = currStart;\r\n        maxLen = currLen;\r\n      }\r\n\r\n      currStart = null;\r\n      currLen = 0;\r\n    } else {\r\n      if (currStart === null) {\r\n        currStart = i;\r\n      }\r\n      ++currLen;\r\n    }\r\n  }\r\n\r\n  // if trailing zeros\r\n  if (currLen > maxLen) {\r\n    maxIdx = currStart;\r\n    maxLen = currLen;\r\n  }\r\n\r\n  return {\r\n    idx: maxIdx,\r\n    len: maxLen\r\n  };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n  if (typeof host === \"number\") {\r\n    return serializeIPv4(host);\r\n  }\r\n\r\n  // IPv6 serializer\r\n  if (host instanceof Array) {\r\n    return \"[\" + serializeIPv6(host) + \"]\";\r\n  }\r\n\r\n  return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n  return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n  return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n  const path = url.path;\r\n  if (path.length === 0) {\r\n    return;\r\n  }\r\n  if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n    return;\r\n  }\r\n\r\n  path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n  return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n  return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n  return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n  this.pointer = 0;\r\n  this.input = input;\r\n  this.base = base || null;\r\n  this.encodingOverride = encodingOverride || \"utf-8\";\r\n  this.stateOverride = stateOverride;\r\n  this.url = url;\r\n  this.failure = false;\r\n  this.parseError = false;\r\n\r\n  if (!this.url) {\r\n    this.url = {\r\n      scheme: \"\",\r\n      username: \"\",\r\n      password: \"\",\r\n      host: null,\r\n      port: null,\r\n      path: [],\r\n      query: null,\r\n      fragment: null,\r\n\r\n      cannotBeABaseURL: false\r\n    };\r\n\r\n    const res = trimControlChars(this.input);\r\n    if (res !== this.input) {\r\n      this.parseError = true;\r\n    }\r\n    this.input = res;\r\n  }\r\n\r\n  const res = trimTabAndNewline(this.input);\r\n  if (res !== this.input) {\r\n    this.parseError = true;\r\n  }\r\n  this.input = res;\r\n\r\n  this.state = stateOverride || \"scheme start\";\r\n\r\n  this.buffer = \"\";\r\n  this.atFlag = false;\r\n  this.arrFlag = false;\r\n  this.passwordTokenSeenFlag = false;\r\n\r\n  this.input = punycode.ucs2.decode(this.input);\r\n\r\n  for (; this.pointer <= this.input.length; ++this.pointer) {\r\n    const c = this.input[this.pointer];\r\n    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n    // exec state machine\r\n    const ret = this[\"parse \" + this.state](c, cStr);\r\n    if (!ret) {\r\n      break; // terminate algorithm\r\n    } else if (ret === failure) {\r\n      this.failure = true;\r\n      break;\r\n    }\r\n  }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n  if (isASCIIAlpha(c)) {\r\n    this.buffer += cStr.toLowerCase();\r\n    this.state = \"scheme\";\r\n  } else if (!this.stateOverride) {\r\n    this.state = \"no scheme\";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n    this.buffer += cStr.toLowerCase();\r\n  } else if (c === 58) {\r\n    if (this.stateOverride) {\r\n      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n        return false;\r\n      }\r\n\r\n      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n        return false;\r\n      }\r\n\r\n      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n        return false;\r\n      }\r\n\r\n      if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n        return false;\r\n      }\r\n    }\r\n    this.url.scheme = this.buffer;\r\n    this.buffer = \"\";\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n    if (this.url.scheme === \"file\") {\r\n      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n        this.parseError = true;\r\n      }\r\n      this.state = \"file\";\r\n    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n      this.state = \"special relative or authority\";\r\n    } else if (isSpecial(this.url)) {\r\n      this.state = \"special authority slashes\";\r\n    } else if (this.input[this.pointer + 1] === 47) {\r\n      this.state = \"path or authority\";\r\n      ++this.pointer;\r\n    } else {\r\n      this.url.cannotBeABaseURL = true;\r\n      this.url.path.push(\"\");\r\n      this.state = \"cannot-be-a-base-URL path\";\r\n    }\r\n  } else if (!this.stateOverride) {\r\n    this.buffer = \"\";\r\n    this.state = \"no scheme\";\r\n    this.pointer = -1;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n    return failure;\r\n  } else if (this.base.cannotBeABaseURL && c === 35) {\r\n    this.url.scheme = this.base.scheme;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n    this.url.fragment = \"\";\r\n    this.url.cannotBeABaseURL = true;\r\n    this.state = \"fragment\";\r\n  } else if (this.base.scheme === \"file\") {\r\n    this.state = \"file\";\r\n    --this.pointer;\r\n  } else {\r\n    this.state = \"relative\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n    this.state = \"special authority ignore slashes\";\r\n    ++this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    this.state = \"relative\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n  if (c === 47) {\r\n    this.state = \"authority\";\r\n  } else {\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n  this.url.scheme = this.base.scheme;\r\n  if (isNaN(c)) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n  } else if (c === 47) {\r\n    this.state = \"relative slash\";\r\n  } else if (c === 63) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = \"\";\r\n    this.state = \"query\";\r\n  } else if (c === 35) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n    this.url.fragment = \"\";\r\n    this.state = \"fragment\";\r\n  } else if (isSpecial(this.url) && c === 92) {\r\n    this.parseError = true;\r\n    this.state = \"relative slash\";\r\n  } else {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n  if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"special authority ignore slashes\";\r\n  } else if (c === 47) {\r\n    this.state = \"authority\";\r\n  } else {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n    this.state = \"special authority ignore slashes\";\r\n    ++this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    this.state = \"special authority ignore slashes\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n  if (c !== 47 && c !== 92) {\r\n    this.state = \"authority\";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n  if (c === 64) {\r\n    this.parseError = true;\r\n    if (this.atFlag) {\r\n      this.buffer = \"%40\" + this.buffer;\r\n    }\r\n    this.atFlag = true;\r\n\r\n    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n    const len = countSymbols(this.buffer);\r\n    for (let pointer = 0; pointer < len; ++pointer) {\r\n      const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n      if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n        this.passwordTokenSeenFlag = true;\r\n        continue;\r\n      }\r\n      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n      if (this.passwordTokenSeenFlag) {\r\n        this.url.password += encodedCodePoints;\r\n      } else {\r\n        this.url.username += encodedCodePoints;\r\n      }\r\n    }\r\n    this.buffer = \"\";\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92)) {\r\n    if (this.atFlag && this.buffer === \"\") {\r\n      this.parseError = true;\r\n      return failure;\r\n    }\r\n    this.pointer -= countSymbols(this.buffer) + 1;\r\n    this.buffer = \"\";\r\n    this.state = \"host\";\r\n  } else {\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n  if (this.stateOverride && this.url.scheme === \"file\") {\r\n    --this.pointer;\r\n    this.state = \"file host\";\r\n  } else if (c === 58 && !this.arrFlag) {\r\n    if (this.buffer === \"\") {\r\n      this.parseError = true;\r\n      return failure;\r\n    }\r\n\r\n    const host = parseHost(this.buffer, isSpecial(this.url));\r\n    if (host === failure) {\r\n      return failure;\r\n    }\r\n\r\n    this.url.host = host;\r\n    this.buffer = \"\";\r\n    this.state = \"port\";\r\n    if (this.stateOverride === \"hostname\") {\r\n      return false;\r\n    }\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92)) {\r\n    --this.pointer;\r\n    if (isSpecial(this.url) && this.buffer === \"\") {\r\n      this.parseError = true;\r\n      return failure;\r\n    } else if (this.stateOverride && this.buffer === \"\" &&\r\n               (includesCredentials(this.url) || this.url.port !== null)) {\r\n      this.parseError = true;\r\n      return false;\r\n    }\r\n\r\n    const host = parseHost(this.buffer, isSpecial(this.url));\r\n    if (host === failure) {\r\n      return failure;\r\n    }\r\n\r\n    this.url.host = host;\r\n    this.buffer = \"\";\r\n    this.state = \"path start\";\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n  } else {\r\n    if (c === 91) {\r\n      this.arrFlag = true;\r\n    } else if (c === 93) {\r\n      this.arrFlag = false;\r\n    }\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n  if (isASCIIDigit(c)) {\r\n    this.buffer += cStr;\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92) ||\r\n             this.stateOverride) {\r\n    if (this.buffer !== \"\") {\r\n      const port = parseInt(this.buffer);\r\n      if (port > Math.pow(2, 16) - 1) {\r\n        this.parseError = true;\r\n        return failure;\r\n      }\r\n      this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n      this.buffer = \"\";\r\n    }\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n    this.state = \"path start\";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n  this.url.scheme = \"file\";\r\n\r\n  if (c === 47 || c === 92) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"file slash\";\r\n  } else if (this.base !== null && this.base.scheme === \"file\") {\r\n    if (isNaN(c)) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = this.base.query;\r\n    } else if (c === 63) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = \"\";\r\n      this.state = \"query\";\r\n    } else if (c === 35) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = this.base.query;\r\n      this.url.fragment = \"\";\r\n      this.state = \"fragment\";\r\n    } else {\r\n      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n        this.url.host = this.base.host;\r\n        this.url.path = this.base.path.slice();\r\n        shortenPath(this.url);\r\n      } else {\r\n        this.parseError = true;\r\n      }\r\n\r\n      this.state = \"path\";\r\n      --this.pointer;\r\n    }\r\n  } else {\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n  if (c === 47 || c === 92) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"file host\";\r\n  } else {\r\n    if (this.base !== null && this.base.scheme === \"file\") {\r\n      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n        this.url.path.push(this.base.path[0]);\r\n      } else {\r\n        this.url.host = this.base.host;\r\n      }\r\n    }\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n    --this.pointer;\r\n    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n      this.parseError = true;\r\n      this.state = \"path\";\r\n    } else if (this.buffer === \"\") {\r\n      this.url.host = \"\";\r\n      if (this.stateOverride) {\r\n        return false;\r\n      }\r\n      this.state = \"path start\";\r\n    } else {\r\n      let host = parseHost(this.buffer, isSpecial(this.url));\r\n      if (host === failure) {\r\n        return failure;\r\n      }\r\n      if (host === \"localhost\") {\r\n        host = \"\";\r\n      }\r\n      this.url.host = host;\r\n\r\n      if (this.stateOverride) {\r\n        return false;\r\n      }\r\n\r\n      this.buffer = \"\";\r\n      this.state = \"path start\";\r\n    }\r\n  } else {\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n  if (isSpecial(this.url)) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"path\";\r\n\r\n    if (c !== 47 && c !== 92) {\r\n      --this.pointer;\r\n    }\r\n  } else if (!this.stateOverride && c === 63) {\r\n    this.url.query = \"\";\r\n    this.state = \"query\";\r\n  } else if (!this.stateOverride && c === 35) {\r\n    this.url.fragment = \"\";\r\n    this.state = \"fragment\";\r\n  } else if (c !== undefined) {\r\n    this.state = \"path\";\r\n    if (c !== 47) {\r\n      --this.pointer;\r\n    }\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n      (!this.stateOverride && (c === 63 || c === 35))) {\r\n    if (isSpecial(this.url) && c === 92) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (isDoubleDot(this.buffer)) {\r\n      shortenPath(this.url);\r\n      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n        this.url.path.push(\"\");\r\n      }\r\n    } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n               !(isSpecial(this.url) && c === 92)) {\r\n      this.url.path.push(\"\");\r\n    } else if (!isSingleDot(this.buffer)) {\r\n      if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n        if (this.url.host !== \"\" && this.url.host !== null) {\r\n          this.parseError = true;\r\n          this.url.host = \"\";\r\n        }\r\n        this.buffer = this.buffer[0] + \":\";\r\n      }\r\n      this.url.path.push(this.buffer);\r\n    }\r\n    this.buffer = \"\";\r\n    if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n      while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n        this.parseError = true;\r\n        this.url.path.shift();\r\n      }\r\n    }\r\n    if (c === 63) {\r\n      this.url.query = \"\";\r\n      this.state = \"query\";\r\n    }\r\n    if (c === 35) {\r\n      this.url.fragment = \"\";\r\n      this.state = \"fragment\";\r\n    }\r\n  } else {\r\n    // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n  if (c === 63) {\r\n    this.url.query = \"\";\r\n    this.state = \"query\";\r\n  } else if (c === 35) {\r\n    this.url.fragment = \"\";\r\n    this.state = \"fragment\";\r\n  } else {\r\n    // TODO: Add: not a URL code point\r\n    if (!isNaN(c) && c !== 37) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (c === 37 &&\r\n        (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n         !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (!isNaN(c)) {\r\n      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n    }\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n  if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n    if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n      this.encodingOverride = \"utf-8\";\r\n    }\r\n\r\n    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n    for (let i = 0; i < buffer.length; ++i) {\r\n      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n          buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n        this.url.query += percentEncode(buffer[i]);\r\n      } else {\r\n        this.url.query += String.fromCodePoint(buffer[i]);\r\n      }\r\n    }\r\n\r\n    this.buffer = \"\";\r\n    if (c === 35) {\r\n      this.url.fragment = \"\";\r\n      this.state = \"fragment\";\r\n    }\r\n  } else {\r\n    // TODO: If c is not a URL code point and not \"%\", parse error.\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n  if (isNaN(c)) { // do nothing\r\n  } else if (c === 0x0) {\r\n    this.parseError = true;\r\n  } else {\r\n    // TODO: If c is not a URL code point and not \"%\", parse error.\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n  let output = url.scheme + \":\";\r\n  if (url.host !== null) {\r\n    output += \"//\";\r\n\r\n    if (url.username !== \"\" || url.password !== \"\") {\r\n      output += url.username;\r\n      if (url.password !== \"\") {\r\n        output += \":\" + url.password;\r\n      }\r\n      output += \"@\";\r\n    }\r\n\r\n    output += serializeHost(url.host);\r\n\r\n    if (url.port !== null) {\r\n      output += \":\" + url.port;\r\n    }\r\n  } else if (url.host === null && url.scheme === \"file\") {\r\n    output += \"//\";\r\n  }\r\n\r\n  if (url.cannotBeABaseURL) {\r\n    output += url.path[0];\r\n  } else {\r\n    for (const string of url.path) {\r\n      output += \"/\" + string;\r\n    }\r\n  }\r\n\r\n  if (url.query !== null) {\r\n    output += \"?\" + url.query;\r\n  }\r\n\r\n  if (!excludeFragment && url.fragment !== null) {\r\n    output += \"#\" + url.fragment;\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n  let result = tuple.scheme + \"://\";\r\n  result += serializeHost(tuple.host);\r\n\r\n  if (tuple.port !== null) {\r\n    result += \":\" + tuple.port;\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n  // https://url.spec.whatwg.org/#concept-url-origin\r\n  switch (url.scheme) {\r\n    case \"blob\":\r\n      try {\r\n        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n      } catch (e) {\r\n        // serializing an opaque origin returns \"null\"\r\n        return \"null\";\r\n      }\r\n    case \"ftp\":\r\n    case \"gopher\":\r\n    case \"http\":\r\n    case \"https\":\r\n    case \"ws\":\r\n    case \"wss\":\r\n      return serializeOrigin({\r\n        scheme: url.scheme,\r\n        host: url.host,\r\n        port: url.port\r\n      });\r\n    case \"file\":\r\n      // spec says \"exercise to the reader\", chrome says \"file://\"\r\n      return \"file://\";\r\n    default:\r\n      // serializing an opaque origin returns \"null\"\r\n      return \"null\";\r\n  }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n  if (options === undefined) {\r\n    options = {};\r\n  }\r\n\r\n  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n  if (usm.failure) {\r\n    return \"failure\";\r\n  }\r\n\r\n  return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n  url.username = \"\";\r\n  const decoded = punycode.ucs2.decode(username);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n  }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n  url.password = \"\";\r\n  const decoded = punycode.ucs2.decode(password);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n  }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n  return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n  if (options === undefined) {\r\n    options = {};\r\n  }\r\n\r\n  // We don't handle blobs, so this just delegates:\r\n  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n  constructor(constructorArgs) {\n    const url = constructorArgs[0];\n    const base = constructorArgs[1];\n\n    let parsedBase = null;\n    if (base !== undefined) {\n      parsedBase = usm.basicURLParse(base);\n      if (parsedBase === \"failure\") {\n        throw new TypeError(\"Invalid base URL\");\n      }\n    }\n\n    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n    if (parsedURL === \"failure\") {\n      throw new TypeError(\"Invalid URL\");\n    }\n\n    this._url = parsedURL;\n\n    // TODO: query stuff\n  }\n\n  get href() {\n    return usm.serializeURL(this._url);\n  }\n\n  set href(v) {\n    const parsedURL = usm.basicURLParse(v);\n    if (parsedURL === \"failure\") {\n      throw new TypeError(\"Invalid URL\");\n    }\n\n    this._url = parsedURL;\n  }\n\n  get origin() {\n    return usm.serializeURLOrigin(this._url);\n  }\n\n  get protocol() {\n    return this._url.scheme + \":\";\n  }\n\n  set protocol(v) {\n    usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n  }\n\n  get username() {\n    return this._url.username;\n  }\n\n  set username(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setTheUsername(this._url, v);\n  }\n\n  get password() {\n    return this._url.password;\n  }\n\n  set password(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setThePassword(this._url, v);\n  }\n\n  get host() {\n    const url = this._url;\n\n    if (url.host === null) {\n      return \"\";\n    }\n\n    if (url.port === null) {\n      return usm.serializeHost(url.host);\n    }\n\n    return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n  }\n\n  set host(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n  }\n\n  get hostname() {\n    if (this._url.host === null) {\n      return \"\";\n    }\n\n    return usm.serializeHost(this._url.host);\n  }\n\n  set hostname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n  }\n\n  get port() {\n    if (this._url.port === null) {\n      return \"\";\n    }\n\n    return usm.serializeInteger(this._url.port);\n  }\n\n  set port(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    if (v === \"\") {\n      this._url.port = null;\n    } else {\n      usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n    }\n  }\n\n  get pathname() {\n    if (this._url.cannotBeABaseURL) {\n      return this._url.path[0];\n    }\n\n    if (this._url.path.length === 0) {\n      return \"\";\n    }\n\n    return \"/\" + this._url.path.join(\"/\");\n  }\n\n  set pathname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    this._url.path = [];\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n  }\n\n  get search() {\n    if (this._url.query === null || this._url.query === \"\") {\n      return \"\";\n    }\n\n    return \"?\" + this._url.query;\n  }\n\n  set search(v) {\n    // TODO: query stuff\n\n    const url = this._url;\n\n    if (v === \"\") {\n      url.query = null;\n      return;\n    }\n\n    const input = v[0] === \"?\" ? v.substring(1) : v;\n    url.query = \"\";\n    usm.basicURLParse(input, { url, stateOverride: \"query\" });\n  }\n\n  get hash() {\n    if (this._url.fragment === null || this._url.fragment === \"\") {\n      return \"\";\n    }\n\n    return \"#\" + this._url.fragment;\n  }\n\n  set hash(v) {\n    if (v === \"\") {\n      this._url.fragment = null;\n      return;\n    }\n\n    const input = v[0] === \"#\" ? v.substring(1) : v;\n    this._url.fragment = \"\";\n    usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n  }\n\n  toJSON() {\n    return this.href;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n  if (!this || this[impl] || !(this instanceof URL)) {\n    throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n  }\n  if (arguments.length < 1) {\n    throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n  }\n  const args = [];\n  for (let i = 0; i < arguments.length && i < 2; ++i) {\n    args[i] = arguments[i];\n  }\n  args[0] = conversions[\"USVString\"](args[0]);\n  if (args[1] !== undefined) {\n  args[1] = conversions[\"USVString\"](args[1]);\n  }\n\n  module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n  if (!this || !module.exports.is(this)) {\n    throw new TypeError(\"Illegal invocation\");\n  }\n  const args = [];\n  for (let i = 0; i < arguments.length && i < 0; ++i) {\n    args[i] = arguments[i];\n  }\n  return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n  get() {\n    return this[impl].href;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].href = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nURL.prototype.toString = function () {\n  if (!this || !module.exports.is(this)) {\n    throw new TypeError(\"Illegal invocation\");\n  }\n  return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n  get() {\n    return this[impl].origin;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n  get() {\n    return this[impl].protocol;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].protocol = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n  get() {\n    return this[impl].username;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].username = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n  get() {\n    return this[impl].password;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].password = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n  get() {\n    return this[impl].host;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].host = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n  get() {\n    return this[impl].hostname;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].hostname = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n  get() {\n    return this[impl].port;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].port = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n  get() {\n    return this[impl].pathname;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].pathname = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n  get() {\n    return this[impl].search;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].search = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n  get() {\n    return this[impl].hash;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].hash = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\n\nmodule.exports = {\n  is(obj) {\n    return !!obj && obj[impl] instanceof Impl.implementation;\n  },\n  create(constructorArgs, privateData) {\n    let obj = Object.create(URL.prototype);\n    this.setup(obj, constructorArgs, privateData);\n    return obj;\n  },\n  setup(obj, constructorArgs, privateData) {\n    if (!privateData) privateData = {};\n    privateData.wrapper = obj;\n\n    obj[impl] = new Impl.implementation(constructorArgs, privateData);\n    obj[impl][utils.wrapperSymbol] = obj;\n  },\n  interface: URL,\n  expose: {\n    Window: { URL: URL },\n    Worker: { URL: URL }\n  }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param   String      message      Error message for human\n * @param   String      type         Error type for machine\n * @param   String      systemError  For Node.js system error\n * @return  FetchError\n */\nfunction FetchError(message, type, systemError) {\n  Error.call(this, message);\n\n  this.message = message;\n  this.type = type;\n\n  // when err.type is `system`, err.code contains system error code\n  if (systemError) {\n    this.code = this.errno = systemError.code;\n  }\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t    _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n  * Decode response as ArrayBuffer\n  *\n  * @return  Promise\n  */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n  * Return raw response as Blob\n  *\n  * @return Promise\n  */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n  * Decode response as json\n  *\n  * @return  Promise\n  */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n  * Decode response as text\n  *\n  * @return  Promise\n  */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n  * Decode response as buffer (non-spec api)\n  *\n  * @return  Promise\n  */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n  * Decode response as text, while automatically detecting the encoding and\n  * trying to decode to UTF-8 (non-spec api)\n  *\n  * @return  Promise\n  */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return  Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param   Buffer  buffer    Incoming buffer\n * @param   String  encoding  Target encoding\n * @return  String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param   Object  obj     Object to detect by type or brand\n * @return  String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param  {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param   Mixed  instance  Response or Request instance\n * @return  Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param   Mixed  instance  Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param   Body    instance   Instance of Body\n * @return  Number?            Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param   Body    instance   Instance of Body\n * @return  Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param   String  name  Header name\n * @return  String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n  * Headers class\n  *\n  * @param   Object  headers  Response headers\n  * @return  Void\n  */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n  * Return combined header value given name\n  *\n  * @param   String  name  Header name\n  * @return  Mixed\n  */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n  * Iterate over all headers\n  *\n  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)\n  * @param   Boolean   thisArg   `this` context for callback function\n  * @return  Void\n  */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t      value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n  * Overwrite header values given name\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n  * Append a value onto existing header\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n  * Check for header name existence\n  *\n  * @param   String   name  Header name\n  * @return  Boolean\n  */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n  * Delete all header values given name\n  *\n  * @param   String  name  Header name\n  * @return  Void\n  */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n  * Return raw headers (non-spec api)\n  *\n  * @return  Object\n  */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n  * Get an iterator on keys.\n  *\n  * @return  Iterator\n  */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n  * Get an iterator on values.\n  *\n  * @return  Iterator\n  */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n  * Get an iterator on entries.\n  *\n  * This is the default iterator of the Headers object.\n  *\n  * @return  Iterator\n  */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t      kind = _INTERNAL.kind,\n\t\t      index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param   Headers  headers\n * @return  Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param   Object  obj  Object of headers\n * @return  Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n  * Convenience property representing if the request ended normally\n  */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n  * Clone this response\n  *\n  * @return  Response\n  */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param  {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param   Mixed   input\n * @return  Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param   Mixed   input  Url or Request instance\n * @param   Object  init   Custom options\n * @return  Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n  * Clone this request\n  *\n  * @return  Request\n  */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param   Request  A Request instance\n * @return  Object   The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param   String      message      Error message for human\n * @return  AbortError\n */\nfunction AbortError(message) {\n  Error.call(this, message);\n\n  this.type = 'aborted';\n  this.message = message;\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param   Mixed    url   Absolute url or Request instance\n * @param   Object   opts  Fetch options\n * @return  Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param   Number   code  Status code\n * @return  Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n"],"names":["cacheSingleton","target","UNSET","result","initPyodide","indexURL","env","packages","loadPyodide","initPy","py","AsyncClient","version","initCode","translate","init$1","getPy","initConsole","initConsoleCode","console$2","VERSION","auto","kind","fetch","FormData","File","ReadableStream","getMultipartRequestOptions","getDefaultAgent","fileFromPath","isFsReadStream","setShims","shims","options","MultipartBody","body","getRuntime","manuallyImported","recommendation","_fetch","_Request","_Response","_Headers","error","form","opts","url","value","shims.kind","shims.setShims","auto.getRuntime","OpenAIError","APIError","status","message","headers","data","msg","errorResponse","APIConnectionError","castToError","BadRequestError","AuthenticationError","PermissionDeniedError","NotFoundError","ConflictError","UnprocessableEntityError","RateLimitError","InternalServerError","APIUserAbortError","cause","APIConnectionTimeoutError","Stream","iterator","controller","response","consumed","decoder","SSEDecoder","iterMessages","lineDecoder","LineDecoder","iter","readableStreamAsyncIterable","chunk","line","sse","done","e","readableStream","iterLines","left","right","teeIterator","queue","self","encoder","ctrl","bytes","err","_a","fieldname","_","partition","text","trailingNewline","lines","str","delimiter","index","stream","reader","cancelPromise","isResponseLike","isFileLike","isBlobLike","isUploadable","toFile","name","blob","bits","getBytes","getName","type","parts","isAsyncIterableIterator","propsForError","p","getStringFromMaybeBuffer","x","isMultipartBody","multipartFormRequestOptions","createForm","key","addFormValue","file","entry","prop","__classPrivateFieldSet","receiver","state","f","__classPrivateFieldGet","_AbstractPage_client","defaultParseResponse","props","debug","contentType","json","APIPromise","responsePromise","parseResponse","resolve","transform","onfulfilled","onrejected","onfinally","APIClient","baseURL","maxRetries","timeout","httpAgent","overridenFetch","validatePositiveInteger","getPlatformHeaders","customHeaders","uuid4","path","method","Page","query","contentLength","minAgentTimeout","reqHeaders","defaultHeaders","applyHeadersMut","shimsKind","request","header","remainingRetries","optionsInput","retriesRemaining","req","_b","responseHeaders","createResponseHeaders","retryMessage","errText","errJSON","safeJSON","errMessage","PagePromise","isAbsoluteURL","defaultQuery","isEmptyObj","init","ms","signal","shouldRetryHeader","timeoutMillis","retryAfterMillisHeader","timeoutMs","retryAfterHeader","timeoutSeconds","sleep","numRetries","sleepSeconds","jitter","AbstractPage","client","nextInfo","nextOptions","params","page","item","requestOptionsKeys","isRequestOptions","obj","k","hasOwn","getPlatformProperties","normalizePlatform","normalizeArch","browserInfo","getBrowserInfo","browserPatterns","pattern","match","major","minor","patch","arch","platform","_platformHeaders","startsWithSchemeRegexp","n","readEnv","_e","_d","_c","_k","targetHeaders","newHeaders","lowerKey","val","action","args","c","r","isRunningInBrowser","CursorPage","info","id","APIResource","Completions","CompletionsAPI.Completions","Chat","Speech","Transcriptions","Translations","Audio","TranscriptionsAPI.Transcriptions","TranslationsAPI.Translations","SpeechAPI.Speech","assistantId","fileId","AssistantFilesPage","Files","FilesAPI.AssistantFilesPage","Assistants","FilesAPI.Files","AssistantsPage","AssistantsAPI.AssistantsPage","isRunnableFunctionWithParse","fn","isAssistantMessage","isFunctionMessage","isToolMessage","_AbstractChatCompletionRunner_instances","_AbstractChatCompletionRunner_connectedPromise","_AbstractChatCompletionRunner_resolveConnectedPromise","_AbstractChatCompletionRunner_rejectConnectedPromise","_AbstractChatCompletionRunner_endPromise","_AbstractChatCompletionRunner_resolveEndPromise","_AbstractChatCompletionRunner_rejectEndPromise","_AbstractChatCompletionRunner_listeners","_AbstractChatCompletionRunner_ended","_AbstractChatCompletionRunner_errored","_AbstractChatCompletionRunner_aborted","_AbstractChatCompletionRunner_catchingPromiseCreated","_AbstractChatCompletionRunner_getFinalContent","_AbstractChatCompletionRunner_getFinalMessage","_AbstractChatCompletionRunner_getFinalFunctionCall","_AbstractChatCompletionRunner_getFinalFunctionCallResult","_AbstractChatCompletionRunner_calculateTotalUsage","_AbstractChatCompletionRunner_handleError","_AbstractChatCompletionRunner_validateParams","_AbstractChatCompletionRunner_stringifyFunctionCallResult","DEFAULT_MAX_CHAT_COMPLETIONS","AbstractChatCompletionRunner","openAIError","reject","executor","chatCompletion","emit","tool_call","event","listener","listeners","l","completion","finalMessage","finalContent","finalFunctionCall","finalFunctionCallResult","completions","role","function_call","restParams","singleFunctionToCall","maxChatCompletions","functionsByName","functions","i","content","parsed","rawContent","tool_choice","tools","t","tool_call_id","y","total","usage","ChatCompletionRunner","runner","_ChatCompletionStream_instances","_ChatCompletionStream_currentChatCompletionSnapshot","_ChatCompletionStream_beginRequest","_ChatCompletionStream_addChunk","_ChatCompletionStream_endRequest","_ChatCompletionStream_accumulateChatCompletion","ChatCompletionStream","chatId","delta","snapshot","finalizeChatCompletion","choices","rest","finish_reason","logprobs","other","choice","tool_calls","pushQueue","readQueue","created","model","system_fingerprint","choiceRest","messageRest","toolRest","fnRest","ChatCompletionStreamingRunner","threadId","messageId","MessageFilesPage","FilesAPI.MessageFilesPage","Messages","ThreadMessagesPage","MessagesAPI.ThreadMessagesPage","Steps","runId","stepId","RunStepsPage","StepsAPI.RunStepsPage","Runs","StepsAPI.Steps","RunsPage","RunsAPI.RunsPage","Threads","RunsAPI.Runs","MessagesAPI.Messages","Beta","ChatAPI.Chat","AssistantsAPI.Assistants","ThreadsAPI.Threads","Embeddings","FileObjectsPage","pollInterval","maxWait","TERMINAL_STATES","start","FilesAPI.FileObjectsPage","Jobs","fineTuningJobId","FineTuningJobsPage","FineTuningJobEventsPage","JobsAPI.FineTuningJobsPage","JobsAPI.FineTuningJobEventsPage","FineTuning","JobsAPI.Jobs","Images","Models","ModelsPage","ModelsAPI.ModelsPage","Moderations","OpenAI","Core.APIClient","Core.readEnv","apiKey","organization","Errors.OpenAIError","Core.isRunningInBrowser","API.Completions","API.Chat","API.Embeddings","API.Files","API.Images","API.Audio","API.Moderations","API.Models","API.FineTuning","API.Beta","Errors.APIError","Errors.APIConnectionError","Errors.APIConnectionTimeoutError","Errors.APIUserAbortError","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Uploads.toFile","Uploads.fileFromPath","Pagination.Page","Pagination.CursorPage","API.FileObjectsPage","API.ModelsPage","toJs","toPyOptions","init$2","toJsOptions","toAsync","source","patchSource","reformatInputSource","entries","Template","input","__publicField","context","clientOptions","generate","oe","ae","se","ce","le","E","T","de","o","a","fe","$","R","U","d","s","h","v","ee","te","I","N","re","ne","ie","m","C","M","u","z","g","F","j","ue","B","W","H","q","P","V","L","pe","D","__viteBrowserExternal","A","me","ye","S","ge","he","b","G","w","ve","K","X","J","we","Y","be","Ee","Se","Q","Z","O","We","zlib","conversions","lib","sign","evenRound","createNumberConversion","bitLength","typeOpts","lowerBound","upperBound","moduloVal","moduloBound","module","keys","impl","wrapper","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","stringFromCharCode","map","array","callback","length","mapDomain","domain","labels","encoded","ucs2decode","string","output","counter","extra","ucs2encode","codePoints","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","numPoints","firstTime","decode","inputLength","bias","basic","oldi","baseMinusT","out","encode","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","toUnicode","toASCII","punycode","require$$0","mappingTable","require$$1","PROCESSING_OPTIONS","normalize","findStatus","end","mid","regexAstralSymbols","countSymbols","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","combiningMarksRegex","validateLabel","label","processing","validation","tr46","verifyDnsLength","specialSchemes","failure","at","idx","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","defaultPort","percentEncode","hex","utf8PercentEncode","buf","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","parseIPv4","numbers","part","ipv4","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","number","swaps","temp","serializeIPv6","findLongestZeroSequence","ignore0","parseHost","isSpecialArg","parseOpaqueHost","asciiDomain","ipv4Host","decoded","arr","maxIdx","maxLen","currStart","currLen","serializeHost","host","trimControlChars","trimTabAndNewline","shortenPath","isNormalizedWindowsDriveLetter","includesCredentials","cannotHaveAUsernamePasswordPort","URLStateMachine","encodingOverride","stateOverride","res","ret","encodedCodePoints","port","fileOtherwiseCodePoints","serializeURL","excludeFragment","serializeOrigin","tuple","usm","username","password","integer","URLImpl_1","constructorArgs","parsedBase","parsedURL","utils","Impl","require$$2","URL","privateData","publicApi","Readable","BUFFER","TYPE","Blob$1","Blob","blobParts","buffers","size","element","ab","readable","relativeStart","relativeEnd","span","slicedBuffer","FetchError","systemError","convert","INTERNALS","PassThrough","Body","_this","_ref","_ref$size","_ref$timeout","isURLSearchParams","isBlob","consumeBody","ct","_this2","_this3","convertBody","proto","desc","_this4","accum","accumBytes","abort","resTimeout","charset","clone","instance","p1","p2","extractContentType","getTotalBytes","writeToStream","dest","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","find","MAP","Headers$1","Headers","rawHeaders","headerNames","headerName","pairs","pair","thisArg","getHeaders","_pairs$i","createHeadersIterator","INTERNAL","HeadersIteratorPrototype","_INTERNAL","values","exportNodeCompatibleHeaders","hostHeaderKey","createHeadersLenient","INTERNALS$1","STATUS_CODES","http","Response$1","Response","INTERNALS$2","Url","whatwgUrl","parse_url","format_url","parseURL","urlStr","streamDestructionSupported","isRequest","isAbortSignal","Request$1","Request","inputBody","getNodeRequestOptions","contentLengthValue","totalBytes","agent","AbortError","URL$1","PassThrough$1","isDomainOrSubdomain","destination","original","orig","isSameProtocol","send","https","destroyStream","abortAndFinalize","finalize","reqTimeout","socket","fixResponseChunkedTransferBadEnding","hadError","hasDataListener","location","locationURL","requestOpts","response_options","codings","zlibOptions","raw","errorCallback","code"],"mappings":"oZAAO,SAASA,EAAoCC,EAAc,CAChE,MAAMC,EAAQ,CAAA,EACd,IAAIC,EAAcD,EAElB,MAAQ,KACFC,IAAWD,IAGfC,EAASF,EAAO,GACTE,EAEX,CCPA,eAAeC,GAAYC,EAAmB,iDAAkDC,EAA8BC,EAAqB,CAAC,WAAY,mBAAmB,EAAG,CACpL,KAAM,CAAE,YAAAC,GAAgB,MAAM,+BACvB,OAAA,MAAMA,EAAY,CAAE,SAAAH,EAAU,IAAK,CAAE,GAAGC,CAAA,EAAO,SAAAC,CAAA,CAAU,CAClE,CAEA,eAAeE,IAAS,CACtB,KAAM,CAACC,EAAI,CAAE,YAAAC,CAAA,EAAeC,EAAS,CAAE,QAASC,CAAU,CAAA,EAAI,MAAM,QAAQ,IAAI,CAC9ET,GAAY,EACZ,QAAoB,QAAA,EAAA,KAAA,IAAAU,EAAA,EACpB,QAAuB,QAAA,EAAA,KAAA,IAAAF,EAAA,EACvB,QAAsB,QAAA,EAAA,KAAA,IAAAG,EAAA,CAAA,CACvB,EAEE,OAAAL,EAAA,iBAAiB,SAAU,CAAE,YAAAC,EAAa,OAAQ,IAAM,aAAMC,EAAS,QAAS,IAAM,CAAA,EACtFF,EAAA,iBAAiB,QAAS,CAAE,YAAa,IAAM,KAAM,OAAQ,IAAM,IAAA,CAAM,EAEtE,MAAAA,EAAG,eAAeG,CAAQ,EAEzBH,CACT,CAEa,MAAAM,GAAyChB,EAAeS,EAAM,EAE3E,eAAsBQ,IAAc,CAClC,KAAM,CAACP,EAAI,CAAE,QAASQ,CAAA,CAAiB,EAAI,MAAM,QAAQ,IAAI,CAACF,KAAS,QAAA,QAAA,EAAA,KAAA,IAAAG,EAAA,CAA0B,CAAC,EAC5F,MAAAT,EAAG,eAAeQ,CAAe,CACzC,6HC9BaE,GAAU,kHCAhB,IAAIC,GAAO,GACPC,GACAC,GAIAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACJ,SAASC,GAASC,EAAOC,EAAU,CAAE,KAAM,EAAK,EAAI,CACvD,GAAIZ,GACA,MAAM,IAAI,MAAM,mCAAmCW,EAAM,IAAI,gDAAgD,EAEjH,GAAIV,GACA,MAAM,IAAI,MAAM,gCAAgCU,EAAM,IAAI,oCAAoCV,EAAI,KAAK,EAE3GD,GAAOY,EAAQ,KACfX,GAAOU,EAAM,KACbT,GAAQS,EAAM,MACJA,EAAM,QACLA,EAAM,SACPA,EAAM,QAChBR,GAAWQ,EAAM,SACVA,EAAM,KACbP,GAAOO,EAAM,KACbN,GAAiBM,EAAM,eACvBL,GAA6BK,EAAM,2BACnCJ,GAAkBI,EAAM,gBACxBH,GAAeG,EAAM,aACrBF,GAAiBE,EAAM,cAC3B,CChCO,MAAME,EAAc,CACvB,YAAYC,EAAM,CACd,KAAK,KAAOA,CACf,CACD,IAAK,OAAO,WAAW,GAAI,CACvB,MAAO,eACV,CACL,CCTO,SAASC,GAAW,CAAE,iBAAAC,CAAkB,EAAG,GAAI,CAClD,MAAMC,EAAiBD,EACnB,gCACE,gLAIN,IAAIE,EAAQC,EAAUC,EAAWC,EACjC,GAAI,CAEAH,EAAS,MAETC,EAAW,QAEXC,EAAY,SAEZC,EAAW,OACd,OACMC,EAAO,CACV,MAAM,IAAI,MAAM,iEAAiEA,EAAM,OAAO,KAAKL,CAAc,EAAE,CACtH,CACD,MAAO,CACH,KAAM,MACN,MAAOC,EACP,QAASC,EACT,SAAUC,EACV,QAASC,EACT,SAEA,OAAO,SAAa,IAAc,SAAY,KAAe,CAEzD,aAAc,CACV,MAAM,IAAI,MAAM,qFAAqFJ,CAAc,EAAE,CACxH,CACb,EACQ,KAAM,OAAO,KAAS,IAAc,KAAQ,KAAW,CACnD,aAAc,CACV,MAAM,IAAI,MAAM,iFAAiFA,CAAc,EAAE,CACpH,CACb,EACQ,KAEA,OAAO,KAAS,IAAc,KAAQ,KAAW,CAE7C,aAAc,CACV,MAAM,IAAI,MAAM,iFAAiFA,CAAc,EAAE,CACpH,CACb,EACQ,eAEA,OAAO,eAAmB,IAAc,eAAkB,KAAqB,CAE3E,aAAc,CACV,MAAM,IAAI,MAAM,uFAAuFA,CAAc,EAAE,CAC1H,CACb,EACQ,2BAA4B,MAE5BM,EAAMC,KAAU,CACZ,GAAGA,EACH,KAAM,IAAIX,GAAcU,CAAI,CACxC,GACQ,gBAAkBE,MAClB,aAAc,IAAM,CAChB,MAAM,IAAI,MAAM,gJAAgJ,CACnK,EACD,eAAiBC,GAAU,EACnC,CACA,CChEKC,IAAYC,GAAeC,GAAiB,EAAE,CAAE,KAAM,GAAM,ECH1D,MAAMC,UAAoB,KAAM,CACvC,CACO,MAAMC,UAAiBD,CAAY,CACtC,YAAYE,EAAQV,EAAOW,EAASC,EAAS,CACzC,MAAM,GAAGH,EAAS,YAAYC,EAAQV,EAAOW,CAAO,CAAC,EAAE,EACvD,KAAK,OAASD,EACd,KAAK,QAAUE,EACf,MAAMC,EAAOb,EACb,KAAK,MAAQa,EACb,KAAK,KAAOA,GAAA,YAAAA,EAAO,KACnB,KAAK,MAAQA,GAAA,YAAAA,EAAO,MACpB,KAAK,KAAOA,GAAA,YAAAA,EAAO,IACtB,CACD,OAAO,YAAYH,EAAQV,EAAOW,EAAS,CACvC,MAAMG,EAAMd,GAAA,MAAAA,EAAO,QACf,OAAOA,EAAM,SAAY,SACrBA,EAAM,QACJ,KAAK,UAAUA,EAAM,OAAO,EAChCA,EAAQ,KAAK,UAAUA,CAAK,EACxBW,EACV,OAAID,GAAUI,EACH,GAAGJ,CAAM,IAAII,CAAG,GAEvBJ,EACO,GAAGA,CAAM,yBAEhBI,GAGG,0BACV,CACD,OAAO,SAASJ,EAAQK,EAAeJ,EAASC,EAAS,CACrD,GAAI,CAACF,EACD,OAAO,IAAIM,GAAmB,CAAE,MAAOC,GAAYF,CAAa,CAAC,CAAE,EAEvE,MAAMf,EAAQe,GAAA,YAAAA,EAAgB,MAC9B,OAAIL,IAAW,IACJ,IAAIQ,GAAgBR,EAAQV,EAAOW,EAASC,CAAO,EAE1DF,IAAW,IACJ,IAAIS,GAAoBT,EAAQV,EAAOW,EAASC,CAAO,EAE9DF,IAAW,IACJ,IAAIU,GAAsBV,EAAQV,EAAOW,EAASC,CAAO,EAEhEF,IAAW,IACJ,IAAIW,GAAcX,EAAQV,EAAOW,EAASC,CAAO,EAExDF,IAAW,IACJ,IAAIY,GAAcZ,EAAQV,EAAOW,EAASC,CAAO,EAExDF,IAAW,IACJ,IAAIa,GAAyBb,EAAQV,EAAOW,EAASC,CAAO,EAEnEF,IAAW,IACJ,IAAIc,GAAed,EAAQV,EAAOW,EAASC,CAAO,EAEzDF,GAAU,IACH,IAAIe,GAAoBf,EAAQV,EAAOW,EAASC,CAAO,EAE3D,IAAIH,EAASC,EAAQV,EAAOW,EAASC,CAAO,CACtD,CACL,CACO,MAAMc,WAA0BjB,CAAS,CAC5C,YAAY,CAAE,QAAAE,CAAS,EAAG,GAAI,CAC1B,MAAM,OAAW,OAAWA,GAAW,uBAAwB,MAAS,EACxE,KAAK,OAAS,MACjB,CACL,CACO,MAAMK,WAA2BP,CAAS,CAC7C,YAAY,CAAE,QAAAE,EAAS,MAAAgB,GAAS,CAC5B,MAAM,OAAW,OAAWhB,GAAW,oBAAqB,MAAS,EACrE,KAAK,OAAS,OAGVgB,IACA,KAAK,MAAQA,EACpB,CACL,CACO,MAAMC,WAAkCZ,EAAmB,CAC9D,YAAY,CAAE,QAAAL,CAAS,EAAG,GAAI,CAC1B,MAAM,CAAE,QAASA,GAAW,oBAAsB,CAAA,CACrD,CACL,CACO,MAAMO,WAAwBT,CAAS,CAC1C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMU,WAA4BV,CAAS,CAC9C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMW,WAA8BX,CAAS,CAChD,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMY,WAAsBZ,CAAS,CACxC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMa,WAAsBb,CAAS,CACxC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMc,WAAiCd,CAAS,CACnD,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMe,WAAuBf,CAAS,CACzC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,GACjB,CACL,CACO,MAAMgB,WAA4BhB,CAAS,CAClD,CC9HO,MAAMoB,EAAO,CAChB,YAAYC,EAAUC,EAAY,CAC9B,KAAK,SAAWD,EAChB,KAAK,WAAaC,CACrB,CACD,OAAO,gBAAgBC,EAAUD,EAAY,CACzC,IAAIE,EAAW,GACf,MAAMC,EAAU,IAAIC,GACpB,eAAgBC,GAAe,CAC3B,GAAI,CAACJ,EAAS,KACV,MAAAD,EAAW,MAAK,EACV,IAAIvB,EAAY,mDAAmD,EAE7E,MAAM6B,EAAc,IAAIC,GAClBC,EAAOC,GAA4BR,EAAS,IAAI,EACtD,gBAAiBS,KAASF,EACtB,UAAWG,KAAQL,EAAY,OAAOI,CAAK,EAAG,CAC1C,MAAME,EAAMT,EAAQ,OAAOQ,CAAI,EAC3BC,IACA,MAAMA,EACb,CAEL,UAAWD,KAAQL,EAAY,QAAS,CACpC,MAAMM,EAAMT,EAAQ,OAAOQ,CAAI,EAC3BC,IACA,MAAMA,EACb,CACJ,CACD,eAAgBb,GAAW,CACvB,GAAIG,EACA,MAAM,IAAI,MAAM,0EAA0E,EAE9FA,EAAW,GACX,IAAIW,EAAO,GACX,GAAI,CACA,gBAAiBD,KAAOP,IACpB,GAAI,CAAAQ,EAEJ,IAAID,EAAI,KAAK,WAAW,QAAQ,EAAG,CAC/BC,EAAO,GACP,QACH,CACD,GAAID,EAAI,QAAU,KAAM,CACpB,IAAI9B,EACJ,GAAI,CACAA,EAAO,KAAK,MAAM8B,EAAI,IAAI,CAC7B,OACME,EAAG,CACN,cAAQ,MAAM,qCAAsCF,EAAI,IAAI,EAC5D,QAAQ,MAAM,cAAeA,EAAI,GAAG,EAC9BE,CACT,CACD,GAAIhC,GAAQA,EAAK,MACb,MAAM,IAAIJ,EAAS,OAAWI,EAAK,MAAO,OAAW,MAAS,EAElE,MAAMA,CACT,EAEL+B,EAAO,EACV,OACMC,EAAG,CAEN,GAAIA,aAAa,OAASA,EAAE,OAAS,aACjC,OACJ,MAAMA,CACT,QACO,CAECD,GACDb,EAAW,MAAK,CACvB,CACJ,CACD,OAAO,IAAIF,GAAOC,EAAUC,CAAU,CACzC,CAKD,OAAO,mBAAmBe,EAAgBf,EAAY,CAClD,IAAIE,EAAW,GACf,eAAgBc,GAAY,CACxB,MAAMV,EAAc,IAAIC,GAClBC,EAAOC,GAA4BM,CAAc,EACvD,gBAAiBL,KAASF,EACtB,UAAWG,KAAQL,EAAY,OAAOI,CAAK,EACvC,MAAMC,EAGd,UAAWA,KAAQL,EAAY,QAC3B,MAAMK,CAEb,CACD,eAAgBZ,GAAW,CACvB,GAAIG,EACA,MAAM,IAAI,MAAM,0EAA0E,EAE9FA,EAAW,GACX,IAAIW,EAAO,GACX,GAAI,CACA,gBAAiBF,KAAQK,IACjBH,GAEAF,IACA,MAAM,KAAK,MAAMA,CAAI,GAE7BE,EAAO,EACV,OACMC,EAAG,CAEN,GAAIA,aAAa,OAASA,EAAE,OAAS,aACjC,OACJ,MAAMA,CACT,QACO,CAECD,GACDb,EAAW,MAAK,CACvB,CACJ,CACD,OAAO,IAAIF,GAAOC,EAAUC,CAAU,CACzC,CACD,CAAC,OAAO,aAAa,GAAI,CACrB,OAAO,KAAK,UACf,CAKD,KAAM,CACF,MAAMiB,EAAO,CAAA,EACPC,EAAQ,CAAA,EACRnB,EAAW,KAAK,WAChBoB,EAAeC,IACV,CACH,KAAM,IAAM,CACR,GAAIA,EAAM,SAAW,EAAG,CACpB,MAAM3F,EAASsE,EAAS,OACxBkB,EAAK,KAAKxF,CAAM,EAChByF,EAAM,KAAKzF,CAAM,CACpB,CACD,OAAO2F,EAAM,OAChB,CACjB,GAEQ,MAAO,CACH,IAAItB,GAAO,IAAMqB,EAAYF,CAAI,EAAG,KAAK,UAAU,EACnD,IAAInB,GAAO,IAAMqB,EAAYD,CAAK,EAAG,KAAK,UAAU,CAChE,CACK,CAMD,kBAAmB,CACf,MAAMG,EAAO,KACb,IAAIb,EACJ,MAAMc,EAAU,IAAI,YACpB,OAAO,IAAItE,GAAe,CACtB,MAAM,OAAQ,CACVwD,EAAOa,EAAK,OAAO,aAAa,EAAC,CACpC,EACD,MAAM,KAAKE,EAAM,CACb,GAAI,CACA,KAAM,CAAE,MAAAlD,EAAO,KAAAwC,CAAI,EAAK,MAAML,EAAK,KAAI,EACvC,GAAIK,EACA,OAAOU,EAAK,QAChB,MAAMC,EAAQF,EAAQ,OAAO,KAAK,UAAUjD,CAAK,EAAI;AAAA,CAAI,EACzDkD,EAAK,QAAQC,CAAK,CACrB,OACMC,EAAK,CACRF,EAAK,MAAME,CAAG,CACjB,CACJ,EACD,MAAM,QAAS,OACX,OAAMC,EAAAlB,EAAK,SAAL,YAAAkB,EAAA,KAAAlB,GACT,CACb,CAAS,CACJ,CACL,CACA,MAAMJ,EAAW,CACb,aAAc,CACV,KAAK,MAAQ,KACb,KAAK,KAAO,GACZ,KAAK,OAAS,EACjB,CACD,OAAOO,EAAM,CAIT,GAHIA,EAAK,SAAS,IAAI,IAClBA,EAAOA,EAAK,UAAU,EAAGA,EAAK,OAAS,CAAC,GAExC,CAACA,EAAM,CAEP,GAAI,CAAC,KAAK,OAAS,CAAC,KAAK,KAAK,OAC1B,OAAO,KACX,MAAMC,EAAM,CACR,MAAO,KAAK,MACZ,KAAM,KAAK,KAAK,KAAK;AAAA,CAAI,EACzB,IAAK,KAAK,MAC1B,EACY,YAAK,MAAQ,KACb,KAAK,KAAO,GACZ,KAAK,OAAS,GACPA,CACV,CAED,GADA,KAAK,OAAO,KAAKD,CAAI,EACjBA,EAAK,WAAW,GAAG,EACnB,OAAO,KAEX,GAAI,CAACgB,EAAWC,EAAGvD,CAAK,EAAIwD,GAAUlB,EAAM,GAAG,EAC/C,OAAItC,EAAM,WAAW,GAAG,IACpBA,EAAQA,EAAM,UAAU,CAAC,GAEzBsD,IAAc,QACd,KAAK,MAAQtD,EAERsD,IAAc,QACnB,KAAK,KAAK,KAAKtD,CAAK,EAEjB,IACV,CACL,CAOA,MAAMkC,EAAY,CACd,aAAc,CACV,KAAK,OAAS,GACd,KAAK,WAAa,EACrB,CACD,OAAOG,EAAO,CACV,IAAIoB,EAAO,KAAK,WAAWpB,CAAK,EAShC,GARI,KAAK,aACLoB,EAAO,KAAOA,EACd,KAAK,WAAa,IAElBA,EAAK,SAAS,IAAI,IAClB,KAAK,WAAa,GAClBA,EAAOA,EAAK,MAAM,EAAG,EAAE,GAEvB,CAACA,EACD,MAAO,GAEX,MAAMC,EAAkBxB,GAAY,cAAc,IAAIuB,EAAKA,EAAK,OAAS,CAAC,GAAK,EAAE,EACjF,IAAIE,EAAQF,EAAK,MAAMvB,GAAY,cAAc,EACjD,OAAIyB,EAAM,SAAW,GAAK,CAACD,GACvB,KAAK,OAAO,KAAKC,EAAM,CAAC,CAAC,EAClB,KAEP,KAAK,OAAO,OAAS,IACrBA,EAAQ,CAAC,KAAK,OAAO,KAAK,EAAE,EAAIA,EAAM,CAAC,EAAG,GAAGA,EAAM,MAAM,CAAC,CAAC,EAC3D,KAAK,OAAS,IAEbD,IACD,KAAK,OAAS,CAACC,EAAM,IAAK,GAAI,EAAE,GAE7BA,EACV,CACD,WAAWR,EAAO,CACd,GAAIA,GAAS,KACT,MAAO,GACX,GAAI,OAAOA,GAAU,SACjB,OAAOA,EAEX,GAAI,OAAO,OAAW,IAAa,CAC/B,GAAIA,aAAiB,OACjB,OAAOA,EAAM,WAEjB,GAAIA,aAAiB,WACjB,OAAO,OAAO,KAAKA,CAAK,EAAE,SAAQ,EAEtC,MAAM,IAAI/C,EAAY,wCAAwC+C,EAAM,YAAY,IAAI,mIAAmI,CAC1N,CAED,GAAI,OAAO,YAAgB,IAAa,CACpC,GAAIA,aAAiB,YAAcA,aAAiB,YAChD,YAAK,cAAgB,KAAK,YAAc,IAAI,YAAY,MAAM,GACvD,KAAK,YAAY,OAAOA,CAAK,EAExC,MAAM,IAAI/C,EAAY,oDAAoD+C,EAAM,YAAY,IAAI,gDAAgD,CACnJ,CACD,MAAM,IAAI/C,EAAY,gGAAgG,CACzH,CACD,OAAQ,CACJ,GAAI,CAAC,KAAK,OAAO,QAAU,CAAC,KAAK,WAC7B,MAAO,GAEX,MAAMuD,EAAQ,CAAC,KAAK,OAAO,KAAK,EAAE,CAAC,EACnC,YAAK,OAAS,GACd,KAAK,WAAa,GACXA,CACV,CACL,CAEAzB,GAAY,cAAgB,IAAI,IAAI,CAAC;AAAA,EAAM,KAAM,KAAQ,KAAQ,IAAQ,IAAQ,IAAQ,IAAQ,SAAU,QAAQ,CAAC,EACpHA,GAAY,eAAiB,mDAC7B,SAASsB,GAAUI,EAAKC,EAAW,CAC/B,MAAMC,EAAQF,EAAI,QAAQC,CAAS,EACnC,OAAIC,IAAU,GACH,CAACF,EAAI,UAAU,EAAGE,CAAK,EAAGD,EAAWD,EAAI,UAAUE,EAAQD,EAAU,MAAM,CAAC,EAEhF,CAACD,EAAK,GAAI,EAAE,CACvB,CAOO,SAASxB,GAA4B2B,EAAQ,CAChD,GAAIA,EAAO,OAAO,aAAa,EAC3B,OAAOA,EACX,MAAMC,EAASD,EAAO,YACtB,MAAO,CACH,MAAM,MAAO,CACT,GAAI,CACA,MAAM3G,EAAS,MAAM4G,EAAO,OAC5B,OAAI5G,GAAA,MAAAA,EAAQ,MACR4G,EAAO,YAAW,EACf5G,CACV,OACMqF,EAAG,CACN,MAAAuB,EAAO,YAAW,EACZvB,CACT,CACJ,EACD,MAAM,QAAS,CACX,MAAMwB,EAAgBD,EAAO,SAC7B,OAAAA,EAAO,YAAW,EAClB,MAAMC,EACC,CAAE,KAAM,GAAM,MAAO,MAAS,CACxC,EACD,CAAC,OAAO,aAAa,GAAI,CACrB,OAAO,IACV,CACT,CACA,CCnVO,MAAMC,GAAkBlE,GAAUA,GAAS,MAC9C,OAAOA,GAAU,UACjB,OAAOA,EAAM,KAAQ,UACrB,OAAOA,EAAM,MAAS,WACbmE,GAAcnE,GAAUA,GAAS,MAC1C,OAAOA,GAAU,UACjB,OAAOA,EAAM,MAAS,UACtB,OAAOA,EAAM,cAAiB,UAC9BoE,GAAWpE,CAAK,EAKPoE,GAAcpE,GAAUA,GAAS,MAC1C,OAAOA,GAAU,UACjB,OAAOA,EAAM,MAAS,UACtB,OAAOA,EAAM,MAAS,UACtB,OAAOA,EAAM,MAAS,YACtB,OAAOA,EAAM,OAAU,YACvB,OAAOA,EAAM,aAAgB,WACpBqE,GAAgBrE,GAClBmE,GAAWnE,CAAK,GAAKkE,GAAelE,CAAK,GAAKjB,GAAeiB,CAAK,EAWtE,eAAesE,GAAOtE,EAAOuE,EAAMrF,EAAU,CAAA,EAAI,OAGpD,GADAc,EAAQ,MAAMA,EACVkE,GAAelE,CAAK,EAAG,CACvB,MAAMwE,EAAO,MAAMxE,EAAM,OACzB,OAAAuE,IAASA,EAAO,IAAI,IAAIvE,EAAM,GAAG,EAAE,SAAS,MAAM,OAAO,EAAE,IAAK,GAAI,gBAC7D,IAAItB,GAAK,CAAC8F,CAAI,EAAGD,EAAMrF,CAAO,CACxC,CACD,MAAMuF,EAAO,MAAMC,GAAS1E,CAAK,EAEjC,GADAuE,IAASA,EAAOI,GAAQ3E,CAAK,GAAK,gBAC9B,CAACd,EAAQ,KAAM,CACf,MAAM0F,GAAOvB,EAAAoB,EAAK,CAAC,IAAN,YAAApB,EAAS,KAClB,OAAOuB,GAAS,WAChB1F,EAAU,CAAE,GAAGA,EAAS,KAAA0F,GAE/B,CACD,OAAO,IAAIlG,GAAK+F,EAAMF,EAAMrF,CAAO,CACvC,CACA,eAAewF,GAAS1E,EAAO,OAC3B,IAAI6E,EAAQ,CAAA,EACZ,GAAI,OAAO7E,GAAU,UACjB,YAAY,OAAOA,CAAK,GACxBA,aAAiB,YACjB6E,EAAM,KAAK7E,CAAK,UAEXoE,GAAWpE,CAAK,EACrB6E,EAAM,KAAK,MAAM7E,EAAM,YAAa,CAAA,UAE/B8E,GAAwB9E,CAAK,EAElC,gBAAiBqC,KAASrC,EACtB6E,EAAM,KAAKxC,CAAK,MAIpB,OAAM,IAAI,MAAM,yBAAyB,OAAOrC,CAAK,mBAAkBqD,EAAArD,GAAA,YAAAA,EAAO,cAAP,YAAAqD,EACjE,IAAI,YAAY0B,GAAc/E,CAAK,CAAC,EAAE,EAEhD,OAAO6E,CACX,CACA,SAASE,GAAc/E,EAAO,CAE1B,MAAO,IADO,OAAO,oBAAoBA,CAAK,EAC7B,IAAKgF,GAAM,IAAIA,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,GACpD,CACA,SAASL,GAAQ3E,EAAO,OACpB,OAAQiF,GAAyBjF,EAAM,IAAI,GACvCiF,GAAyBjF,EAAM,QAAQ,KAEvCqD,EAAA4B,GAAyBjF,EAAM,IAAI,IAAnC,YAAAqD,EAAsC,MAAM,SAAS,MAC7D,CACA,MAAM4B,GAA4BC,GAAM,CACpC,GAAI,OAAOA,GAAM,SACb,OAAOA,EACX,GAAI,OAAO,OAAW,KAAeA,aAAa,OAC9C,OAAO,OAAOA,CAAC,CAEvB,EACMJ,GAA2B9E,GAAUA,GAAS,MAAQ,OAAOA,GAAU,UAAY,OAAOA,EAAM,OAAO,aAAa,GAAM,WACnHmF,GAAmB/F,GAASA,GAAQ,OAAOA,GAAS,UAAYA,EAAK,MAAQA,EAAK,OAAO,WAAW,IAAM,gBAW1GgG,GAA8B,MAAOtF,GAAS,CACvD,MAAMD,EAAO,MAAMwF,GAAWvF,EAAK,IAAI,EACvC,OAAOlB,GAA2BiB,EAAMC,CAAI,CAChD,EACauF,GAAa,MAAOjG,GAAS,CACtC,MAAMS,EAAO,IAAIpB,GACjB,aAAM,QAAQ,IAAI,OAAO,QAAQW,GAAQ,CAAE,CAAA,EAAE,IAAI,CAAC,CAACkG,EAAKtF,CAAK,IAAMuF,GAAa1F,EAAMyF,EAAKtF,CAAK,CAAC,CAAC,EAC3FH,CACX,EAcM0F,GAAe,MAAO1F,EAAMyF,EAAKtF,IAAU,CAC7C,GAAIA,IAAU,OAEd,IAAIA,GAAS,KACT,MAAM,IAAI,UAAU,sBAAsBsF,CAAG,6DAA6D,EAG9G,GAAI,OAAOtF,GAAU,UAAY,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAC3EH,EAAK,OAAOyF,EAAK,OAAOtF,CAAK,CAAC,UAEzBqE,GAAarE,CAAK,EAAG,CAC1B,MAAMwF,EAAO,MAAMlB,GAAOtE,CAAK,EAC/BH,EAAK,OAAOyF,EAAKE,CAAI,CACxB,SACQ,MAAM,QAAQxF,CAAK,EACxB,MAAM,QAAQ,IAAIA,EAAM,IAAKyF,GAAUF,GAAa1F,EAAMyF,EAAM,KAAMG,CAAK,CAAC,CAAC,UAExE,OAAOzF,GAAU,SACtB,MAAM,QAAQ,IAAI,OAAO,QAAQA,CAAK,EAAE,IAAI,CAAC,CAACuE,EAAMmB,CAAI,IAAMH,GAAa1F,EAAM,GAAGyF,CAAG,IAAIf,CAAI,IAAKmB,CAAI,CAAC,CAAC,MAG1G,OAAM,IAAI,UAAU,wGAAwG1F,CAAK,UAAU,EAEnJ,ECpJA,IAAI2F,GAAkE,SAAUC,EAAUC,EAAO7F,EAAOzB,EAAMuH,EAAG,CAC7G,GAAIvH,IAAS,IAAK,MAAM,IAAI,UAAU,gCAAgC,EACtE,GAAIA,IAAS,KAAO,CAACuH,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAOD,GAAU,WAAaD,IAAaC,GAAS,CAACC,EAAI,CAACD,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,yEAAyE,EAChL,OAAQrH,IAAS,IAAMuH,EAAE,KAAKF,EAAU5F,CAAK,EAAI8F,EAAIA,EAAE,MAAQ9F,EAAQ6F,EAAM,IAAID,EAAU5F,CAAK,EAAIA,CACxG,EACI+F,GAAkE,SAAUH,EAAUC,EAAOtH,EAAMuH,EAAG,CACtG,GAAIvH,IAAS,KAAO,CAACuH,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAOD,GAAU,WAAaD,IAAaC,GAAS,CAACC,EAAI,CAACD,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,0EAA0E,EACjL,OAAOrH,IAAS,IAAMuH,EAAIvH,IAAS,IAAMuH,EAAE,KAAKF,CAAQ,EAAIE,EAAIA,EAAE,MAAQD,EAAM,IAAID,CAAQ,CAChG,EACII,GAOJ,eAAeC,GAAqBC,EAAO,CACvC,KAAM,CAAE,SAAAtE,CAAU,EAAGsE,EACrB,GAAIA,EAAM,QAAQ,OAId,OAHAC,GAAM,WAAYvE,EAAS,OAAQA,EAAS,IAAKA,EAAS,QAASA,EAAS,IAAI,EAG5EsE,EAAM,QAAQ,cACPA,EAAM,QAAQ,cAAc,gBAAgBtE,EAAUsE,EAAM,UAAU,EAE1EzE,GAAO,gBAAgBG,EAAUsE,EAAM,UAAU,EAG5D,GAAItE,EAAS,SAAW,IACpB,OAAO,KAEX,GAAIsE,EAAM,QAAQ,iBACd,OAAOtE,EAEX,MAAMwE,EAAcxE,EAAS,QAAQ,IAAI,cAAc,EAEvD,IADewE,GAAA,YAAAA,EAAa,SAAS,uBAAuBA,GAAA,YAAAA,EAAa,SAAS,6BACtE,CACR,MAAMC,EAAO,MAAMzE,EAAS,OAC5B,OAAAuE,GAAM,WAAYvE,EAAS,OAAQA,EAAS,IAAKA,EAAS,QAASyE,CAAI,EAChEA,CACV,CACD,MAAM5C,EAAO,MAAM7B,EAAS,OAC5B,OAAAuE,GAAM,WAAYvE,EAAS,OAAQA,EAAS,IAAKA,EAAS,QAAS6B,CAAI,EAEhEA,CACX,CAKO,MAAM6C,WAAmB,OAAQ,CACpC,YAAYC,EAAiBC,EAAgBP,GAAsB,CAC/D,MAAOQ,GAAY,CAIfA,EAAQ,IAAI,CACxB,CAAS,EACD,KAAK,gBAAkBF,EACvB,KAAK,cAAgBC,CACxB,CACD,YAAYE,EAAW,CACnB,OAAO,IAAIJ,GAAW,KAAK,gBAAiB,MAAOJ,GAAUQ,EAAU,MAAM,KAAK,cAAcR,CAAK,CAAC,CAAC,CAC1G,CAcD,YAAa,CACT,OAAO,KAAK,gBAAgB,KAAMlB,GAAMA,EAAE,QAAQ,CACrD,CAcD,MAAM,cAAe,CACjB,KAAM,CAACvE,EAAMmB,CAAQ,EAAI,MAAM,QAAQ,IAAI,CAAC,KAAK,MAAK,EAAI,KAAK,WAAU,CAAE,CAAC,EAC5E,MAAO,CAAE,KAAAnB,EAAM,SAAAmB,EAClB,CACD,OAAQ,CACJ,OAAK,KAAK,gBACN,KAAK,cAAgB,KAAK,gBAAgB,KAAK,KAAK,aAAa,GAE9D,KAAK,aACf,CACD,KAAK+E,EAAaC,EAAY,CAC1B,OAAO,KAAK,MAAO,EAAC,KAAKD,EAAaC,CAAU,CACnD,CACD,MAAMA,EAAY,CACd,OAAO,KAAK,MAAK,EAAG,MAAMA,CAAU,CACvC,CACD,QAAQC,EAAW,CACf,OAAO,KAAK,MAAK,EAAG,QAAQA,CAAS,CACxC,CACL,CACO,MAAMC,EAAU,CACnB,YAAY,CAAE,QAAAC,EAAS,WAAAC,EAAa,EAAG,QAAAC,EAAU,IACjD,UAAAC,EAAW,MAAOC,GAAmB,CACjC,KAAK,QAAUJ,EACf,KAAK,WAAaK,GAAwB,aAAcJ,CAAU,EAClE,KAAK,QAAUI,GAAwB,UAAWH,CAAO,EACzD,KAAK,UAAYC,EACjB,KAAK,MAAQC,GAAkB3I,EAClC,CACD,YAAYsB,EAAM,CACd,MAAO,EACV,CASD,eAAeA,EAAM,CACjB,MAAO,CACH,OAAQ,mBACR,eAAgB,mBAChB,aAAc,KAAK,aAAc,EACjC,GAAGuH,GAAoB,EACvB,GAAG,KAAK,YAAYvH,CAAI,CACpC,CACK,CAID,gBAAgBU,EAAS8G,EAAe,CAAG,CAC3C,uBAAwB,CACpB,MAAO,wBAAwBC,GAAO,CAAA,EACzC,CACD,IAAIC,EAAM1H,EAAM,CACZ,OAAO,KAAK,cAAc,MAAO0H,EAAM1H,CAAI,CAC9C,CACD,KAAK0H,EAAM1H,EAAM,CACb,OAAO,KAAK,cAAc,OAAQ0H,EAAM1H,CAAI,CAC/C,CACD,MAAM0H,EAAM1H,EAAM,CACd,OAAO,KAAK,cAAc,QAAS0H,EAAM1H,CAAI,CAChD,CACD,IAAI0H,EAAM1H,EAAM,CACZ,OAAO,KAAK,cAAc,MAAO0H,EAAM1H,CAAI,CAC9C,CACD,OAAO0H,EAAM1H,EAAM,CACf,OAAO,KAAK,cAAc,SAAU0H,EAAM1H,CAAI,CACjD,CACD,cAAc2H,EAAQD,EAAM1H,EAAM,CAC9B,OAAO,KAAK,QAAQ,QAAQ,QAAQA,CAAI,EAAE,KAAMA,IAAU,CAAE,OAAA2H,EAAQ,KAAAD,EAAM,GAAG1H,CAAM,EAAC,CAAC,CACxF,CACD,WAAW0H,EAAME,EAAM5H,EAAM,CACzB,OAAO,KAAK,eAAe4H,EAAM,CAAE,OAAQ,MAAO,KAAAF,EAAM,GAAG1H,CAAI,CAAE,CACpE,CACD,uBAAuBV,EAAM,CACzB,GAAI,OAAOA,GAAS,SAAU,CAC1B,GAAI,OAAO,OAAW,IAClB,OAAO,OAAO,WAAWA,EAAM,MAAM,EAAE,SAAQ,EAEnD,GAAI,OAAO,YAAgB,IAGvB,OAFgB,IAAI,cACI,OAAOA,CAAI,EACpB,OAAO,UAE7B,CACD,OAAO,IACV,CACD,aAAaF,EAAS,OAClB,KAAM,CAAE,OAAAuI,EAAQ,KAAAD,EAAM,MAAAG,EAAO,QAASnH,EAAU,CAAA,CAAI,EAAGtB,EACjDE,EAAO+F,GAAgBjG,EAAQ,IAAI,EAAIA,EAAQ,KAAK,KACpDA,EAAQ,KAAO,KAAK,UAAUA,EAAQ,KAAM,KAAM,CAAC,EAC/C,KACJ0I,EAAgB,KAAK,uBAAuBxI,CAAI,EAChDW,EAAM,KAAK,SAASyH,EAAMG,CAAK,EACjC,YAAazI,GACbkI,GAAwB,UAAWlI,EAAQ,OAAO,EACtD,MAAM+H,EAAU/H,EAAQ,SAAW,KAAK,QAClCgI,EAAYhI,EAAQ,WAAa,KAAK,WAAaL,GAAgBkB,CAAG,EACtE8H,EAAkBZ,EAAU,IAC9B,QAAO5D,EAAA6D,GAAA,YAAAA,EAAW,UAAX,YAAA7D,EAAoB,UAAY,UACvCwE,GAAmBX,EAAU,QAAQ,SAAW,KAKhDA,EAAU,QAAQ,QAAUW,GAE5B,KAAK,mBAAqBJ,IAAW,QAChCvI,EAAQ,iBACTA,EAAQ,eAAiB,KAAK,yBAClCsB,EAAQ,KAAK,iBAAiB,EAAItB,EAAQ,gBAE9C,MAAM4I,EAAa,KAAK,aAAa,CAAE,QAAA5I,EAAS,QAAAsB,EAAS,cAAAoH,CAAa,CAAE,EAUxE,MAAO,CAAE,IATG,CACR,OAAAH,EACA,GAAIrI,GAAQ,CAAE,KAAMA,CAAM,EAC1B,QAAS0I,EACT,GAAIZ,GAAa,CAAE,MAAOA,CAAW,EAGrC,OAAQhI,EAAQ,QAAU,IACtC,EACsB,IAAAa,EAAK,QAAAkH,EACtB,CACD,aAAa,CAAE,QAAA/H,EAAS,QAAAsB,EAAS,cAAAoH,CAAa,EAAK,CAC/C,MAAME,EAAa,CAAA,EACfF,IACAE,EAAW,gBAAgB,EAAIF,GAEnC,MAAMG,EAAiB,KAAK,eAAe7I,CAAO,EAClD,OAAA8I,GAAgBF,EAAYC,CAAc,EAC1CC,GAAgBF,EAAYtH,CAAO,EAE/B2E,GAAgBjG,EAAQ,IAAI,GAAK+I,KAAc,QAC/C,OAAOH,EAAW,cAAc,EAEpC,KAAK,gBAAgBA,EAAYtH,CAAO,EACjCsH,CACV,CAID,MAAM,eAAe5I,EAAS,CAAG,CAOjC,MAAM,eAAegJ,EAAS,CAAE,IAAAnI,EAAK,QAAAb,CAAS,EAAE,CAAG,CACnD,aAAasB,EAAS,CAClB,OAASA,EACH,OAAO,YAAYA,EACjB,OAAO,YAAY,MAAM,KAAKA,CAAO,EAAE,IAAK2H,GAAW,CAAC,GAAGA,CAAM,CAAC,CAAC,EACjE,CAAE,GAAG3H,CAAO,EAHH,CAAE,CAIxB,CACD,gBAAgBF,EAAQV,EAAOW,EAASC,EAAS,CAC7C,OAAOH,EAAS,SAASC,EAAQV,EAAOW,EAASC,CAAO,CAC3D,CACD,QAAQtB,EAASkJ,EAAmB,KAAM,CACtC,OAAO,IAAI9B,GAAW,KAAK,YAAYpH,EAASkJ,CAAgB,CAAC,CACpE,CACD,MAAM,YAAYC,EAAcC,EAAkB,SAC9C,MAAMpJ,EAAU,MAAMmJ,EAClBC,GAAoB,OACpBA,EAAmBpJ,EAAQ,YAAc,KAAK,YAElD,MAAM,KAAK,eAAeA,CAAO,EACjC,KAAM,CAAE,IAAAqJ,EAAK,IAAAxI,EAAK,QAAAkH,CAAS,EAAG,KAAK,aAAa/H,CAAO,EAGvD,GAFA,MAAM,KAAK,eAAeqJ,EAAK,CAAE,IAAAxI,EAAK,QAAAb,CAAO,CAAE,EAC/CiH,GAAM,UAAWpG,EAAKb,EAASqJ,EAAI,OAAO,GACtClF,EAAAnE,EAAQ,SAAR,MAAAmE,EAAgB,QAChB,MAAM,IAAI/B,GAEd,MAAMK,EAAa,IAAI,gBACjBC,EAAW,MAAM,KAAK,iBAAiB7B,EAAKwI,EAAKtB,EAAStF,CAAU,EAAE,MAAMd,EAAW,EAC7F,GAAIe,aAAoB,MAAO,CAC3B,IAAI4G,EAAAtJ,EAAQ,SAAR,MAAAsJ,EAAgB,QAChB,MAAM,IAAIlH,GAEd,GAAIgH,EACA,OAAO,KAAK,aAAapJ,EAASoJ,CAAgB,EAEtD,MAAI1G,EAAS,OAAS,aACZ,IAAIJ,GAER,IAAIZ,GAAmB,CAAE,MAAOgB,CAAU,CAAA,CACnD,CACD,MAAM6G,EAAkBC,GAAsB9G,EAAS,OAAO,EAC9D,GAAI,CAACA,EAAS,GAAI,CACd,GAAI0G,GAAoB,KAAK,YAAY1G,CAAQ,EAAG,CAChD,MAAM+G,EAAe,aAAaL,CAAgB,sBAClD,OAAAnC,GAAM,oBAAoBwC,CAAY,IAAK/G,EAAS,OAAQ7B,EAAK0I,CAAe,EACzE,KAAK,aAAavJ,EAASoJ,EAAkBG,CAAe,CACtE,CACD,MAAMG,EAAU,MAAMhH,EAAS,OAAO,MAAOa,GAAM5B,GAAY4B,CAAC,EAAE,OAAO,EACnEoG,EAAUC,GAASF,CAAO,EAC1BG,EAAaF,EAAU,OAAYD,EAEzC,MAAAzC,GAAM,oBADemC,EAAmB,gCAAkC,wBACpC,IAAK1G,EAAS,OAAQ7B,EAAK0I,EAAiBM,CAAU,EAChF,KAAK,gBAAgBnH,EAAS,OAAQiH,EAASE,EAAYN,CAAe,CAEzF,CACD,MAAO,CAAE,SAAA7G,EAAU,QAAA1C,EAAS,WAAAyC,EAC/B,CACD,eAAe+F,EAAMxI,EAAS,CAC1B,MAAMgJ,EAAU,KAAK,YAAYhJ,EAAS,IAAI,EAC9C,OAAO,IAAI8J,GAAY,KAAMd,EAASR,CAAI,CAC7C,CACD,SAASF,EAAMG,EAAO,CAClB,MAAM5H,EAAMkJ,GAAczB,CAAI,EAC1B,IAAI,IAAIA,CAAI,EACV,IAAI,IAAI,KAAK,SAAW,KAAK,QAAQ,SAAS,GAAG,GAAKA,EAAK,WAAW,GAAG,EAAIA,EAAK,MAAM,CAAC,EAAIA,EAAK,EAClG0B,EAAe,KAAK,eAC1B,OAAKC,GAAWD,CAAY,IACxBvB,EAAQ,CAAE,GAAGuB,EAAc,GAAGvB,CAAK,GAEnC,OAAOA,GAAU,UAAYA,GAAS,CAAC,MAAM,QAAQA,CAAK,IAC1D5H,EAAI,OAAS,KAAK,eAAe4H,CAAK,GAEnC5H,EAAI,UACd,CACD,eAAe4H,EAAO,CAClB,OAAO,OAAO,QAAQA,CAAK,EACtB,OAAO,CAAC,CAACpE,EAAGvD,CAAK,IAAM,OAAOA,EAAU,GAAW,EACnD,IAAI,CAAC,CAACsF,EAAKtF,CAAK,IAAM,CACvB,GAAI,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAC3E,MAAO,GAAG,mBAAmBsF,CAAG,CAAC,IAAI,mBAAmBtF,CAAK,CAAC,GAElE,GAAIA,IAAU,KACV,MAAO,GAAG,mBAAmBsF,CAAG,CAAC,IAErC,MAAM,IAAIlF,EAAY,yBAAyB,OAAOJ,CAAK,mQAAmQ,CAC1U,CAAS,EACI,KAAK,GAAG,CAChB,CACD,MAAM,iBAAiBD,EAAKqJ,EAAMC,EAAI1H,EAAY,CAC9C,KAAM,CAAE,OAAA2H,EAAQ,GAAGpK,CAAO,EAAKkK,GAAQ,CAAA,EACnCE,GACAA,EAAO,iBAAiB,QAAS,IAAM3H,EAAW,MAAO,CAAA,EAC7D,MAAMsF,EAAU,WAAW,IAAMtF,EAAW,MAAK,EAAI0H,CAAE,EACvD,OAAQ,KAAK,iBAAkB,EAE1B,MAAM,KAAK,OAAWtJ,EAAK,CAAE,OAAQ4B,EAAW,OAAQ,GAAGzC,EAAS,EACpE,QAAQ,IAAM,CACf,aAAa+H,CAAO,CAChC,CAAS,CACJ,CACD,kBAAmB,CACf,MAAO,CAAE,MAAO,KAAK,MACxB,CACD,YAAYrF,EAAU,CAElB,MAAM2H,EAAoB3H,EAAS,QAAQ,IAAI,gBAAgB,EAE/D,OAAI2H,IAAsB,OACf,GACPA,IAAsB,QACf,GAEP3H,EAAS,SAAW,KAGpBA,EAAS,SAAW,KAGpBA,EAAS,SAAW,KAGpBA,EAAS,QAAU,GAG1B,CACD,MAAM,aAAa1C,EAASoJ,EAAkBG,EAAiB,CAC3D,IAAIe,EAEJ,MAAMC,EAAyBhB,GAAA,YAAAA,EAAkB,kBACjD,GAAIgB,EAAwB,CACxB,MAAMC,EAAY,WAAWD,CAAsB,EAC9C,OAAO,MAAMC,CAAS,IACvBF,EAAgBE,EAEvB,CAED,MAAMC,EAAmBlB,GAAA,YAAAA,EAAkB,eAC3C,GAAIkB,GAAoB,CAACH,EAAe,CACpC,MAAMI,EAAiB,WAAWD,CAAgB,EAC7C,OAAO,MAAMC,CAAc,EAI5BJ,EAAgB,KAAK,MAAMG,CAAgB,EAAI,KAAK,MAHpDH,EAAgBI,EAAiB,GAKxC,CAGD,GAAI,EAAEJ,GAAiB,GAAKA,GAAiBA,EAAgB,GAAK,KAAO,CACrE,MAAMxC,EAAa9H,EAAQ,YAAc,KAAK,WAC9CsK,EAAgB,KAAK,mCAAmClB,EAAkBtB,CAAU,CACvF,CACD,aAAM6C,GAAML,CAAa,EAClB,KAAK,YAAYtK,EAASoJ,EAAmB,CAAC,CACxD,CACD,mCAAmCA,EAAkBtB,EAAY,CAG7D,MAAM8C,EAAa9C,EAAasB,EAE1ByB,EAAe,KAAK,IAAI,GAAoB,KAAK,IAAI,EAAGD,CAAU,EAAG,CAAa,EAElFE,EAAS,EAAI,KAAK,OAAM,EAAK,IACnC,OAAOD,EAAeC,EAAS,GAClC,CACD,cAAe,CACX,MAAO,GAAG,KAAK,YAAY,IAAI,OAAO3L,EAAO,EAChD,CACL,CACO,MAAM4L,EAAa,CACtB,YAAYC,EAAQtI,EAAUxC,EAAMF,EAAS,CACzC8G,GAAqB,IAAI,KAAM,MAAM,EACrCL,GAAuB,KAAMK,GAAsBkE,EAAQ,GAAG,EAC9D,KAAK,QAAUhL,EACf,KAAK,SAAW0C,EAChB,KAAK,KAAOxC,CACf,CACD,aAAc,CAEV,OADc,KAAK,oBACR,OAEJ,KAAK,aAAc,GAAI,KADnB,EAEd,CACD,MAAM,aAAc,CAChB,MAAM+K,EAAW,KAAK,eACtB,GAAI,CAACA,EACD,MAAM,IAAI/J,EAAY,uFAAuF,EAEjH,MAAMgK,EAAc,CAAE,GAAG,KAAK,OAAO,EACrC,GAAI,WAAYD,GAAY,OAAOC,EAAY,OAAU,SACrDA,EAAY,MAAQ,CAAE,GAAGA,EAAY,MAAO,GAAGD,EAAS,gBAEnD,QAASA,EAAU,CACxB,MAAME,EAAS,CAAC,GAAG,OAAO,QAAQD,EAAY,OAAS,EAAE,EAAG,GAAGD,EAAS,IAAI,aAAa,QAAS,CAAA,EAClG,SAAW,CAAC7E,EAAKtF,CAAK,IAAKqK,EACvBF,EAAS,IAAI,aAAa,IAAI7E,EAAKtF,CAAK,EAE5CoK,EAAY,MAAQ,OACpBA,EAAY,KAAOD,EAAS,IAAI,SAAQ,CAC3C,CACD,OAAO,MAAMpE,GAAuB,KAAMC,GAAsB,GAAG,EAAE,eAAe,KAAK,YAAaoE,CAAW,CACpH,CACD,MAAO,WAAY,CAEf,IAAIE,EAAO,KAEX,IADA,MAAMA,EACCA,EAAK,eACRA,EAAO,MAAMA,EAAK,cAClB,MAAMA,CAEb,CACD,QAAStE,GAAuB,IAAI,QAAW,OAAO,cAAa,GAAK,CACpE,gBAAiBsE,KAAQ,KAAK,YAC1B,UAAWC,KAAQD,EAAK,oBACpB,MAAMC,CAGjB,CACL,CAUO,MAAMvB,WAAoB1C,EAAW,CACxC,YAAY4D,EAAQhC,EAASR,EAAM,CAC/B,MAAMQ,EAAS,MAAOhC,GAAU,IAAIwB,EAAKwC,EAAQhE,EAAM,SAAU,MAAMD,GAAqBC,CAAK,EAAGA,EAAM,OAAO,CAAC,CACrH,CAQD,OAAQ,OAAO,aAAa,GAAI,CAC5B,MAAMoE,EAAO,MAAM,KACnB,gBAAiBC,KAAQD,EACrB,MAAMC,CAEb,CACL,CACO,MAAM7B,GAAyBlI,GAC3B,IAAI,MAAM,OAAO,YAExBA,EAAQ,QAAO,CAAE,EAAG,CAChB,IAAItD,EAAQqH,EAAM,CACd,MAAMe,EAAMf,EAAK,WACjB,OAAOrH,EAAOoI,EAAI,YAAa,CAAA,GAAKpI,EAAOoI,CAAG,CACjD,CACT,CAAK,EAKCkF,GAAqB,CACvB,OAAQ,GACR,KAAM,GACN,MAAO,GACP,KAAM,GACN,QAAS,GACT,WAAY,GACZ,OAAQ,GACR,QAAS,GACT,UAAW,GACX,OAAQ,GACR,eAAgB,GAChB,iBAAkB,GAClB,cAAe,EACnB,EACaC,EAAoBC,GACrB,OAAOA,GAAQ,UACnBA,IAAQ,MACR,CAACvB,GAAWuB,CAAG,GACf,OAAO,KAAKA,CAAG,EAAE,MAAOC,GAAMC,GAAOJ,GAAoBG,CAAC,CAAC,EAE7DE,GAAwB,IAAM,CAChC,GAAI,OAAO,KAAS,KAAe,KAAK,OAAS,KAC7C,MAAO,CACH,mBAAoB,KACpB,8BAA+BxM,GAC/B,iBAAkByM,GAAkB,KAAK,MAAM,EAAE,EACjD,mBAAoBC,GAAc,KAAK,MAAM,IAAI,EACjD,sBAAuB,OACvB,8BAA+B,KAAK,OAChD,EAEI,GAAI,OAAO,YAAgB,IACvB,MAAO,CACH,mBAAoB,KACpB,8BAA+B1M,GAC/B,iBAAkB,UAClB,mBAAoB,SAAS,WAAW,GACxC,sBAAuB,OACvB,8BAA+B,QAAQ,OACnD,EAGI,GAAI,OAAO,UAAU,SAAS,KAAK,OAAO,QAAY,IAAc,QAAU,CAAC,IAAM,mBACjF,MAAO,CACH,mBAAoB,KACpB,8BAA+BA,GAC/B,iBAAkByM,GAAkB,QAAQ,QAAQ,EACpD,mBAAoBC,GAAc,QAAQ,IAAI,EAC9C,sBAAuB,OACvB,8BAA+B,QAAQ,OACnD,EAEI,MAAMC,EAAcC,KACpB,OAAID,EACO,CACH,mBAAoB,KACpB,8BAA+B3M,GAC/B,iBAAkB,UAClB,mBAAoB,UACpB,sBAAuB,WAAW2M,EAAY,OAAO,GACrD,8BAA+BA,EAAY,OACvD,EAGW,CACH,mBAAoB,KACpB,8BAA+B3M,GAC/B,iBAAkB,UAClB,mBAAoB,UACpB,sBAAuB,UACvB,8BAA+B,SACvC,CACA,EAEA,SAAS4M,IAAiB,CACtB,GAAI,OAAO,UAAc,KAAe,CAAC,UACrC,OAAO,KAGX,MAAMC,EAAkB,CACpB,CAAE,IAAK,OAAQ,QAAS,sCAAwC,EAChE,CAAE,IAAK,KAAM,QAAS,sCAAwC,EAC9D,CAAE,IAAK,KAAM,QAAS,4CAA8C,EACpE,CAAE,IAAK,SAAU,QAAS,wCAA0C,EACpE,CAAE,IAAK,UAAW,QAAS,yCAA2C,EACtE,CAAE,IAAK,SAAU,QAAS,mEAAqE,CACvG,EAEI,SAAW,CAAE,IAAA5F,EAAK,QAAA6F,CAAO,IAAMD,EAAiB,CAC5C,MAAME,EAAQD,EAAQ,KAAK,UAAU,SAAS,EAC9C,GAAIC,EAAO,CACP,MAAMC,EAAQD,EAAM,CAAC,GAAK,EACpBE,EAAQF,EAAM,CAAC,GAAK,EACpBG,EAAQH,EAAM,CAAC,GAAK,EAC1B,MAAO,CAAE,QAAS9F,EAAK,QAAS,GAAG+F,CAAK,IAAIC,CAAK,IAAIC,CAAK,EAAE,CAC/D,CACJ,CACD,OAAO,IACX,CACA,MAAMR,GAAiBS,GAKfA,IAAS,MACF,MACPA,IAAS,UAAYA,IAAS,MACvB,MACPA,IAAS,MACF,MACPA,IAAS,WAAaA,IAAS,QACxB,QACPA,EACO,SAASA,CAAI,GACjB,UAELV,GAAqBW,IAMvBA,EAAWA,EAAS,cAKhBA,EAAS,SAAS,KAAK,EAChB,MACPA,IAAa,UACN,UACPA,IAAa,SACN,QACPA,IAAa,QACN,UACPA,IAAa,UACN,UACPA,IAAa,UACN,UACPA,IAAa,QACN,QACPA,EACO,SAASA,CAAQ,GACrB,WAEX,IAAIC,GACJ,MAAMrE,GAAqB,IACfqE,KAAqBA,GAAmBb,GAAqB,GAE5D/B,GAAYrF,GAAS,CAC9B,GAAI,CACA,OAAO,KAAK,MAAMA,CAAI,CACzB,MACW,CACR,MACH,CACL,EAEMkI,GAAyB,IAAI,OAAO,kBAAmB,GAAG,EAC1D1C,GAAiBlJ,GACZ4L,GAAuB,KAAK5L,CAAG,EAE7B8J,GAASR,GAAO,IAAI,QAAS5C,GAAY,WAAWA,EAAS4C,CAAE,CAAC,EACvEjC,GAA0B,CAAC7C,EAAMqH,IAAM,CACzC,GAAI,OAAOA,GAAM,UAAY,CAAC,OAAO,UAAUA,CAAC,EAC5C,MAAM,IAAIxL,EAAY,GAAGmE,CAAI,qBAAqB,EAEtD,GAAIqH,EAAI,EACJ,MAAM,IAAIxL,EAAY,GAAGmE,CAAI,6BAA6B,EAE9D,OAAOqH,CACX,EACa/K,GAAeuC,GACpBA,aAAe,MACRA,EACJ,IAAI,MAAMA,CAAG,EAcXyI,GAAWtO,GAAQ,eAC5B,GAAI,OAAO,QAAY,IACnB,QAAOiL,GAAAnF,EAAA,QAAQ,MAAR,YAAAA,EAAc9F,KAAd,YAAAiL,EAAoB,SAAU,OAEzC,GAAI,OAAO,KAAS,IAChB,OAAOsD,GAAAC,GAAAC,EAAA,KAAK,MAAL,YAAAA,EAAU,MAAV,YAAAD,EAAA,KAAAC,EAAgBzO,KAAhB,YAAAuO,EAAsB,MAGrC,EAyCO,SAAS3C,GAAWuB,EAAK,CAC5B,GAAI,CAACA,EACD,MAAO,GACX,UAAWuB,KAAMvB,EACb,MAAO,GACX,MAAO,EACX,CAEO,SAASE,GAAOF,EAAKpF,EAAK,CAC7B,OAAO,OAAO,UAAU,eAAe,KAAKoF,EAAKpF,CAAG,CACxD,CAOA,SAAS0C,GAAgBkE,EAAeC,EAAY,CAChD,UAAWxB,KAAKwB,EAAY,CACxB,GAAI,CAACvB,GAAOuB,EAAYxB,CAAC,EACrB,SACJ,MAAMyB,EAAWzB,EAAE,cACnB,GAAI,CAACyB,EACD,SACJ,MAAMC,EAAMF,EAAWxB,CAAC,EACpB0B,IAAQ,KACR,OAAOH,EAAcE,CAAQ,EAExBC,IAAQ,SACbH,EAAcE,CAAQ,EAAIC,EAEjC,CACL,CACO,SAASlG,GAAMmG,KAAWC,EAAM,CAC/B,OAAO,QAAY,KAAe,QAAQ,IAAI,QAAa,QAC3D,QAAQ,IAAI,gBAAgBD,CAAM,GAAI,GAAGC,CAAI,CAErD,CAIA,MAAMhF,GAAQ,IACH,uCAAuC,QAAQ,QAAUiF,GAAM,CAClE,MAAMC,EAAK,KAAK,OAAM,EAAK,GAAM,EAEjC,OADUD,IAAM,IAAMC,EAAKA,EAAI,EAAO,GAC7B,SAAS,EAAE,CAC5B,CAAK,EAEQC,GAAqB,IAG9B,OAAO,OAAW,KAEd,OAAO,OAAO,SAAa,KAE3B,OAAO,UAAc,IC1xBtB,MAAMhF,WAAauC,EAAa,CACnC,YAAYC,EAAQtI,EAAUxC,EAAMF,EAAS,CACzC,MAAMgL,EAAQtI,EAAUxC,EAAMF,CAAO,EACrC,KAAK,KAAOE,EAAK,MAAQ,CAAA,EACzB,KAAK,OAASA,EAAK,MACtB,CACD,mBAAoB,CAChB,OAAO,KAAK,MAAQ,EACvB,CAMD,gBAAiB,CACb,OAAO,IACV,CACD,cAAe,CACX,OAAO,IACV,CACL,CACO,MAAMuN,WAAmB1C,EAAa,CACzC,YAAYC,EAAQtI,EAAUxC,EAAMF,EAAS,CACzC,MAAMgL,EAAQtI,EAAUxC,EAAMF,CAAO,EACrC,KAAK,KAAOE,EAAK,MAAQ,CAAA,CAC5B,CACD,mBAAoB,CAChB,OAAO,KAAK,MAAQ,EACvB,CAED,gBAAiB,CACb,MAAMwN,EAAO,KAAK,eAClB,GAAI,CAACA,EACD,OAAO,KACX,GAAI,WAAYA,EACZ,OAAOA,EAAK,OAChB,MAAMvC,EAAS,OAAO,YAAYuC,EAAK,IAAI,YAAY,EACvD,OAAK,OAAO,KAAKvC,CAAM,EAAE,OAElBA,EADI,IAEd,CACD,cAAe,OACX,MAAM5J,EAAO,KAAK,oBAClB,GAAI,CAACA,EAAK,OACN,OAAO,KAEX,MAAMoM,GAAKxJ,EAAA5C,EAAKA,EAAK,OAAS,CAAC,IAApB,YAAA4C,EAAuB,GAClC,OAAKwJ,EAGE,CAAE,OAAQ,CAAE,MAAOA,CAAI,CAAA,EAFnB,IAGd,CACL,CCxDO,MAAMC,CAAY,CACrB,YAAY5C,EAAQ,CAChB,KAAK,QAAUA,CAClB,CACL,QCHO,cAA0B4C,CAAY,CACzC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,oBAAqB,CAAE,KAAAE,EAAM,GAAGF,EAAS,OAAQE,EAAK,QAAU,EAAO,CAAA,CACnG,CACL,EAEG2N,KAAgBA,GAAc,CAAA,UCL1B,cAAmBD,CAAY,CAClC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,YAAc,IAAIE,GAA2B,KAAK,OAAO,CACjE,CACL,GACC,SAAUC,EAAM,CACbA,EAAK,YAAcD,EACvB,GAAGC,KAASA,GAAO,CAAA,EAAG,ECTf,MAAMC,WAAeJ,CAAY,CAIpC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,gBAAiB,CAAE,KAAAE,EAAM,GAAGF,EAAS,iBAAkB,EAAI,CAAE,CACzF,CACL,CAEGgO,KAAWA,GAAS,CAAA,GCRhB,MAAMC,WAAuBL,CAAY,CAI5C,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,wBAAyBkG,GAA4B,CAAE,KAAAhG,EAAM,GAAGF,CAAS,CAAA,CAAC,CACtG,CACL,CAEGiO,KAAmBA,GAAiB,CAAA,GCThC,MAAMC,WAAqBN,CAAY,CAI1C,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,sBAAuBkG,GAA4B,CAAE,KAAAhG,EAAM,GAAGF,CAAS,CAAA,CAAC,CACpG,CACL,CAEGkO,KAAiBA,GAAe,CAAA,GCP5B,MAAMC,WAAcP,CAAY,CACnC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,eAAiB,IAAIQ,GAAiC,KAAK,OAAO,EACvE,KAAK,aAAe,IAAIC,GAA6B,KAAK,OAAO,EACjE,KAAK,OAAS,IAAIC,GAAiB,KAAK,OAAO,CAClD,CACL,EACC,SAAUH,EAAO,CACdA,EAAM,eAAiBC,GACvBD,EAAM,aAAeE,GACrBF,EAAM,OAASG,EACnB,GAAGH,KAAUA,GAAQ,CAAA,EAAG,SCZjB,cAAoBP,CAAY,CAMnC,OAAOW,EAAarO,EAAMF,EAAS,CAC/B,OAAO,KAAK,QAAQ,KAAK,eAAeuO,CAAW,SAAU,CACzD,KAAArO,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,SAASuO,EAAaC,EAAQxO,EAAS,CACnC,OAAO,KAAK,QAAQ,IAAI,eAAeuO,CAAW,UAAUC,CAAM,GAAI,CAClE,GAAGxO,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACD,KAAKuO,EAAa9F,EAAQ,CAAA,EAAIzI,EAAS,CACnC,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAK8F,EAAa,CAAE,EAAE9F,CAAK,EAEpC,KAAK,QAAQ,WAAW,eAAe8F,CAAW,SAAUE,GAAoB,CACnF,MAAAhG,EACA,GAAGzI,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,IAAIuO,EAAaC,EAAQxO,EAAS,CAC9B,OAAO,KAAK,QAAQ,OAAO,eAAeuO,CAAW,UAAUC,CAAM,GAAI,CACrE,GAAGxO,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,EACO,MAAMyO,WAA2BhB,EAAW,CACnD,EACC,SAAUiB,EAAO,CACdA,EAAM,mBAAqBC,EAC/B,GAAGD,KAAUA,GAAQ,CAAA,EAAG,EC7CjB,MAAME,WAAmBhB,CAAY,CACxC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,MAAQ,IAAIiB,GAAe,KAAK,OAAO,CAC/C,CAID,OAAO3O,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,cAAe,CACpC,KAAAE,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,SAASuO,EAAavO,EAAS,CAC3B,OAAO,KAAK,QAAQ,IAAI,eAAeuO,CAAW,GAAI,CAClD,GAAGvO,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,OAAOuO,EAAarO,EAAMF,EAAS,CAC/B,OAAO,KAAK,QAAQ,KAAK,eAAeuO,CAAW,GAAI,CACnD,KAAArO,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACD,KAAKyI,EAAQ,CAAE,EAAEzI,EAAS,CACtB,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAK,CAAE,EAAEA,CAAK,EAEvB,KAAK,QAAQ,WAAW,cAAeqG,GAAgB,CAC1D,MAAArG,EACA,GAAGzI,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,IAAIuO,EAAavO,EAAS,CACtB,OAAO,KAAK,QAAQ,OAAO,eAAeuO,CAAW,GAAI,CACrD,GAAGvO,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,CACO,MAAM8O,WAAuBrB,EAAW,CAC/C,EACC,SAAUmB,EAAY,CACnBA,EAAW,eAAiBG,GAC5BH,EAAW,MAAQC,GACnBD,EAAW,mBAAqBD,EACpC,GAAGC,KAAeA,GAAa,CAAA,EAAG,EClE3B,SAASI,GAA4BC,EAAI,CAC5C,OAAO,OAAOA,EAAG,OAAU,UAC/B,CCFO,MAAMC,GAAsB7N,IACxBA,GAAA,YAAAA,EAAS,QAAS,YAEhB8N,GAAqB9N,IACvBA,GAAA,YAAAA,EAAS,QAAS,WAEhB+N,GAAiB/N,IACnBA,GAAA,YAAAA,EAAS,QAAS,OCP7B,IAAIoF,EAAkE,SAAUC,EAAUC,EAAO7F,EAAOzB,EAAMuH,EAAG,CAC7G,GAAIvH,IAAS,IAAK,MAAM,IAAI,UAAU,gCAAgC,EACtE,GAAIA,IAAS,KAAO,CAACuH,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAOD,GAAU,WAAaD,IAAaC,GAAS,CAACC,EAAI,CAACD,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,yEAAyE,EAChL,OAAQrH,IAAS,IAAMuH,EAAE,KAAKF,EAAU5F,CAAK,EAAI8F,EAAIA,EAAE,MAAQ9F,EAAQ6F,EAAM,IAAID,EAAU5F,CAAK,EAAIA,CACxG,EACI+F,EAAkE,SAAUH,EAAUC,EAAOtH,EAAMuH,EAAG,CACtG,GAAIvH,IAAS,KAAO,CAACuH,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAOD,GAAU,WAAaD,IAAaC,GAAS,CAACC,EAAI,CAACD,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,0EAA0E,EACjL,OAAOrH,IAAS,IAAMuH,EAAIvH,IAAS,IAAMuH,EAAE,KAAKF,CAAQ,EAAIE,EAAIA,EAAE,MAAQD,EAAM,IAAID,CAAQ,CAChG,EACI2I,EAAyCC,GAAgDC,GAAuDC,GAAsDC,GAA0CC,GAAiDC,GAAgDC,GAAyCC,GAAqCC,GAAuCC,GAAuCC,GAAsDC,GAA+CC,GAA+CC,GAAoDC,GAA0DC,GAAmDC,GAA2CC,GAA8CC,GAI/3B,MAAMC,GAA+B,GAC9B,MAAMC,EAA6B,CACtC,aAAc,CACVrB,EAAwC,IAAI,IAAI,EAChD,KAAK,WAAa,IAAI,gBACtBC,GAA+C,IAAI,KAAM,MAAM,EAC/DC,GAAsD,IAAI,KAAM,IAAM,CAAG,CAAA,EACzEC,GAAqD,IAAI,KAAM,IAAM,CAAG,CAAA,EACxEC,GAAyC,IAAI,KAAM,MAAM,EACzDC,GAAgD,IAAI,KAAM,IAAM,CAAG,CAAA,EACnEC,GAA+C,IAAI,KAAM,IAAM,CAAG,CAAA,EAClEC,GAAwC,IAAI,KAAM,CAAA,CAAE,EACpD,KAAK,iBAAmB,GACxB,KAAK,SAAW,GAChBC,GAAoC,IAAI,KAAM,EAAK,EACnDC,GAAsC,IAAI,KAAM,EAAK,EACrDC,GAAsC,IAAI,KAAM,EAAK,EACrDC,GAAqD,IAAI,KAAM,EAAK,EACpEM,GAA0C,IAAI,KAAO5P,GAAU,CAK3D,GAJA+F,EAAuB,KAAMqJ,GAAuC,GAAM,GAAG,EACzEpP,aAAiB,OAASA,EAAM,OAAS,eACzCA,EAAQ,IAAI0B,IAEZ1B,aAAiB0B,GACjBqE,OAAAA,EAAuB,KAAMsJ,GAAuC,GAAM,GAAG,EACtE,KAAK,MAAM,QAASrP,CAAK,EAEpC,GAAIA,aAAiBQ,EACjB,OAAO,KAAK,MAAM,QAASR,CAAK,EAEpC,GAAIA,aAAiB,MAAO,CACxB,MAAMiQ,EAAc,IAAIzP,EAAYR,EAAM,OAAO,EAEjD,OAAAiQ,EAAY,MAAQjQ,EACb,KAAK,MAAM,QAASiQ,CAAW,CACzC,CACD,OAAO,KAAK,MAAM,QAAS,IAAIzP,EAAY,OAAOR,CAAK,CAAC,CAAC,CACrE,CAAS,EACD+F,EAAuB,KAAM6I,GAAgD,IAAI,QAAQ,CAAC/H,EAASqJ,IAAW,CAC1GnK,EAAuB,KAAM8I,GAAuDhI,EAAS,GAAG,EAChGd,EAAuB,KAAM+I,GAAsDoB,EAAQ,GAAG,CAC1G,CAAS,EAAG,GAAG,EACPnK,EAAuB,KAAMgJ,GAA0C,IAAI,QAAQ,CAAClI,EAASqJ,IAAW,CACpGnK,EAAuB,KAAMiJ,GAAiDnI,EAAS,GAAG,EAC1Fd,EAAuB,KAAMkJ,GAAgDiB,EAAQ,GAAG,CACpG,CAAS,EAAG,GAAG,EAKP/J,EAAuB,KAAMyI,GAAgD,GAAG,EAAE,MAAM,IAAM,CAAA,CAAG,EACjGzI,EAAuB,KAAM4I,GAA0C,GAAG,EAAE,MAAM,IAAM,CAAA,CAAG,CAC9F,CACD,KAAKoB,EAAU,CAGX,WAAW,IAAM,CACbA,EAAQ,EAAG,KAAK,IAAM,CAClB,KAAK,WAAU,EACf,KAAK,MAAM,KAAK,CACnB,EAAEhK,EAAuB,KAAMyJ,GAA2C,GAAG,CAAC,CAClF,EAAE,CAAC,CACP,CACD,mBAAmBQ,EAAgB,OAC/B,KAAK,iBAAiB,KAAKA,CAAc,EACzC,KAAK,MAAM,iBAAkBA,CAAc,EAC3C,MAAMzP,GAAU8C,EAAA2M,EAAe,QAAQ,CAAC,IAAxB,YAAA3M,EAA2B,QAC3C,OAAI9C,GACA,KAAK,YAAYA,CAAO,EACrByP,CACV,CACD,YAAYzP,EAAS0P,EAAO,GAAM,CAI9B,GAHM,YAAa1P,IACfA,EAAQ,QAAU,MACtB,KAAK,SAAS,KAAKA,CAAO,EACtB0P,GAEA,GADA,KAAK,MAAM,UAAW1P,CAAO,GACxB8N,GAAkB9N,CAAO,GAAK+N,GAAc/N,CAAO,IAAMA,EAAQ,QAElE,KAAK,MAAM,qBAAsBA,EAAQ,OAAO,UAE3C6N,GAAmB7N,CAAO,GAAKA,EAAQ,cAC5C,KAAK,MAAM,eAAgBA,EAAQ,aAAa,UAE3C6N,GAAmB7N,CAAO,GAAKA,EAAQ,WAC5C,UAAW2P,KAAa3P,EAAQ,WACxB2P,EAAU,OAAS,YACnB,KAAK,MAAM,eAAgBA,EAAU,QAAQ,EAKhE,CACD,YAAa,CACL,KAAK,QAETnK,EAAuB,KAAM0I,GAAuD,GAAG,EAAE,KAAK,IAAI,EAClG,KAAK,MAAM,SAAS,EACvB,CACD,IAAI,OAAQ,CACR,OAAO1I,EAAuB,KAAMgJ,GAAqC,GAAG,CAC/E,CACD,IAAI,SAAU,CACV,OAAOhJ,EAAuB,KAAMiJ,GAAuC,GAAG,CACjF,CACD,IAAI,SAAU,CACV,OAAOjJ,EAAuB,KAAMkJ,GAAuC,GAAG,CACjF,CACD,OAAQ,CACJ,KAAK,WAAW,OACnB,CAQD,GAAGkB,EAAOC,EAAU,CAEhB,OADkBrK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,IAAMpK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,EAAI,CAAA,IAClL,KAAK,CAAE,SAAAC,CAAQ,CAAE,EACpB,IACV,CAQD,IAAID,EAAOC,EAAU,CACjB,MAAMC,EAAYtK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,EAClG,GAAI,CAACE,EACD,OAAO,KACX,MAAMvM,EAAQuM,EAAU,UAAWC,GAAMA,EAAE,WAAaF,CAAQ,EAChE,OAAItM,GAAS,GACTuM,EAAU,OAAOvM,EAAO,CAAC,EACtB,IACV,CAMD,KAAKqM,EAAOC,EAAU,CAElB,OADkBrK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,IAAMpK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,EAAI,CAAA,IAClL,KAAK,CAAE,SAAAC,EAAU,KAAM,EAAM,CAAA,EAChC,IACV,CAYD,QAAQD,EAAO,CACX,OAAO,IAAI,QAAQ,CAAC1J,EAASqJ,IAAW,CACpCnK,EAAuB,KAAMuJ,GAAsD,GAAM,GAAG,EACxFiB,IAAU,SACV,KAAK,KAAK,QAASL,CAAM,EAC7B,KAAK,KAAKK,EAAO1J,CAAO,CACpC,CAAS,CACJ,CACD,MAAM,MAAO,CACTd,EAAuB,KAAMuJ,GAAsD,GAAM,GAAG,EAC5F,MAAMnJ,EAAuB,KAAM4I,GAA0C,GAAG,CACnF,CAKD,MAAM,qBAAsB,CACxB,MAAM,KAAK,OACX,MAAM4B,EAAa,KAAK,iBAAiB,KAAK,iBAAiB,OAAS,CAAC,EACzE,GAAI,CAACA,EACD,MAAM,IAAInQ,EAAY,iDAAiD,EAC3E,OAAOmQ,CACV,CAKD,MAAM,cAAe,CACjB,aAAM,KAAK,OACJxK,EAAuB,KAAMwI,EAAyC,IAAKY,EAA6C,EAAE,KAAK,IAAI,CAC7I,CAKD,MAAM,cAAe,CACjB,aAAM,KAAK,OACJpJ,EAAuB,KAAMwI,EAAyC,IAAKa,EAA6C,EAAE,KAAK,IAAI,CAC7I,CAKD,MAAM,mBAAoB,CACtB,aAAM,KAAK,OACJrJ,EAAuB,KAAMwI,EAAyC,IAAKc,EAAkD,EAAE,KAAK,IAAI,CAClJ,CACD,MAAM,yBAA0B,CAC5B,aAAM,KAAK,OACJtJ,EAAuB,KAAMwI,EAAyC,IAAKe,EAAwD,EAAE,KAAK,IAAI,CACxJ,CACD,MAAM,YAAa,CACf,aAAM,KAAK,OACJvJ,EAAuB,KAAMwI,EAAyC,IAAKgB,EAAiD,EAAE,KAAK,IAAI,CACjJ,CACD,oBAAqB,CACjB,MAAO,CAAC,GAAG,KAAK,gBAAgB,CACnC,CACD,MAAMY,KAAU5D,EAAM,CAElB,GAAIxG,EAAuB,KAAMgJ,GAAqC,GAAG,EACrE,OAEAoB,IAAU,QACVxK,EAAuB,KAAMoJ,GAAqC,GAAM,GAAG,EAC3EhJ,EAAuB,KAAM6I,GAAiD,GAAG,EAAE,KAAK,IAAI,GAEhG,MAAMyB,EAAYtK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,EAKlG,GAJIE,IACAtK,EAAuB,KAAM+I,GAAyC,GAAG,EAAEqB,CAAK,EAAIE,EAAU,OAAQC,GAAM,CAACA,EAAE,IAAI,EACnHD,EAAU,QAAQ,CAAC,CAAE,SAAAD,CAAU,IAAKA,EAAS,GAAG7D,CAAI,CAAC,GAErD4D,IAAU,QAAS,CACnB,MAAMvQ,EAAQ2M,EAAK,CAAC,EAChB,CAACxG,EAAuB,KAAMmJ,GAAsD,GAAG,GAAK,EAACmB,GAAA,MAAAA,EAAW,SACxG,QAAQ,OAAOzQ,CAAK,EAExBmG,EAAuB,KAAM2I,GAAsD,GAAG,EAAE,KAAK,KAAM9O,CAAK,EACxGmG,EAAuB,KAAM8I,GAAgD,GAAG,EAAE,KAAK,KAAMjP,CAAK,EAClG,KAAK,MAAM,KAAK,EAChB,MACH,CACD,GAAIuQ,IAAU,QAAS,CAEnB,MAAMvQ,EAAQ2M,EAAK,CAAC,EAChB,CAACxG,EAAuB,KAAMmJ,GAAsD,GAAG,GAAK,EAACmB,GAAA,MAAAA,EAAW,SAOxG,QAAQ,OAAOzQ,CAAK,EAExBmG,EAAuB,KAAM2I,GAAsD,GAAG,EAAE,KAAK,KAAM9O,CAAK,EACxGmG,EAAuB,KAAM8I,GAAgD,GAAG,EAAE,KAAK,KAAMjP,CAAK,EAClG,KAAK,MAAM,KAAK,CACnB,CACJ,CACD,YAAa,CACT,MAAM2Q,EAAa,KAAK,iBAAiB,KAAK,iBAAiB,OAAS,CAAC,EACrEA,GACA,KAAK,MAAM,sBAAuBA,CAAU,EAChD,MAAMC,EAAezK,EAAuB,KAAMwI,EAAyC,IAAKa,EAA6C,EAAE,KAAK,IAAI,EACpJoB,GACA,KAAK,MAAM,eAAgBA,CAAY,EAC3C,MAAMC,EAAe1K,EAAuB,KAAMwI,EAAyC,IAAKY,EAA6C,EAAE,KAAK,IAAI,EACpJsB,GACA,KAAK,MAAM,eAAgBA,CAAY,EAC3C,MAAMC,EAAoB3K,EAAuB,KAAMwI,EAAyC,IAAKc,EAAkD,EAAE,KAAK,IAAI,EAC9JqB,GACA,KAAK,MAAM,oBAAqBA,CAAiB,EACrD,MAAMC,EAA0B5K,EAAuB,KAAMwI,EAAyC,IAAKe,EAAwD,EAAE,KAAK,IAAI,EAC1KqB,GAA2B,MAC3B,KAAK,MAAM,0BAA2BA,CAAuB,EAC7D,KAAK,iBAAiB,KAAMnE,GAAMA,EAAE,KAAK,GACzC,KAAK,MAAM,aAAczG,EAAuB,KAAMwI,EAAyC,IAAKgB,EAAiD,EAAE,KAAK,IAAI,CAAC,CAExK,CACD,MAAM,sBAAsBqB,EAAavG,EAAQnL,EAAS,CACtD,MAAMoK,EAASpK,GAAA,YAAAA,EAAS,OACpBoK,IACIA,EAAO,SACP,KAAK,WAAW,QACpBA,EAAO,iBAAiB,QAAS,IAAM,KAAK,WAAW,MAAK,CAAE,GAElEvD,EAAuB,KAAMwI,EAAyC,IAAKkB,EAA4C,EAAE,KAAK,KAAMpF,CAAM,EAC1I,MAAM2F,EAAiB,MAAMY,EAAY,OAAO,CAAE,GAAGvG,EAAQ,OAAQ,EAAO,EAAE,CAAE,GAAGnL,EAAS,OAAQ,KAAK,WAAW,MAAM,CAAE,EAC5H,YAAK,WAAU,EACR,KAAK,mBAAmB8Q,CAAc,CAChD,CACD,MAAM,mBAAmBY,EAAavG,EAAQnL,EAAS,CACnD,UAAWqB,KAAW8J,EAAO,SACzB,KAAK,YAAY9J,EAAS,EAAK,EAEnC,OAAO,MAAM,KAAK,sBAAsBqQ,EAAavG,EAAQnL,CAAO,CACvE,CACD,MAAM,cAAc0R,EAAavG,EAAQnL,EAAS,OAC9C,MAAM2R,EAAO,WACP,CAAE,cAAAC,EAAgB,OAAQ,OAAA/M,EAAQ,GAAGgN,CAAY,EAAG1G,EACpD2G,EAAuB,OAAOF,GAAkB,WAAYA,GAAA,YAAAA,EAAe,MAC3E,CAAE,mBAAAG,EAAqBtB,IAAiCzQ,GAAW,CAAA,EACnEgS,EAAkB,CAAA,EACxB,UAAWpL,KAAKuE,EAAO,UACnB6G,EAAgBpL,EAAE,MAAQA,EAAE,SAAS,IAAI,EAAIA,EAEjD,MAAMqL,EAAY9G,EAAO,UAAU,IAAKvE,IAAO,CAC3C,KAAMA,EAAE,MAAQA,EAAE,SAAS,KAC3B,WAAYA,EAAE,WACd,YAAaA,EAAE,WAClB,EAAC,EACF,UAAWvF,KAAW8J,EAAO,SACzB,KAAK,YAAY9J,EAAS,EAAK,EAEnC,QAAS6Q,EAAI,EAAGA,EAAIH,EAAoB,EAAEG,EAAG,CAOzC,MAAM7Q,GAAU8C,GANO,MAAM,KAAK,sBAAsBuN,EAAa,CACjE,GAAGG,EACH,cAAAD,EACA,UAAAK,EACA,SAAU,CAAC,GAAG,KAAK,QAAQ,CAC9B,EAAEjS,CAAO,GACqB,QAAQ,CAAC,IAAxB,YAAAmE,EAA2B,QAC3C,GAAI,CAAC9C,EACD,MAAM,IAAIH,EAAY,4CAA4C,EAEtE,GAAI,CAACG,EAAQ,cACT,OACJ,KAAM,CAAE,KAAAgE,EAAM,UAAWgI,CAAI,EAAKhM,EAAQ,cACpC4N,EAAK+C,EAAgB3M,CAAI,EAC/B,GAAK4J,GAOA,GAAI6C,GAAwBA,IAAyBzM,EAAM,CAC5D,MAAM8M,EAAU,0BAA0B,KAAK,UAAU9M,CAAI,CAAC,KAAK,KAAK,UAAUyM,CAAoB,CAAC,+BACvG,KAAK,YAAY,CAAE,KAAAH,EAAM,KAAAtM,EAAM,QAAA8M,CAAS,CAAA,EACxC,QACH,MAXQ,CACL,MAAMA,EAAU,0BAA0B,KAAK,UAAU9M,CAAI,CAAC,4BAA4B4M,EACrF,IAAKrL,GAAM,KAAK,UAAUA,EAAE,IAAI,CAAC,EACjC,KAAK,IAAI,CAAC,qBACf,KAAK,YAAY,CAAE,KAAA+K,EAAM,KAAAtM,EAAM,QAAA8M,CAAS,CAAA,EACxC,QACH,CAMD,IAAIC,EACJ,GAAI,CACAA,EAASpD,GAA4BC,CAAE,EAAI,MAAMA,EAAG,MAAM5B,CAAI,EAAIA,CACrE,OACM3M,EAAO,CACV,KAAK,YAAY,CACb,KAAAiR,EACA,KAAAtM,EACA,QAAS3E,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAClF,CAAiB,EACD,QACH,CAED,MAAM2R,EAAa,MAAMpD,EAAG,SAASmD,EAAQ,IAAI,EAC3CD,EAAUtL,EAAuB,KAAMwI,EAAyC,IAAKmB,EAAyD,EAAE,KAAK,KAAM6B,CAAU,EAE3K,GADA,KAAK,YAAY,CAAE,KAAAV,EAAM,KAAAtM,EAAM,QAAA8M,CAAS,CAAA,EACpCL,EACA,MACP,CACJ,CACD,MAAM,UAAUJ,EAAavG,EAAQnL,EAAS,SAC1C,MAAM2R,EAAO,OACP,CAAE,YAAAW,EAAc,OAAQ,OAAAzN,EAAQ,GAAGgN,CAAY,EAAG1G,EAClD2G,EAAuB,OAAOQ,GAAgB,YAAYnO,EAAAmO,GAAA,YAAAA,EAAa,WAAb,YAAAnO,EAAuB,MACjF,CAAE,mBAAA4N,EAAqBtB,IAAiCzQ,GAAW,CAAA,EACnEgS,EAAkB,CAAA,EACxB,UAAWpL,KAAKuE,EAAO,MACfvE,EAAE,OAAS,aACXoL,EAAgBpL,EAAE,SAAS,MAAQA,EAAE,SAAS,SAAS,IAAI,EAAIA,EAAE,UAGzE,MAAM2L,EAAQ,UAAWpH,EACrBA,EAAO,MAAM,IAAKqH,GAAMA,EAAE,OAAS,WAC/B,CACI,KAAM,WACN,SAAU,CACN,KAAMA,EAAE,SAAS,MAAQA,EAAE,SAAS,SAAS,KAC7C,WAAYA,EAAE,SAAS,WACvB,YAAaA,EAAE,SAAS,WAC3B,CACJ,EACCA,CAAC,EACL,OACN,UAAWnR,KAAW8J,EAAO,SACzB,KAAK,YAAY9J,EAAS,EAAK,EAEnC,QAAS6Q,EAAI,EAAGA,EAAIH,EAAoB,EAAEG,EAAG,CAOzC,MAAM7Q,GAAUiI,GANO,MAAM,KAAK,sBAAsBoI,EAAa,CACjE,GAAGG,EACH,YAAAS,EACA,MAAAC,EACA,SAAU,CAAC,GAAG,KAAK,QAAQ,CAC9B,EAAEvS,CAAO,GACqB,QAAQ,CAAC,IAAxB,YAAAsJ,EAA2B,QAC3C,GAAI,CAACjI,EACD,MAAM,IAAIH,EAAY,4CAA4C,EAEtE,GAAI,CAACG,EAAQ,WACT,OAEJ,UAAW2P,KAAa3P,EAAQ,WAAY,CACxC,GAAI2P,EAAU,OAAS,WACnB,SACJ,MAAMyB,EAAezB,EAAU,GACzB,CAAE,KAAA3L,EAAM,UAAWgI,CAAI,EAAK2D,EAAU,SACtC/B,EAAK+C,EAAgB3M,CAAI,EAC/B,GAAK4J,GAOA,GAAI6C,GAAwBA,IAAyBzM,EAAM,CAC5D,MAAM8M,EAAU,sBAAsB,KAAK,UAAU9M,CAAI,CAAC,KAAK,KAAK,UAAUyM,CAAoB,CAAC,+BACnG,KAAK,YAAY,CAAE,KAAAH,EAAM,aAAAc,EAAc,QAAAN,CAAS,CAAA,EAChD,QACH,MAXQ,CACL,MAAMA,EAAU,sBAAsB,KAAK,UAAU9M,CAAI,CAAC,4BAA4BkN,EACjF,IAAK3L,IAAM,KAAK,UAAUA,GAAE,SAAS,IAAI,CAAC,EAC1C,KAAK,IAAI,CAAC,qBACf,KAAK,YAAY,CAAE,KAAA+K,EAAM,aAAAc,EAAc,QAAAN,CAAS,CAAA,EAChD,QACH,CAMD,IAAIC,EACJ,GAAI,CACAA,EAASpD,GAA4BC,CAAE,EAAI,MAAMA,EAAG,MAAM5B,CAAI,EAAIA,CACrE,OACM3M,EAAO,CACV,MAAMyR,GAAUzR,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACrE,KAAK,YAAY,CAAE,KAAAiR,EAAM,aAAAc,EAAc,QAAAN,EAAS,CAAA,EAChD,QACH,CAED,MAAME,EAAa,MAAMpD,EAAG,SAASmD,EAAQ,IAAI,EAC3CD,EAAUtL,EAAuB,KAAMwI,EAAyC,IAAKmB,EAAyD,EAAE,KAAK,KAAM6B,CAAU,EAE3K,GADA,KAAK,YAAY,CAAE,KAAAV,EAAM,aAAAc,EAAc,QAAAN,CAAS,CAAA,EAC5CL,EACA,MAEP,CACJ,CAEJ,CACL,CACAxC,GAAiD,IAAI,QAAWC,GAAwD,IAAI,QAAWC,GAAuD,IAAI,QAAWC,GAA2C,IAAI,QAAWC,GAAkD,IAAI,QAAWC,GAAiD,IAAI,QAAWC,GAA0C,IAAI,QAAWC,GAAsC,IAAI,QAAWC,GAAwC,IAAI,QAAWC,GAAwC,IAAI,QAAWC,GAAuD,IAAI,QAAWM,GAA4C,IAAI,QAAWjB,EAA0C,IAAI,QAAWY,GAAgD,UAAyD,CACn4B,OAAOpJ,EAAuB,KAAMwI,EAAyC,IAAKa,EAA6C,EAAE,KAAK,IAAI,EAAE,SAAW,IAC3J,EAAGA,GAAgD,UAAyD,CACxG,IAAIgC,EAAI,KAAK,SAAS,OACtB,KAAOA,KAAM,GAAG,CACZ,MAAM7Q,EAAU,KAAK,SAAS6Q,CAAC,EAC/B,GAAIhD,GAAmB7N,CAAO,EAC1B,MAAO,CAAE,GAAGA,EAAS,QAASA,EAAQ,SAAW,KAExD,CACD,MAAM,IAAIH,EAAY,4EAA4E,CACtG,EAAGiP,GAAqD,UAA8D,SAClH,QAAS+B,EAAI,KAAK,SAAS,OAAS,EAAGA,GAAK,EAAGA,IAAK,CAChD,MAAM7Q,EAAU,KAAK,SAAS6Q,CAAC,EAC/B,GAAIhD,GAAmB7N,CAAO,IAAKA,GAAA,MAAAA,EAAS,eACxC,OAAOA,EAAQ,cAEnB,GAAI6N,GAAmB7N,CAAO,KAAK8C,EAAA9C,GAAA,YAAAA,EAAS,aAAT,MAAA8C,EAAqB,QACpD,OAAOmF,EAAAjI,EAAQ,WAAW,GAAG,EAAE,IAAxB,YAAAiI,EAA2B,QAEzC,CAEL,EAAG8G,GAA2D,UAAoE,CAC9H,QAAS8B,EAAI,KAAK,SAAS,OAAS,EAAGA,GAAK,EAAGA,IAAK,CAChD,MAAM7Q,EAAU,KAAK,SAAS6Q,CAAC,EAI/B,GAHI/C,GAAkB9N,CAAO,GAAKA,EAAQ,SAAW,MAGjD+N,GAAc/N,CAAO,GACrBA,EAAQ,SAAW,MACnB,KAAK,SAAS,KAAM2E,GAAM,OAAA,OAAAA,EAAE,OAAS,eACjC7B,EAAA6B,EAAE,aAAF,YAAA7B,EAAc,KAAMuO,GAAMA,EAAE,OAAS,YAAcA,EAAE,KAAOrR,EAAQ,eAAa,EACrF,OAAOA,EAAQ,OAEtB,CAEL,EAAGgP,GAAoD,UAA6D,CAChH,MAAMsC,EAAQ,CACV,kBAAmB,EACnB,cAAe,EACf,aAAc,CACtB,EACI,SAAW,CAAE,MAAAC,KAAW,KAAK,iBACrBA,IACAD,EAAM,mBAAqBC,EAAM,kBACjCD,EAAM,eAAiBC,EAAM,cAC7BD,EAAM,cAAgBC,EAAM,cAGpC,OAAOD,CACX,EAAGpC,GAA+C,SAAsDpF,EAAQ,CAC5G,GAAIA,EAAO,GAAK,MAAQA,EAAO,EAAI,EAC/B,MAAM,IAAIjK,EAAY,8HAA8H,CAE5J,EAAGsP,GAA4D,SAAmE6B,EAAY,CAC1I,OAAQ,OAAOA,GAAe,SAAWA,EACnCA,IAAe,OAAY,YACvB,KAAK,UAAUA,CAAU,CACvC,EC/fO,MAAMQ,WAA6BnC,EAA6B,CAEnE,OAAO,aAAagB,EAAavG,EAAQnL,EAAS,CAC9C,MAAM8S,EAAS,IAAID,GACbjS,EAAO,CACT,GAAGZ,EACH,QAAS,CAAE,GAAGA,GAAA,YAAAA,EAAS,QAAS,4BAA6B,cAAgB,CACzF,EACQ,OAAA8S,EAAO,KAAK,IAAMA,EAAO,cAAcpB,EAAavG,EAAQvK,CAAI,CAAC,EAC1DkS,CACV,CACD,OAAO,SAASpB,EAAavG,EAAQnL,EAAS,CAC1C,MAAM8S,EAAS,IAAID,GACbjS,EAAO,CACT,GAAGZ,EACH,QAAS,CAAE,GAAGA,GAAA,YAAAA,EAAS,QAAS,4BAA6B,UAAY,CACrF,EACQ,OAAA8S,EAAO,KAAK,IAAMA,EAAO,UAAUpB,EAAavG,EAAQvK,CAAI,CAAC,EACtDkS,CACV,CACD,YAAYzR,EAAS,CACjB,MAAM,YAAYA,CAAO,EACrB6N,GAAmB7N,CAAO,GAAKA,EAAQ,SACvC,KAAK,MAAM,UAAWA,EAAQ,OAAO,CAE5C,CACL,CC5BA,IAAIwF,EAAkE,SAAUH,EAAUC,EAAOtH,EAAMuH,EAAG,CACtG,GAAIvH,IAAS,KAAO,CAACuH,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAOD,GAAU,WAAaD,IAAaC,GAAS,CAACC,EAAI,CAACD,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,0EAA0E,EACjL,OAAOrH,IAAS,IAAMuH,EAAIvH,IAAS,IAAMuH,EAAE,KAAKF,CAAQ,EAAIE,EAAIA,EAAE,MAAQD,EAAM,IAAID,CAAQ,CAChG,EACID,GAAkE,SAAUC,EAAUC,EAAO7F,EAAOzB,EAAMuH,EAAG,CAC7G,GAAIvH,IAAS,IAAK,MAAM,IAAI,UAAU,gCAAgC,EACtE,GAAIA,IAAS,KAAO,CAACuH,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAOD,GAAU,WAAaD,IAAaC,GAAS,CAACC,EAAI,CAACD,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,yEAAyE,EAChL,OAAQrH,IAAS,IAAMuH,EAAE,KAAKF,EAAU5F,CAAK,EAAI8F,EAAIA,EAAE,MAAQ9F,EAAQ6F,EAAM,IAAID,EAAU5F,CAAK,EAAIA,CACxG,EACIiS,EAAiCC,GAAqDC,GAAoCC,GAAgCC,GAAkCC,GAIzL,MAAMC,WAA6B3C,EAA6B,CACnE,aAAc,CACV,MAAM,GAAG,SAAS,EAClBqC,EAAgC,IAAI,IAAI,EACxCC,GAAoD,IAAI,KAAM,MAAM,CACvE,CACD,IAAI,+BAAgC,CAChC,OAAOnM,EAAuB,KAAMmM,GAAqD,GAAG,CAC/F,CAQD,OAAO,mBAAmBnO,EAAQ,CAC9B,MAAMiO,EAAS,IAAIO,GACnB,OAAAP,EAAO,KAAK,IAAMA,EAAO,oBAAoBjO,CAAM,CAAC,EAC7CiO,CACV,CACD,OAAO,qBAAqBpB,EAAavG,EAAQnL,EAAS,CACtD,MAAM8S,EAAS,IAAIO,GACnB,OAAAP,EAAO,KAAK,IAAMA,EAAO,mBAAmBpB,EAAa,CAAE,GAAGvG,EAAQ,OAAQ,EAAI,EAAI,CAAE,GAAGnL,EAAS,QAAS,CAAE,GAAGA,GAAA,YAAAA,EAAS,QAAS,4BAA6B,SAAY,CAAA,CAAC,EACvK8S,CACV,CACD,MAAM,sBAAsBpB,EAAavG,EAAQnL,EAAS,OACtD,MAAMoK,EAASpK,GAAA,YAAAA,EAAS,OACpBoK,IACIA,EAAO,SACP,KAAK,WAAW,QACpBA,EAAO,iBAAiB,QAAS,IAAM,KAAK,WAAW,MAAK,CAAE,GAElEvD,EAAuB,KAAMkM,EAAiC,IAAKE,EAAkC,EAAE,KAAK,IAAI,EAChH,MAAMpO,EAAS,MAAM6M,EAAY,OAAO,CAAE,GAAGvG,EAAQ,OAAQ,EAAM,EAAE,CAAE,GAAGnL,EAAS,OAAQ,KAAK,WAAW,MAAM,CAAE,EACnH,KAAK,WAAU,EACf,gBAAiBmD,KAAS0B,EACtBgC,EAAuB,KAAMkM,EAAiC,IAAKG,EAA8B,EAAE,KAAK,KAAM/P,CAAK,EAEvH,IAAIgB,EAAAU,EAAO,WAAW,SAAlB,MAAAV,EAA0B,QAC1B,MAAM,IAAI/B,GAEd,OAAO,KAAK,mBAAmByE,EAAuB,KAAMkM,EAAiC,IAAKI,EAAgC,EAAE,KAAK,IAAI,CAAC,CACjJ,CACD,MAAM,oBAAoB3P,EAAgBxD,EAAS,OAC/C,MAAMoK,EAASpK,GAAA,YAAAA,EAAS,OACpBoK,IACIA,EAAO,SACP,KAAK,WAAW,QACpBA,EAAO,iBAAiB,QAAS,IAAM,KAAK,WAAW,MAAK,CAAE,GAElEvD,EAAuB,KAAMkM,EAAiC,IAAKE,EAAkC,EAAE,KAAK,IAAI,EAChH,KAAK,WAAU,EACf,MAAMpO,EAAStC,GAAO,mBAAmBiB,EAAgB,KAAK,UAAU,EACxE,IAAI8P,EACJ,gBAAiBnQ,KAAS0B,EAClByO,GAAUA,IAAWnQ,EAAM,IAE3B,KAAK,mBAAmB0D,EAAuB,KAAMkM,EAAiC,IAAKI,EAAgC,EAAE,KAAK,IAAI,CAAC,EAE3ItM,EAAuB,KAAMkM,EAAiC,IAAKG,EAA8B,EAAE,KAAK,KAAM/P,CAAK,EACnHmQ,EAASnQ,EAAM,GAEnB,IAAIgB,EAAAU,EAAO,WAAW,SAAlB,MAAAV,EAA0B,QAC1B,MAAM,IAAI/B,GAEd,OAAO,KAAK,mBAAmByE,EAAuB,KAAMkM,EAAiC,IAAKI,EAAgC,EAAE,KAAK,IAAI,CAAC,CACjJ,CACD,EAAEH,GAAsD,IAAI,QAAWD,EAAkC,IAAI,QAAWE,GAAqC,UAA8C,CACnM,KAAK,OAETxM,GAAuB,KAAMuM,GAAqD,OAAW,GAAG,CACxG,EAAOE,GAAiC,SAAwC/P,EAAO,WAC/E,GAAI,KAAK,MACL,OACJ,MAAMkO,EAAaxK,EAAuB,KAAMkM,EAAiC,IAAKK,EAA8C,EAAE,KAAK,KAAMjQ,CAAK,EACtJ,KAAK,MAAM,QAASA,EAAOkO,CAAU,EACrC,MAAMkC,GAAQjK,GAAAnF,EAAAhB,EAAM,QAAQ,CAAC,IAAf,YAAAgB,EAAkB,QAAlB,YAAAmF,EAAyB,QACjCkK,GAAW1G,EAAAuE,EAAW,QAAQ,CAAC,IAApB,YAAAvE,EAAuB,QACpCyG,GAAS,OAAQC,GAAA,YAAAA,EAAU,QAAS,cAAeA,GAAA,MAAAA,EAAU,UAC7D,KAAK,MAAM,UAAWD,EAAOC,EAAS,OAAO,CAEzD,EAAOL,GAAmC,UAA4C,CAC9E,GAAI,KAAK,MACL,MAAM,IAAIjS,EAAY,yCAAyC,EAEnE,MAAMsS,EAAW3M,EAAuB,KAAMmM,GAAqD,GAAG,EACtG,GAAI,CAACQ,EACD,MAAM,IAAItS,EAAY,0CAA0C,EAEpE,OAAAuF,GAAuB,KAAMuM,GAAqD,OAAW,GAAG,EACzFS,GAAuBD,CAAQ,CAC9C,EAAOJ,GAAiD,SAAwDjQ,EAAO,CAC/G,IAAIgB,EAAImF,EAAIwD,EACZ,IAAI0G,EAAW3M,EAAuB,KAAMmM,GAAqD,GAAG,EACpG,KAAM,CAAE,QAAAU,EAAS,GAAGC,CAAI,EAAKxQ,EACxBqQ,EAOD,OAAO,OAAOA,EAAUG,CAAI,EAN5BH,EAAW/M,GAAuB,KAAMuM,GAAqD,CACzF,GAAGW,EACH,QAAS,CAAE,CACd,EAAE,GAAG,EAKV,SAAW,CAAE,MAAAJ,EAAO,cAAAK,EAAe,MAAAhP,EAAO,SAAAiP,EAAW,KAAM,GAAGC,CAAK,IAAM3Q,EAAM,QAAS,CACpF,IAAI4Q,EAASP,EAAS,QAAQ5O,CAAK,EAInC,GAHKmP,IACDA,EAASP,EAAS,QAAQ5O,CAAK,EAAI,CAAE,cAAAgP,EAAe,MAAAhP,EAAO,QAAS,CAAE,EAAE,SAAAiP,EAAU,GAAGC,CAAK,GAE1FD,EACA,GAAI,CAACE,EAAO,SACRA,EAAO,SAAW,OAAO,OAAO,CAAE,EAAEF,CAAQ,MAE3C,CACD,KAAM,CAAE,QAAA1B,EAAS,GAAGwB,CAAI,EAAKE,EAC7B,OAAO,OAAOE,EAAO,SAAUJ,CAAI,EAC/BxB,KACChO,EAAK4P,EAAO,UAAU,UAAY5P,EAAG,QAAU,CAAA,GAChD4P,EAAO,SAAS,QAAQ,KAAK,GAAG5B,CAAO,EAE9C,CAKL,GAHIyB,IACAG,EAAO,cAAgBH,GAC3B,OAAO,OAAOG,EAAQD,CAAK,EACvB,CAACP,EACD,SACJ,KAAM,CAAE,QAAApB,EAAS,cAAAP,EAAe,KAAAD,EAAM,WAAAqC,EAAY,GAAGL,CAAM,EAAGJ,EAmB9D,GAlBA,OAAO,OAAOQ,EAAO,QAASJ,CAAI,EAC9BxB,IACA4B,EAAO,QAAQ,SAAWA,EAAO,QAAQ,SAAW,IAAM5B,GAC1DR,IACAoC,EAAO,QAAQ,KAAOpC,GACtBC,IACKmC,EAAO,QAAQ,eAIZnC,EAAc,OACdmC,EAAO,QAAQ,cAAc,KAAOnC,EAAc,MAClDA,EAAc,aACbtI,EAAKyK,EAAO,QAAQ,eAAe,YAAczK,EAAG,UAAY,IACjEyK,EAAO,QAAQ,cAAc,WAAanC,EAAc,YAP5DmC,EAAO,QAAQ,cAAgBnC,GAWnCoC,EAAY,CACPD,EAAO,QAAQ,aAChBA,EAAO,QAAQ,WAAa,IAChC,SAAW,CAAE,MAAAnP,EAAO,GAAA+I,EAAI,KAAAjI,EAAM,SAAUuJ,EAAI,GAAG0E,CAAM,IAAIK,EAAY,CACjE,MAAMhD,GAAclE,EAAKiH,EAAO,QAAQ,YAAYnP,CAAK,IAAMkI,EAAGlI,CAAK,EAAI,CAAA,GAC3E,OAAO,OAAOoM,EAAW2C,CAAI,EACzBhG,IACAqD,EAAU,GAAKrD,GACfjI,IACAsL,EAAU,KAAOtL,GACjBuJ,IACA+B,EAAU,WAAaA,EAAU,SAAW,CAAE,UAAW,EAAE,IAC3D/B,GAAA,MAAAA,EAAI,OACJ+B,EAAU,SAAS,KAAO/B,EAAG,MAC7BA,GAAA,MAAAA,EAAI,YACJ+B,EAAU,SAAS,WAAa/B,EAAG,UAC1C,CACJ,CACJ,CACD,OAAOuE,CACf,EAAO,OAAO,iBAAkB,CACxB,MAAMS,EAAY,CAAA,EACZC,EAAY,CAAA,EAClB,IAAI5Q,EAAO,GACX,YAAK,GAAG,QAAUH,GAAU,CACxB,MAAM2B,EAASoP,EAAU,QACrBpP,EACAA,EAAO3B,CAAK,EAGZ8Q,EAAU,KAAK9Q,CAAK,CAEpC,CAAS,EACD,KAAK,GAAG,MAAO,IAAM,CACjBG,EAAO,GACP,UAAWwB,KAAUoP,EACjBpP,EAAO,MAAS,EAEpBoP,EAAU,OAAS,CAC/B,CAAS,EACM,CACH,KAAM,SACGD,EAAU,OAOR,CAAE,MADKA,EAAU,QACD,KAAM,EAAK,EAN1B3Q,EACO,CAAE,MAAO,OAAW,KAAM,EAAI,EAElC,IAAI,QAASiE,GAAY2M,EAAU,KAAK3M,CAAO,CAAC,EAAE,KAAMpE,GAAWA,EAAQ,CAAE,MAAOA,EAAO,KAAM,IAAU,CAAE,MAAO,OAAW,KAAM,EAAM,CAAC,CAKvK,CACK,CACD,kBAAmB,CAEf,OADe,IAAIZ,GAAO,KAAK,OAAO,aAAa,EAAE,KAAK,IAAI,EAAG,KAAK,UAAU,EAClE,kBACjB,CACL,CACA,SAASkR,GAAuBD,EAAU,CACtC,KAAM,CAAE,GAAA7F,EAAI,QAAA+F,EAAS,QAAAS,EAAS,MAAAC,EAAO,mBAAAC,EAAoB,GAAGV,CAAM,EAAGH,EACrE,MAAO,CACH,GAAGG,EACH,GAAAhG,EACA,QAAS+F,EAAQ,IAAI,CAAC,CAAE,QAAArS,EAAS,cAAAuS,EAAe,MAAAhP,EAAO,SAAAiP,EAAU,GAAGS,KAAiB,CACjF,GAAI,CAACV,EACD,MAAM,IAAI1S,EAAY,oCAAoC0D,CAAK,EAAE,EACrE,KAAM,CAAE,QAAAuN,EAAU,KAAM,cAAAP,EAAe,WAAAoC,EAAY,GAAGO,CAAa,EAAGlT,EAChEsQ,EAAOtQ,EAAQ,KACrB,GAAI,CAACsQ,EACD,MAAM,IAAIzQ,EAAY,2BAA2B0D,CAAK,EAAE,EAC5D,GAAIgN,EAAe,CACf,KAAM,CAAE,UAAWvE,EAAM,KAAAhI,CAAI,EAAKuM,EAClC,GAAIvE,GAAQ,KACR,MAAM,IAAInM,EAAY,8CAA8C0D,CAAK,EAAE,EAC/E,GAAI,CAACS,EACD,MAAM,IAAInE,EAAY,yCAAyC0D,CAAK,EAAE,EAC1E,MAAO,CACH,GAAG0P,EACH,QAAS,CAAE,QAAAnC,EAAS,cAAe,CAAE,UAAW9E,EAAM,KAAAhI,CAAM,EAAE,KAAAsM,CAAM,EACpE,cAAAiC,EACA,MAAAhP,EACA,SAAAiP,CACpB,CACa,CACD,OAAIG,EACO,CACH,GAAGM,EACH,MAAA1P,EACA,cAAAgP,EACA,SAAAC,EACA,QAAS,CACL,GAAGU,EACH,KAAA5C,EACA,QAAAQ,EACA,WAAY6B,EAAW,IAAI,CAAChD,EAAWkB,IAAM,CACzC,KAAM,CAAE,SAAUjD,EAAI,KAAAvJ,EAAM,GAAAiI,EAAI,GAAG6G,CAAU,EAAGxD,EAC1C,CAAE,UAAW3D,EAAM,KAAAhI,EAAM,GAAGoP,CAAQ,EAAGxF,GAAM,GACnD,GAAItB,GAAM,KACN,MAAM,IAAIzM,EAAY,mBAAmB0D,CAAK,gBAAgBsN,CAAC;AAAA,EAASxN,GAAI8O,CAAQ,CAAC,EAAE,EAC3F,GAAI9N,GAAQ,KACR,MAAM,IAAIxE,EAAY,mBAAmB0D,CAAK,gBAAgBsN,CAAC;AAAA,EAAWxN,GAAI8O,CAAQ,CAAC,EAAE,EAC7F,GAAInO,GAAQ,KACR,MAAM,IAAInE,EAAY,mBAAmB0D,CAAK,gBAAgBsN,CAAC;AAAA,EAAoBxN,GAAI8O,CAAQ,CAAC,EAAE,EACtG,GAAInG,GAAQ,KACR,MAAM,IAAInM,EAAY,mBAAmB0D,CAAK,gBAAgBsN,CAAC;AAAA,EAAyBxN,GAAI8O,CAAQ,CAAC,EAAE,EAC3G,MAAO,CAAE,GAAGgB,EAAU,GAAA7G,EAAI,KAAAjI,EAAM,SAAU,CAAE,GAAG+O,EAAQ,KAAApP,EAAM,UAAWgI,CAAM,CAAA,CAC1G,CAAyB,CACJ,CACrB,EAEmB,CACH,GAAGiH,EACH,QAAS,CAAE,GAAGC,EAAa,QAAApC,EAAS,KAAAR,CAAM,EAC1C,cAAAiC,EACA,MAAAhP,EACA,SAAAiP,CAChB,CACA,CAAS,EACD,QAAAM,EACA,MAAAC,EACA,OAAQ,kBACR,GAAIC,EAAqB,CAAE,mBAAAA,CAAkB,EAAK,CAAE,CAC5D,CACA,CACA,SAAS3P,GAAIsB,EAAG,CACZ,OAAO,KAAK,UAAUA,CAAC,CAC3B,CC/RO,MAAM0O,WAAsCrB,EAAqB,CACpE,OAAO,mBAAmBxO,EAAQ,CAC9B,MAAMiO,EAAS,IAAI4B,GACnB,OAAA5B,EAAO,KAAK,IAAMA,EAAO,oBAAoBjO,CAAM,CAAC,EAC7CiO,CACV,CAED,OAAO,aAAapB,EAAavG,EAAQnL,EAAS,CAC9C,MAAM8S,EAAS,IAAI4B,GACb9T,EAAO,CACT,GAAGZ,EACH,QAAS,CAAE,GAAGA,GAAA,YAAAA,EAAS,QAAS,4BAA6B,cAAgB,CACzF,EACQ,OAAA8S,EAAO,KAAK,IAAMA,EAAO,cAAcpB,EAAavG,EAAQvK,CAAI,CAAC,EAC1DkS,CACV,CACD,OAAO,SAASpB,EAAavG,EAAQnL,EAAS,CAC1C,MAAM8S,EAAS,IAAI4B,GACb9T,EAAO,CACT,GAAGZ,EACH,QAAS,CAAE,GAAGA,GAAA,YAAAA,EAAS,QAAS,4BAA6B,UAAY,CACrF,EACQ,OAAA8S,EAAO,KAAK,IAAMA,EAAO,UAAUpB,EAAavG,EAAQvK,CAAI,CAAC,EACtDkS,CACV,CACL,QCjBO,cAA0BlF,CAAY,CACzC,aAAa1N,EAAMF,EAAS,CACxB,OAAIE,EAAK,OACEwU,GAA8B,aAAa,KAAK,QAAQ,KAAK,YAAaxU,EAAMF,CAAO,EAE3F6S,GAAqB,aAAa,KAAK,QAAQ,KAAK,YAAa3S,EAAMF,CAAO,CACxF,CACD,SAASE,EAAMF,EAAS,CACpB,OAAIE,EAAK,OACEwU,GAA8B,SAAS,KAAK,QAAQ,KAAK,YAAaxU,EAAMF,CAAO,EAEvF6S,GAAqB,SAAS,KAAK,QAAQ,KAAK,YAAa3S,EAAMF,CAAO,CACpF,CAID,OAAOE,EAAMF,EAAS,CAClB,OAAOqT,GAAqB,qBAAqB,KAAK,QAAQ,KAAK,YAAanT,EAAMF,CAAO,CAChG,CACL,ECzBO,MAAM+N,WAAaH,CAAY,CAClC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,YAAc,IAAIE,GAA2B,KAAK,OAAO,CACjE,CACL,EACC,SAAUC,EAAM,CACbA,EAAK,YAAcD,EACvB,GAAGC,KAASA,GAAO,CAAA,EAAG,SCNf,cAAoBH,CAAY,CAInC,SAAS+G,EAAUC,EAAWpG,EAAQxO,EAAS,CAC3C,OAAO,KAAK,QAAQ,IAAI,YAAY2U,CAAQ,aAAaC,CAAS,UAAUpG,CAAM,GAAI,CAClF,GAAGxO,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACD,KAAK2U,EAAUC,EAAWnM,EAAQ,CAAA,EAAIzI,EAAS,CAC3C,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAKkM,EAAUC,EAAW,CAAA,EAAInM,CAAK,EAE5C,KAAK,QAAQ,WAAW,YAAYkM,CAAQ,aAAaC,CAAS,SAAUC,GAAkB,CACjG,MAAApM,EACA,GAAGzI,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,EACO,MAAM6U,WAAyBpH,EAAW,CACjD,EACC,SAAUiB,EAAO,CACdA,EAAM,iBAAmBoG,EAC7B,GAAGpG,KAAUA,GAAQ,CAAA,EAAG,ECxBjB,MAAMqG,WAAiBnH,CAAY,CACtC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,MAAQ,IAAIiB,GAAe,KAAK,OAAO,CAC/C,CAID,OAAO8F,EAAUzU,EAAMF,EAAS,CAC5B,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,YAAa,CACtD,KAAAzU,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,SAAS2U,EAAUC,EAAW5U,EAAS,CACnC,OAAO,KAAK,QAAQ,IAAI,YAAY2U,CAAQ,aAAaC,CAAS,GAAI,CAClE,GAAG5U,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,OAAO2U,EAAUC,EAAW1U,EAAMF,EAAS,CACvC,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,aAAaC,CAAS,GAAI,CACnE,KAAA1U,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACD,KAAK2U,EAAUlM,EAAQ,CAAA,EAAIzI,EAAS,CAChC,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAKkM,EAAU,CAAE,EAAElM,CAAK,EAEjC,KAAK,QAAQ,WAAW,YAAYkM,CAAQ,YAAaK,GAAoB,CAChF,MAAAvM,EACA,GAAGzI,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,CACO,MAAMgV,WAA2BvH,EAAW,CACnD,EACC,SAAUsH,EAAU,CACjBA,EAAS,mBAAqBE,GAC9BF,EAAS,MAAQlG,GACjBkG,EAAS,iBAAmBD,EAChC,GAAGC,KAAaA,GAAW,CAAA,EAAG,ECpDvB,MAAMG,WAActH,CAAY,CAInC,SAAS+G,EAAUQ,EAAOC,EAAQpV,EAAS,CACvC,OAAO,KAAK,QAAQ,IAAI,YAAY2U,CAAQ,SAASQ,CAAK,UAAUC,CAAM,GAAI,CAC1E,GAAGpV,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACD,KAAK2U,EAAUQ,EAAO1M,EAAQ,CAAA,EAAIzI,EAAS,CACvC,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAKkM,EAAUQ,EAAO,CAAA,EAAI1M,CAAK,EAExC,KAAK,QAAQ,WAAW,YAAYkM,CAAQ,SAASQ,CAAK,SAAUE,GAAc,CACrF,MAAA5M,EACA,GAAGzI,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,CACO,MAAMqV,WAAqB5H,EAAW,CAC7C,EACC,SAAUyH,EAAO,CACdA,EAAM,aAAeI,EACzB,GAAGJ,KAAUA,GAAQ,CAAA,EAAG,ECxBjB,MAAMK,WAAa3H,CAAY,CAClC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,MAAQ,IAAI4H,GAAe,KAAK,OAAO,CAC/C,CAID,OAAOb,EAAUzU,EAAMF,EAAS,CAC5B,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,QAAS,CAClD,KAAAzU,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,SAAS2U,EAAUQ,EAAOnV,EAAS,CAC/B,OAAO,KAAK,QAAQ,IAAI,YAAY2U,CAAQ,SAASQ,CAAK,GAAI,CAC1D,GAAGnV,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,OAAO2U,EAAUQ,EAAOjV,EAAMF,EAAS,CACnC,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,SAASQ,CAAK,GAAI,CAC3D,KAAAjV,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACD,KAAK2U,EAAUlM,EAAQ,CAAA,EAAIzI,EAAS,CAChC,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAKkM,EAAU,CAAE,EAAElM,CAAK,EAEjC,KAAK,QAAQ,WAAW,YAAYkM,CAAQ,QAASc,GAAU,CAClE,MAAAhN,EACA,GAAGzI,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,OAAO2U,EAAUQ,EAAOnV,EAAS,CAC7B,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,SAASQ,CAAK,UAAW,CAClE,GAAGnV,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAOD,kBAAkB2U,EAAUQ,EAAOjV,EAAMF,EAAS,CAC9C,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,SAASQ,CAAK,uBAAwB,CAC/E,KAAAjV,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,CACO,MAAMyV,WAAiBhI,EAAW,CACzC,EACC,SAAU8H,EAAM,CACbA,EAAK,SAAWG,GAChBH,EAAK,MAAQC,GACbD,EAAK,aAAeD,EACxB,GAAGC,KAASA,GAAO,CAAA,EAAG,EC1Ef,MAAMI,WAAgB/H,CAAY,CACrC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,IAAIgI,GAAa,KAAK,OAAO,EACzC,KAAK,SAAW,IAAIC,GAAqB,KAAK,OAAO,CACxD,CACD,OAAO3V,EAAO,CAAE,EAAEF,EAAS,CACvB,OAAIuL,EAAiBrL,CAAI,EACd,KAAK,OAAO,CAAE,EAAEA,CAAI,EAExB,KAAK,QAAQ,KAAK,WAAY,CACjC,KAAAA,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,SAAS2U,EAAU3U,EAAS,CACxB,OAAO,KAAK,QAAQ,IAAI,YAAY2U,CAAQ,GAAI,CAC5C,GAAG3U,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,OAAO2U,EAAUzU,EAAMF,EAAS,CAC5B,OAAO,KAAK,QAAQ,KAAK,YAAY2U,CAAQ,GAAI,CAC7C,KAAAzU,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,IAAI2U,EAAU3U,EAAS,CACnB,OAAO,KAAK,QAAQ,OAAO,YAAY2U,CAAQ,GAAI,CAC/C,GAAG3U,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CAID,aAAaE,EAAMF,EAAS,CACxB,OAAO,KAAK,QAAQ,KAAK,gBAAiB,CACtC,KAAAE,EACA,GAAGF,EACH,QAAS,CAAE,cAAe,gBAAiB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CAC5E,CAAS,CACJ,CACL,EACC,SAAU2V,EAAS,CAChBA,EAAQ,KAAOC,GACfD,EAAQ,SAAWD,GACnBC,EAAQ,SAAWE,GACnBF,EAAQ,mBAAqBV,EACjC,GAAGU,KAAYA,GAAU,CAAA,EAAG,EC5DrB,MAAMG,WAAalI,CAAY,CAClC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,IAAImI,GAAa,KAAK,OAAO,EACzC,KAAK,WAAa,IAAIC,GAAyB,KAAK,OAAO,EAC3D,KAAK,QAAU,IAAIC,GAAmB,KAAK,OAAO,CACrD,CACL,EACC,SAAUH,EAAM,CACbA,EAAK,KAAOC,GACZD,EAAK,WAAaE,GAClBF,EAAK,eAAiB/G,GACtB+G,EAAK,QAAUG,EACnB,GAAGH,KAASA,GAAO,CAAA,EAAG,EChBf,MAAMjI,WAAoBD,CAAY,CACzC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,eAAgB,CAAE,KAAAE,EAAM,GAAGF,EAAS,OAAQE,EAAK,QAAU,EAAO,CAAA,CAC9F,CACL,CAEG2N,KAAgBA,GAAc,CAAA,GCN1B,MAAMqI,WAAmBtI,CAAY,CAIxC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,cAAe,CAAE,KAAAE,EAAM,GAAGF,CAAO,CAAE,CAC/D,CACL,CAEGkW,KAAeA,GAAa,CAAA,GCHxB,MAAMxH,WAAcd,CAAY,CAcnC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,SAAUkG,GAA4B,CAAE,KAAAhG,EAAM,GAAGF,CAAS,CAAA,CAAC,CACvF,CAID,SAASwO,EAAQxO,EAAS,CACtB,OAAO,KAAK,QAAQ,IAAI,UAAUwO,CAAM,GAAIxO,CAAO,CACtD,CACD,KAAKyI,EAAQ,CAAE,EAAEzI,EAAS,CACtB,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAK,CAAE,EAAEA,CAAK,EAEvB,KAAK,QAAQ,WAAW,SAAU0N,GAAiB,CAAE,MAAA1N,EAAO,GAAGzI,CAAO,CAAE,CAClF,CAID,IAAIwO,EAAQxO,EAAS,CACjB,OAAO,KAAK,QAAQ,OAAO,UAAUwO,CAAM,GAAIxO,CAAO,CACzD,CAID,QAAQwO,EAAQxO,EAAS,CACrB,OAAO,KAAK,QAAQ,IAAI,UAAUwO,CAAM,WAAY,CAAE,GAAGxO,EAAS,iBAAkB,EAAM,CAAA,CAC7F,CAMD,gBAAgBwO,EAAQxO,EAAS,CAC7B,OAAO,KAAK,QAAQ,IAAI,UAAUwO,CAAM,WAAY,CAChD,GAAGxO,EACH,QAAS,CAAE,OAAQ,mBAAoB,GAAGA,GAAA,YAAAA,EAAS,OAAS,CACxE,CAAS,CACJ,CAID,MAAM,kBAAkB2N,EAAI,CAAE,aAAAyI,EAAe,IAAM,QAAAC,EAAU,GAAK,GAAK,GAAM,EAAG,GAAI,CAChF,MAAMC,EAAkB,IAAI,IAAI,CAAC,YAAa,QAAS,SAAS,CAAC,EAC3DC,EAAQ,KAAK,MACnB,IAAIjQ,EAAO,MAAM,KAAK,SAASqH,CAAE,EACjC,KAAO,CAACrH,EAAK,QAAU,CAACgQ,EAAgB,IAAIhQ,EAAK,MAAM,GAGnD,GAFA,MAAMqE,GAAMyL,CAAY,EACxB9P,EAAO,MAAM,KAAK,SAASqH,CAAE,EACzB,KAAK,MAAQ4I,EAAQF,EACrB,MAAM,IAAI/T,GAA0B,CAChC,QAAS,iCAAiCqL,CAAE,+BAA+B0I,CAAO,gBACtG,CAAiB,EAGT,OAAO/P,CACV,CACL,CAIO,MAAM6P,WAAwB3N,EAAK,CAC1C,EACC,SAAUkG,EAAO,CACdA,EAAM,gBAAkB8H,EAC5B,GAAG9H,KAAUA,GAAQ,CAAA,EAAG,ECjFjB,MAAM+H,WAAa7I,CAAY,CAUlC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,oBAAqB,CAAE,KAAAE,EAAM,GAAGF,CAAO,CAAE,CACrE,CAMD,SAAS0W,EAAiB1W,EAAS,CAC/B,OAAO,KAAK,QAAQ,IAAI,qBAAqB0W,CAAe,GAAI1W,CAAO,CAC1E,CACD,KAAKyI,EAAQ,CAAE,EAAEzI,EAAS,CACtB,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,KAAK,CAAE,EAAEA,CAAK,EAEvB,KAAK,QAAQ,WAAW,oBAAqBkO,GAAoB,CAAE,MAAAlO,EAAO,GAAGzI,CAAO,CAAE,CAChG,CAID,OAAO0W,EAAiB1W,EAAS,CAC7B,OAAO,KAAK,QAAQ,KAAK,qBAAqB0W,CAAe,UAAW1W,CAAO,CAClF,CACD,WAAW0W,EAAiBjO,EAAQ,CAAA,EAAIzI,EAAS,CAC7C,OAAIuL,EAAiB9C,CAAK,EACf,KAAK,WAAWiO,EAAiB,CAAE,EAAEjO,CAAK,EAE9C,KAAK,QAAQ,WAAW,qBAAqBiO,CAAe,UAAWE,GAAyB,CACnG,MAAAnO,EACA,GAAGzI,CACf,CAAS,CACJ,CACL,CACO,MAAM2W,WAA2BlJ,EAAW,CACnD,CACO,MAAMmJ,WAAgCnJ,EAAW,CACxD,EACC,SAAUgJ,EAAM,CACbA,EAAK,mBAAqBI,GAC1BJ,EAAK,wBAA0BK,EACnC,GAAGL,KAASA,GAAO,CAAA,EAAG,ECpDf,MAAMM,WAAmBnJ,CAAY,CACxC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,IAAIoJ,GAAa,KAAK,OAAO,CAC5C,CACL,EACC,SAAUD,EAAY,CACnBA,EAAW,KAAOC,GAClBD,EAAW,mBAAqBF,GAChCE,EAAW,wBAA0BD,EACzC,GAAGC,KAAeA,GAAa,CAAA,EAAG,ECV3B,MAAME,WAAerJ,CAAY,CAIpC,gBAAgB1N,EAAMF,EAAS,CAC3B,OAAO,KAAK,QAAQ,KAAK,qBAAsBkG,GAA4B,CAAE,KAAAhG,EAAM,GAAGF,CAAS,CAAA,CAAC,CACnG,CAID,KAAKE,EAAMF,EAAS,CAChB,OAAO,KAAK,QAAQ,KAAK,gBAAiBkG,GAA4B,CAAE,KAAAhG,EAAM,GAAGF,CAAS,CAAA,CAAC,CAC9F,CAID,SAASE,EAAMF,EAAS,CACpB,OAAO,KAAK,QAAQ,KAAK,sBAAuB,CAAE,KAAAE,EAAM,GAAGF,CAAO,CAAE,CACvE,CACL,CAEGiX,KAAWA,GAAS,CAAA,GCpBhB,MAAMC,WAAetJ,CAAY,CAKpC,SAASwG,EAAOpU,EAAS,CACrB,OAAO,KAAK,QAAQ,IAAI,WAAWoU,CAAK,GAAIpU,CAAO,CACtD,CAKD,KAAKA,EAAS,CACV,OAAO,KAAK,QAAQ,WAAW,UAAWmX,GAAYnX,CAAO,CAChE,CAKD,IAAIoU,EAAOpU,EAAS,CAChB,OAAO,KAAK,QAAQ,OAAO,WAAWoU,CAAK,GAAIpU,CAAO,CACzD,CACL,CAIO,MAAMmX,WAAmB3O,EAAK,CACrC,EACC,SAAU0O,EAAQ,CACfA,EAAO,WAAaE,EACxB,GAAGF,KAAWA,GAAS,CAAA,EAAG,EChCnB,MAAMG,WAAoBzJ,CAAY,CAIzC,OAAO1N,EAAMF,EAAS,CAClB,OAAO,KAAK,QAAQ,KAAK,eAAgB,CAAE,KAAAE,EAAM,GAAGF,CAAO,CAAE,CAChE,CACL,CAEGqX,KAAgBA,GAAc,CAAA,GCVjC,IAAIlT,GAOG,MAAMmT,UAAeC,EAAe,CAevC,YAAY,CAAE,QAAA1P,EAAU2P,GAAa,iBAAiB,EAAG,OAAAC,EAASD,GAAa,gBAAgB,EAAG,aAAAE,EAAeF,GAAa,eAAe,GAAK,KAAM,GAAG5W,CAAM,EAAG,GAAI,CACpK,GAAI6W,IAAW,OACX,MAAM,IAAIE,EAAmB,oLAAoL,EAErN,MAAM3X,EAAU,CACZ,OAAAyX,EACA,aAAAC,EACA,GAAG9W,EACH,QAASiH,GAAW,2BAChC,EACQ,GAAI,CAAC7H,EAAQ,yBAA2B4X,KACpC,MAAM,IAAID,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAob,EAErd,MAAM,CACF,QAAS3X,EAAQ,QACjB,QAASA,EAAQ,SAAW,IAC5B,UAAWA,EAAQ,UACnB,WAAYA,EAAQ,WACpB,MAAOA,EAAQ,KAC3B,CAAS,EACD,KAAK,YAAc,IAAI6X,GAAgB,IAAI,EAC3C,KAAK,KAAO,IAAIC,GAAS,IAAI,EAC7B,KAAK,WAAa,IAAIC,GAAe,IAAI,EACzC,KAAK,MAAQ,IAAIC,GAAU,IAAI,EAC/B,KAAK,OAAS,IAAIC,GAAW,IAAI,EACjC,KAAK,MAAQ,IAAIC,GAAU,IAAI,EAC/B,KAAK,YAAc,IAAIC,GAAgB,IAAI,EAC3C,KAAK,OAAS,IAAIC,GAAW,IAAI,EACjC,KAAK,WAAa,IAAIC,GAAe,IAAI,EACzC,KAAK,KAAO,IAAIC,GAAS,IAAI,EAC7B,KAAK,SAAWtY,EAChB,KAAK,OAASyX,EACd,KAAK,aAAeC,CACvB,CACD,cAAe,CACX,OAAO,KAAK,SAAS,YACxB,CACD,eAAe9W,EAAM,CACjB,MAAO,CACH,GAAG,MAAM,eAAeA,CAAI,EAC5B,sBAAuB,KAAK,aAC5B,GAAG,KAAK,SAAS,cAC7B,CACK,CACD,YAAYA,EAAM,CACd,MAAO,CAAE,cAAe,UAAU,KAAK,MAAM,GAChD,CACL,CACAuD,GAAKmT,EACLA,EAAO,OAASnT,GAChBmT,EAAO,YAAcK,EACrBL,EAAO,SAAWiB,EAClBjB,EAAO,mBAAqBkB,GAC5BlB,EAAO,0BAA4BmB,GACnCnB,EAAO,kBAAoBoB,GAC3BpB,EAAO,cAAgBqB,GACvBrB,EAAO,cAAgBsB,GACvBtB,EAAO,eAAiBuB,GACxBvB,EAAO,gBAAkBwB,GACzBxB,EAAO,oBAAsByB,GAC7BzB,EAAO,oBAAsB0B,GAC7B1B,EAAO,sBAAwB2B,GAC/B3B,EAAO,yBAA2B4B,GAIjC,SAAU5B,EAAQ,CAEfA,EAAO,OAAS6B,GAChB7B,EAAO,aAAe8B,GACtB9B,EAAO,KAAO+B,GACd/B,EAAO,WAAagC,GACpBhC,EAAO,YAAcO,GACrBP,EAAO,KAAOQ,GACdR,EAAO,WAAaS,GACpBT,EAAO,MAAQU,GACfV,EAAO,gBAAkBiC,GACzBjC,EAAO,OAASW,GAChBX,EAAO,MAAQY,GACfZ,EAAO,YAAca,GACrBb,EAAO,OAASc,GAChBd,EAAO,WAAakC,GACpBlC,EAAO,WAAae,GACpBf,EAAO,KAAOgB,EAClB,EAAGhB,IAAWA,EAAS,CAAA,EAAG,EC5FnB,SAASmC,GAAKjO,EAAc,CACjC,OAAOA,EAAI,KAAK,CAAE,eAAgB,OAAO,YAAa,CACxD,CAEA,eAAsBkO,GAAY1Z,EAAwB,CACxD,KAAM,CAAE,MAAOxB,CAAW,EAAA,MAAM,QAAA,QAAA,EAAA,KAAA,IAAAmb,EAAA,EAE1Blb,EAAK,MAAMD,IAEV,MAAA,CACL,QAASwB,EAAQ,OACjB,SAAUA,EAAQ,QAClB,aAAcA,EAAQ,aACtB,QAASA,EAAQ,QACjB,YAAavB,EAAG,KAAKuB,EAAQ,UAAU,EACvC,eAAgBvB,EAAG,KAAKuB,EAAQ,cAAc,EAC9C,YAAa,IAAA,CAEjB,CAEO,MAAM3B,GAAM,CACjB,eAAgB,OAChB,gBAAiB,MACnB,EAEO,SAASub,GAAY5Z,EAA0B,SAC7C,MAAA,CACL,QAASA,EAAQ,UAAY3B,GAAI,gBACjC,OAAQ2B,EAAQ,SAAW3B,GAAI,gBAAkB,GACjD,aAAc2B,EAAQ,aACtB,QAASA,EAAQ,QACjB,WAAYA,EAAQ,YACpB,cAAcmE,EAAAnE,EAAQ,eAAR,YAAAmE,EAAsB,OACpC,gBAAgBmF,EAAAtJ,EAAQ,iBAAR,YAAAsJ,EAAwB,OACxC,wBAAyB,EAAA,CAE7B,CAEO,SAAS5K,GAAYsB,EAA0B,CACpD,OAAO,IAAIsX,EAAOsC,GAAY5Z,CAAO,CAAC,CACxC,CAEO,SAAS6Z,GAAQC,EAAgB,CACtC,OAAOA,EACJ,WAAW,wBAAyB,kBAAkB,EACtD,WAAW,eAAgB,mBAAmB,EAC9C,WAAW,YAAa,iBAAiB,EACzC,WAAW,yBAA0B,0BAA0B,CACpE,CAEO,SAASC,GAAYD,EAAgB,CAG1C,OAFoBA,EAAO,SAAS,MAAM,EAIpCA,EAAO,MAAM;AAAA,CAAI,EAAE,OAAO1W,GAAQA,EAAK,WAAW,KAAK,GAAKA,EAAK,WAAW,KAAK,CAAC,EAAE,IAAIA,GAAQyW,GAAQzW,EAAK,MAAM,CAAC,CAAC,CAAC,EACtH0W,EAAO,MAAM;AAAA,CAAI,EAAE,IAAID,EAAO,GAClC,KAAK;AAAA,CAAI,CACb,CAEO,SAASG,GAAoBF,EAAgB,CAClD,OAAOA,EAAO,MAAM;AAAA,CAAI,EAAE,IAAI,CAAChZ,EAAO8D,KAAWA,EAAQ,OAAS,QAAU9D,CAAK,EAAE,KAAK;AAAA,CAAI,CAC9F,kNCjEAmZ,GAAe,SAAY,CACnB,MAAAxb,EAAK,MAAMM,KAEjB,MAAMmb,CAAS,CAIb,YAAYC,EAAyB,CAHrCC,GAAA,cAIM,OAAOD,GAAU,SACd,KAAA,MAAQ1b,EAAG,UAAU,YAAY,KAAK,UAAU0b,CAAK,CAAC,GAAG,EAE9D,KAAK,MAAQA,CACjB,CAEA,OAAO,MAAMtZ,EAAmB,CAC9B,OAAO,IAAIqZ,EAASzb,EAAG,UAAU,kBAAkB,KAAK,UAAU,OAAOoC,CAAG,CAAC,CAAC,GAAG,CAAC,CACpF,CAEA,aAAa,OAAOA,EAAmB,CACrC,OAAO,IAAIqZ,EAASzb,EAAG,UAAU,yBAAyB,KAAK,UAAU,OAAOoC,CAAG,CAAC,CAAC,GAAG,CAAC,CAC3F,CAEA,OAAOwZ,EAA0D,CAC/D,OAAO,KAAK,MAAM,OAAOA,GAAW5b,EAAG,KAAK4b,CAAO,CAAC,CACtD,CAEA,MAAM,QAAQA,EAA0D,CAC9D,OAAA,MAAM,KAAK,MAAM,QAAQA,GAAW5b,EAAG,KAAK4b,CAAO,CAAC,CAC9D,CACF,CAEO,MAAA,CACL,SAAAH,EACA,KAAMzb,EAAG,UAAU,MAAM,EACzB,kBAAkB6b,EAA8B,CACvC,OAAA,gBAAiBH,EAAena,EAAgC,CAC/D,MAAAua,EAAwB9b,EAAG,UAAU,mBAAmB,EAAiB,WAAW,MAAMib,GAAYY,CAAa,CAAC,EAC1H,MAAQC,EAAS,WAAWJ,EAAO,CAAE,GAAGna,CAAS,CAAA,EACjDua,EAAS,QAAQ,CAAA,CAErB,EACA,kBAAkBD,EAA8B,CACvC,OAAA,gBAAiBH,EAAena,EAAgC,CAC/D,MAAAua,EAAwB9b,EAAG,UAAU,mBAAmB,EAAiB,WAAW,MAAMib,GAAYY,CAAa,CAAC,EAC1H,MAAQC,EAAS,WAAWJ,EAAO,CAAE,GAAGna,CAAS,CAAA,EACjDua,EAAS,QAAQ,CAAA,CAErB,EACA,kBAAkBhW,EAAc,CAC9B,OAAOkV,GAAKhb,EAAG,UAAU,mBAAmB,EAAE8F,CAAI,CAAC,CACrD,EACA,UAAW9F,EAAG,SAAS,WAAW,CAAA,CAEtC,ECjEA,IAAI+b,GAAG,OAAO,OAAW/O,GAAE,OAAO,eAAmBgP,GAAG,OAAO,yBAA6BC,GAAG,OAAO,oBAAwBC,GAAG,OAAO,eAAeC,GAAG,OAAO,UAAU,eAAmBhU,EAAE,CAAC4L,EAAE,IAAI/G,GAAE+G,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,EAAEqI,IAAGrI,GAAG,OAAO,QAAQ,IAAI,QAAQ,OAAO,MAAM,IAAI,IAAI,MAAMA,EAAE,CAAC,IAAI,CAAC,EAAElF,KAAK,OAAO,QAAQ,IAAI,QAAQ,GAAGA,CAAC,CAAC,CAAC,EAAEkF,GAAG,SAASA,EAAE,CAAC,GAAG,OAAO,QAAQ,IAAI,OAAO,QAAQ,MAAM,KAAK,SAAS,EAAE,MAAM,IAAI,MAAM,uBAAuBA,EAAE,oBAAoB,CAAC,CAAC,EAAMsI,GAAE,CAACtI,EAAE,IAAI,KAAK,GAAGA,GAAG,EAAE,CAAC,QAAQ,CAAE,CAAA,GAAG,QAAQ,CAAC,EAAE,EAAE,SAAauI,GAAG,CAACvI,EAAE,EAAElF,EAAE0N,IAAI,CAAC,GAAG,GAAG,OAAO,GAAG,UAAU,OAAO,GAAG,WAAW,QAAQC,KAAKP,GAAG,CAAC,EAAE,CAACE,GAAG,KAAKpI,EAAEyI,CAAC,GAAGA,IAAI3N,GAAG7B,GAAE+G,EAAEyI,EAAE,CAAC,IAAI,IAAI,EAAEA,CAAC,EAAE,WAAW,EAAED,EAAEP,GAAG,EAAEQ,CAAC,IAAID,EAAE,UAAU,CAAC,EAAE,OAAOxI,CAAC,EAAM0I,GAAG,CAAC1I,EAAE,EAAElF,KAAKA,EAAEkF,GAAG,KAAKgI,GAAGG,GAAGnI,CAAC,CAAC,EAAE,CAAE,EAACuI,GAAG,GAAG,CAACvI,GAAG,CAACA,EAAE,WAAW/G,GAAE6B,EAAE,UAAU,CAAC,MAAMkF,EAAE,WAAW,EAAE,CAAC,EAAElF,EAAEkF,CAAC,GAAO2I,GAAEL,GAAE,CAACM,EAAEC,IAAI,EAAE,SAAS7I,EAAEjP,EAAE,CAAc,OAAO,QAAQ,YAAY,OAAO,IAAI,OAAO,aAAa,CAAE,EAACA,CAAC,EAAE,OAAO6X,GAAG,SAASC,EAAE,QAAQ9X,EAAC,EAAGiP,EAAE,WAAWjP,EAAG,CAAA,GAAG6X,EAAE,UAAU,CAAc,SAAS5I,EAAE8I,EAAE,CAAC,MAAM,CAAC,MAAM,WAAWA,CAAC,CAAC,GAAG,SAASA,CAAC,CAAC,CAAC1U,EAAE4L,EAAE,WAAW,EAAE,SAASjP,EAAE+X,EAAE,CAAC,OAAOA,EAAE,OAAO,CAAC,EAAE,YAAW,EAAGA,EAAE,UAAU,CAAC,CAAC,CAAC1U,EAAErD,EAAE,aAAa,EAAE,SAAS+J,EAAEgO,EAAE,CAAC,OAAO,UAAU,CAAC,OAAO,KAAKA,CAAC,CAAC,CAAC,CAAC1U,EAAE0G,EAAE,SAAS,EAAE,IAAI0N,EAAE,CAAC,gBAAgB,SAAS,WAAW,YAAY,EAAEC,EAAE,CAAC,eAAe,YAAY,EAAE1N,EAAE,CAAC,WAAW,eAAe,QAAQ,EAAEb,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,EAAEwF,EAAE8I,EAAE,OAAOC,EAAE1N,EAAEb,EAAE,CAAC,EAAE,SAAS6O,EAAED,EAAE,CAAC,GAAGA,EAAE,QAAQ,EAAE,EAAE,EAAEpJ,EAAE,OAAO,IAAIoJ,EAAEpJ,EAAE,CAAC,CAAC,IAAI,QAAQ,KAAK,MAAM3O,EAAE2O,EAAE,CAAC,CAAC,CAAC,EAAEoJ,EAAEpJ,EAAE,CAAC,CAAC,CAAC,CAAC,CAACtL,EAAE2U,EAAE,YAAY,EAAEA,EAAE,UAAU,CAAC,QAAQ,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE,QAAQ,SAASD,EAAE,CAAC,GAAG,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAI,iBAAiB,MAAM,IAAI,UAAU,uBAAuB,EAAE,KAAK,KAAKA,CAAC,EAAE,cAAc,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE,cAAc,SAASA,EAAE,CAAC,GAAGA,aAAaC,EAAE,KAAK,WAAWD,UAAUA,aAAa,OAAO,KAAK,WAAW,IAAIC,EAAED,CAAC,MAAO,OAAM,IAAI,UAAU,6CAA6C,CAAC,EAAE,SAAS,UAAU,CAAC,IAAIA,EAAE,KAAK,YAAa,GAAE,GAAG,EAAE,KAAK,cAAa,GAAI,GAAGE,EAAE,KAAK,gBAAe,GAAI,GAAGC,EAAE,KAAK,gBAAe,GAAI,GAAG,OAAO,KAAK,UAAS,EAAGH,EAAE,WAAWA,EAAE,IAAI,EAAE,IAAIE,EAAE,IAAI,UAAU,EAAE,IAAIA,EAAEC,EAAEA,EAAE,KAAKH,EAAE,IAAI,EAAE,IAAIE,EAAE,IAAIF,EAAE,IAAI,EAAE,IAAIE,CAAC,CAAC,EAAED,EAAE,WAAW3U,EAAE,SAAS8L,EAAE,CAAC,IAAI8I,EAAE9I,EAAE,QAAQ,GAAG,EAAE+I,EAAE/I,EAAE,YAAY,GAAG,EAAEgJ,EAAGhJ,EAAE,UAAU,EAAE8I,CAAC,EAAEG,EAAGjJ,EAAE,UAAU8I,EAAE,EAAEC,CAAC,EAAE,MAAM,GAAG,EAAEG,EAAElJ,EAAE,UAAU+I,EAAE,CAAC,EAAE,GAAGG,EAAE,QAAQ,GAAG,IAAI,EAAE,IAAIC,EAAE,gCAAgC,KAAKD,EAAE,EAAE,EAAEE,EAAGD,EAAE,CAAC,EAAEE,EAAGF,EAAE,CAAC,EAAEG,EAAGH,EAAE,CAAC,EAAE,OAAO,IAAIN,EAAE,CAAC,aAAaG,EAAG,KAAKC,GAAI,OAAO,SAASG,EAAG,WAAWC,GAAI,OAAO,aAAaC,GAAI,MAAM,CAAC,CAAC,EAAE,wBAAwB,EAAE,QAAQ5K,EAAE,EAAEA,EAAE4J,EAAE,OAAO5J,IAAImK,EAAE,UAAU,MAAMhY,EAAEyX,EAAE5J,CAAC,CAAC,CAAC,EAAE9D,EAAE0N,EAAE5J,CAAC,CAAC,EAAEmK,EAAE,UAAU,MAAMhY,EAAEyX,EAAE5J,CAAC,CAAC,CAAC,EAAE,SAASkK,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,KAAKA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEN,EAAE5J,CAAC,CAAC,EAAE,QAAQ6K,EAAE,EAAEA,EAAEhB,EAAE,OAAOgB,IAAIV,EAAE,UAAU,MAAMhY,EAAE0X,EAAEgB,CAAC,CAAC,CAAC,EAAE3O,EAAE2N,EAAEgB,CAAC,CAAC,EAAEV,EAAE,UAAU,MAAMhY,EAAE0X,EAAEgB,CAAC,CAAC,CAAC,EAAE,SAASX,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC9I,EAAE,CAAC,EAAE,MAAM,IAAI,UAAU8I,EAAE,mBAAmB,EAAE,KAAKA,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAEL,EAAEgB,CAAC,CAAC,EAAE,QAAQnW,EAAE,EAAEA,EAAEyH,EAAE,OAAOzH,IAAIyV,EAAE,UAAU,MAAMhY,EAAEgK,EAAEzH,CAAC,CAAC,CAAC,EAAEwH,EAAEC,EAAEzH,CAAC,CAAC,EAAEyV,EAAE,UAAU,MAAMhY,EAAEgK,EAAEzH,CAAC,CAAC,CAAC,EAAE,SAASwV,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,KAAKA,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE/N,EAAEzH,CAAC,CAAC,EAAE,OAAOyV,CAAC,CAAC,CAAC,CAAC,EAAMW,GAAEpB,GAAE,CAAC9U,EAAEmW,IAAI,EAAE,SAAS3J,EAAEjP,EAAE,CAAc,OAAO,QAAQ,YAAY,OAAO,IAAI,OAAO,qBAAqB,CAAC,YAAY,EAAEA,CAAC,EAAE,OAAOyC,GAAG,SAASmW,EAAE,QAAQ5Y,EAAE4X,GAAC,CAAE,EAAE3I,EAAE,iBAAiBjP,EAAEiP,EAAE,UAAU,CAAC,GAAGxM,EAAEY,EAAE,SAASrD,EAAE,CAAc,IAAI+J,EAAE,eAAe0N,EAAE,iCAAiCC,EAAE,8BAA8B,MAAM,CAAC,MAAMrU,EAAE,SAAS8F,EAAE,CAAC,GAAG,OAAOA,EAAE,WAAW,KAAK,OAAOA,EAAE,iBAAiB,EAAE,IAAI,OAAO,KAAK,WAAWA,CAAC,EAAE,GAAGA,EAAE,OAAOA,EAAE,MAAM,MAAMsO,CAAC,EAAE,OAAO,KAAK,YAAYtO,CAAC,EAAE,GAAGA,EAAE,MAAM,OAAO,KAAK,gBAAgBA,CAAC,EAAE,MAAM,IAAI,MAAM,iCAAiC,CAAC,EAAE,yBAAyB,EAAE,gBAAgB9F,EAAE,SAAS8F,EAAE,CAAC,GAAGA,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAACA,CAAC,EAAE,IAAI0P,EAAE,+BAA+BlK,EAAEkK,EAAE,KAAK1P,EAAE,QAAQ,QAAQ,EAAE,CAAC,EAAE,MAAM,CAACwF,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,OAAOA,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,mCAAmC,EAAE,YAAYtL,EAAE,SAAS8F,EAAE,CAAC,IAAI0P,EAAE1P,EAAE,MAAM,MAAM;AAAA,CACl1H,EAAE,OAAO,SAASwF,EAAE,CAAC,MAAM,CAAC,CAACA,EAAE,MAAM8I,CAAC,CAAC,EAAE,IAAI,EAAE,OAAOoB,EAAE,IAAI,SAASlK,EAAE,CAACA,EAAE,QAAQ,QAAQ,EAAE,KAAKA,EAAEA,EAAE,QAAQ,aAAa,MAAM,EAAE,QAAQ,6BAA6B,EAAE,GAAG,IAAIqJ,EAAErJ,EAAE,QAAQ,OAAO,EAAE,EAAE,QAAQ,eAAe,GAAG,EAAE,QAAQ,UAAU,EAAE,EAAEd,EAAEmK,EAAE,MAAM,YAAY,EAAEA,EAAEnK,EAAEmK,EAAE,QAAQnK,EAAE,CAAC,EAAE,EAAE,EAAEmK,EAAE,IAAIU,EAAE,KAAK,gBAAgB7K,EAAEA,EAAE,CAAC,EAAEmK,CAAC,EAAEzV,EAAEsL,GAAGmK,GAAG,OAAOD,EAAE,CAAC,OAAO,aAAa,EAAE,QAAQW,EAAE,CAAC,CAAC,EAAE,GAAG,OAAOA,EAAE,CAAC,EAAE,OAAO,IAAI1Y,EAAE,CAAC,aAAauC,EAAE,SAASwV,EAAE,WAAWW,EAAE,CAAC,EAAE,aAAaA,EAAE,CAAC,EAAE,OAAO/J,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,+BAA+B,EAAE,gBAAgBtL,EAAE,SAAS8F,EAAE,CAAC,IAAI0P,EAAE1P,EAAE,MAAM,MAAM;AAAA,CACpkB,EAAE,OAAO,SAASwF,EAAE,CAAC,MAAM,CAACA,EAAE,MAAM+I,CAAC,CAAC,EAAE,IAAI,EAAE,OAAOmB,EAAE,IAAI,SAASlK,EAAE,CAAC,GAAGA,EAAE,QAAQ,SAAS,EAAE,KAAKA,EAAEA,EAAE,QAAQ,mDAAmD,KAAK,GAAGA,EAAE,QAAQ,GAAG,IAAI,IAAIA,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,IAAI3O,EAAE,CAAC,aAAa2O,CAAC,CAAC,EAAE,IAAIqJ,EAAE,6BAA6BnK,EAAEc,EAAE,MAAMqJ,CAAC,EAAEU,EAAE7K,GAAGA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,OAAOtL,EAAE,KAAK,gBAAgBoM,EAAE,QAAQqJ,EAAE,EAAE,CAAC,EAAE,OAAO,IAAIhY,EAAE,CAAC,aAAa0Y,EAAE,SAASnW,EAAE,CAAC,EAAE,WAAWA,EAAE,CAAC,EAAE,aAAaA,EAAE,CAAC,EAAE,OAAOoM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,mCAAmC,EAAE,WAAWtL,EAAE,SAAS8F,EAAE,CAAC,MAAM,CAACA,EAAE,YAAYA,EAAE,QAAQ,QAAQ;AAAA,CACtiB,EAAE,IAAIA,EAAE,QAAQ,MAAM;AAAA,CACtB,EAAE,OAAOA,EAAE,WAAW,MAAM;AAAA,CAC5B,EAAE,OAAO,KAAK,YAAYA,CAAC,EAAEA,EAAE,MAAM,KAAK,aAAaA,CAAC,EAAE,KAAK,aAAaA,CAAC,CAAC,EAAE,8BAA8B,EAAE,YAAY9F,EAAE,SAAS8F,EAAE,CAAC,QAAQ0P,EAAE,oCAAoClK,EAAExF,EAAE,QAAQ,MAAM;AAAA,CAC1M,EAAE6O,EAAE,GAAGnK,EAAE,EAAE6K,EAAE/J,EAAE,OAAOd,EAAE6K,EAAE7K,GAAG,EAAE,CAAC,IAAItL,EAAEsW,EAAE,KAAKlK,EAAEd,CAAC,CAAC,EAAEtL,GAAGyV,EAAE,KAAK,IAAIhY,EAAE,CAAC,SAASuC,EAAE,CAAC,EAAE,WAAWA,EAAE,CAAC,EAAE,OAAOoM,EAAEd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOmK,CAAC,EAAE,+BAA+B,EAAE,aAAa3U,EAAE,SAAS8F,EAAE,CAAC,QAAQ0P,EAAE,6DAA6DlK,EAAExF,EAAE,WAAW,MAAM;AAAA,CACnR,EAAE6O,EAAE,GAAGnK,EAAE,EAAE6K,EAAE/J,EAAE,OAAOd,EAAE6K,EAAE7K,GAAG,EAAE,CAAC,IAAItL,EAAEsW,EAAE,KAAKlK,EAAEd,CAAC,CAAC,EAAEtL,GAAGyV,EAAE,KAAK,IAAIhY,EAAE,CAAC,aAAauC,EAAE,CAAC,GAAG,OAAO,SAASA,EAAE,CAAC,EAAE,WAAWA,EAAE,CAAC,EAAE,OAAOoM,EAAEd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOmK,CAAC,EAAE,gCAAgC,EAAE,aAAa3U,EAAE,SAAS8F,EAAE,CAAC,IAAI0P,EAAE1P,EAAE,MAAM,MAAM;AAAA,CACtO,EAAE,OAAO,SAASwF,EAAE,CAAC,MAAM,CAAC,CAACA,EAAE,MAAM5E,CAAC,GAAG,CAAC4E,EAAE,MAAM,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAOkK,EAAE,IAAI,SAASlK,EAAE,CAAC,IAAIqJ,EAAErJ,EAAE,MAAM,GAAG,EAAEd,EAAE,KAAK,gBAAgBmK,EAAE,IAAG,CAAE,EAAEU,EAAEV,EAAE,SAAS,GAAGzV,EAAEmW,EAAE,QAAQ,iCAAiC,IAAI,EAAE,QAAQ,aAAa,EAAE,GAAG,OAAOX,EAAEW,EAAE,MAAM,aAAa,IAAIX,EAAEW,EAAE,QAAQ,qBAAqB,IAAI,GAAG,IAAIvJ,EAAE4I,IAAI,QAAQA,IAAI,4BAA4B,OAAOA,EAAE,MAAM,GAAG,EAAE,OAAO,IAAI/X,EAAE,CAAC,aAAauC,EAAE,KAAK4M,EAAE,SAAStB,EAAE,CAAC,EAAE,WAAWA,EAAE,CAAC,EAAE,aAAaA,EAAE,CAAC,EAAE,OAAOc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAMmK,GAAEnB,GAAGgB,GAAG,CAAA,EAAMI,GAAE,OAAO,SAAS,UAAU,OAAO,QAAQ,UAAU,UAAU,OAAO,QAAQ,SAAS,MAAM,UAAU,OAAO,QAAQ,QAAQ,IAAIC,GAAED,IAAG,OAAO,OAAO,KAAK,OAAO,OAAO,QAAQ,KAAK,OAAOzB,GAAE,KAAK,OAAO,UAAU,IAAI2B,GAAEF,IAAG,CAACC,GAAEE,GAAG,OAAO,KAAK,IAAIC,GAAE,CAACJ,IAAG,CAACG,GAAGE,GAAED,IAAG,OAAO,OAAO,KAAK,OAAO,SAAS,KAAK,OAAO,SAAS,cAAc,KAAK,OAAO,eAAe,IAAIE,GAAEF,IAAG,OAAO,cAAc,KAAK,OAAO,KAAK,IAAQG,GAAExY,GAAEyY,GAAEC,GAAEC,GAAEC,GAAG,iNAAiN,eAAeC,IAAG,CAAC,GAAG,CAACZ,KAAIO,IAAG,MAAM,QAAa,QAAA,EAAA,KAAA,IAAAM,EAAA,GAAE,QAAQH,GAAE,MAAM,QAAqB,QAAA,EAAA,KAAA,IAAAG,EAAA,EAAC,WAAW,MAAM9Y,GAAE,OAAO,QAAQ,KAAK4Y,EAAE,EAAE5Y,IAAG,MAAM,QAAoB,QAAA,EAAA,KAAA,IAAAO,EAAA,GAAE,SAASmY,IAAG,MAAM,gCAAc,QAAQD,GAAE,MAAM,+BAAeM,GAAEN,GAAE,IAAI,OAAOjC,GAAE,KAAK,OAAO,IAAIrI,EAAE,MAAM,QAAY,QAAA,EAAA,KAAA,IAAA2K,EAAA,EAAC,EAAE,MAAM,QAAgB,QAAA,EAAA,KAAA,IAAAA,EAAA,EAAC7P,EAAE,MAAM,QAAY,QAAA,EAAA,KAAA,IAAA6P,EAAA,EAACnC,EAAE,MAAM,QAAA,QAAA,EAAA,KAAA,IAAAmC,EAAA,EAAwBlC,EAAE,CAAC,GAAGzI,EAAE,OAAO,EAAE,GAAGlF,EAAE,cAAc0N,CAAC,EAAE,WAAW,QAAQ,SAASzN,EAAE,CAAC,OAAO0N,EAAE1N,CAAC,CAAC,CAAC,CAAC3G,EAAEsW,GAAE,iBAAiB,EAAE,SAASG,GAAG7K,EAAE,EAAE,CAAC,OAAOsK,GAAE,QAAQ,GAAG,IAAItK,CAAC,CAAC,CAAC5L,EAAEyW,GAAG,kBAAkB,EAAE,SAASC,GAAG9K,EAAE,EAAE,CAAC,OAAO,IAAI,SAAS,EAAE,UAAU,IAAI,IAAIA,EAAE,CAAC,EAAE,SAAQ,CAAE,CAAC5L,EAAE0W,GAAG,qBAAqB,EAAE,IAAIC,GAAEjB,GAAEiB,GAAEF,GAAGE,GAAED,GAAG,IAAIF,GAAEd,KAAIc,GAAE,KAAK,SAASI,GAAGhL,EAAE,EAAE,CAAC,OAAOA,EAAE,WAAW,SAAS,IAAIA,EAAEA,EAAE,MAAM,CAAC,GAAGA,EAAE,SAAS,KAAK,EAAE,CAAC,SAASnO,GAAEmO,CAAC,CAAC,EAAE,CAAC,OAAOwK,GAAE,SAASxK,CAAC,EAAE,KAAKlF,GAAG,IAAI,WAAWA,EAAE,OAAOA,EAAE,WAAWA,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC1G,EAAE4W,GAAG,wBAAwB,EAAE,SAASC,GAAGjL,EAAE,EAAE,CAAC,IAAIlF,EAAE,IAAI,IAAIkF,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,MAAMlF,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC1G,EAAE6W,GAAG,2BAA2B,EAAE,IAAIC,GAAEpB,GAAEoB,GAAEF,GAAGE,GAAED,GAAG,eAAeE,GAAEnL,EAAE,EAAE,CAAC,GAAG,CAAC,SAASlF,EAAE,OAAO0N,CAAC,EAAE0C,GAAElL,EAAE,CAAC,EAAE,GAAGwI,EAAE,OAAOA,EAAE,IAAIC,EAAE,MAAM3N,EAAE,GAAG,CAAC2N,EAAE,GAAG,MAAM,IAAI,MAAM,mBAAmBzI,CAAC,oBAAoB,EAAE,OAAO,IAAI,WAAW,MAAMyI,EAAE,YAAa,CAAA,CAAC,CAACrU,EAAE+W,GAAE,gBAAgB,EAAE,IAAIC,GAAE,GAAGjB,GAAEiB,GAAEhX,EAAE,MAAM4L,GAAG,MAAM,OAAOA,GAAG,YAAY,UAAUoK,GAAEgB,GAAEhX,EAAE,MAAM4L,GAAG,CAAC,GAAG,CAAC,WAAW,cAAcA,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,aAAa,UAAU,MAAM,OAAOA,OAAQ,OAAM,CAAC,CAAC,EAAE,YAAY,UAAU8J,GAAEsB,GAAEC,OAAQ,OAAM,IAAI,MAAM,sCAAsC,EAAE,eAAeA,GAAGrL,EAAE,CAACA,EAAE,WAAW,SAAS,IAAIA,EAAEA,EAAE,MAAM,CAAC,GAAGA,EAAE,SAAS,KAAK,EAAEuK,GAAE,iBAAiB,MAAM,MAAM1Y,GAAEmO,CAAC,GAAG,KAAI,CAAE,EAAE,MAAM,OAAOqK,GAAE,cAAcrK,CAAC,EAAE,KAAK,CAAC5L,EAAEiX,GAAG,gBAAgB,EAAE,eAAeC,GAAEtL,EAAE,CAAC,GAAG8J,GAAE,CAAC,MAAMY,GAAG,EAAC,IAAI,EAAE,MAAMF,GAAE,SAASxK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,KAAM,QAAO,MAAM,MAAM,MAAMA,CAAC,GAAG,KAAM,CAAA,CAAC5L,EAAEkX,GAAE,cAAc,EAAE,eAAeC,IAAG,CAAC,GAAGxB,GAAE,OAAO,UAAU,IAAI/J,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK,OAAOwI,EAAE,CAACxI,EAAEwI,CAAC,CAAC,IAAI,EAAEqB,GAAE,QAAQ,MAAM7J,CAAC,EAAE,CAAC,EAAE,SAAS,GAAGgK,GAAE,CAAC,IAAIxB,EAAE,MAAM,QAAA,QAAA,EAAA,KAAA,IAAAmC,EAAA,EAAe,OAAO,MAAM,gCAAe,cAAcnC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI1N,EAAE,EAAE,YAAY8P,EAAC,EAAE,GAAG9P,IAAI,GAAG,MAAM,IAAI,MAAM,8DAA8D,EAAE,OAAO,EAAE,MAAM,EAAEA,CAAC,CAAC,CAAC1G,EAAEmX,GAAE,kBAAkB,EAAE,SAASC,GAAExL,EAAE,CAAC,IAAI,EAAEA,EAAE,GAAGlF,EAAEkF,EAAE,GAAG,YAAY,MAAMwI,EAAExI,EAAE,KAAKyI,EAAE,CAAC,SAAS,MAAM,UAAU,MAAM,MAAM,SAAS1N,EAAE,CAAC,GAAG,CAACA,EAAE,KAAK,iBAAiB,MAAM,IAAI,MAAM,mCAAmC,EAAE,OAAOD,EAAE,MAAM,MAAM,KAAK,SAAS,CAAC,EAAE,OAAO,MAAMC,EAAEb,EAAE0P,IAAI,CAAC,GAAG,CAAC,IAAIlK,EAAE+I,EAAE,YAAY1N,CAAC,EAAEgO,EAAE,MAAMN,EAAE,aAAa1N,CAAC,EAAE6D,EAAE1E,EAAE6O,EAAErJ,EAAE+J,EAAEvP,EAAEwF,EAAEqJ,EAAE,MAAMN,EAAE,UAAU1N,EAAE6D,EAAE6K,CAAC,EAAEG,EAAE,IAAI,CAAC,OAAOlK,EAAE,CAACkK,EAAElK,CAAC,CAAC,CAAC,EAAE,YAAY3E,GAAG,CAAC,IAAIb,EAAE,OAAO,OAAO,IAAI,EAAE,SAAS0P,EAAEhL,EAAE,CAAC,OAAOA,IAAI,KAAKA,IAAI,IAAI,CAACxK,EAAEwV,EAAE,WAAW,EAAE,SAASlK,EAAEd,EAAE,CAAC,OAAO6K,GAAGjB,EAAE,MAAM5J,EAAE6K,CAAC,CAAC,CAACrV,EAAEsL,EAAE,YAAY,EAAE,IAAIqJ,EAAE,EAAE,QAAQhO,EAAE,UAAU,EAAE,OAAO6O,CAAC,EAAE,IAAIlK,EAAE3E,EAAE,UAAU,CAAC,EAAE,KAAKgO,EAAE,QAAQ,CAAC,IAAInK,EAAEmK,EAAE,IAAK,EAACU,EAAE,EAAE,KAAK7K,CAAC,EAAE,EAAE,MAAM6K,EAAE,IAAI,GAAGV,EAAE,KAAK,MAAMA,EAAE,EAAE,QAAQnK,CAAC,EAAE,OAAOgL,CAAC,EAAE,IAAIlK,EAAEd,CAAC,CAAC,CAAC,EAAE1E,EAAE0E,CAAC,EAAE,CAAC,UAAU6K,EAAE,MAAM,KAAKA,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,QAAQvP,CAAC,CAAC,EAAE,aAAa,MAAMa,GAAG,CAAC,IAAIb,EAAE,OAAO,OAAO,IAAI,EAAE0P,EAAE,MAAM6B,GAAG1Q,EAAE,KAAK,gBAAgB,EAAE,OAAO,CAAC2E,EAAEqJ,CAAC,IAAIa,EAAElK,IAAI,MAAMxF,EAAEsO,EAAE,MAAMzN,EAAE,WAAW2E,CAAC,CAAC,EAAE,CAAC,UAAUqJ,EAAE,OAAO,QAAQ,MAAMA,EAAE,QAAS,GAAE,iBAAiB,IAAI,KAAK,KAAKA,EAAE,OAAO,OAAON,EAAE,UAAUA,EAAE,QAAQ,GAAG,MAAM,CAAC,KAAK,SAAS,QAAQvO,EAAE,QAAQ0P,CAAC,CAAC,EAAE,eAAe7O,GAAG,CAAC,IAAI6O,EAAE,EAAE,WAAW7O,CAAC,EAAE,KAAK2E,EAAE,EAAE,KAAK3E,CAAC,EAAE,GAAG,EAAE,MAAM2E,EAAE,IAAI,EAAE,MAAM,CAAC,UAAUA,EAAE,MAAM,KAAKA,EAAE,IAAI,EAAE,GAAG,EAAE,OAAOA,EAAE,IAAI,EAAE,OAAOkK,EAAE,SAAS9O,EAAE,wBAAwB8O,CAAC,EAAE,CAAC,UAAUlK,EAAE,MAAM,KAAKA,EAAE,KAAK,SAASkK,EAAE,QAAQ,EAAE,MAAM,IAAI,MAAM,yBAAyB,CAAC,EAAE,gBAAgB,CAAC7O,EAAEb,IAAI,CAAC,GAAG,EAAE,MAAMA,EAAE,IAAI,EAAE,EAAE,UAAUa,EAAEb,EAAE,IAAI,UAAU,EAAE,OAAOA,EAAE,IAAI,EAAE,EAAE,UAAUa,EAAEb,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,MAAO,OAAM,IAAI,MAAM,yBAAyB,EAAE,EAAE,MAAMa,EAAEb,EAAE,IAAI,EAAE,EAAE,MAAMa,EAAEb,EAAE,UAAUA,EAAE,SAAS,CAAC,EAAE,iBAAiBa,GAAG,CAAC,IAAIb,EAAE,EAAE,KAAKa,CAAC,EAAE,EAAE,MAAMb,EAAE,IAAI,EAAE,EAAE,MAAMa,CAAC,EAAE,EAAE,OAAOb,EAAE,IAAI,GAAG,EAAE,OAAOa,CAAC,CAAC,EAAE,gBAAgB,MAAMA,GAAG,CAAC,GAAGA,EAAE,OAAO,OAAO,CAAC,IAAIb,EAAE,MAAMa,EAAE,QAAO,EAAG,MAAM,CAAC,SAAS,IAAI,WAAW,MAAMb,EAAE,YAAa,CAAA,EAAE,KAAKuO,EAAE,UAAU,UAAUvO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAGa,EAAE,OAAO,YAAY,MAAM,CAAC,KAAK0N,EAAE,SAAS,UAAU,IAAI,IAAI,EAAE,MAAM,IAAI,MAAM,iBAAiB1N,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB,MAAMA,EAAEb,EAAE0P,IAAI,CAAC,IAAIlK,EAAE3E,EAAE,IAAIyN,EAAE,QAAQtO,CAAC,CAAC,EAAE6O,EAAE,EAAE,OAAOa,EAAE,IAAI,EAAE,MAAMlK,EAAE,cAAc8I,EAAE,SAAStO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,MAAMwF,EAAE,mBAAmB8I,EAAE,SAAStO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG6O,EAAE,OAAO,OAAO,CAAC,IAAInK,EAAE,MAAMmK,EAAE,eAAc,EAAG,MAAMnK,EAAE,MAAMgL,EAAE,QAAQ,EAAE,MAAMhL,EAAE,MAAO,CAAA,CAAC7D,EAAE,IAAIb,EAAE6O,CAAC,CAAC,EAAE,kBAAkB,MAAMhO,EAAEb,IAAI,CAAC,MAAMa,EAAE,IAAIyN,EAAE,QAAQtO,CAAC,CAAC,EAAE,YAAYsO,EAAE,SAAStO,CAAC,CAAC,EAAEa,EAAE,OAAOb,CAAC,CAAC,EAAE,UAAU,MAAMa,EAAEb,EAAE0P,IAAI,CAAC,IAAIlK,EAAE,EAAEqJ,EAAE,GAAG,OAAO,KAAK7O,EAAE,OAAO,EAAE,QAAQ,SAAS5G,EAAE,CAAC,IAAIwV,EAAE5O,EAAE,QAAQ5G,CAAC,EAAE4M,EAAE0J,EAAE,QAAQtW,CAAC,GAAG,CAAC4M,GAAG,EAAE,OAAO4I,EAAE,IAAI,GAAGA,EAAE,UAAU,QAAS,EAAC5I,EAAE,UAAU,QAAS,KAAI6I,EAAE,KAAKzV,CAAC,EAAEoM,IAAI,CAAC,EAAEqJ,EAAE,KAAI,EAAG,IAAInK,EAAE,CAAE,EAAC,GAAG,OAAO,KAAKgL,EAAE,OAAO,EAAE,QAAQ,SAAStW,EAAE,CAAC4G,EAAE,QAAQ5G,CAAC,IAAIsL,EAAE,KAAKtL,CAAC,EAAEoM,IAAI,CAAC,EAAEd,EAAE,OAAO,QAAS,EAAC,CAACc,EAAE,OAAO,IAAI+J,EAAEvP,EAAE,OAAO,SAASA,EAAE,QAAQ0P,EAAE,QAAQ,QAAQtW,KAAKyV,EAAE,CAAC,IAAID,EAAEN,EAAE,UAAUlV,EAAE,QAAQyH,EAAE,WAAW,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG6O,EAAE,OAAO,QAAQ,CAAC,IAAI1J,EAAEuJ,EAAE,IAAIX,CAAC,EAAEE,EAAE,MAAMP,EAAE,gBAAgBvI,CAAC,EAAEuI,EAAE,gBAAgBnV,EAAE0V,CAAC,CAAC,KAAK,CAAC,IAAI9I,EAAEuI,EAAE,eAAenV,CAAC,EAAE,MAAMmV,EAAE,iBAAiBgB,EAAEX,EAAE5I,CAAC,CAAC,CAAC,CAAC,QAAQ5M,KAAKsL,EAAE,GAAGgL,EAAE,OAAO,QAAQnB,EAAE,iBAAiBnV,CAAC,MAAM,CAAC,IAAIwV,EAAEN,EAAE,UAAUlV,EAAE,QAAQyH,EAAE,WAAW,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM0N,EAAE,kBAAkBgB,EAAEX,CAAC,CAAC,CAAC,CAAC,EAAE9I,EAAE,GAAG,YAAY,eAAeyI,CAAC,CAACrU,EAAEoX,GAAE,oBAAoB,EAAE,IAAIC,GAAGrX,EAAE,MAAM4L,GAAG,CAAC,IAAI,EAAE,GAAG,eAAelF,EAAE2N,EAAE,CAAC,cAAc1N,KAAK0N,EAAE,OAAQ,EAAC,EAAE,KAAK1N,CAAC,EAAEA,EAAE,OAAO,aAAa,MAAMD,EAAEC,CAAC,CAAC,CAAC3G,EAAE0G,EAAE,SAAS,EAAE,MAAMA,EAAEkF,CAAC,EAAE,IAAIwI,EAAE,IAAI,IAAIA,EAAE,IAAI,IAAIxI,CAAC,EAAE,QAAQyI,KAAK,EAAE,CAAC,IAAI1N,GAAG,MAAMiF,EAAE,QAAQyI,CAAC,GAAG,KAAK,GAAG,EAAED,EAAE,IAAIzN,EAAE0N,CAAC,CAAC,CAAC,OAAOD,CAAC,EAAE,cAAc,EAAE,SAASkD,IAAG,CAAC,IAAI1L,EAAE,GAAG,OAAOA,EAAE,gBAAgB,GAAGA,EAAE,gBAAgB,GAAGA,EAAE,eAAe,GAAGA,EAAE,OAAO,GAAGA,EAAE,KAAK,CAAC,EAAElF,IAAI,CAAC,MAAMkF,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQlF,CAAC,EAAEA,CAAC,EAAEkF,CAAC,CAAC5L,EAAEsX,GAAE,cAAc,EAAE,SAASC,GAAG3L,EAAE,EAAE,CAACA,EAAE,OAAO,KAAK,UAAU,CAAC,IAAIlF,EAAE,IAAI,GAAG,CAACkF,EAAE,GAAG,UAAU,CAAC,CAAC,OAAOwI,EAAE,CAAC,QAAQ,MAAM,iDAAiD,CAAC,IAAI,EAAE,QAAQ,MAAMA,CAAC,EAAE,QAAQ,MAAM,UAAU1N,CAAC,gCAAgC,EAAE,EAAEA,CAAC,CAACkF,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC5L,EAAEuX,GAAG,qBAAqB,EAAE,SAASC,GAAG5L,EAAE,EAAE,CAACA,EAAE,OAAO,KAAK,UAAU,CAAC,OAAO,OAAOA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC5L,EAAEwX,GAAG,gBAAgB,EAAE,SAASxR,GAAG4F,EAAE,EAAE,CAACA,EAAE,OAAO,KAAK,IAAI,CAAC,QAAQlF,KAAK,EAAEkF,EAAE,GAAG,UAAUlF,CAAC,EAAEkF,EAAE,GAAG,MAAMA,EAAE,GAAG,YAAY,OAAO,CAAC,KAAKlF,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC1G,EAAEgG,GAAG,uBAAuB,EAAE,SAASyR,GAAG7L,EAAE,EAAE,CAAC,IAAIlF,EAAEqQ,GAAE,CAAC,EAAEnL,EAAE,OAAO,KAAK,IAAI,CAAC,IAAIwI,EAAExI,EAAE,kBAAmB,EAACyI,EAAEzI,EAAE,kBAAmB,EAACA,EAAE,GAAG,UAAU,MAAM,EAAEA,EAAE,GAAG,UAAU,cAAcwI,CAAC,IAAIC,CAAC,gBAAgB,EAAEzI,EAAE,iBAAiB,gBAAgB,EAAElF,EAAE,KAAKC,GAAG,CAACiF,EAAE,GAAG,UAAU,cAAcwI,CAAC,GAAGC,CAAC,OAAO1N,CAAC,CAAC,CAAC,EAAE,MAAMA,GAAG,CAAC,QAAQ,MAAM,uDAAuD,EAAE,QAAQ,MAAMA,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,CAACiF,EAAE,oBAAoB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC5L,EAAEyX,GAAG,eAAe,EAAE,SAASC,GAAE9L,EAAE,EAAE,CAAC,IAAIlF,EAAE,EAAE,WAAW,KAAKA,EAAE,EAAE,UAAUA,EAAE,EAAE,SAAS,oBAAoB+Q,GAAG7L,EAAElF,CAAC,EAAE6Q,GAAG3L,EAAE,EAAE,IAAI,IAAI,EAAE4L,GAAG5L,EAAE,EAAE,GAAG,EAAE5F,GAAG4F,EAAE,EAAE,YAAY,EAAEA,EAAE,OAAO,KAAK,IAAIwL,GAAExL,CAAC,CAAC,CAAC,CAAC5L,EAAE0X,GAAE,sBAAsB,EAAE,SAASC,GAAE/L,EAAE,EAAE,CAAC,GAAG,CAAC,OAAOlF,EAAE,SAAS0N,CAAC,EAAE0C,GAAE,EAAE,kBAAkB,EAAElL,EAAE,gBAAgB,SAASyI,EAAE1N,EAAE,CAAC,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAIb,EAAEsO,EAAEtO,EAAE,MAAM,YAAY,qBAAqBsO,EAAEC,CAAC,EAAEvO,EAAE,MAAM,YAAY,YAAY,MAAMY,EAAE2N,CAAC,EAAE,GAAG,CAAC,SAASmB,EAAE,OAAOlK,CAAC,EAAExF,EAAE,OAAO,oBAAoB,MAAM,oBAAoB,IAAI,oBAAoB,WAAWwF,CAAC,GAAG3E,EAAE6O,EAAElK,CAAC,CAAC,OAAOxF,EAAE,CAAC,QAAQ,KAAK,4BAA4B,EAAE,QAAQ,KAAKA,CAAC,CAAC,CAAC,EAAC,EAAG,CAAE,CAAA,CAAC,CAAC9F,EAAE2X,GAAE,aAAa,EAAE,IAAIC,GAAE,SAAS,eAAeC,GAAGjM,EAAE,CAAE,EAAC,CAAC,MAAM0K,GAAC,EAAG,IAAI,EAAE1K,EAAE,UAAU,MAAMuL,GAAG,EAAC,EAAER,GAAE,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,GAAG,KAAK/K,EAAE,SAAS,EAAE,IAAIlF,EAAE,CAAC,WAAW,GAAG,UAAU,WAAW,MAAM,WAAW,OAAO,WAAW,OAAO,OAAO,YAAY,EAAE,oBAAoB,KAAK,CAAA,EAAG,aAAa,CAAA,EAAG,IAAI,CAAE,EAAC,gBAAgB,EAAE,SAAS,CAAA,CAAE,EAAE0N,EAAE,OAAO,OAAO1N,EAAEkF,CAAC,EAAEwI,EAAE,IAAI,OAAOA,EAAE,IAAI,KAAK,iBAAiB,IAAIC,EAAEiD,GAAG,EAACjD,EAAE,MAAMD,EAAE,OAAOC,EAAE,SAASD,EAAE,OAAOC,EAAE,UAAUD,EAAE,KAAK,IAAIzN,EAAE,CAAC,OAAOyN,CAAC,EAAEC,EAAE,IAAI1N,EAAEA,EAAE,gBAAgBuQ,GAAE9C,EAAE,WAAW,EAAEuD,GAAEtD,EAAE,CAAC,EAAEqD,GAAErD,EAAED,CAAC,EAAE,IAAItO,EAAE,IAAI,QAAQ6O,GAAGN,EAAE,QAAQM,CAAC,EAAE,GAAGN,EAAE,WAAWM,GAAGP,EAAE,SAASO,EAAE,OAAO,sBAAsB,WAAW,CAAC,IAAIA,EAAE,GAAGP,EAAE,QAAQ,iBAAiB,MAAM4C,GAAErC,CAAC,CAAC,CAAC,GAAG,MAAM,qBAAqBN,CAAC,EAAE,MAAMvO,EAAEuO,EAAE,OAAO,MAAMA,EAAE,OAAO,QAAQ,GAAGzI,EAAE,qBAAqBjF,EAAE,yBAAyB,EAAE,EAAEA,EAAE,UAAUiR,GAAE,MAAM,IAAI,MAAM,oCAAoCA,EAAC,WAAWjR,EAAE,OAAO,mHAAmH,EAAE0N,EAAE,WAAWM,GAAG,CAAC,MAAM,IAAI,MAAM,qDAAqD,CAAC,EAAE,IAAIa,EAAE7O,EAAE,kBAAiB,EAAG,GAAG6O,EAAE,QAAQ,SAAS,KAAK,GAAG7O,EAAE,UAAU,qCAAqC6O,EAAE,OAAO,QAAQ,EAAE,MAAM7O,EAAE,kBAAkBA,EAAE,SAAS,YAAY,+BAA+BA,EAAE,6BAA6BA,EAAE,oCAAoC,EAAEA,EAAE,cAAc,UAAUiR,GAAE,MAAM,IAAI,MAAM,iDAAiD,EAAE,OAAOjR,EAAE,eAAe,uBAAuByN,EAAE,YAAY,MAAMoB,EAAE,YAAY7O,EAAE,2BAA2B,EAAEA,EAAE,kBAAkByN,EAAE,MAAMA,EAAE,OAAOA,EAAE,MAAM,EAAEoB,CAAC,CAACxV,EAAE6X,GAAG,aAAa,+LCR1+T;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wGCAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yCCAAC,EAAA,CAAA,okBCEXC,EAAc,CAAA,EAClBC,GAAiBD,EAEjB,SAASE,GAAK7Y,EAAG,CACb,OAAOA,EAAI,EAAI,GAAK,CACxB,CAEA,SAAS8Y,GAAU9Y,EAAG,CAElB,OAAKA,EAAI,IAAO,IAAQ,EAAAA,EAAI,GACjB,KAAK,MAAMA,CAAC,EAEZ,KAAK,MAAMA,CAAC,CAE3B,CAEA,SAAS+Y,GAAuBC,EAAWC,EAAU,CAC5CA,EAAS,UACV,EAAED,EAEN,MAAME,EAAaD,EAAS,SAAW,EAAI,CAAC,KAAK,IAAI,EAAGD,CAAS,EAC3DG,EAAa,KAAK,IAAI,EAAGH,CAAS,EAAI,EAEtCI,EAAYH,EAAS,gBAAkB,KAAK,IAAI,EAAGA,EAAS,eAAe,EAAI,KAAK,IAAI,EAAGD,CAAS,EACpGK,EAAcJ,EAAS,gBAAkB,KAAK,IAAI,EAAGA,EAAS,gBAAkB,CAAC,EAAI,KAAK,IAAI,EAAGD,EAAY,CAAC,EAEpH,OAAO,SAASjC,EAAGnc,EAAM,CAChBA,IAAMA,EAAO,IAElB,IAAIoF,EAAI,CAAC+W,EAET,GAAInc,EAAK,aAAc,CACnB,GAAI,CAAC,OAAO,SAASoF,CAAC,EAClB,MAAM,IAAI,UAAU,iCAAiC,EAIzD,GADAA,EAAI6Y,GAAK7Y,CAAC,EAAI,KAAK,MAAM,KAAK,IAAIA,CAAC,CAAC,EAChCA,EAAIkZ,GAAclZ,EAAImZ,EACtB,MAAM,IAAI,UAAU,+BAA+B,EAGvD,OAAOnZ,CACV,CAED,GAAI,CAAC,MAAMA,CAAC,GAAKpF,EAAK,MAClB,OAAAoF,EAAI8Y,GAAU9Y,CAAC,EAEXA,EAAIkZ,IAAYlZ,EAAIkZ,GACpBlZ,EAAImZ,IAAYnZ,EAAImZ,GACjBnZ,EAGX,GAAI,CAAC,OAAO,SAASA,CAAC,GAAKA,IAAM,EAC7B,MAAO,GAMX,GAHAA,EAAI6Y,GAAK7Y,CAAC,EAAI,KAAK,MAAM,KAAK,IAAIA,CAAC,CAAC,EACpCA,EAAIA,EAAIoZ,EAEJ,CAACH,EAAS,UAAYjZ,GAAKqZ,EAC3B,OAAOrZ,EAAIoZ,EACR,GAAIH,EAAS,UAChB,GAAIjZ,EAAI,EACNA,GAAKoZ,UACIpZ,IAAM,GACf,MAAO,GAIb,OAAOA,CACV,CACL,CAEA2Y,EAAY,KAAU,UAAY,CAElC,EAEAA,EAAY,QAAa,SAAUxR,EAAK,CACpC,MAAO,CAAC,CAACA,CACb,EAEAwR,EAAY,KAAUI,GAAuB,EAAG,CAAE,SAAU,EAAK,CAAE,EACnEJ,EAAY,MAAWI,GAAuB,EAAG,CAAE,SAAU,EAAI,CAAE,EAEnEJ,EAAY,MAAWI,GAAuB,GAAI,CAAE,SAAU,EAAK,CAAE,EACrEJ,EAAY,gBAAgB,EAAII,GAAuB,GAAI,CAAE,SAAU,EAAI,CAAE,EAE7EJ,EAAY,KAAUI,GAAuB,GAAI,CAAE,SAAU,EAAK,CAAE,EACpEJ,EAAY,eAAe,EAAII,GAAuB,GAAI,CAAE,SAAU,EAAI,CAAE,EAE5EJ,EAAY,WAAW,EAAII,GAAuB,GAAI,CAAE,SAAU,GAAO,gBAAiB,EAAE,CAAE,EAC9FJ,EAAY,oBAAoB,EAAII,GAAuB,GAAI,CAAE,SAAU,GAAM,gBAAiB,EAAE,CAAE,EAEtGJ,EAAY,OAAY,SAAU5B,EAAG,CACjC,MAAM/W,EAAI,CAAC+W,EAEX,GAAI,CAAC,OAAO,SAAS/W,CAAC,EAClB,MAAM,IAAI,UAAU,+CAA+C,EAGvE,OAAOA,CACX,EAEA2Y,EAAY,qBAAqB,EAAI,SAAU5B,EAAG,CAC9C,MAAM/W,EAAI,CAAC+W,EAEX,GAAI,MAAM/W,CAAC,EACP,MAAM,IAAI,UAAU,iBAAiB,EAGzC,OAAOA,CACX,EAGA2Y,EAAY,MAAWA,EAAY,OACnCA,EAAY,oBAAoB,EAAIA,EAAY,qBAAqB,EAErEA,EAAY,UAAe,SAAU5B,EAAGnc,EAAM,CAG1C,OAFKA,IAAMA,EAAO,IAEdA,EAAK,wBAA0Bmc,IAAM,KAC9B,GAGJ,OAAOA,CAAC,CACnB,EAEA4B,EAAY,WAAgB,SAAU5B,EAAGnc,EAAM,CAC3C,MAAMoF,EAAI,OAAO+W,CAAC,EAClB,IAAIzP,EACJ,QAAS4E,EAAI,GAAI5E,EAAItH,EAAE,YAAYkM,CAAC,KAAO,OAAW,EAAEA,EACpD,GAAI5E,EAAI,IACJ,MAAM,IAAI,UAAU,oCAAoC,EAIhE,OAAOtH,CACX,EAEA2Y,EAAY,UAAe,SAAU5B,EAAG,CACpC,MAAMQ,EAAI,OAAOR,CAAC,EACZrQ,EAAI6Q,EAAE,OACNlC,EAAI,CAAA,EACV,QAASnJ,EAAI,EAAGA,EAAIxF,EAAG,EAAEwF,EAAG,CACxB,MAAM5E,EAAIiQ,EAAE,WAAWrL,CAAC,EACxB,GAAI5E,EAAI,OAAUA,EAAI,MAClB+N,EAAE,KAAK,OAAO,cAAc/N,CAAC,CAAC,UACvB,OAAUA,GAAKA,GAAK,MAC3B+N,EAAE,KAAK,OAAO,cAAc,KAAM,CAAC,UAE/BnJ,IAAMxF,EAAI,EACV2O,EAAE,KAAK,OAAO,cAAc,KAAM,CAAC,MAChC,CACH,MAAMC,EAAIiC,EAAE,WAAWrL,EAAI,CAAC,EAC5B,GAAI,OAAUoJ,GAAKA,GAAK,MAAQ,CAC5B,MAAML,EAAI3N,EAAI,KACRoQ,EAAIpC,EAAI,KACdD,EAAE,KAAK,OAAO,cAAe,MAAY,KAAUJ,EAAIyC,CAAC,CAAC,EACzD,EAAExL,CACtB,MACoBmJ,EAAE,KAAK,OAAO,cAAc,KAAM,CAAC,CAE1C,CAER,CAED,OAAOA,EAAE,KAAK,EAAE,CACpB,EAEAsD,EAAY,KAAU,SAAU5B,EAAGnc,EAAM,CACrC,GAAI,EAAEmc,aAAa,MACf,MAAM,IAAI,UAAU,+BAA+B,EAEvD,GAAI,OAAMA,CAAC,EAIX,OAAOA,CACX,EAEA4B,EAAY,OAAY,SAAU5B,EAAGnc,EAAM,CACvC,OAAMmc,aAAa,SACfA,EAAI,IAAI,OAAOA,CAAC,GAGbA,CACX,mCC1LAuC,EAAA,QAAA,MAAuB,SAAethB,EAAQ8b,EAAQ,CACpD,MAAMyF,EAAO,OAAO,oBAAoBzF,CAAM,EAC9C,QAAS,EAAI,EAAG,EAAIyF,EAAK,OAAQ,EAAE,EACjC,OAAO,eAAevhB,EAAQuhB,EAAK,CAAC,EAAG,OAAO,yBAAyBzF,EAAQyF,EAAK,CAAC,CAAC,CAAC,CAE3F,EAEAD,EAAA,QAAA,cAA+B,OAAO,SAAS,EAC/CA,EAAA,QAAA,WAA4B,OAAO,MAAM,EAEzCA,EAAgC,QAAA,eAAA,SAAUE,EAAM,CAC9C,OAAOA,EAAKF,EAAO,QAAQ,aAAa,CAC1C,EAEAA,EAAgC,QAAA,eAAA,SAAUG,EAAS,CACjD,OAAOA,EAAQH,EAAO,QAAQ,UAAU,iDCd1C,MAAMI,GAAS,WAGTC,GAAO,GACPC,GAAO,EACPC,GAAO,GACPC,GAAO,GACPC,GAAO,IACPC,GAAc,GACdC,GAAW,IACXtb,GAAY,IAGZub,GAAgB,QAChBC,GAAgB,aAChBC,GAAkB,4BAGlBC,GAAS,CACd,SAAY,kDACZ,YAAa,iDACb,gBAAiB,eAClB,EAGMC,GAAgBX,GAAOC,GACvBW,GAAQ,KAAK,MACbC,GAAqB,OAAO,aAUlC,SAAS9f,GAAMgF,EAAM,CACpB,MAAM,IAAI,WAAW2a,GAAO3a,CAAI,CAAC,CAClC,CAUA,SAAS+a,GAAIC,EAAOC,EAAU,CAC7B,MAAMziB,EAAS,CAAA,EACf,IAAI0iB,EAASF,EAAM,OACnB,KAAOE,KACN1iB,EAAO0iB,CAAM,EAAID,EAASD,EAAME,CAAM,CAAC,EAExC,OAAO1iB,CACR,CAYA,SAAS2iB,GAAUC,EAAQH,EAAU,CACpC,MAAMhb,EAAQmb,EAAO,MAAM,GAAG,EAC9B,IAAI5iB,EAAS,GACTyH,EAAM,OAAS,IAGlBzH,EAASyH,EAAM,CAAC,EAAI,IACpBmb,EAASnb,EAAM,CAAC,GAGjBmb,EAASA,EAAO,QAAQV,GAAiB,GAAM,EAC/C,MAAMW,EAASD,EAAO,MAAM,GAAG,EACzBE,EAAUP,GAAIM,EAAQJ,CAAQ,EAAE,KAAK,GAAG,EAC9C,OAAOziB,EAAS8iB,CACjB,CAeA,SAASC,GAAWC,EAAQ,CAC3B,MAAMC,EAAS,CAAA,EACf,IAAIC,EAAU,EACd,MAAMR,EAASM,EAAO,OACtB,KAAOE,EAAUR,GAAQ,CACxB,MAAM9f,EAAQogB,EAAO,WAAWE,GAAS,EACzC,GAAItgB,GAAS,OAAUA,GAAS,OAAUsgB,EAAUR,EAAQ,CAE3D,MAAMS,EAAQH,EAAO,WAAWE,GAAS,GACpCC,EAAQ,QAAW,MACvBF,EAAO,OAAOrgB,EAAQ,OAAU,KAAOugB,EAAQ,MAAS,KAAO,GAI/DF,EAAO,KAAKrgB,CAAK,EACjBsgB,IAEJ,MACGD,EAAO,KAAKrgB,CAAK,CAElB,CACD,OAAOqgB,CACR,CAUA,MAAMG,GAAaC,GAAc,OAAO,cAAc,GAAGA,CAAU,EAW7DC,GAAe,SAASC,EAAW,CACxC,OAAIA,GAAa,IAAQA,EAAY,GAC7B,IAAMA,EAAY,IAEtBA,GAAa,IAAQA,EAAY,GAC7BA,EAAY,GAEhBA,GAAa,IAAQA,EAAY,IAC7BA,EAAY,GAEb9B,EACR,EAaM+B,GAAe,SAASC,EAAOC,EAAM,CAG1C,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAQC,GAAQ,IAAM,EACzD,EAOMC,GAAQ,SAAStO,EAAOuO,EAAWC,EAAW,CACnD,IAAItW,EAAI,EAGR,IAFA8H,EAAQwO,EAAYxB,GAAMhN,EAAQwM,EAAI,EAAIxM,GAAS,EACnDA,GAASgN,GAAMhN,EAAQuO,CAAS,EACFvO,EAAQ+M,GAAgBT,IAAQ,EAAGpU,GAAKkU,GACrEpM,EAAQgN,GAAMhN,EAAQ+M,EAAa,EAEpC,OAAOC,GAAM9U,GAAK6U,GAAgB,GAAK/M,GAASA,EAAQuM,GAAK,CAC9D,EASMkC,GAAS,SAAS7H,EAAO,CAE9B,MAAMgH,EAAS,CAAA,EACTc,EAAc9H,EAAM,OAC1B,IAAIjI,EAAI,EACJxF,EAAIuT,GACJiC,EAAOlC,GAMPmC,EAAQhI,EAAM,YAAYxV,EAAS,EACnCwd,EAAQ,IACXA,EAAQ,GAGT,QAAS3F,EAAI,EAAGA,EAAI2F,EAAO,EAAE3F,EAExBrC,EAAM,WAAWqC,CAAC,GAAK,KAC1B9b,GAAM,WAAW,EAElBygB,EAAO,KAAKhH,EAAM,WAAWqC,CAAC,CAAC,EAMhC,QAAS5X,EAAQud,EAAQ,EAAIA,EAAQ,EAAI,EAAGvd,EAAQqd,GAAwC,CAO3F,MAAMG,EAAOlQ,EACb,QAAS0L,EAAI,EAAGnS,EAAIkU,IAA0BlU,GAAKkU,GAAM,CAEpD/a,GAASqd,GACZvhB,GAAM,eAAe,EAGtB,MAAMihB,EAAQH,GAAarH,EAAM,WAAWvV,GAAO,CAAC,EAEhD+c,GAAShC,IACZjf,GAAM,eAAe,EAElBihB,EAAQpB,IAAOb,GAASxN,GAAK0L,CAAC,GACjCld,GAAM,UAAU,EAGjBwR,GAAKyP,EAAQ/D,EACb,MAAMpL,EAAI/G,GAAKyW,EAAOtC,GAAQnU,GAAKyW,EAAOrC,GAAOA,GAAOpU,EAAIyW,EAE5D,GAAIP,EAAQnP,EACX,MAGD,MAAM6P,EAAa1C,GAAOnN,EACtBoL,EAAI2C,GAAMb,GAAS2C,CAAU,GAChC3hB,GAAM,UAAU,EAGjBkd,GAAKyE,CAEL,CAED,MAAMC,EAAMnB,EAAO,OAAS,EAC5Be,EAAOL,GAAM3P,EAAIkQ,EAAME,EAAKF,GAAQ,CAAC,EAIjC7B,GAAMrO,EAAIoQ,CAAG,EAAI5C,GAAShT,GAC7BhM,GAAM,UAAU,EAGjBgM,GAAK6T,GAAMrO,EAAIoQ,CAAG,EAClBpQ,GAAKoQ,EAGLnB,EAAO,OAAOjP,IAAK,EAAGxF,CAAC,CAEvB,CAED,OAAO,OAAO,cAAc,GAAGyU,CAAM,CACtC,EASMoB,GAAS,SAASpI,EAAO,CAC9B,MAAMgH,EAAS,CAAA,EAGfhH,EAAQ8G,GAAW9G,CAAK,EAGxB,MAAM8H,EAAc9H,EAAM,OAG1B,IAAIzN,EAAIuT,GACJ1M,EAAQ,EACR2O,EAAOlC,GAGX,UAAWwC,KAAgBrI,EACtBqI,EAAe,KAClBrB,EAAO,KAAKX,GAAmBgC,CAAY,CAAC,EAI9C,MAAMC,EAActB,EAAO,OAC3B,IAAIuB,EAAiBD,EAWrB,IALIA,GACHtB,EAAO,KAAKxc,EAAS,EAIf+d,EAAiBT,GAAa,CAIpC,IAAIhG,EAAIyD,GACR,UAAW8C,KAAgBrI,EACtBqI,GAAgB9V,GAAK8V,EAAevG,IACvCA,EAAIuG,GAMN,MAAMG,EAAwBD,EAAiB,EAC3CzG,EAAIvP,EAAI6T,IAAOb,GAASnM,GAASoP,CAAqB,GACzDjiB,GAAM,UAAU,EAGjB6S,IAAU0I,EAAIvP,GAAKiW,EACnBjW,EAAIuP,EAEJ,UAAWuG,KAAgBrI,EAI1B,GAHIqI,EAAe9V,GAAK,EAAE6G,EAAQmM,IACjChf,GAAM,UAAU,EAEb8hB,IAAiB9V,EAAG,CAEvB,IAAImQ,EAAItJ,EACR,QAAS9H,EAAIkU,IAA0BlU,GAAKkU,GAAM,CACjD,MAAMnN,EAAI/G,GAAKyW,EAAOtC,GAAQnU,GAAKyW,EAAOrC,GAAOA,GAAOpU,EAAIyW,EAC5D,GAAIrF,EAAIrK,EACP,MAED,MAAMoQ,EAAU/F,EAAIrK,EACd6P,EAAa1C,GAAOnN,EAC1B2O,EAAO,KACNX,GAAmBkB,GAAalP,EAAIoQ,EAAUP,EAAY,CAAC,CAAC,CAClE,EACKxF,EAAI0D,GAAMqC,EAAUP,CAAU,CAC9B,CAEDlB,EAAO,KAAKX,GAAmBkB,GAAa7E,EAAG,CAAC,CAAC,CAAC,EAClDqF,EAAOL,GAAMtO,EAAOoP,EAAuBD,IAAmBD,CAAW,EACzElP,EAAQ,EACR,EAAEmP,CACF,CAGF,EAAEnP,EACF,EAAE7G,CAEF,CACD,OAAOyU,EAAO,KAAK,EAAE,CACtB,EAaM0B,GAAY,SAAS1I,EAAO,CACjC,OAAO0G,GAAU1G,EAAO,SAAS+G,EAAQ,CACxC,OAAOhB,GAAc,KAAKgB,CAAM,EAC7Bc,GAAOd,EAAO,MAAM,CAAC,EAAE,YAAW,CAAE,EACpCA,CACL,CAAE,CACF,EAaM4B,GAAU,SAAS3I,EAAO,CAC/B,OAAO0G,GAAU1G,EAAO,SAAS+G,EAAQ,CACxC,OAAOf,GAAc,KAAKe,CAAM,EAC7B,OAASqB,GAAOrB,CAAM,EACtBA,CACL,CAAE,CACF,8EAKiB,CAMhB,QAAW,QAQX,KAAQ,CACP,OAAUD,GACV,OAAUK,EACV,EACD,OAAUU,GACV,OAAUO,GACV,QAAWO,GACX,UAAaD,EACd,ij8PCtbA,IAAIE,GAAWC,GACXC,GAAeC,GAEfC,GAAqB,CACvB,aAAc,EACd,gBAAiB,CACnB,EAEA,SAASC,GAAU1e,EAAK,CACtB,OAAOA,EAAI,MAAM,IAAQ,EAAE,IAAI,SAAU6W,EAAG,CAAE,OAAOA,EAAE,UAAU,KAAK,CAAI,CAAA,EAAE,KAAK,IAAQ,CAC3F,CAEA,SAAS8H,GAAWlW,EAAK,CAIvB,QAHIoJ,EAAQ,EACR+M,EAAML,GAAa,OAAS,EAEzB1M,GAAS+M,GAAK,CACnB,IAAIC,EAAM,KAAK,OAAOhN,EAAQ+M,GAAO,CAAC,EAElCtlB,EAASilB,GAAaM,CAAG,EAC7B,GAAIvlB,EAAO,CAAC,EAAE,CAAC,GAAKmP,GAAOnP,EAAO,CAAC,EAAE,CAAC,GAAKmP,EACzC,OAAOnP,EACEA,EAAO,CAAC,EAAE,CAAC,EAAImP,EACxBmW,EAAMC,EAAM,EAEZhN,EAAQgN,EAAM,CAEjB,CAED,OAAO,IACT,CAEA,IAAIC,GAAqB,kCAEzB,SAASC,GAAavC,EAAQ,CAC5B,OAAOA,EAEJ,QAAQsC,GAAoB,GAAG,EAE/B,MACL,CAEA,SAASE,GAASC,EAAaC,EAASC,EAAmB,CAKzD,QAJIC,EAAW,GACXC,EAAY,GAEZC,EAAMP,GAAaE,CAAW,EACzBzR,EAAI,EAAGA,EAAI8R,EAAK,EAAE9R,EAAG,CAC5B,IAAIuP,EAAYkC,EAAY,YAAYzR,CAAC,EACrC9Q,EAASiiB,GAAW5B,CAAS,EAEjC,OAAQrgB,EAAO,CAAC,EAAC,CACf,IAAK,aACH0iB,EAAW,GACXC,GAAa,OAAO,cAActC,CAAS,EAC3C,MACF,IAAK,UACH,MACF,IAAK,SACHsC,GAAa,OAAO,cAAc,MAAM,OAAQ3iB,EAAO,CAAC,CAAC,EACzD,MACF,IAAK,YACCyiB,IAAsBV,GAAmB,aAC3CY,GAAa,OAAO,cAAc,MAAM,OAAQ3iB,EAAO,CAAC,CAAC,EAEzD2iB,GAAa,OAAO,cAActC,CAAS,EAE7C,MACF,IAAK,QACHsC,GAAa,OAAO,cAActC,CAAS,EAC3C,MACF,IAAK,yBACCmC,GACFE,EAAW,GACXC,GAAa,OAAO,cAActC,CAAS,GAE3CsC,GAAa,OAAO,cAAc,MAAM,OAAQ3iB,EAAO,CAAC,CAAC,EAE3D,MACF,IAAK,wBACCwiB,IACFE,EAAW,IAGbC,GAAa,OAAO,cAActC,CAAS,EAC3C,KACH,CACF,CAED,MAAO,CACL,OAAQsC,EACR,MAAOD,CACX,CACA,CAEA,IAAIG,GAAsB,oqFAE1B,SAASC,GAAcC,EAAON,EAAmB,CAC3CM,EAAM,OAAO,EAAG,CAAC,IAAM,SACzBA,EAAQpB,GAAS,UAAUoB,CAAK,EACZhB,GAAmB,iBAGzC,IAAIziB,EAAQ,IAER0iB,GAAUe,CAAK,IAAMA,GACpBA,EAAM,CAAC,IAAM,KAAOA,EAAM,CAAC,IAAM,KAClCA,EAAM,CAAC,IAAM,KAAOA,EAAMA,EAAM,OAAS,CAAC,IAAM,KAChDA,EAAM,QAAQ,GAAG,IAAM,IACvBA,EAAM,OAAOF,EAAmB,IAAM,KACxCvjB,EAAQ,IAIV,QADIsjB,EAAMP,GAAaU,CAAK,EACnBjS,EAAI,EAAGA,EAAI8R,EAAK,EAAE9R,EAAG,CAC5B,IAAI9Q,EAASiiB,GAAWc,EAAM,YAAYjS,CAAC,CAAC,EAC5C,GAAKkS,KAAejB,GAAmB,cAAgB/hB,EAAO,CAAC,IAAM,SAChEgjB,KAAejB,GAAmB,iBAClC/hB,EAAO,CAAC,IAAM,SAAWA,EAAO,CAAC,IAAM,YAAc,CACxDV,EAAQ,GACR,KACD,CACF,CAED,MAAO,CACL,MAAOyjB,EACP,MAAOzjB,CACX,CACA,CAEA,SAAS0jB,GAAWT,EAAaC,EAASC,EAAmB,CAC3D,IAAI3lB,EAASwlB,GAASC,EAAaC,EAASC,CAAiB,EAC7D3lB,EAAO,OAASklB,GAAUllB,EAAO,MAAM,EAGvC,QADI6iB,EAAS7iB,EAAO,OAAO,MAAM,GAAG,EAC3B,EAAI,EAAG,EAAI6iB,EAAO,OAAQ,EAAE,EACnC,GAAI,CACF,IAAIsD,EAAaH,GAAcnD,EAAO,CAAC,CAAC,EACxCA,EAAO,CAAC,EAAIsD,EAAW,MACvBnmB,EAAO,MAAQA,EAAO,OAASmmB,EAAW,KAC3C,MAAU,CACTnmB,EAAO,MAAQ,EAChB,CAGH,MAAO,CACL,OAAQ6iB,EAAO,KAAK,GAAG,EACvB,MAAO7iB,EAAO,KAClB,CACA,CAEsBomB,GAAA,QAAG,SAASX,EAAaC,EAASC,EAAmBU,EAAiB,CAC1F,IAAIrmB,EAASkmB,GAAWT,EAAaC,EAASC,CAAiB,EAC3D9C,EAAS7iB,EAAO,OAAO,MAAM,GAAG,EAUpC,GATA6iB,EAASA,EAAO,IAAI,SAAS,EAAG,CAC9B,GAAI,CACF,OAAOgC,GAAS,QAAQ,CAAC,CAC1B,MAAU,CACT,OAAA7kB,EAAO,MAAQ,GACR,CACR,CACL,CAAG,EAEGqmB,EAAiB,CACnB,IAAI5R,EAAQoO,EAAO,MAAM,EAAGA,EAAO,OAAS,CAAC,EAAE,KAAK,GAAG,EAAE,QACrDpO,EAAM,OAAS,KAAOA,EAAM,SAAW,KACzCzU,EAAO,MAAQ,IAGjB,QAASgU,EAAE,EAAGA,EAAI6O,EAAO,OAAQ,EAAE7O,EACjC,GAAI6O,EAAO,OAAS,IAAMA,EAAO,SAAW,EAAG,CAC7C7iB,EAAO,MAAQ,GACf,KACD,CAEJ,CAED,OAAIA,EAAO,MAAc,KAClB6iB,EAAO,KAAK,GAAG,CACxB,EAEAuD,GAAA,UAA2B,SAASX,EAAaC,EAAS,CACxD,IAAI1lB,EAASkmB,GAAWT,EAAaC,EAAST,GAAmB,eAAe,EAEhF,MAAO,CACL,OAAQjlB,EAAO,OACf,MAAOA,EAAO,KAClB,CACA,EAEAomB,GAAA,mBAAoCnB,eC/LpC,MAAMJ,EAAWC,GACXsB,EAAOpB,GAEPsB,EAAiB,CACrB,IAAK,GACL,KAAM,KACN,OAAQ,GACR,KAAM,GACN,MAAO,IACP,GAAI,GACJ,IAAK,GACP,EAEMC,EAAU,OAAO,SAAS,EAEhC,SAAShB,EAAa/e,EAAK,CACzB,OAAOqe,EAAS,KAAK,OAAOre,CAAG,EAAE,MAClC,CAED,SAASggB,EAAGvK,EAAOwK,EAAK,CACtB,MAAMrX,EAAI6M,EAAMwK,CAAG,EACnB,OAAO,MAAMrX,CAAC,EAAI,OAAY,OAAO,cAAcA,CAAC,CACrD,CAED,SAASsX,EAAatX,EAAG,CACvB,OAAOA,GAAK,IAAQA,GAAK,EAC1B,CAED,SAASuX,EAAavX,EAAG,CACvB,OAAQA,GAAK,IAAQA,GAAK,IAAUA,GAAK,IAAQA,GAAK,GACvD,CAED,SAASwX,EAAoBxX,EAAG,CAC9B,OAAOuX,EAAavX,CAAC,GAAKsX,EAAatX,CAAC,CACzC,CAED,SAASyX,EAAWzX,EAAG,CACrB,OAAOsX,EAAatX,CAAC,GAAMA,GAAK,IAAQA,GAAK,IAAUA,GAAK,IAAQA,GAAK,GAC1E,CAED,SAAS0X,EAAYC,EAAQ,CAC3B,OAAOA,IAAW,KAAOA,EAAO,YAAW,IAAO,KACnD,CAED,SAASC,EAAYD,EAAQ,CAC3B,OAAAA,EAASA,EAAO,cACTA,IAAW,MAAQA,IAAW,QAAUA,IAAW,QAAUA,IAAW,QAChF,CAED,SAASE,EAA+BC,EAAKC,EAAK,CAChD,OAAOR,EAAaO,CAAG,IAAMC,IAAQ,IAAMA,IAAQ,IACpD,CAED,SAASC,EAA2BpE,EAAQ,CAC1C,OAAOA,EAAO,SAAW,GAAK2D,EAAa3D,EAAO,YAAY,CAAC,CAAC,IAAMA,EAAO,CAAC,IAAM,KAAOA,EAAO,CAAC,IAAM,IAC1G,CAED,SAASqE,EAAqCrE,EAAQ,CACpD,OAAOA,EAAO,SAAW,GAAK2D,EAAa3D,EAAO,YAAY,CAAC,CAAC,GAAKA,EAAO,CAAC,IAAM,GACpF,CAED,SAASsE,EAA+BtE,EAAQ,CAC9C,OAAOA,EAAO,OAAO,2DAA2D,IAAM,EACvF,CAED,SAASuE,EAA+CvE,EAAQ,CAC9D,OAAOA,EAAO,OAAO,yDAAyD,IAAM,EACrF,CAED,SAASwE,EAAgBC,EAAQ,CAC/B,OAAOnB,EAAemB,CAAM,IAAM,MACnC,CAED,SAASC,EAAU/kB,EAAK,CACtB,OAAO6kB,EAAgB7kB,EAAI,MAAM,CAClC,CAED,SAASglB,EAAYF,EAAQ,CAC3B,OAAOnB,EAAemB,CAAM,CAC7B,CAED,SAASG,EAAcxY,EAAG,CACxB,IAAIyY,EAAMzY,EAAE,SAAS,EAAE,EAAE,YAAW,EACpC,OAAIyY,EAAI,SAAW,IACjBA,EAAM,IAAMA,GAGP,IAAMA,CACd,CAED,SAASC,EAAkB1Y,EAAG,CAC5B,MAAM2Y,EAAM,IAAI,OAAO3Y,CAAC,EAExB,IAAI5I,EAAM,GAEV,QAASwN,EAAI,EAAGA,EAAI+T,EAAI,OAAQ,EAAE/T,EAChCxN,GAAOohB,EAAcG,EAAI/T,CAAC,CAAC,EAG7B,OAAOxN,CACR,CAED,SAASwhB,EAAkBxhB,EAAK,CAC9B,MAAMyV,EAAQ,IAAI,OAAOzV,CAAG,EACtByc,EAAS,CAAA,EACf,QAASjP,EAAI,EAAGA,EAAIiI,EAAM,OAAQ,EAAEjI,EAC9BiI,EAAMjI,CAAC,IAAM,GACfiP,EAAO,KAAKhH,EAAMjI,CAAC,CAAC,EACXiI,EAAMjI,CAAC,IAAM,IAAM6S,EAAW5K,EAAMjI,EAAI,CAAC,CAAC,GAAK6S,EAAW5K,EAAMjI,EAAI,CAAC,CAAC,GAC/EiP,EAAO,KAAK,SAAShH,EAAM,MAAMjI,EAAI,EAAGA,EAAI,CAAC,EAAE,SAAQ,EAAI,EAAE,CAAC,EAC9DA,GAAK,GAELiP,EAAO,KAAKhH,EAAMjI,CAAC,CAAC,EAGxB,OAAO,IAAI,OAAOiP,CAAM,EAAE,SAAQ,CACnC,CAED,SAASgF,EAAyB7Y,EAAG,CACnC,OAAOA,GAAK,IAAQA,EAAI,GACzB,CAED,MAAM8Y,EAA4B,IAAI,IAAI,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAG,CAAC,EAChF,SAASC,GAAoB/Y,EAAG,CAC9B,OAAO6Y,EAAyB7Y,CAAC,GAAK8Y,EAA0B,IAAI9Y,CAAC,CACtE,CAED,MAAMgZ,GACJ,IAAI,IAAI,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,CAAC,EACnD,SAASC,GAAwBjZ,EAAG,CAClC,OAAO+Y,GAAoB/Y,CAAC,GAAKgZ,GAA8B,IAAIhZ,CAAC,CACrE,CAED,SAASkZ,GAAkBlZ,EAAGmZ,EAAoB,CAChD,MAAMC,EAAO,OAAO,cAAcpZ,CAAC,EAEnC,OAAImZ,EAAmBnZ,CAAC,EACf0Y,EAAkBU,CAAI,EAGxBA,CACR,CAED,SAASC,GAAgBxM,EAAO,CAC9B,IAAIiB,EAAI,GAUR,OARIjB,EAAM,QAAU,GAAKA,EAAM,OAAO,CAAC,IAAM,KAAOA,EAAM,OAAO,CAAC,EAAE,YAAW,IAAO,KACpFA,EAAQA,EAAM,UAAU,CAAC,EACzBiB,EAAI,IACKjB,EAAM,QAAU,GAAKA,EAAM,OAAO,CAAC,IAAM,MAClDA,EAAQA,EAAM,UAAU,CAAC,EACzBiB,EAAI,GAGFjB,IAAU,GACL,GAGKiB,IAAM,GAAK,SAAYA,IAAM,GAAK,eAAiB,UACvD,KAAKjB,CAAK,EACXsK,EAGF,SAAStK,EAAOiB,CAAC,CACzB,CAED,SAASwL,GAAUzM,EAAO,CACxB,MAAMxU,EAAQwU,EAAM,MAAM,GAAG,EAO7B,GANIxU,EAAMA,EAAM,OAAS,CAAC,IAAM,IAC1BA,EAAM,OAAS,GACjBA,EAAM,IAAG,EAITA,EAAM,OAAS,EACjB,OAAOwU,EAGT,MAAM0M,EAAU,CAAA,EAChB,UAAWC,KAAQnhB,EAAO,CACxB,GAAImhB,IAAS,GACX,OAAO3M,EAET,MAAMzN,EAAIia,GAAgBG,CAAI,EAC9B,GAAIpa,IAAM+X,EACR,OAAOtK,EAGT0M,EAAQ,KAAKna,CAAC,CACf,CAED,QAASwF,EAAI,EAAGA,EAAI2U,EAAQ,OAAS,EAAG,EAAE3U,EACxC,GAAI2U,EAAQ3U,CAAC,EAAI,IACf,OAAOuS,EAGX,GAAIoC,EAAQA,EAAQ,OAAS,CAAC,GAAK,KAAK,IAAI,IAAK,EAAIA,EAAQ,MAAM,EACjE,OAAOpC,EAGT,IAAIsC,EAAOF,EAAQ,MACfzF,EAAU,EAEd,UAAW1U,KAAKma,EACdE,GAAQra,EAAI,KAAK,IAAI,IAAK,EAAI0U,CAAO,EACrC,EAAEA,EAGJ,OAAO2F,CACR,CAED,SAASC,GAAcC,EAAS,CAC9B,IAAI9F,EAAS,GACTzU,EAAIua,EAER,QAAS/U,EAAI,EAAGA,GAAK,EAAG,EAAEA,EACxBiP,EAAS,OAAOzU,EAAI,GAAG,EAAIyU,EACvBjP,IAAM,IACRiP,EAAS,IAAMA,GAEjBzU,EAAI,KAAK,MAAMA,EAAI,GAAG,EAGxB,OAAOyU,CACR,CAED,SAAS+F,GAAU/M,EAAO,CACxB,MAAM8M,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACvC,IAAIE,EAAa,EACbC,EAAW,KACXC,EAAU,EAId,GAFAlN,EAAQ4I,EAAS,KAAK,OAAO5I,CAAK,EAE9BA,EAAMkN,CAAO,IAAM,GAAI,CACzB,GAAIlN,EAAMkN,EAAU,CAAC,IAAM,GACzB,OAAO5C,EAGT4C,GAAW,EACX,EAAEF,EACFC,EAAWD,CACZ,CAED,KAAOE,EAAUlN,EAAM,QAAQ,CAC7B,GAAIgN,IAAe,EACjB,OAAO1C,EAGT,GAAItK,EAAMkN,CAAO,IAAM,GAAI,CACzB,GAAID,IAAa,KACf,OAAO3C,EAET,EAAE4C,EACF,EAAEF,EACFC,EAAWD,EACX,QACD,CAED,IAAIrmB,EAAQ,EACR8f,EAAS,EAEb,KAAOA,EAAS,GAAKmE,EAAW5K,EAAMkN,CAAO,CAAC,GAC5CvmB,EAAQA,EAAQ,GAAO,SAAS4jB,EAAGvK,EAAOkN,CAAO,EAAG,EAAE,EACtD,EAAEA,EACF,EAAEzG,EAGJ,GAAIzG,EAAMkN,CAAO,IAAM,GAAI,CAOzB,GANIzG,IAAW,IAIfyG,GAAWzG,EAEPuG,EAAa,GACf,OAAO1C,EAGT,IAAI6C,GAAc,EAElB,KAAOnN,EAAMkN,CAAO,IAAM,QAAW,CACnC,IAAIE,GAAY,KAEhB,GAAID,GAAc,EAChB,GAAInN,EAAMkN,CAAO,IAAM,IAAMC,GAAc,EACzC,EAAED,MAEF,QAAO5C,EAIX,GAAI,CAACG,EAAazK,EAAMkN,CAAO,CAAC,EAC9B,OAAO5C,EAGT,KAAOG,EAAazK,EAAMkN,CAAO,CAAC,GAAG,CACnC,MAAMG,GAAS,SAAS9C,EAAGvK,EAAOkN,CAAO,CAAC,EAC1C,GAAIE,KAAc,KAChBA,GAAYC,OACP,IAAID,KAAc,EACvB,OAAO9C,EAEP8C,GAAYA,GAAY,GAAKC,GAE/B,GAAID,GAAY,IACd,OAAO9C,EAET,EAAE4C,CACH,CAEDJ,EAAQE,CAAU,EAAIF,EAAQE,CAAU,EAAI,IAAQI,GAEpD,EAAED,IAEEA,KAAgB,GAAKA,KAAgB,IACvC,EAAEH,CAEL,CAED,GAAIG,KAAgB,EAClB,OAAO7C,EAGT,KACD,SAAUtK,EAAMkN,CAAO,IAAM,IAE5B,GADA,EAAEA,EACElN,EAAMkN,CAAO,IAAM,OACrB,OAAO5C,UAEAtK,EAAMkN,CAAO,IAAM,OAC5B,OAAO5C,EAGTwC,EAAQE,CAAU,EAAIrmB,EACtB,EAAEqmB,CACH,CAED,GAAIC,IAAa,KAAM,CACrB,IAAIK,EAAQN,EAAaC,EAEzB,IADAD,EAAa,EACNA,IAAe,GAAKM,EAAQ,GAAG,CACpC,MAAMC,EAAOT,EAAQG,EAAWK,EAAQ,CAAC,EACzCR,EAAQG,EAAWK,EAAQ,CAAC,EAAIR,EAAQE,CAAU,EAClDF,EAAQE,CAAU,EAAIO,EACtB,EAAEP,EACF,EAAEM,CACH,CACF,SAAUL,IAAa,MAAQD,IAAe,EAC7C,OAAO1C,EAGT,OAAOwC,CACR,CAED,SAASU,GAAcV,EAAS,CAC9B,IAAI9F,EAAS,GAEb,MAAMiG,EADYQ,GAAwBX,CAAO,EACtB,IAC3B,IAAIY,EAAU,GAEd,QAASV,EAAa,EAAGA,GAAc,EAAG,EAAEA,EAC1C,GAAI,EAAAU,GAAWZ,EAAQE,CAAU,IAAM,GAMvC,IAJWU,IACTA,EAAU,IAGRT,IAAaD,EAAY,CAE3BhG,GADkBgG,IAAe,EAAI,KAAO,IAE5CU,EAAU,GACV,QACD,CAED1G,GAAU8F,EAAQE,CAAU,EAAE,SAAS,EAAE,EAErCA,IAAe,IACjBhG,GAAU,KAId,OAAOA,CACR,CAED,SAAS2G,GAAU3N,EAAO4N,EAAc,CACtC,GAAI5N,EAAM,CAAC,IAAM,IACf,OAAIA,EAAMA,EAAM,OAAS,CAAC,IAAM,IACvBsK,EAGFyC,GAAU/M,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,CAAC,EAGvD,GAAI,CAAC4N,EACH,OAAOC,GAAgB7N,CAAK,EAG9B,MAAM2G,EAASoF,EAAkB/L,CAAK,EAChC8N,EAAc3D,EAAK,QAAQxD,EAAQ,GAAOwD,EAAK,mBAAmB,gBAAiB,EAAK,EAK9F,GAJI2D,IAAgB,MAIhBzC,EAA+ByC,CAAW,EAC5C,OAAOxD,EAGT,MAAMyD,EAAWtB,GAAUqB,CAAW,EACtC,OAAI,OAAOC,GAAa,UAAYA,IAAazD,EACxCyD,EAGFD,CACR,CAED,SAASD,GAAgB7N,EAAO,CAC9B,GAAIsL,EAA+CtL,CAAK,EACtD,OAAOsK,EAGT,IAAItD,EAAS,GACb,MAAMgH,EAAUpF,EAAS,KAAK,OAAO5I,CAAK,EAC1C,QAASjI,EAAI,EAAGA,EAAIiW,EAAQ,OAAQ,EAAEjW,EACpCiP,GAAUqF,GAAkB2B,EAAQjW,CAAC,EAAGiU,CAAwB,EAElE,OAAOhF,CACR,CAED,SAASyG,GAAwBQ,EAAK,CACpC,IAAIC,EAAS,KACTC,EAAS,EACTC,EAAY,KACZC,EAAU,EAEd,QAAStW,EAAI,EAAGA,EAAIkW,EAAI,OAAQ,EAAElW,EAC5BkW,EAAIlW,CAAC,IAAM,GACTsW,EAAUF,IACZD,EAASE,EACTD,EAASE,GAGXD,EAAY,KACZC,EAAU,IAEND,IAAc,OAChBA,EAAYrW,GAEd,EAAEsW,GAKN,OAAIA,EAAUF,IACZD,EAASE,EACTD,EAASE,GAGJ,CACL,IAAKH,EACL,IAAKC,CACT,CACC,CAED,SAASG,GAAcC,EAAM,CAC3B,OAAI,OAAOA,GAAS,SACX1B,GAAc0B,CAAI,EAIvBA,aAAgB,MACX,IAAMf,GAAce,CAAI,EAAI,IAG9BA,CACR,CAED,SAASC,GAAiB9nB,EAAK,CAC7B,OAAOA,EAAI,QAAQ,mDAAoD,EAAE,CAC1E,CAED,SAAS+nB,GAAkB/nB,EAAK,CAC9B,OAAOA,EAAI,QAAQ,wBAAyB,EAAE,CAC/C,CAED,SAASgoB,GAAYhoB,EAAK,CACxB,MAAMyH,EAAOzH,EAAI,KACbyH,EAAK,SAAW,IAGhBzH,EAAI,SAAW,QAAUyH,EAAK,SAAW,GAAKwgB,GAA+BxgB,EAAK,CAAC,CAAC,GAIxFA,EAAK,IAAG,EACT,CAED,SAASygB,GAAoBloB,EAAK,CAChC,OAAOA,EAAI,WAAa,IAAMA,EAAI,WAAa,EAChD,CAED,SAASmoB,GAAgCnoB,EAAK,CAC5C,OAAOA,EAAI,OAAS,MAAQA,EAAI,OAAS,IAAMA,EAAI,kBAAoBA,EAAI,SAAW,MACvF,CAED,SAASioB,GAA+B5H,EAAQ,CAC9C,MAAO,cAAc,KAAKA,CAAM,CACjC,CAED,SAAS+H,EAAgB9O,EAAOwF,EAAMuJ,EAAkBroB,EAAKsoB,EAAe,CAU1E,GATA,KAAK,QAAU,EACf,KAAK,MAAQhP,EACb,KAAK,KAAOwF,GAAQ,KACpB,KAAK,iBAAmBuJ,GAAoB,QAC5C,KAAK,cAAgBC,EACrB,KAAK,IAAMtoB,EACX,KAAK,QAAU,GACf,KAAK,WAAa,GAEd,CAAC,KAAK,IAAK,CACb,KAAK,IAAM,CACT,OAAQ,GACR,SAAU,GACV,SAAU,GACV,KAAM,KACN,KAAM,KACN,KAAM,CAAE,EACR,MAAO,KACP,SAAU,KAEV,iBAAkB,EACxB,EAEI,MAAMuoB,EAAMT,GAAiB,KAAK,KAAK,EACnCS,IAAQ,KAAK,QACf,KAAK,WAAa,IAEpB,KAAK,MAAQA,CACd,CAED,MAAMA,EAAMR,GAAkB,KAAK,KAAK,EAexC,IAdIQ,IAAQ,KAAK,QACf,KAAK,WAAa,IAEpB,KAAK,MAAQA,EAEb,KAAK,MAAQD,GAAiB,eAE9B,KAAK,OAAS,GACd,KAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,sBAAwB,GAE7B,KAAK,MAAQpG,EAAS,KAAK,OAAO,KAAK,KAAK,EAErC,KAAK,SAAW,KAAK,MAAM,OAAQ,EAAE,KAAK,QAAS,CACxD,MAAMzV,EAAI,KAAK,MAAM,KAAK,OAAO,EAC3BoZ,GAAO,MAAMpZ,CAAC,EAAI,OAAY,OAAO,cAAcA,CAAC,EAGpD+b,GAAM,KAAK,SAAW,KAAK,KAAK,EAAE/b,EAAGoZ,EAAI,EAC/C,GAAK2C,IAEE,GAAIA,KAAQ5E,EAAS,CAC1B,KAAK,QAAU,GACf,KACD,MAJC,MAKH,CACF,CAEDwE,EAAgB,UAAU,oBAAoB,EAAI,SAA0B3b,EAAGoZ,EAAM,CACnF,GAAI7B,EAAavX,CAAC,EAChB,KAAK,QAAUoZ,EAAK,cACpB,KAAK,MAAQ,iBACJ,CAAC,KAAK,cACf,KAAK,MAAQ,YACb,EAAE,KAAK,YAEP,aAAK,WAAa,GACXjC,EAGT,MAAO,EACT,EAEAwE,EAAgB,UAAU,cAAc,EAAI,SAAqB3b,EAAGoZ,EAAM,CACxE,GAAI5B,EAAoBxX,CAAC,GAAKA,IAAM,IAAMA,IAAM,IAAMA,IAAM,GAC1D,KAAK,QAAUoZ,EAAK,sBACXpZ,IAAM,GAAI,CAoBnB,GAnBI,KAAK,gBACHsY,EAAU,KAAK,GAAG,GAAK,CAACF,EAAgB,KAAK,MAAM,GAInD,CAACE,EAAU,KAAK,GAAG,GAAKF,EAAgB,KAAK,MAAM,IAIlDqD,GAAoB,KAAK,GAAG,GAAK,KAAK,IAAI,OAAS,OAAS,KAAK,SAAW,QAI7E,KAAK,IAAI,SAAW,SAAW,KAAK,IAAI,OAAS,IAAM,KAAK,IAAI,OAAS,SAI/E,KAAK,IAAI,OAAS,KAAK,OACvB,KAAK,OAAS,GACV,KAAK,eACP,MAAO,GAEL,KAAK,IAAI,SAAW,SAClB,KAAK,MAAM,KAAK,QAAU,CAAC,IAAM,IAAM,KAAK,MAAM,KAAK,QAAU,CAAC,IAAM,MAC1E,KAAK,WAAa,IAEpB,KAAK,MAAQ,QACJnD,EAAU,KAAK,GAAG,GAAK,KAAK,OAAS,MAAQ,KAAK,KAAK,SAAW,KAAK,IAAI,OACpF,KAAK,MAAQ,gCACJA,EAAU,KAAK,GAAG,EAC3B,KAAK,MAAQ,4BACJ,KAAK,MAAM,KAAK,QAAU,CAAC,IAAM,IAC1C,KAAK,MAAQ,oBACb,EAAE,KAAK,UAEP,KAAK,IAAI,iBAAmB,GAC5B,KAAK,IAAI,KAAK,KAAK,EAAE,EACrB,KAAK,MAAQ,4BAEnB,SAAa,CAAC,KAAK,cACf,KAAK,OAAS,GACd,KAAK,MAAQ,YACb,KAAK,QAAU,OAEf,aAAK,WAAa,GACXnB,EAGT,MAAO,EACT,EAEAwE,EAAgB,UAAU,iBAAiB,EAAI,SAAuB3b,EAAG,CACvE,OAAI,KAAK,OAAS,MAAS,KAAK,KAAK,kBAAoBA,IAAM,GACtDmX,GACE,KAAK,KAAK,kBAAoBnX,IAAM,IAC7C,KAAK,IAAI,OAAS,KAAK,KAAK,OAC5B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,KAAK,KAAK,MAC3B,KAAK,IAAI,SAAW,GACpB,KAAK,IAAI,iBAAmB,GAC5B,KAAK,MAAQ,YACJ,KAAK,KAAK,SAAW,QAC9B,KAAK,MAAQ,OACb,EAAE,KAAK,UAEP,KAAK,MAAQ,WACb,EAAE,KAAK,SAGF,GACT,EAEA2b,EAAgB,UAAU,qCAAqC,EAAI,SAAyC3b,EAAG,CAC7G,OAAIA,IAAM,IAAM,KAAK,MAAM,KAAK,QAAU,CAAC,IAAM,IAC/C,KAAK,MAAQ,mCACb,EAAE,KAAK,UAEP,KAAK,WAAa,GAClB,KAAK,MAAQ,WACb,EAAE,KAAK,SAGF,EACT,EAEA2b,EAAgB,UAAU,yBAAyB,EAAI,SAA8B3b,EAAG,CACtF,OAAIA,IAAM,GACR,KAAK,MAAQ,aAEb,KAAK,MAAQ,OACb,EAAE,KAAK,SAGF,EACT,EAEA2b,EAAgB,UAAU,gBAAgB,EAAI,SAAuB3b,EAAG,CACtE,YAAK,IAAI,OAAS,KAAK,KAAK,OACxB,MAAMA,CAAC,GACT,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,KAAK,KAAK,OAClBA,IAAM,GACf,KAAK,MAAQ,iBACJA,IAAM,IACf,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,GACjB,KAAK,MAAQ,SACJA,IAAM,IACf,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,KAAK,KAAK,MAC3B,KAAK,IAAI,SAAW,GACpB,KAAK,MAAQ,YACJsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,IACtC,KAAK,WAAa,GAClB,KAAK,MAAQ,mBAEb,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,MAAM,EAAG,KAAK,KAAK,KAAK,OAAS,CAAC,EAEjE,KAAK,MAAQ,OACb,EAAE,KAAK,SAGF,EACT,EAEA2b,EAAgB,UAAU,sBAAsB,EAAI,SAA4B3b,EAAG,CACjF,OAAIsY,EAAU,KAAK,GAAG,IAAMtY,IAAM,IAAMA,IAAM,KACxCA,IAAM,KACR,KAAK,WAAa,IAEpB,KAAK,MAAQ,oCACJA,IAAM,GACf,KAAK,MAAQ,aAEb,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,SAAW,KAAK,KAAK,SAC9B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,MAAQ,OACb,EAAE,KAAK,SAGF,EACT,EAEA2b,EAAgB,UAAU,iCAAiC,EAAI,SAAsC3b,EAAG,CACtG,OAAIA,IAAM,IAAM,KAAK,MAAM,KAAK,QAAU,CAAC,IAAM,IAC/C,KAAK,MAAQ,mCACb,EAAE,KAAK,UAEP,KAAK,WAAa,GAClB,KAAK,MAAQ,mCACb,EAAE,KAAK,SAGF,EACT,EAEA2b,EAAgB,UAAU,wCAAwC,EAAI,SAA4C3b,EAAG,CACnH,OAAIA,IAAM,IAAMA,IAAM,IACpB,KAAK,MAAQ,YACb,EAAE,KAAK,SAEP,KAAK,WAAa,GAGb,EACT,EAEA2b,EAAgB,UAAU,iBAAiB,EAAI,SAAwB3b,EAAGoZ,EAAM,CAC9E,GAAIpZ,IAAM,GAAI,CACZ,KAAK,WAAa,GACd,KAAK,SACP,KAAK,OAAS,MAAQ,KAAK,QAE7B,KAAK,OAAS,GAGd,MAAM0W,EAAMP,EAAa,KAAK,MAAM,EACpC,QAAS4D,EAAU,EAAGA,EAAUrD,EAAK,EAAEqD,EAAS,CAC9C,MAAM5F,EAAY,KAAK,OAAO,YAAY4F,CAAO,EAEjD,GAAI5F,IAAc,IAAM,CAAC,KAAK,sBAAuB,CACnD,KAAK,sBAAwB,GAC7B,QACD,CACD,MAAM6H,EAAoB9C,GAAkB/E,EAAW8E,EAAuB,EAC1E,KAAK,sBACP,KAAK,IAAI,UAAY+C,EAErB,KAAK,IAAI,UAAYA,CAExB,CACD,KAAK,OAAS,EAClB,SAAa,MAAMhc,CAAC,GAAKA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IACzCsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,GAAK,CAC5C,GAAI,KAAK,QAAU,KAAK,SAAW,GACjC,YAAK,WAAa,GACXmX,EAET,KAAK,SAAWhB,EAAa,KAAK,MAAM,EAAI,EAC5C,KAAK,OAAS,GACd,KAAK,MAAQ,MACjB,MACI,KAAK,QAAUiD,EAGjB,MAAO,EACT,EAEAuC,EAAgB,UAAU,gBAAgB,EAC1CA,EAAgB,UAAU,YAAY,EAAI,SAAuB3b,EAAGoZ,EAAM,CACxE,GAAI,KAAK,eAAiB,KAAK,IAAI,SAAW,OAC5C,EAAE,KAAK,QACP,KAAK,MAAQ,oBACJpZ,IAAM,IAAM,CAAC,KAAK,QAAS,CACpC,GAAI,KAAK,SAAW,GAClB,YAAK,WAAa,GACXmX,EAGT,MAAMiE,EAAOZ,GAAU,KAAK,OAAQlC,EAAU,KAAK,GAAG,CAAC,EACvD,GAAI8C,IAASjE,EACX,OAAOA,EAMT,GAHA,KAAK,IAAI,KAAOiE,EAChB,KAAK,OAAS,GACd,KAAK,MAAQ,OACT,KAAK,gBAAkB,WACzB,MAAO,EAEb,SAAa,MAAMpb,CAAC,GAAKA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IACzCsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,GAAK,CAE5C,GADA,EAAE,KAAK,QACHsY,EAAU,KAAK,GAAG,GAAK,KAAK,SAAW,GACzC,YAAK,WAAa,GACXnB,EACF,GAAI,KAAK,eAAiB,KAAK,SAAW,KACrCsE,GAAoB,KAAK,GAAG,GAAK,KAAK,IAAI,OAAS,MAC7D,YAAK,WAAa,GACX,GAGT,MAAML,EAAOZ,GAAU,KAAK,OAAQlC,EAAU,KAAK,GAAG,CAAC,EACvD,GAAI8C,IAASjE,EACX,OAAOA,EAMT,GAHA,KAAK,IAAI,KAAOiE,EAChB,KAAK,OAAS,GACd,KAAK,MAAQ,aACT,KAAK,cACP,MAAO,EAEb,MACQpb,IAAM,GACR,KAAK,QAAU,GACNA,IAAM,KACf,KAAK,QAAU,IAEjB,KAAK,QAAUoZ,EAGjB,MAAO,EACT,EAEAuC,EAAgB,UAAU,YAAY,EAAI,SAAmB3b,EAAGoZ,EAAM,CACpE,GAAI9B,EAAatX,CAAC,EAChB,KAAK,QAAUoZ,UACN,MAAMpZ,CAAC,GAAKA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IACzCsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,IAC9B,KAAK,cAAe,CAC7B,GAAI,KAAK,SAAW,GAAI,CACtB,MAAMic,EAAO,SAAS,KAAK,MAAM,EACjC,GAAIA,EAAO,KAAK,IAAI,EAAG,EAAE,EAAI,EAC3B,YAAK,WAAa,GACX9E,EAET,KAAK,IAAI,KAAO8E,IAAS1D,EAAY,KAAK,IAAI,MAAM,EAAI,KAAO0D,EAC/D,KAAK,OAAS,EACf,CACD,GAAI,KAAK,cACP,MAAO,GAET,KAAK,MAAQ,aACb,EAAE,KAAK,OACX,KACI,aAAK,WAAa,GACX9E,EAGT,MAAO,EACT,EAEA,MAAM+E,GAA0B,IAAI,IAAI,CAAC,GAAI,GAAI,GAAI,EAAE,CAAC,EAExDP,EAAgB,UAAU,YAAY,EAAI,SAAmB3b,EAAG,CAC9D,YAAK,IAAI,OAAS,OAEdA,IAAM,IAAMA,IAAM,IAChBA,IAAM,KACR,KAAK,WAAa,IAEpB,KAAK,MAAQ,cACJ,KAAK,OAAS,MAAQ,KAAK,KAAK,SAAW,OAChD,MAAMA,CAAC,GACT,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,KAAK,KAAK,OAClBA,IAAM,IACf,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,GACjB,KAAK,MAAQ,SACJA,IAAM,IACf,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/B,KAAK,IAAI,MAAQ,KAAK,KAAK,MAC3B,KAAK,IAAI,SAAW,GACpB,KAAK,MAAQ,aAET,KAAK,MAAM,OAAS,KAAK,QAAU,IAAM,GACzC,CAAC6X,EAA+B7X,EAAG,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,GAC9D,KAAK,MAAM,OAAS,KAAK,QAAU,GAAK,GACxC,CAACkc,GAAwB,IAAI,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,GAC5D,KAAK,IAAI,KAAO,KAAK,KAAK,KAC1B,KAAK,IAAI,KAAO,KAAK,KAAK,KAAK,QAC/BX,GAAY,KAAK,GAAG,GAEpB,KAAK,WAAa,GAGpB,KAAK,MAAQ,OACb,EAAE,KAAK,UAGT,KAAK,MAAQ,OACb,EAAE,KAAK,SAGF,EACT,EAEAI,EAAgB,UAAU,kBAAkB,EAAI,SAAwB3b,EAAG,CACzE,OAAIA,IAAM,IAAMA,IAAM,IAChBA,IAAM,KACR,KAAK,WAAa,IAEpB,KAAK,MAAQ,cAET,KAAK,OAAS,MAAQ,KAAK,KAAK,SAAW,SACzCiY,EAAqC,KAAK,KAAK,KAAK,CAAC,CAAC,EACxD,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,EAEpC,KAAK,IAAI,KAAO,KAAK,KAAK,MAG9B,KAAK,MAAQ,OACb,EAAE,KAAK,SAGF,EACT,EAEA0D,EAAgB,UAAU,iBAAiB,EAAI,SAAuB3b,EAAGoZ,EAAM,CAC7E,GAAI,MAAMpZ,CAAC,GAAKA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IAAMA,IAAM,GAExD,GADA,EAAE,KAAK,QACH,CAAC,KAAK,eAAiBgY,EAA2B,KAAK,MAAM,EAC/D,KAAK,WAAa,GAClB,KAAK,MAAQ,eACJ,KAAK,SAAW,GAAI,CAE7B,GADA,KAAK,IAAI,KAAO,GACZ,KAAK,cACP,MAAO,GAET,KAAK,MAAQ,YACnB,KAAW,CACL,IAAIoD,EAAOZ,GAAU,KAAK,OAAQlC,EAAU,KAAK,GAAG,CAAC,EACrD,GAAI8C,IAASjE,EACX,OAAOA,EAOT,GALIiE,IAAS,cACXA,EAAO,IAET,KAAK,IAAI,KAAOA,EAEZ,KAAK,cACP,MAAO,GAGT,KAAK,OAAS,GACd,KAAK,MAAQ,YACd,MAED,KAAK,QAAUhC,EAGjB,MAAO,EACT,EAEAuC,EAAgB,UAAU,kBAAkB,EAAI,SAAwB3b,EAAG,CACzE,OAAIsY,EAAU,KAAK,GAAG,GAChBtY,IAAM,KACR,KAAK,WAAa,IAEpB,KAAK,MAAQ,OAETA,IAAM,IAAMA,IAAM,IACpB,EAAE,KAAK,SAEA,CAAC,KAAK,eAAiBA,IAAM,IACtC,KAAK,IAAI,MAAQ,GACjB,KAAK,MAAQ,SACJ,CAAC,KAAK,eAAiBA,IAAM,IACtC,KAAK,IAAI,SAAW,GACpB,KAAK,MAAQ,YACJA,IAAM,SACf,KAAK,MAAQ,OACTA,IAAM,IACR,EAAE,KAAK,SAIJ,EACT,EAEA2b,EAAgB,UAAU,YAAY,EAAI,SAAmB3b,EAAG,CAC9D,GAAI,MAAMA,CAAC,GAAKA,IAAM,IAAOsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,IACrD,CAAC,KAAK,gBAAkBA,IAAM,IAAMA,IAAM,IAAM,CAwBnD,GAvBIsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,KAC/B,KAAK,WAAa,IAGhB4X,EAAY,KAAK,MAAM,GACzB2D,GAAY,KAAK,GAAG,EAChBvb,IAAM,IAAM,EAAEsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,KAC7C,KAAK,IAAI,KAAK,KAAK,EAAE,GAEd0X,EAAY,KAAK,MAAM,GAAK1X,IAAM,IAClC,EAAEsY,EAAU,KAAK,GAAG,GAAKtY,IAAM,IACxC,KAAK,IAAI,KAAK,KAAK,EAAE,EACX0X,EAAY,KAAK,MAAM,IAC7B,KAAK,IAAI,SAAW,QAAU,KAAK,IAAI,KAAK,SAAW,GAAKM,EAA2B,KAAK,MAAM,IAChG,KAAK,IAAI,OAAS,IAAM,KAAK,IAAI,OAAS,OAC5C,KAAK,WAAa,GAClB,KAAK,IAAI,KAAO,IAElB,KAAK,OAAS,KAAK,OAAO,CAAC,EAAI,KAEjC,KAAK,IAAI,KAAK,KAAK,KAAK,MAAM,GAEhC,KAAK,OAAS,GACV,KAAK,IAAI,SAAW,SAAWhY,IAAM,QAAaA,IAAM,IAAMA,IAAM,IACtE,KAAO,KAAK,IAAI,KAAK,OAAS,GAAK,KAAK,IAAI,KAAK,CAAC,IAAM,IACtD,KAAK,WAAa,GAClB,KAAK,IAAI,KAAK,QAGdA,IAAM,KACR,KAAK,IAAI,MAAQ,GACjB,KAAK,MAAQ,SAEXA,IAAM,KACR,KAAK,IAAI,SAAW,GACpB,KAAK,MAAQ,WAEnB,MAGQA,IAAM,KACP,CAACyX,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,GACvC,CAACA,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,KAC1C,KAAK,WAAa,IAGpB,KAAK,QAAUyB,GAAkBlZ,EAAG+Y,EAAmB,EAGzD,MAAO,EACT,EAEA4C,EAAgB,UAAU,iCAAiC,EAAI,SAAmC3b,EAAG,CACnG,OAAIA,IAAM,IACR,KAAK,IAAI,MAAQ,GACjB,KAAK,MAAQ,SACJA,IAAM,IACf,KAAK,IAAI,SAAW,GACpB,KAAK,MAAQ,aAGT,CAAC,MAAMA,CAAC,GAAKA,IAAM,KACrB,KAAK,WAAa,IAGhBA,IAAM,KACL,CAACyX,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,GACxC,CAACA,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,KAC3C,KAAK,WAAa,IAGf,MAAMzX,CAAC,IACV,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAIkZ,GAAkBlZ,EAAG6Y,CAAwB,IAIhF,EACT,EAEA8C,EAAgB,UAAU,aAAa,EAAI,SAAoB3b,EAAGoZ,EAAM,CACtE,GAAI,MAAMpZ,CAAC,GAAM,CAAC,KAAK,eAAiBA,IAAM,GAAK,EAC7C,CAACsY,EAAU,KAAK,GAAG,GAAK,KAAK,IAAI,SAAW,MAAQ,KAAK,IAAI,SAAW,SAC1E,KAAK,iBAAmB,SAG1B,MAAMX,EAAS,IAAI,OAAO,KAAK,MAAM,EACrC,QAAS/S,EAAI,EAAGA,EAAI+S,EAAO,OAAQ,EAAE/S,EAC/B+S,EAAO/S,CAAC,EAAI,IAAQ+S,EAAO/S,CAAC,EAAI,KAAQ+S,EAAO/S,CAAC,IAAM,IAAQ+S,EAAO/S,CAAC,IAAM,IAC5E+S,EAAO/S,CAAC,IAAM,IAAQ+S,EAAO/S,CAAC,IAAM,GACtC,KAAK,IAAI,OAAS4T,EAAcb,EAAO/S,CAAC,CAAC,EAEzC,KAAK,IAAI,OAAS,OAAO,cAAc+S,EAAO/S,CAAC,CAAC,EAIpD,KAAK,OAAS,GACV5E,IAAM,KACR,KAAK,IAAI,SAAW,GACpB,KAAK,MAAQ,WAEnB,MAEQA,IAAM,KACP,CAACyX,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,GACvC,CAACA,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,KAC1C,KAAK,WAAa,IAGpB,KAAK,QAAU2B,EAGjB,MAAO,EACT,EAEAuC,EAAgB,UAAU,gBAAgB,EAAI,SAAuB3b,EAAG,CACtE,OAAI,MAAMA,CAAC,IACAA,IAAM,EACf,KAAK,WAAa,IAGdA,IAAM,KACP,CAACyX,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,GACvC,CAACA,EAAW,KAAK,MAAM,KAAK,QAAU,CAAC,CAAC,KAC1C,KAAK,WAAa,IAGpB,KAAK,IAAI,UAAYyB,GAAkBlZ,EAAG6Y,CAAwB,IAG7D,EACT,EAEA,SAASsD,GAAa5oB,EAAK6oB,EAAiB,CAC1C,IAAIvI,EAAStgB,EAAI,OAAS,IAqB1B,GApBIA,EAAI,OAAS,MACfsgB,GAAU,MAENtgB,EAAI,WAAa,IAAMA,EAAI,WAAa,MAC1CsgB,GAAUtgB,EAAI,SACVA,EAAI,WAAa,KACnBsgB,GAAU,IAAMtgB,EAAI,UAEtBsgB,GAAU,KAGZA,GAAUsH,GAAc5nB,EAAI,IAAI,EAE5BA,EAAI,OAAS,OACfsgB,GAAU,IAAMtgB,EAAI,OAEbA,EAAI,OAAS,MAAQA,EAAI,SAAW,SAC7CsgB,GAAU,MAGRtgB,EAAI,iBACNsgB,GAAUtgB,EAAI,KAAK,CAAC,MAEpB,WAAWqgB,KAAUrgB,EAAI,KACvBsgB,GAAU,IAAMD,EAIpB,OAAIrgB,EAAI,QAAU,OAChBsgB,GAAU,IAAMtgB,EAAI,OAGlB,CAAC6oB,GAAmB7oB,EAAI,WAAa,OACvCsgB,GAAU,IAAMtgB,EAAI,UAGfsgB,CACR,CAED,SAASwI,GAAgBC,EAAO,CAC9B,IAAI1rB,EAAS0rB,EAAM,OAAS,MAC5B,OAAA1rB,GAAUuqB,GAAcmB,EAAM,IAAI,EAE9BA,EAAM,OAAS,OACjB1rB,GAAU,IAAM0rB,EAAM,MAGjB1rB,CACR,CAEDohB,EAAA,QAAA,aAA8BmK,GAE9BnK,EAAoC,QAAA,mBAAA,SAAUze,EAAK,CAEjD,OAAQA,EAAI,OAAM,CAChB,IAAK,OACH,GAAI,CACF,OAAOye,EAAO,QAAQ,mBAAmBA,EAAO,QAAQ,SAASze,EAAI,KAAK,CAAC,CAAC,CAAC,CAC9E,MAAW,CAEV,MAAO,MACR,CACH,IAAK,MACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,KACL,IAAK,MACH,OAAO8oB,GAAgB,CACrB,OAAQ9oB,EAAI,OACZ,KAAMA,EAAI,KACV,KAAMA,EAAI,IAClB,CAAO,EACH,IAAK,OAEH,MAAO,UACT,QAEE,MAAO,MACV,CACH,EAEAye,EAAA,QAAA,cAA+B,SAAUnF,EAAOna,EAAS,CACnDA,IAAY,SACdA,EAAU,CAAA,GAGZ,MAAM6pB,EAAM,IAAIZ,EAAgB9O,EAAOna,EAAQ,QAASA,EAAQ,iBAAkBA,EAAQ,IAAKA,EAAQ,aAAa,EACpH,OAAI6pB,EAAI,QACC,UAGFA,EAAI,GACb,EAEAvK,EAAA,QAAA,eAAgC,SAAUze,EAAKipB,EAAU,CACvDjpB,EAAI,SAAW,GACf,MAAMsnB,EAAUpF,EAAS,KAAK,OAAO+G,CAAQ,EAC7C,QAAS5X,EAAI,EAAGA,EAAIiW,EAAQ,OAAQ,EAAEjW,EACpCrR,EAAI,UAAY2lB,GAAkB2B,EAAQjW,CAAC,EAAGqU,EAAuB,CAEzE,EAEAjH,EAAA,QAAA,eAAgC,SAAUze,EAAKkpB,EAAU,CACvDlpB,EAAI,SAAW,GACf,MAAMsnB,EAAUpF,EAAS,KAAK,OAAOgH,CAAQ,EAC7C,QAAS7X,EAAI,EAAGA,EAAIiW,EAAQ,OAAQ,EAAEjW,EACpCrR,EAAI,UAAY2lB,GAAkB2B,EAAQjW,CAAC,EAAGqU,EAAuB,CAEzE,EAEAjH,EAAA,QAAA,cAA+BmJ,GAE/BnJ,EAAA,QAAA,gCAAiD0J,GAEjD1J,EAAkC,QAAA,iBAAA,SAAU0K,EAAS,CACnD,OAAO,OAAOA,CAAO,CACvB,EAEA1K,EAAA,QAAA,SAA0B,SAAUnF,EAAOna,EAAS,CAClD,OAAIA,IAAY,SACdA,EAAU,CAAA,GAILsf,EAAO,QAAQ,cAAcnF,EAAO,CAAE,QAASna,EAAQ,QAAS,iBAAkBA,EAAQ,gBAAkB,CAAA,0BC9wCrH,MAAM6pB,EAAM7G,GAEUiH,GAAA,eAAG,KAAc,CACrC,YAAYC,EAAiB,CAC3B,MAAMrpB,EAAMqpB,EAAgB,CAAC,EACvBvK,EAAOuK,EAAgB,CAAC,EAE9B,IAAIC,EAAa,KACjB,GAAIxK,IAAS,SACXwK,EAAaN,EAAI,cAAclK,CAAI,EAC/BwK,IAAe,WACjB,MAAM,IAAI,UAAU,kBAAkB,EAI1C,MAAMC,EAAYP,EAAI,cAAchpB,EAAK,CAAE,QAASspB,CAAU,CAAE,EAChE,GAAIC,IAAc,UAChB,MAAM,IAAI,UAAU,aAAa,EAGnC,KAAK,KAAOA,CAGb,CAED,IAAI,MAAO,CACT,OAAOP,EAAI,aAAa,KAAK,IAAI,CAClC,CAED,IAAI,KAAKpO,EAAG,CACV,MAAM2O,EAAYP,EAAI,cAAcpO,CAAC,EACrC,GAAI2O,IAAc,UAChB,MAAM,IAAI,UAAU,aAAa,EAGnC,KAAK,KAAOA,CACb,CAED,IAAI,QAAS,CACX,OAAOP,EAAI,mBAAmB,KAAK,IAAI,CACxC,CAED,IAAI,UAAW,CACb,OAAO,KAAK,KAAK,OAAS,GAC3B,CAED,IAAI,SAASpO,EAAG,CACdoO,EAAI,cAAcpO,EAAI,IAAK,CAAE,IAAK,KAAK,KAAM,cAAe,cAAc,CAAE,CAC7E,CAED,IAAI,UAAW,CACb,OAAO,KAAK,KAAK,QAClB,CAED,IAAI,SAASA,EAAG,CACVoO,EAAI,gCAAgC,KAAK,IAAI,GAIjDA,EAAI,eAAe,KAAK,KAAMpO,CAAC,CAChC,CAED,IAAI,UAAW,CACb,OAAO,KAAK,KAAK,QAClB,CAED,IAAI,SAASA,EAAG,CACVoO,EAAI,gCAAgC,KAAK,IAAI,GAIjDA,EAAI,eAAe,KAAK,KAAMpO,CAAC,CAChC,CAED,IAAI,MAAO,CACT,MAAM5a,EAAM,KAAK,KAEjB,OAAIA,EAAI,OAAS,KACR,GAGLA,EAAI,OAAS,KACRgpB,EAAI,cAAchpB,EAAI,IAAI,EAG5BgpB,EAAI,cAAchpB,EAAI,IAAI,EAAI,IAAMgpB,EAAI,iBAAiBhpB,EAAI,IAAI,CACzE,CAED,IAAI,KAAK4a,EAAG,CACN,KAAK,KAAK,kBAIdoO,EAAI,cAAcpO,EAAG,CAAE,IAAK,KAAK,KAAM,cAAe,MAAM,CAAE,CAC/D,CAED,IAAI,UAAW,CACb,OAAI,KAAK,KAAK,OAAS,KACd,GAGFoO,EAAI,cAAc,KAAK,KAAK,IAAI,CACxC,CAED,IAAI,SAASpO,EAAG,CACV,KAAK,KAAK,kBAIdoO,EAAI,cAAcpO,EAAG,CAAE,IAAK,KAAK,KAAM,cAAe,UAAU,CAAE,CACnE,CAED,IAAI,MAAO,CACT,OAAI,KAAK,KAAK,OAAS,KACd,GAGFoO,EAAI,iBAAiB,KAAK,KAAK,IAAI,CAC3C,CAED,IAAI,KAAKpO,EAAG,CACNoO,EAAI,gCAAgC,KAAK,IAAI,IAI7CpO,IAAM,GACR,KAAK,KAAK,KAAO,KAEjBoO,EAAI,cAAcpO,EAAG,CAAE,IAAK,KAAK,KAAM,cAAe,MAAM,CAAE,EAEjE,CAED,IAAI,UAAW,CACb,OAAI,KAAK,KAAK,iBACL,KAAK,KAAK,KAAK,CAAC,EAGrB,KAAK,KAAK,KAAK,SAAW,EACrB,GAGF,IAAM,KAAK,KAAK,KAAK,KAAK,GAAG,CACrC,CAED,IAAI,SAASA,EAAG,CACV,KAAK,KAAK,mBAId,KAAK,KAAK,KAAO,GACjBoO,EAAI,cAAcpO,EAAG,CAAE,IAAK,KAAK,KAAM,cAAe,YAAY,CAAE,EACrE,CAED,IAAI,QAAS,CACX,OAAI,KAAK,KAAK,QAAU,MAAQ,KAAK,KAAK,QAAU,GAC3C,GAGF,IAAM,KAAK,KAAK,KACxB,CAED,IAAI,OAAOA,EAAG,CAGZ,MAAM5a,EAAM,KAAK,KAEjB,GAAI4a,IAAM,GAAI,CACZ5a,EAAI,MAAQ,KACZ,MACD,CAED,MAAMsZ,EAAQsB,EAAE,CAAC,IAAM,IAAMA,EAAE,UAAU,CAAC,EAAIA,EAC9C5a,EAAI,MAAQ,GACZgpB,EAAI,cAAc1P,EAAO,CAAE,IAAAtZ,EAAK,cAAe,OAAO,CAAE,CACzD,CAED,IAAI,MAAO,CACT,OAAI,KAAK,KAAK,WAAa,MAAQ,KAAK,KAAK,WAAa,GACjD,GAGF,IAAM,KAAK,KAAK,QACxB,CAED,IAAI,KAAK4a,EAAG,CACV,GAAIA,IAAM,GAAI,CACZ,KAAK,KAAK,SAAW,KACrB,MACD,CAED,MAAMtB,EAAQsB,EAAE,CAAC,IAAM,IAAMA,EAAE,UAAU,CAAC,EAAIA,EAC9C,KAAK,KAAK,SAAW,GACrBoO,EAAI,cAAc1P,EAAO,CAAE,IAAK,KAAK,KAAM,cAAe,UAAU,CAAE,CACvE,CAED,QAAS,CACP,OAAO,KAAK,IACb,CACH,cCrMA,MAAMwE,EAAcqE,GACdqH,EAAQnH,GACRoH,EAAOC,GAEP/K,EAAO6K,EAAM,WAEnB,SAASG,EAAI3pB,EAAK,CAChB,GAAI,CAAC,MAAQ,KAAK2e,CAAI,GAAK,EAAE,gBAAgBgL,GAC3C,MAAM,IAAI,UAAU,uHAAuH,EAE7I,GAAI,UAAU,OAAS,EACrB,MAAM,IAAI,UAAU,4DAA8D,UAAU,OAAS,WAAW,EAElH,MAAMnd,EAAO,CAAA,EACb,QAAS6E,EAAI,EAAGA,EAAI,UAAU,QAAUA,EAAI,EAAG,EAAEA,EAC/C7E,EAAK6E,CAAC,EAAI,UAAUA,CAAC,EAEvB7E,EAAK,CAAC,EAAIsR,EAAY,UAAatR,EAAK,CAAC,CAAC,EACtCA,EAAK,CAAC,IAAM,SAChBA,EAAK,CAAC,EAAIsR,EAAY,UAAatR,EAAK,CAAC,CAAC,GAG1CiS,EAAO,QAAQ,MAAM,KAAMjS,CAAI,CAChC,CAEDmd,EAAI,UAAU,OAAS,UAAkB,CACvC,GAAI,CAAC,MAAQ,CAAClL,EAAO,QAAQ,GAAG,IAAI,EAClC,MAAM,IAAI,UAAU,oBAAoB,EAE1C,MAAMjS,EAAO,CAAA,EACb,QAAS6E,EAAI,EAAGA,EAAI,UAAU,QAAUA,EAAI,EAAG,EAAEA,EAC/C7E,EAAK6E,CAAC,EAAI,UAAUA,CAAC,EAEvB,OAAO,KAAKsN,CAAI,EAAE,OAAO,MAAM,KAAKA,CAAI,EAAGnS,CAAI,CACjD,EACA,OAAO,eAAemd,EAAI,UAAW,OAAQ,CAC3C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,IACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,KAAOzC,CACnB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAEDyN,EAAI,UAAU,SAAW,UAAY,CACnC,GAAI,CAAC,MAAQ,CAAClL,EAAO,QAAQ,GAAG,IAAI,EAClC,MAAM,IAAI,UAAU,oBAAoB,EAE1C,OAAO,KAAK,IACd,EAEA,OAAO,eAAekL,EAAI,UAAW,SAAU,CAC7C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,MACnB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAegL,EAAI,UAAW,WAAY,CAC/C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,QACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,SAAWzC,CACvB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,WAAY,CAC/C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,QACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,SAAWzC,CACvB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,WAAY,CAC/C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,QACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,SAAWzC,CACvB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,OAAQ,CAC3C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,IACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,KAAOzC,CACnB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,WAAY,CAC/C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,QACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,SAAWzC,CACvB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,OAAQ,CAC3C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,IACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,KAAOzC,CACnB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,WAAY,CAC/C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,QACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,SAAWzC,CACvB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,SAAU,CAC7C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,MACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,OAASzC,CACrB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAED,OAAO,eAAeyN,EAAI,UAAW,OAAQ,CAC3C,KAAM,CACJ,OAAO,KAAKhL,CAAI,EAAE,IACnB,EACD,IAAIzC,EAAG,CACLA,EAAI4B,EAAY,UAAa5B,CAAC,EAC9B,KAAKyC,CAAI,EAAE,KAAOzC,CACnB,EACD,WAAY,GACZ,aAAc,EAChB,CAAC,EAGDuC,EAAiB,QAAA,CACf,GAAG9T,EAAK,CACN,MAAO,CAAC,CAACA,GAAOA,EAAIgU,CAAI,YAAa8K,EAAK,cAC3C,EACD,OAAOJ,EAAiBO,EAAa,CACnC,IAAIjf,EAAM,OAAO,OAAOgf,EAAI,SAAS,EACrC,YAAK,MAAMhf,EAAK0e,EAAiBO,CAAW,EACrCjf,CACR,EACD,MAAMA,EAAK0e,EAAiBO,EAAa,CAClCA,IAAaA,EAAc,IAChCA,EAAY,QAAUjf,EAEtBA,EAAIgU,CAAI,EAAI,IAAI8K,EAAK,eAAeJ,EAAiBO,CAAW,EAChEjf,EAAIgU,CAAI,EAAE6K,EAAM,aAAa,EAAI7e,CAClC,EACD,UAAWgf,EACX,OAAQ,CACN,OAAQ,CAAE,IAAKA,CAAK,EACpB,OAAQ,CAAE,IAAKA,CAAK,CACrB,0BC/LHE,EAAA,IAAc1H,GAAiB,UAC/B0H,EAAA,aAAuBxH,GAA+B,aACtDwH,EAAA,mBAA6BxH,GAA+B,mBAC5DwH,EAAA,cAAwBxH,GAA+B,cACvDwH,EAAA,eAAyBxH,GAA+B,eACxDwH,EAAA,eAAyBxH,GAA+B,eACxDwH,EAAA,cAAwBxH,GAA+B,cACvDwH,EAAA,iBAA2BxH,GAA+B,iBAC1CwH,EAAA,SAAGxH,GAA+B,SCAlD,MAAMyH,GAAWpoB,EAAO,SAElBqoB,GAAS,OAAO,QAAQ,EACxBC,GAAO,OAAO,MAAM,EAE1B,IAAAC,GAAA,MAAMC,EAAK,CACV,aAAc,CACb,KAAKF,EAAI,EAAI,GAEb,MAAMG,EAAY,UAAU,CAAC,EACvBhrB,EAAU,UAAU,CAAC,EAErBirB,EAAU,CAAA,EAChB,IAAIC,EAAO,EAEX,GAAIF,EAAW,CACd,MAAM/P,EAAI+P,EACJpK,EAAS,OAAO3F,EAAE,MAAM,EAC9B,QAAS/I,EAAI,EAAGA,EAAI0O,EAAQ1O,IAAK,CAChC,MAAMiZ,EAAUlQ,EAAE/I,CAAC,EACnB,IAAI+S,EACAkG,aAAmB,OACtBlG,EAASkG,EACC,YAAY,OAAOA,CAAO,EACpClG,EAAS,OAAO,KAAKkG,EAAQ,OAAQA,EAAQ,WAAYA,EAAQ,UAAU,EACjEA,aAAmB,YAC7BlG,EAAS,OAAO,KAAKkG,CAAO,EAClBA,aAAmBJ,GAC7B9F,EAASkG,EAAQP,EAAM,EAEvB3F,EAAS,OAAO,KAAK,OAAOkG,GAAY,SAAWA,EAAU,OAAOA,CAAO,CAAC,EAE7ED,GAAQjG,EAAO,OACfgG,EAAQ,KAAKhG,CAAM,CACnB,CACD,CAED,KAAK2F,EAAM,EAAI,OAAO,OAAOK,CAAO,EAEpC,IAAIvlB,EAAO1F,GAAWA,EAAQ,OAAS,QAAa,OAAOA,EAAQ,IAAI,EAAE,cACrE0F,GAAQ,CAAC,mBAAmB,KAAKA,CAAI,IACxC,KAAKmlB,EAAI,EAAInlB,EAEd,CACD,IAAI,MAAO,CACV,OAAO,KAAKklB,EAAM,EAAE,MACpB,CACD,IAAI,MAAO,CACV,OAAO,KAAKC,EAAI,CAChB,CACD,MAAO,CACN,OAAO,QAAQ,QAAQ,KAAKD,EAAM,EAAE,SAAQ,CAAE,CAC9C,CACD,aAAc,CACb,MAAM3E,EAAM,KAAK2E,EAAM,EACjBQ,EAAKnF,EAAI,OAAO,MAAMA,EAAI,WAAYA,EAAI,WAAaA,EAAI,UAAU,EAC3E,OAAO,QAAQ,QAAQmF,CAAE,CACzB,CACD,QAAS,CACR,MAAMC,EAAW,IAAIV,GACrB,OAAAU,EAAS,MAAQ,UAAY,GAC7BA,EAAS,KAAK,KAAKT,EAAM,CAAC,EAC1BS,EAAS,KAAK,IAAI,EACXA,CACP,CACD,UAAW,CACV,MAAO,eACP,CACD,OAAQ,CACP,MAAMH,EAAO,KAAK,KAEZ3U,EAAQ,UAAU,CAAC,EACnB+M,EAAM,UAAU,CAAC,EACvB,IAAIgI,EAAeC,EACfhV,IAAU,OACb+U,EAAgB,EACN/U,EAAQ,EAClB+U,EAAgB,KAAK,IAAIJ,EAAO3U,EAAO,CAAC,EAExC+U,EAAgB,KAAK,IAAI/U,EAAO2U,CAAI,EAEjC5H,IAAQ,OACXiI,EAAcL,EACJ5H,EAAM,EAChBiI,EAAc,KAAK,IAAIL,EAAO5H,EAAK,CAAC,EAEpCiI,EAAc,KAAK,IAAIjI,EAAK4H,CAAI,EAEjC,MAAMM,EAAO,KAAK,IAAID,EAAcD,EAAe,CAAC,EAG9CG,EADS,KAAKb,EAAM,EACE,MAAMU,EAAeA,EAAgBE,CAAI,EAC/DlmB,EAAO,IAAIylB,GAAK,CAAE,EAAE,CAAE,KAAM,UAAU,CAAC,CAAC,CAAE,EAChD,OAAAzlB,EAAKslB,EAAM,EAAIa,EACRnmB,CACP,CACF,EAEA,OAAO,iBAAiBylB,GAAK,UAAW,CACvC,KAAM,CAAE,WAAY,EAAM,EAC1B,KAAM,CAAE,WAAY,EAAM,EAC1B,MAAO,CAAE,WAAY,EAAM,CAC5B,CAAC,EAED,OAAO,eAAeA,GAAK,UAAW,OAAO,YAAa,CACzD,MAAO,OACP,SAAU,GACV,WAAY,GACZ,aAAc,EACf,CAAC,EAgBD,SAASW,EAAWrqB,EAASqE,EAAMimB,EAAa,CAC9C,MAAM,KAAK,KAAMtqB,CAAO,EAExB,KAAK,QAAUA,EACf,KAAK,KAAOqE,EAGRimB,IACF,KAAK,KAAO,KAAK,MAAQA,EAAY,MAIvC,MAAM,kBAAkB,KAAM,KAAK,WAAW,CAChD,CAEAD,EAAW,UAAY,OAAO,OAAO,MAAM,SAAS,EACpDA,EAAW,UAAU,YAAcA,EACnCA,EAAW,UAAU,KAAO,aAE5B,IAAIE,GACJ,GAAI,CACHA,GAAU,QAAQ,UAAU,EAAE,OAC/B,MAAY,CAAE,CAEd,MAAMC,GAAY,OAAO,gBAAgB,EAGnCC,GAAcvpB,EAAO,YAW3B,SAASwpB,EAAK7rB,EAAM,CACnB,IAAI8rB,EAAQ,KAERC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAE,EAC7EC,EAAYD,EAAK,KAErB,IAAIf,EAAOgB,IAAc,OAAY,EAAIA,EACzC,IAAIC,EAAeF,EAAK,QACxB,IAAIlkB,EAAUokB,IAAiB,OAAY,EAAIA,EAE3CjsB,GAAQ,KAEXA,EAAO,KACGksB,GAAkBlsB,CAAI,EAEhCA,EAAO,OAAO,KAAKA,EAAK,SAAU,CAAA,EACxBmsB,GAAOnsB,CAAI,GAAc,OAAO,SAASA,CAAI,IAAc,OAAO,UAAU,SAAS,KAAKA,CAAI,IAAM,uBAE9GA,EAAO,OAAO,KAAKA,CAAI,EACb,YAAY,OAAOA,CAAI,EAEjCA,EAAO,OAAO,KAAKA,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,EACtDA,aAAgBqC,IAG1BrC,EAAO,OAAO,KAAK,OAAOA,CAAI,CAAC,IAEhC,KAAK2rB,EAAS,EAAI,CACjB,KAAA3rB,EACA,UAAW,GACX,MAAO,IACT,EACC,KAAK,KAAOgrB,EACZ,KAAK,QAAUnjB,EAEX7H,aAAgBqC,GACnBrC,EAAK,GAAG,QAAS,SAAUgE,EAAK,CAC/B,MAAMxD,EAAQwD,EAAI,OAAS,aAAeA,EAAM,IAAIwnB,EAAW,+CAA+CM,EAAM,GAAG,KAAK9nB,EAAI,OAAO,GAAI,SAAUA,CAAG,EACxJ8nB,EAAMH,EAAS,EAAE,MAAQnrB,CAC5B,CAAG,CAEH,CAEAqrB,EAAK,UAAY,CAChB,IAAI,MAAO,CACV,OAAO,KAAKF,EAAS,EAAE,IACvB,EAED,IAAI,UAAW,CACd,OAAO,KAAKA,EAAS,EAAE,SACvB,EAOD,aAAc,CACb,OAAOS,GAAY,KAAK,IAAI,EAAE,KAAK,SAAUrG,EAAK,CACjD,OAAOA,EAAI,OAAO,MAAMA,EAAI,WAAYA,EAAI,WAAaA,EAAI,UAAU,CAC1E,CAAG,CACD,EAOD,MAAO,CACN,IAAIsG,EAAK,KAAK,SAAW,KAAK,QAAQ,IAAI,cAAc,GAAK,GAC7D,OAAOD,GAAY,KAAK,IAAI,EAAE,KAAK,SAAUrG,EAAK,CACjD,OAAO,OAAO,OAEd,IAAI8E,GAAK,CAAA,EAAI,CACZ,KAAMwB,EAAG,YAAa,CAC1B,CAAI,EAAG,CACH,CAAC3B,EAAM,EAAG3E,CACd,CAAI,CACJ,CAAG,CACD,EAOD,MAAO,CACN,IAAIuG,EAAS,KAEb,OAAOF,GAAY,KAAK,IAAI,EAAE,KAAK,SAAUrH,EAAQ,CACpD,GAAI,CACH,OAAO,KAAK,MAAMA,EAAO,SAAU,CAAA,CACnC,OAAQ/gB,EAAK,CACb,OAAO6nB,EAAK,QAAQ,OAAO,IAAIL,EAAW,iCAAiCc,EAAO,GAAG,YAAYtoB,EAAI,OAAO,GAAI,cAAc,CAAC,CAC/H,CACJ,CAAG,CACD,EAOD,MAAO,CACN,OAAOooB,GAAY,KAAK,IAAI,EAAE,KAAK,SAAUrH,EAAQ,CACpD,OAAOA,EAAO,UACjB,CAAG,CACD,EAOD,QAAS,CACR,OAAOqH,GAAY,KAAK,IAAI,CAC5B,EAQD,eAAgB,CACf,IAAIG,EAAS,KAEb,OAAOH,GAAY,KAAK,IAAI,EAAE,KAAK,SAAUrH,EAAQ,CACpD,OAAOyH,GAAYzH,EAAQwH,EAAO,OAAO,CAC5C,CAAG,CACD,CACF,EAGA,OAAO,iBAAiBV,EAAK,UAAW,CACvC,KAAM,CAAE,WAAY,EAAM,EAC1B,SAAU,CAAE,WAAY,EAAM,EAC9B,YAAa,CAAE,WAAY,EAAM,EACjC,KAAM,CAAE,WAAY,EAAM,EAC1B,KAAM,CAAE,WAAY,EAAM,EAC1B,KAAM,CAAE,WAAY,EAAM,CAC3B,CAAC,EAEDA,EAAK,MAAQ,SAAUY,EAAO,CAC7B,UAAWtnB,KAAQ,OAAO,oBAAoB0mB,EAAK,SAAS,EAE3D,GAAI,EAAE1mB,KAAQsnB,GAAQ,CACrB,MAAMC,EAAO,OAAO,yBAAyBb,EAAK,UAAW1mB,CAAI,EACjE,OAAO,eAAesnB,EAAOtnB,EAAMunB,CAAI,CACvC,CAEH,EASA,SAASN,IAAc,CACtB,IAAIO,EAAS,KAEb,GAAI,KAAKhB,EAAS,EAAE,UACnB,OAAOE,EAAK,QAAQ,OAAO,IAAI,UAAU,0BAA0B,KAAK,GAAG,EAAE,CAAC,EAK/E,GAFA,KAAKF,EAAS,EAAE,UAAY,GAExB,KAAKA,EAAS,EAAE,MACnB,OAAOE,EAAK,QAAQ,OAAO,KAAKF,EAAS,EAAE,KAAK,EAGjD,IAAI3rB,EAAO,KAAK,KAGhB,GAAIA,IAAS,KACZ,OAAO6rB,EAAK,QAAQ,QAAQ,OAAO,MAAM,CAAC,CAAC,EAS5C,GALIM,GAAOnsB,CAAI,IACdA,EAAOA,EAAK,UAIT,OAAO,SAASA,CAAI,EACvB,OAAO6rB,EAAK,QAAQ,QAAQ7rB,CAAI,EAIjC,GAAI,EAAEA,aAAgBqC,GACrB,OAAOwpB,EAAK,QAAQ,QAAQ,OAAO,MAAM,CAAC,CAAC,EAK5C,IAAIe,EAAQ,CAAA,EACRC,EAAa,EACbC,EAAQ,GAEZ,OAAO,IAAIjB,EAAK,QAAQ,SAAUxkB,EAASqJ,EAAQ,CAClD,IAAIqc,EAGAJ,EAAO,UACVI,EAAa,WAAW,UAAY,CACnCD,EAAQ,GACRpc,EAAO,IAAI8a,EAAW,0CAA0CmB,EAAO,GAAG,UAAUA,EAAO,OAAO,MAAO,cAAc,CAAC,CAC5H,EAAMA,EAAO,OAAO,GAIlB3sB,EAAK,GAAG,QAAS,SAAUgE,EAAK,CAC3BA,EAAI,OAAS,cAEhB8oB,EAAQ,GACRpc,EAAO1M,CAAG,GAGV0M,EAAO,IAAI8a,EAAW,+CAA+CmB,EAAO,GAAG,KAAK3oB,EAAI,OAAO,GAAI,SAAUA,CAAG,CAAC,CAErH,CAAG,EAEDhE,EAAK,GAAG,OAAQ,SAAUiD,EAAO,CAChC,GAAI,EAAA6pB,GAAS7pB,IAAU,MAIvB,IAAI0pB,EAAO,MAAQE,EAAa5pB,EAAM,OAAS0pB,EAAO,KAAM,CAC3DG,EAAQ,GACRpc,EAAO,IAAI8a,EAAW,mBAAmBmB,EAAO,GAAG,gBAAgBA,EAAO,IAAI,GAAI,UAAU,CAAC,EAC7F,MACA,CAEDE,GAAc5pB,EAAM,OACpB2pB,EAAM,KAAK3pB,CAAK,EACnB,CAAG,EAEDjD,EAAK,GAAG,MAAO,UAAY,CAC1B,GAAI,CAAA8sB,EAIJ,cAAaC,CAAU,EAEvB,GAAI,CACH1lB,EAAQ,OAAO,OAAOulB,EAAOC,CAAU,CAAC,CACxC,OAAQ7oB,EAAK,CAEb0M,EAAO,IAAI8a,EAAW,kDAAkDmB,EAAO,GAAG,KAAK3oB,EAAI,OAAO,GAAI,SAAUA,CAAG,CAAC,CACpH,EACJ,CAAG,CACH,CAAE,CACF,CAUA,SAASwoB,GAAYzH,EAAQ3jB,EAAS,CACrC,GAAI,OAAOsqB,IAAY,WACtB,MAAM,IAAI,MAAM,8EAA8E,EAG/F,MAAMW,EAAKjrB,EAAQ,IAAI,cAAc,EACrC,IAAI4rB,EAAU,QACV9D,EAAK1kB,EAGT,OAAI6nB,IACHnD,EAAM,mBAAmB,KAAKmD,CAAE,GAIjC7nB,EAAMugB,EAAO,MAAM,EAAG,IAAI,EAAE,WAGxB,CAACmE,GAAO1kB,IACX0kB,EAAM,iCAAiC,KAAK1kB,CAAG,GAI5C,CAAC0kB,GAAO1kB,IACX0kB,EAAM,yEAAyE,KAAK1kB,CAAG,EAClF0kB,IACJA,EAAM,yEAAyE,KAAK1kB,CAAG,EACnF0kB,GACHA,EAAI,IAAG,GAILA,IACHA,EAAM,gBAAgB,KAAKA,EAAI,IAAK,CAAA,IAKlC,CAACA,GAAO1kB,IACX0kB,EAAM,mCAAmC,KAAK1kB,CAAG,GAI9C0kB,IACH8D,EAAU9D,EAAI,OAIV8D,IAAY,UAAYA,IAAY,SACvCA,EAAU,YAKLtB,GAAQ3G,EAAQ,QAASiI,CAAO,EAAE,SAAQ,CAClD,CASA,SAASd,GAAkB5gB,EAAK,CAE/B,OAAI,OAAOA,GAAQ,UAAY,OAAOA,EAAI,QAAW,YAAc,OAAOA,EAAI,QAAW,YAAc,OAAOA,EAAI,KAAQ,YAAc,OAAOA,EAAI,QAAW,YAAc,OAAOA,EAAI,KAAQ,YAAc,OAAOA,EAAI,KAAQ,WACxN,GAIDA,EAAI,YAAY,OAAS,mBAAqB,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,4BAA8B,OAAOA,EAAI,MAAS,UAChJ,CAOA,SAAS6gB,GAAO7gB,EAAK,CACpB,OAAO,OAAOA,GAAQ,UAAY,OAAOA,EAAI,aAAgB,YAAc,OAAOA,EAAI,MAAS,UAAY,OAAOA,EAAI,QAAW,YAAc,OAAOA,EAAI,aAAgB,YAAc,OAAOA,EAAI,YAAY,MAAS,UAAY,gBAAgB,KAAKA,EAAI,YAAY,IAAI,GAAK,gBAAgB,KAAKA,EAAI,OAAO,WAAW,CAAC,CAC/T,CAQA,SAAS2hB,GAAMC,EAAU,CACxB,IAAIC,EAAIC,EACJptB,EAAOktB,EAAS,KAGpB,GAAIA,EAAS,SACZ,MAAM,IAAI,MAAM,oCAAoC,EAKrD,OAAIltB,aAAgBqC,GAAU,OAAOrC,EAAK,aAAgB,aAEzDmtB,EAAK,IAAIvB,GACTwB,EAAK,IAAIxB,GACT5rB,EAAK,KAAKmtB,CAAE,EACZntB,EAAK,KAAKotB,CAAE,EAEZF,EAASvB,EAAS,EAAE,KAAOwB,EAC3BntB,EAAOotB,GAGDptB,CACR,CAWA,SAASqtB,GAAmBrtB,EAAM,CACjC,OAAIA,IAAS,KAEL,KACG,OAAOA,GAAS,SAEnB,2BACGksB,GAAkBlsB,CAAI,EAEzB,kDACGmsB,GAAOnsB,CAAI,EAEdA,EAAK,MAAQ,KACV,OAAO,SAASA,CAAI,GAGpB,OAAO,UAAU,SAAS,KAAKA,CAAI,IAAM,wBAGzC,YAAY,OAAOA,CAAI,EAJ1B,KAOG,OAAOA,EAAK,aAAgB,WAE/B,gCAAgCA,EAAK,YAAW,CAAE,GAC/CA,aAAgBqC,EAGnB,KAGA,0BAET,CAWA,SAASirB,GAAcJ,EAAU,CAChC,MAAMltB,EAAOktB,EAAS,KAGtB,OAAIltB,IAAS,KAEL,EACGmsB,GAAOnsB,CAAI,EACdA,EAAK,KACF,OAAO,SAASA,CAAI,EAEvBA,EAAK,OACFA,GAAQ,OAAOA,EAAK,eAAkB,aAE5CA,EAAK,mBAAqBA,EAAK,kBAAkB,QAAU,GAC/DA,EAAK,gBAAkBA,EAAK,kBAEpBA,EAAK,gBAKN,IAET,CAQA,SAASutB,GAAcC,EAAMN,EAAU,CACtC,MAAMltB,EAAOktB,EAAS,KAGlBltB,IAAS,KAEZwtB,EAAK,IAAG,EACErB,GAAOnsB,CAAI,EACrBA,EAAK,OAAM,EAAG,KAAKwtB,CAAI,EACb,OAAO,SAASxtB,CAAI,GAE9BwtB,EAAK,MAAMxtB,CAAI,EACfwtB,EAAK,IAAG,GAGRxtB,EAAK,KAAKwtB,CAAI,CAEhB,CAGA3B,EAAK,QAAU,OAAO,QAQtB,MAAM4B,GAAoB,gCACpBC,GAAyB,0BAE/B,SAASC,GAAaxoB,EAAM,CAE3B,GADAA,EAAO,GAAGA,CAAI,GACVsoB,GAAkB,KAAKtoB,CAAI,GAAKA,IAAS,GAC5C,MAAM,IAAI,UAAU,GAAGA,CAAI,kCAAkC,CAE/D,CAEA,SAASyoB,GAAchtB,EAAO,CAE7B,GADAA,EAAQ,GAAGA,CAAK,GACZ8sB,GAAuB,KAAK9sB,CAAK,EACpC,MAAM,IAAI,UAAU,GAAGA,CAAK,mCAAmC,CAEjE,CAUA,SAASitB,GAAKtN,EAAKpb,EAAM,CACxBA,EAAOA,EAAK,cACZ,UAAWe,KAAOqa,EACjB,GAAIra,EAAI,YAAa,IAAKf,EACzB,OAAOe,CAIV,CAEA,MAAM4nB,EAAM,OAAO,KAAK,EACxB,IAAAC,GAAA,MAAMC,EAAQ,CAOb,aAAc,CACb,IAAIhkB,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAI/E,GAFA,KAAK8jB,CAAG,EAAI,OAAO,OAAO,IAAI,EAE1B9jB,aAAgBgkB,GAAS,CAC5B,MAAMC,EAAajkB,EAAK,MAClBkkB,EAAc,OAAO,KAAKD,CAAU,EAE1C,UAAWE,KAAcD,EACxB,UAAWttB,KAASqtB,EAAWE,CAAU,EACxC,KAAK,OAAOA,EAAYvtB,CAAK,EAI/B,MACA,CAID,GAAIoJ,GAAQ,KAAa,GAAI,OAAOA,GAAS,SAAU,CACtD,MAAM3B,EAAS2B,EAAK,OAAO,QAAQ,EACnC,GAAI3B,GAAU,KAAM,CACnB,GAAI,OAAOA,GAAW,WACrB,MAAM,IAAI,UAAU,+BAA+B,EAKpD,MAAM+lB,EAAQ,CAAA,EACd,UAAWC,KAAQrkB,EAAM,CACxB,GAAI,OAAOqkB,GAAS,UAAY,OAAOA,EAAK,OAAO,QAAQ,GAAM,WAChE,MAAM,IAAI,UAAU,mCAAmC,EAExDD,EAAM,KAAK,MAAM,KAAKC,CAAI,CAAC,CAC3B,CAED,UAAWA,KAAQD,EAAO,CACzB,GAAIC,EAAK,SAAW,EACnB,MAAM,IAAI,UAAU,6CAA6C,EAElE,KAAK,OAAOA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAC5B,CACL,KAEI,WAAWnoB,KAAO,OAAO,KAAK8D,CAAI,EAAG,CACpC,MAAMpJ,EAAQoJ,EAAK9D,CAAG,EACtB,KAAK,OAAOA,EAAKtF,CAAK,CACtB,CAEL,KACG,OAAM,IAAI,UAAU,wCAAwC,CAE7D,CAQD,IAAIuE,EAAM,CACTA,EAAO,GAAGA,CAAI,GACdwoB,GAAaxoB,CAAI,EACjB,MAAMe,EAAM2nB,GAAK,KAAKC,CAAG,EAAG3oB,CAAI,EAChC,OAAIe,IAAQ,OACJ,KAGD,KAAK4nB,CAAG,EAAE5nB,CAAG,EAAE,KAAK,IAAI,CAC/B,CASD,QAAQua,EAAU,CACjB,IAAI6N,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAE9EF,EAAQG,GAAW,IAAI,EACvBvc,EAAI,EACR,KAAOA,EAAIoc,EAAM,QAAQ,CACxB,IAAII,EAAWJ,EAAMpc,CAAC,EACtB,MAAM7M,EAAOqpB,EAAS,CAAC,EACjB5tB,EAAQ4tB,EAAS,CAAC,EAExB/N,EAAS,KAAK6N,EAAS1tB,EAAOuE,EAAM,IAAI,EACxCipB,EAAQG,GAAW,IAAI,EACvBvc,GACA,CACD,CASD,IAAI7M,EAAMvE,EAAO,CAChBuE,EAAO,GAAGA,CAAI,GACdvE,EAAQ,GAAGA,CAAK,GAChB+sB,GAAaxoB,CAAI,EACjByoB,GAAchtB,CAAK,EACnB,MAAMsF,EAAM2nB,GAAK,KAAKC,CAAG,EAAG3oB,CAAI,EAChC,KAAK2oB,CAAG,EAAE5nB,IAAQ,OAAYA,EAAMf,CAAI,EAAI,CAACvE,CAAK,CAClD,CASD,OAAOuE,EAAMvE,EAAO,CACnBuE,EAAO,GAAGA,CAAI,GACdvE,EAAQ,GAAGA,CAAK,GAChB+sB,GAAaxoB,CAAI,EACjByoB,GAAchtB,CAAK,EACnB,MAAMsF,EAAM2nB,GAAK,KAAKC,CAAG,EAAG3oB,CAAI,EAC5Be,IAAQ,OACX,KAAK4nB,CAAG,EAAE5nB,CAAG,EAAE,KAAKtF,CAAK,EAEzB,KAAKktB,CAAG,EAAE3oB,CAAI,EAAI,CAACvE,CAAK,CAEzB,CAQD,IAAIuE,EAAM,CACT,OAAAA,EAAO,GAAGA,CAAI,GACdwoB,GAAaxoB,CAAI,EACV0oB,GAAK,KAAKC,CAAG,EAAG3oB,CAAI,IAAM,MACjC,CAQD,OAAOA,EAAM,CACZA,EAAO,GAAGA,CAAI,GACdwoB,GAAaxoB,CAAI,EACjB,MAAMe,EAAM2nB,GAAK,KAAKC,CAAG,EAAG3oB,CAAI,EAC5Be,IAAQ,QACX,OAAO,KAAK4nB,CAAG,EAAE5nB,CAAG,CAErB,CAOD,KAAM,CACL,OAAO,KAAK4nB,CAAG,CACf,CAOD,MAAO,CACN,OAAOW,GAAsB,KAAM,KAAK,CACxC,CAOD,QAAS,CACR,OAAOA,GAAsB,KAAM,OAAO,CAC1C,CASD,CAAC,OAAO,QAAQ,GAAI,CACnB,OAAOA,GAAsB,KAAM,WAAW,CAC9C,CACF,EACAT,GAAQ,UAAU,QAAUA,GAAQ,UAAU,OAAO,QAAQ,EAE7D,OAAO,eAAeA,GAAQ,UAAW,OAAO,YAAa,CAC5D,MAAO,UACP,SAAU,GACV,WAAY,GACZ,aAAc,EACf,CAAC,EAED,OAAO,iBAAiBA,GAAQ,UAAW,CAC1C,IAAK,CAAE,WAAY,EAAM,EACzB,QAAS,CAAE,WAAY,EAAM,EAC7B,IAAK,CAAE,WAAY,EAAM,EACzB,OAAQ,CAAE,WAAY,EAAM,EAC5B,IAAK,CAAE,WAAY,EAAM,EACzB,OAAQ,CAAE,WAAY,EAAM,EAC5B,KAAM,CAAE,WAAY,EAAM,EAC1B,OAAQ,CAAE,WAAY,EAAM,EAC5B,QAAS,CAAE,WAAY,EAAM,CAC9B,CAAC,EAED,SAASO,GAAWntB,EAAS,CAC5B,IAAIjC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,YAG/E,OADa,OAAO,KAAKiC,EAAQ0sB,CAAG,CAAC,EAAE,OAC3B,IAAI3uB,IAAS,MAAQ,SAAUoM,EAAG,CAC7C,OAAOA,EAAE,aACX,EAAKpM,IAAS,QAAU,SAAUoM,EAAG,CACnC,OAAOnK,EAAQ0sB,CAAG,EAAEviB,CAAC,EAAE,KAAK,IAAI,CAChC,EAAG,SAAUA,EAAG,CAChB,MAAO,CAACA,EAAE,YAAa,EAAEnK,EAAQ0sB,CAAG,EAAEviB,CAAC,EAAE,KAAK,IAAI,CAAC,CACrD,CAAE,CACF,CAEA,MAAMmjB,GAAW,OAAO,UAAU,EAElC,SAASD,GAAsB3wB,EAAQqB,EAAM,CAC5C,MAAMmD,EAAW,OAAO,OAAOqsB,EAAwB,EACvD,OAAArsB,EAASosB,EAAQ,EAAI,CACpB,OAAA5wB,EACA,KAAAqB,EACA,MAAO,CACT,EACQmD,CACR,CAEA,MAAMqsB,GAA2B,OAAO,eAAe,CACtD,MAAO,CAEN,GAAI,CAAC,MAAQ,OAAO,eAAe,IAAI,IAAMA,GAC5C,MAAM,IAAI,UAAU,0CAA0C,EAG/D,IAAIC,EAAY,KAAKF,EAAQ,EAC7B,MAAM5wB,EAAS8wB,EAAU,OACnBzvB,EAAOyvB,EAAU,KACjBlqB,EAAQkqB,EAAU,MAElBC,EAASN,GAAWzwB,EAAQqB,CAAI,EAChC2kB,EAAM+K,EAAO,OACnB,OAAInqB,GAASof,EACL,CACN,MAAO,OACP,KAAM,EACV,GAGE,KAAK4K,EAAQ,EAAE,MAAQhqB,EAAQ,EAExB,CACN,MAAOmqB,EAAOnqB,CAAK,EACnB,KAAM,EACT,EACE,CACF,EAAG,OAAO,eAAe,OAAO,eAAe,GAAG,OAAO,QAAQ,GAAG,CAAC,CAAC,EAEtE,OAAO,eAAeiqB,GAA0B,OAAO,YAAa,CACnE,MAAO,kBACP,SAAU,GACV,WAAY,GACZ,aAAc,EACf,CAAC,EAQD,SAASG,GAA4B1tB,EAAS,CAC7C,MAAMkK,EAAM,OAAO,OAAO,CAAE,UAAW,MAAQlK,EAAQ0sB,CAAG,CAAC,EAIrDiB,EAAgBlB,GAAKzsB,EAAQ0sB,CAAG,EAAG,MAAM,EAC/C,OAAIiB,IAAkB,SACrBzjB,EAAIyjB,CAAa,EAAIzjB,EAAIyjB,CAAa,EAAE,CAAC,GAGnCzjB,CACR,CASA,SAAS0jB,GAAqB1jB,EAAK,CAClC,MAAMlK,EAAU,IAAI4sB,GACpB,UAAW7oB,KAAQ,OAAO,KAAKmG,CAAG,EACjC,GAAI,CAAAmiB,GAAkB,KAAKtoB,CAAI,EAG/B,GAAI,MAAM,QAAQmG,EAAInG,CAAI,CAAC,EAC1B,UAAW8H,KAAO3B,EAAInG,CAAI,EACrBuoB,GAAuB,KAAKzgB,CAAG,IAG/B7L,EAAQ0sB,CAAG,EAAE3oB,CAAI,IAAM,OAC1B/D,EAAQ0sB,CAAG,EAAE3oB,CAAI,EAAI,CAAC8H,CAAG,EAEzB7L,EAAQ0sB,CAAG,EAAE3oB,CAAI,EAAE,KAAK8H,CAAG,QAGlBygB,GAAuB,KAAKpiB,EAAInG,CAAI,CAAC,IAChD/D,EAAQ0sB,CAAG,EAAE3oB,CAAI,EAAI,CAACmG,EAAInG,CAAI,CAAC,GAGjC,OAAO/D,CACR,CAEA,MAAM6tB,GAAc,OAAO,oBAAoB,EAGzCC,GAAeC,EAAK,aAS1B,IAAAC,GAAA,MAAMC,EAAS,CACd,aAAc,CACb,IAAIrvB,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAC3EU,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAE/EmrB,EAAK,KAAK,KAAM7rB,EAAMU,CAAI,EAE1B,MAAMQ,EAASR,EAAK,QAAU,IACxBU,EAAU,IAAI4sB,GAAQttB,EAAK,OAAO,EAExC,GAAIV,GAAQ,MAAQ,CAACoB,EAAQ,IAAI,cAAc,EAAG,CACjD,MAAM4F,EAAcqmB,GAAmBrtB,CAAI,EACvCgH,GACH5F,EAAQ,OAAO,eAAgB4F,CAAW,CAE3C,CAED,KAAKioB,EAAW,EAAI,CACnB,IAAKvuB,EAAK,IACV,OAAAQ,EACA,WAAYR,EAAK,YAAcwuB,GAAahuB,CAAM,EAClD,QAAAE,EACA,QAASV,EAAK,OACjB,CACE,CAED,IAAI,KAAM,CACT,OAAO,KAAKuuB,EAAW,EAAE,KAAO,EAChC,CAED,IAAI,QAAS,CACZ,OAAO,KAAKA,EAAW,EAAE,MACzB,CAKD,IAAI,IAAK,CACR,OAAO,KAAKA,EAAW,EAAE,QAAU,KAAO,KAAKA,EAAW,EAAE,OAAS,GACrE,CAED,IAAI,YAAa,CAChB,OAAO,KAAKA,EAAW,EAAE,QAAU,CACnC,CAED,IAAI,YAAa,CAChB,OAAO,KAAKA,EAAW,EAAE,UACzB,CAED,IAAI,SAAU,CACb,OAAO,KAAKA,EAAW,EAAE,OACzB,CAOD,OAAQ,CACP,OAAO,IAAII,GAASpC,GAAM,IAAI,EAAG,CAChC,IAAK,KAAK,IACV,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,GAAI,KAAK,GACT,WAAY,KAAK,UACpB,CAAG,CACD,CACF,EAEApB,EAAK,MAAMwD,GAAS,SAAS,EAE7B,OAAO,iBAAiBA,GAAS,UAAW,CAC3C,IAAK,CAAE,WAAY,EAAM,EACzB,OAAQ,CAAE,WAAY,EAAM,EAC5B,GAAI,CAAE,WAAY,EAAM,EACxB,WAAY,CAAE,WAAY,EAAM,EAChC,WAAY,CAAE,WAAY,EAAM,EAChC,QAAS,CAAE,WAAY,EAAM,EAC7B,MAAO,CAAE,WAAY,EAAM,CAC5B,CAAC,EAED,OAAO,eAAeA,GAAS,UAAW,OAAO,YAAa,CAC7D,MAAO,WACP,SAAU,GACV,WAAY,GACZ,aAAc,EACf,CAAC,EAED,MAAMC,GAAc,OAAO,mBAAmB,EACxChF,GAAMiF,EAAI,KAAOC,EAAU,IAG3BC,GAAYF,EAAI,MAChBG,GAAaH,EAAI,OAQvB,SAASI,GAASC,EAAQ,CAMzB,MAAI,4BAA4B,KAAKA,CAAM,IAC1CA,EAAS,IAAItF,GAAIsF,CAAM,EAAE,SAAQ,GAI3BH,GAAUG,CAAM,CACxB,CAEA,MAAMC,GAA6B,YAAaxtB,EAAO,SAAS,UAQhE,SAASytB,GAAU7V,EAAO,CACzB,OAAO,OAAOA,GAAU,UAAY,OAAOA,EAAMqV,EAAW,GAAM,QACnE,CAEA,SAASS,GAAc7lB,EAAQ,CAC9B,MAAMuiB,EAAQviB,GAAU,OAAOA,GAAW,UAAY,OAAO,eAAeA,CAAM,EAClF,MAAO,CAAC,EAAEuiB,GAASA,EAAM,YAAY,OAAS,cAC/C,CASA,IAAAuD,GAAA,MAAMC,EAAQ,CACb,YAAYhW,EAAO,CAClB,IAAIjQ,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAE3EkgB,EAGC4F,GAAU7V,CAAK,EAYnBiQ,EAAYyF,GAAS1V,EAAM,GAAG,GAX1BA,GAASA,EAAM,KAIlBiQ,EAAYyF,GAAS1V,EAAM,IAAI,EAG/BiQ,EAAYyF,GAAS,GAAG1V,CAAK,EAAE,EAEhCA,EAAQ,CAAA,GAKT,IAAI5R,EAAS2B,EAAK,QAAUiQ,EAAM,QAAU,MAG5C,GAFA5R,EAASA,EAAO,eAEX2B,EAAK,MAAQ,MAAQ8lB,GAAU7V,CAAK,GAAKA,EAAM,OAAS,QAAU5R,IAAW,OAASA,IAAW,QACrG,MAAM,IAAI,UAAU,+CAA+C,EAGpE,IAAI6nB,EAAYlmB,EAAK,MAAQ,KAAOA,EAAK,KAAO8lB,GAAU7V,CAAK,GAAKA,EAAM,OAAS,KAAOgT,GAAMhT,CAAK,EAAI,KAEzG4R,EAAK,KAAK,KAAMqE,EAAW,CAC1B,QAASlmB,EAAK,SAAWiQ,EAAM,SAAW,EAC1C,KAAMjQ,EAAK,MAAQiQ,EAAM,MAAQ,CACpC,CAAG,EAED,MAAM7Y,EAAU,IAAI4sB,GAAQhkB,EAAK,SAAWiQ,EAAM,SAAW,CAAA,CAAE,EAE/D,GAAIiW,GAAa,MAAQ,CAAC9uB,EAAQ,IAAI,cAAc,EAAG,CACtD,MAAM4F,EAAcqmB,GAAmB6C,CAAS,EAC5ClpB,GACH5F,EAAQ,OAAO,eAAgB4F,CAAW,CAE3C,CAED,IAAIkD,EAAS4lB,GAAU7V,CAAK,EAAIA,EAAM,OAAS,KAG/C,GAFI,WAAYjQ,IAAME,EAASF,EAAK,QAEhCE,GAAU,MAAQ,CAAC6lB,GAAc7lB,CAAM,EAC1C,MAAM,IAAI,UAAU,iDAAiD,EAGtE,KAAKolB,EAAW,EAAI,CACnB,OAAAjnB,EACA,SAAU2B,EAAK,UAAYiQ,EAAM,UAAY,SAC7C,QAAA7Y,EACA,UAAA8oB,EACA,OAAAhgB,CACH,EAGE,KAAK,OAASF,EAAK,SAAW,OAAYA,EAAK,OAASiQ,EAAM,SAAW,OAAYA,EAAM,OAAS,GACpG,KAAK,SAAWjQ,EAAK,WAAa,OAAYA,EAAK,SAAWiQ,EAAM,WAAa,OAAYA,EAAM,SAAW,GAC9G,KAAK,QAAUjQ,EAAK,SAAWiQ,EAAM,SAAW,EAChD,KAAK,MAAQjQ,EAAK,OAASiQ,EAAM,KACjC,CAED,IAAI,QAAS,CACZ,OAAO,KAAKqV,EAAW,EAAE,MACzB,CAED,IAAI,KAAM,CACT,OAAOI,GAAW,KAAKJ,EAAW,EAAE,SAAS,CAC7C,CAED,IAAI,SAAU,CACb,OAAO,KAAKA,EAAW,EAAE,OACzB,CAED,IAAI,UAAW,CACd,OAAO,KAAKA,EAAW,EAAE,QACzB,CAED,IAAI,QAAS,CACZ,OAAO,KAAKA,EAAW,EAAE,MACzB,CAOD,OAAQ,CACP,OAAO,IAAIW,GAAQ,IAAI,CACvB,CACF,EAEApE,EAAK,MAAMoE,GAAQ,SAAS,EAE5B,OAAO,eAAeA,GAAQ,UAAW,OAAO,YAAa,CAC5D,MAAO,UACP,SAAU,GACV,WAAY,GACZ,aAAc,EACf,CAAC,EAED,OAAO,iBAAiBA,GAAQ,UAAW,CAC1C,OAAQ,CAAE,WAAY,EAAM,EAC5B,IAAK,CAAE,WAAY,EAAM,EACzB,QAAS,CAAE,WAAY,EAAM,EAC7B,SAAU,CAAE,WAAY,EAAM,EAC9B,MAAO,CAAE,WAAY,EAAM,EAC3B,OAAQ,CAAE,WAAY,EAAM,CAC7B,CAAC,EAQD,SAASE,GAAsBrnB,EAAS,CACvC,MAAMohB,EAAYphB,EAAQwmB,EAAW,EAAE,UACjCluB,EAAU,IAAI4sB,GAAQllB,EAAQwmB,EAAW,EAAE,OAAO,EAQxD,GALKluB,EAAQ,IAAI,QAAQ,GACxBA,EAAQ,IAAI,SAAU,KAAK,EAIxB,CAAC8oB,EAAU,UAAY,CAACA,EAAU,SACrC,MAAM,IAAI,UAAU,kCAAkC,EAGvD,GAAI,CAAC,YAAY,KAAKA,EAAU,QAAQ,EACvC,MAAM,IAAI,UAAU,sCAAsC,EAG3D,GAAIphB,EAAQ,QAAUA,EAAQ,gBAAgBzG,EAAO,UAAY,CAACwtB,GACjE,MAAM,IAAI,MAAM,iFAAiF,EAIlG,IAAIO,EAAqB,KAIzB,GAHItnB,EAAQ,MAAQ,MAAQ,gBAAgB,KAAKA,EAAQ,MAAM,IAC9DsnB,EAAqB,KAElBtnB,EAAQ,MAAQ,KAAM,CACzB,MAAMunB,EAAa/C,GAAcxkB,CAAO,EACpC,OAAOunB,GAAe,WACzBD,EAAqB,OAAOC,CAAU,EAEvC,CACGD,GACHhvB,EAAQ,IAAI,iBAAkBgvB,CAAkB,EAI5ChvB,EAAQ,IAAI,YAAY,GAC5BA,EAAQ,IAAI,aAAc,wDAAwD,EAI/E0H,EAAQ,UAAY,CAAC1H,EAAQ,IAAI,iBAAiB,GACrDA,EAAQ,IAAI,kBAAmB,cAAc,EAG9C,IAAIkvB,EAAQxnB,EAAQ,MACpB,OAAI,OAAOwnB,GAAU,aACpBA,EAAQA,EAAMpG,CAAS,GAMjB,OAAO,OAAO,CAAE,EAAEA,EAAW,CACnC,OAAQphB,EAAQ,OAChB,QAASgmB,GAA4B1tB,CAAO,EAC5C,MAAAkvB,CACF,CAAE,CACF,CAcA,SAASC,GAAWpvB,EAAS,CAC3B,MAAM,KAAK,KAAMA,CAAO,EAExB,KAAK,KAAO,UACZ,KAAK,QAAUA,EAGf,MAAM,kBAAkB,KAAM,KAAK,WAAW,CAChD,CAEAovB,GAAW,UAAY,OAAO,OAAO,MAAM,SAAS,EACpDA,GAAW,UAAU,YAAcA,GACnCA,GAAW,UAAU,KAAO,aAE5B,MAAMC,GAAQjB,EAAI,KAAOC,EAAU,IAG7BiB,GAAgBpuB,EAAO,YAEvBquB,GAAsB,SAA6BC,EAAaC,EAAU,CAC/E,MAAMC,EAAO,IAAIL,GAAMI,CAAQ,EAAE,SAC3BpD,EAAO,IAAIgD,GAAMG,CAAW,EAAE,SAEpC,OAAOE,IAASrD,GAAQqD,EAAKA,EAAK,OAASrD,EAAK,OAAS,CAAC,IAAM,KAAOqD,EAAK,SAASrD,CAAI,CAC1F,EASMsD,GAAiB,SAAwBH,EAAaC,EAAU,CACrE,MAAMC,EAAO,IAAIL,GAAMI,CAAQ,EAAE,SAC3BpD,EAAO,IAAIgD,GAAMG,CAAW,EAAE,SAEpC,OAAOE,IAASrD,CACjB,EASA,SAASpuB,GAAMuB,EAAKD,EAAM,CAGzB,GAAI,CAACtB,GAAM,QACV,MAAM,IAAI,MAAM,wEAAwE,EAGzF,OAAAysB,EAAK,QAAUzsB,GAAM,QAGd,IAAIA,GAAM,QAAQ,SAAUiI,EAASqJ,EAAQ,CAEnD,MAAM5H,EAAU,IAAImnB,GAAQtvB,EAAKD,CAAI,EAC/BZ,EAAUqwB,GAAsBrnB,CAAO,EAEvCioB,GAAQjxB,EAAQ,WAAa,SAAWkxB,GAAc,QACtD9mB,EAASpB,EAAQ,OAEvB,IAAItG,EAAW,KAEf,MAAMsqB,EAAQ,UAAiB,CAC9B,IAAItsB,EAAQ,IAAI+vB,GAAW,6BAA6B,EACxD7f,EAAOlQ,CAAK,EACRsI,EAAQ,MAAQA,EAAQ,gBAAgBzG,EAAO,UAClD4uB,GAAcnoB,EAAQ,KAAMtI,CAAK,EAE9B,GAACgC,GAAY,CAACA,EAAS,OAC3BA,EAAS,KAAK,KAAK,QAAShC,CAAK,CACpC,EAEE,GAAI0J,GAAUA,EAAO,QAAS,CAC7B4iB,IACA,MACA,CAED,MAAMoE,EAAmB,UAA4B,CACpDpE,IACAqE,GACH,EAGQhoB,EAAM4nB,EAAKjxB,CAAO,EACxB,IAAIsxB,EAEAlnB,GACHA,EAAO,iBAAiB,QAASgnB,CAAgB,EAGlD,SAASC,GAAW,CACnBhoB,EAAI,MAAK,EACLe,GAAQA,EAAO,oBAAoB,QAASgnB,CAAgB,EAChE,aAAaE,CAAU,CACvB,CAEGtoB,EAAQ,SACXK,EAAI,KAAK,SAAU,SAAUkoB,EAAQ,CACpCD,EAAa,WAAW,UAAY,CACnC1gB,EAAO,IAAI8a,EAAW,uBAAuB1iB,EAAQ,GAAG,GAAI,iBAAiB,CAAC,EAC9EqoB,GACL,EAAOroB,EAAQ,OAAO,CACtB,CAAI,EAGFK,EAAI,GAAG,QAAS,SAAUnF,EAAK,CAC9B0M,EAAO,IAAI8a,EAAW,cAAc1iB,EAAQ,GAAG,oBAAoB9E,EAAI,OAAO,GAAI,SAAUA,CAAG,CAAC,EAE5FxB,GAAYA,EAAS,MACxByuB,GAAczuB,EAAS,KAAMwB,CAAG,EAGjCmtB,GACH,CAAG,EAEDG,GAAoCnoB,EAAK,SAAUnF,EAAK,CACnDkG,GAAUA,EAAO,SAIjB1H,GAAYA,EAAS,MACxByuB,GAAczuB,EAAS,KAAMwB,CAAG,CAEpC,CAAG,EAGG,SAAS,QAAQ,QAAQ,UAAU,CAAC,CAAC,EAAI,IAG5CmF,EAAI,GAAG,SAAU,SAAUkS,EAAG,CAC7BA,EAAE,YAAY,QAAS,SAAUkW,EAAU,CAE1C,MAAMC,EAAkBnW,EAAE,cAAc,MAAM,EAAI,EAGlD,GAAI7Y,GAAYgvB,GAAmB,CAACD,GAAY,EAAErnB,GAAUA,EAAO,SAAU,CAC5E,MAAMlG,EAAM,IAAI,MAAM,iBAAiB,EACvCA,EAAI,KAAO,6BACXxB,EAAS,KAAK,KAAK,QAASwB,CAAG,CAC/B,CACN,CAAK,CACL,CAAI,EAGFmF,EAAI,GAAG,WAAY,SAAU+f,EAAK,CACjC,aAAakI,CAAU,EAEvB,MAAMhwB,EAAU4tB,GAAqB9F,EAAI,OAAO,EAGhD,GAAI9pB,GAAM,WAAW8pB,EAAI,UAAU,EAAG,CAErC,MAAMuI,EAAWrwB,EAAQ,IAAI,UAAU,EAGvC,IAAIswB,EAAc,KAClB,GAAI,CACHA,EAAcD,IAAa,KAAO,KAAO,IAAIjB,GAAMiB,EAAU3oB,EAAQ,GAAG,EAAE,UAC1E,MAAa,CAIb,GAAIA,EAAQ,WAAa,SAAU,CAClC4H,EAAO,IAAI8a,EAAW,wDAAwDiG,CAAQ,GAAI,kBAAkB,CAAC,EAC7GN,IACA,MACA,CACD,CAGD,OAAQroB,EAAQ,SAAQ,CACvB,IAAK,QACJ4H,EAAO,IAAI8a,EAAW,0EAA0E1iB,EAAQ,GAAG,GAAI,aAAa,CAAC,EAC7HqoB,IACA,OACD,IAAK,SAEJ,GAAIO,IAAgB,KAEnB,GAAI,CACHtwB,EAAQ,IAAI,WAAYswB,CAAW,CACnC,OAAQ1tB,EAAK,CAEb0M,EAAO1M,CAAG,CACV,CAEF,MACD,IAAK,SAEJ,GAAI0tB,IAAgB,KACnB,MAID,GAAI5oB,EAAQ,SAAWA,EAAQ,OAAQ,CACtC4H,EAAO,IAAI8a,EAAW,gCAAgC1iB,EAAQ,GAAG,GAAI,cAAc,CAAC,EACpFqoB,IACA,MACA,CAID,MAAMQ,EAAc,CACnB,QAAS,IAAI3D,GAAQllB,EAAQ,OAAO,EACpC,OAAQA,EAAQ,OAChB,QAASA,EAAQ,QAAU,EAC3B,MAAOA,EAAQ,MACf,SAAUA,EAAQ,SAClB,OAAQA,EAAQ,OAChB,KAAMA,EAAQ,KACd,OAAQA,EAAQ,OAChB,QAASA,EAAQ,QACjB,KAAMA,EAAQ,IACrB,EAEM,GAAI,CAAC4nB,GAAoB5nB,EAAQ,IAAK4oB,CAAW,GAAK,CAACZ,GAAehoB,EAAQ,IAAK4oB,CAAW,EAC7F,UAAWvsB,IAAQ,CAAC,gBAAiB,mBAAoB,SAAU,SAAS,EAC3EwsB,EAAY,QAAQ,OAAOxsB,CAAI,EAKjC,GAAI+jB,EAAI,aAAe,KAAOpgB,EAAQ,MAAQwkB,GAAcxkB,CAAO,IAAM,KAAM,CAC9E4H,EAAO,IAAI8a,EAAW,2DAA4D,sBAAsB,CAAC,EACzG2F,IACA,MACA,EAGGjI,EAAI,aAAe,MAAQA,EAAI,aAAe,KAAOA,EAAI,aAAe,MAAQpgB,EAAQ,SAAW,UACtG6oB,EAAY,OAAS,MACrBA,EAAY,KAAO,OACnBA,EAAY,QAAQ,OAAO,gBAAgB,GAI5CtqB,EAAQjI,GAAM,IAAI6wB,GAAQyB,EAAaC,CAAW,CAAC,CAAC,EACpDR,IACA,MACD,CACD,CAGDjI,EAAI,KAAK,MAAO,UAAY,CACvBhf,GAAQA,EAAO,oBAAoB,QAASgnB,CAAgB,CACpE,CAAI,EACD,IAAIlxB,EAAOkpB,EAAI,KAAK,IAAIuH,EAAe,EAEvC,MAAMmB,EAAmB,CACxB,IAAK9oB,EAAQ,IACb,OAAQogB,EAAI,WACZ,WAAYA,EAAI,cAChB,QAAS9nB,EACT,KAAM0H,EAAQ,KACd,QAASA,EAAQ,QACjB,QAASA,EAAQ,OACrB,EAGS+oB,EAAUzwB,EAAQ,IAAI,kBAAkB,EAU9C,GAAI,CAAC0H,EAAQ,UAAYA,EAAQ,SAAW,QAAU+oB,IAAY,MAAQ3I,EAAI,aAAe,KAAOA,EAAI,aAAe,IAAK,CAC3H1mB,EAAW,IAAI6sB,GAASrvB,EAAM4xB,CAAgB,EAC9CvqB,EAAQ7E,CAAQ,EAChB,MACA,CAOD,MAAMsvB,EAAc,CACnB,MAAOtT,EAAK,aACZ,YAAaA,EAAK,YACtB,EAGG,GAAIqT,GAAW,QAAUA,GAAW,SAAU,CAC7C7xB,EAAOA,EAAK,KAAKwe,EAAK,aAAasT,CAAW,CAAC,EAC/CtvB,EAAW,IAAI6sB,GAASrvB,EAAM4xB,CAAgB,EAC9CvqB,EAAQ7E,CAAQ,EAChB,MACA,CAGD,GAAIqvB,GAAW,WAAaA,GAAW,YAAa,CAGnD,MAAME,EAAM7I,EAAI,KAAK,IAAIuH,EAAe,EACxCsB,EAAI,KAAK,OAAQ,SAAU9uB,EAAO,EAE5BA,EAAM,CAAC,EAAI,MAAU,EACzBjD,EAAOA,EAAK,KAAKwe,EAAK,cAAe,CAAA,EAErCxe,EAAOA,EAAK,KAAKwe,EAAK,iBAAkB,CAAA,EAEzChc,EAAW,IAAI6sB,GAASrvB,EAAM4xB,CAAgB,EAC9CvqB,EAAQ7E,CAAQ,CACrB,CAAK,EACDuvB,EAAI,GAAG,MAAO,UAAY,CAEpBvvB,IACJA,EAAW,IAAI6sB,GAASrvB,EAAM4xB,CAAgB,EAC9CvqB,EAAQ7E,CAAQ,EAEtB,CAAK,EACD,MACA,CAGD,GAAIqvB,GAAW,MAAQ,OAAOrT,EAAK,wBAA2B,WAAY,CACzExe,EAAOA,EAAK,KAAKwe,EAAK,uBAAwB,CAAA,EAC9Chc,EAAW,IAAI6sB,GAASrvB,EAAM4xB,CAAgB,EAC9CvqB,EAAQ7E,CAAQ,EAChB,MACA,CAGDA,EAAW,IAAI6sB,GAASrvB,EAAM4xB,CAAgB,EAC9CvqB,EAAQ7E,CAAQ,CACnB,CAAG,EAED+qB,GAAcpkB,EAAKL,CAAO,CAC5B,CAAE,CACF,CACA,SAASwoB,GAAoCxoB,EAASkpB,EAAe,CACpE,IAAIX,EAEJvoB,EAAQ,GAAG,SAAU,SAAUuS,EAAG,CACjCgW,EAAShW,CACX,CAAE,EAEDvS,EAAQ,GAAG,WAAY,SAAUtG,EAAU,CAC1C,MAAMpB,EAAUoB,EAAS,QAErBpB,EAAQ,mBAAmB,IAAM,WAAa,CAACA,EAAQ,gBAAgB,GAC1EoB,EAAS,KAAK,QAAS,SAAU+uB,EAAU,CAO1C,GAFwBF,GAAUA,EAAO,cAAc,MAAM,EAAI,GAE1C,CAACE,EAAU,CACjC,MAAMvtB,EAAM,IAAI,MAAM,iBAAiB,EACvCA,EAAI,KAAO,6BACXguB,EAAchuB,CAAG,CACjB,CACL,CAAI,CAEJ,CAAE,CACF,CAEA,SAASitB,GAActsB,EAAQX,EAAK,CAC/BW,EAAO,QACVA,EAAO,QAAQX,CAAG,GAGlBW,EAAO,KAAK,QAASX,CAAG,EACxBW,EAAO,IAAG,EAEZ,CAQAvF,GAAM,WAAa,SAAU6yB,EAAM,CAClC,OAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,GACjF,EAGA7yB,GAAM,QAAU,OAAO","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,46,50,51,52,53,54,55,56,57,58]}