From e53aa4e9fc954897939a876db72be8fe44439022 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Fri, 13 Dec 2024 16:48:10 +0100 Subject: [PATCH 01/21] fix: copy duplex option from Request object --- package.json | 6 +- pnpm-lock.yaml | 25 +- src/__tests__/parse-request.test.ts | 378 ++++++---- src/create-signed-fetcher.ts | 25 +- src/parse-request.ts | 115 +-- test/aws-s3/index.test.ts | 8 - test/aws-s3/package.json | 10 - test/aws-s3/pnpm-lock.yaml | 960 -------------------------- test/aws-s3/tsconfig.json | 101 --- test/aws-s3/vitest.config.mts | 7 - test/node-undici/fetch-duplex.test.ts | 13 + 11 files changed, 353 insertions(+), 1295 deletions(-) delete mode 100644 test/aws-s3/index.test.ts delete mode 100644 test/aws-s3/package.json delete mode 100644 test/aws-s3/pnpm-lock.yaml delete mode 100644 test/aws-s3/tsconfig.json delete mode 100644 test/aws-s3/vitest.config.mts create mode 100644 test/node-undici/fetch-duplex.test.ts diff --git a/package.json b/package.json index b4e4137..1288591 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "test": "vitest", "test:coverage": "vitest --coverage.enabled --coverage.provider=v8 --coverage.reporter=json-summary --coverage.reporter=json --coverage.reporter=text-summary --coverage.reporter=html", "build": "tsup && attw --pack .", - "watch": "tsup --watch src", + "dev": "tsup ./src/index.ts --watch", "prepublishOnly": "pnpm build", "lint": "pnpm biome check --write --no-errors-on-unmatched src test" }, @@ -62,7 +62,9 @@ "tsup": "^8.1.0", "tsx": "^4.17.0", "typescript": "^5.5.3", + "undici": "^7.1.0", + "undici-types": "^7.1.0", "vitest": "^2.0.5", "vitest-github-actions-reporter": "^0.11.1" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3929e4..0b28741 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,7 +38,7 @@ importers: version: 22.9.0 '@vitest/coverage-v8': specifier: ^2.0.4 - version: 2.0.5(vitest@2.0.5(@types/node@22.9.0)(@vitest/ui@2.0.5)) + version: 2.0.5(vitest@2.0.5) '@vitest/ui': specifier: ^2.0.5 version: 2.0.5(vitest@2.0.5) @@ -60,12 +60,18 @@ importers: typescript: specifier: ^5.5.3 version: 5.5.3 + undici: + specifier: ^7.1.0 + version: 7.1.0 + undici-types: + specifier: ^7.1.0 + version: 7.1.0 vitest: specifier: ^2.0.5 version: 2.0.5(@types/node@22.9.0)(@vitest/ui@2.0.5) vitest-github-actions-reporter: specifier: ^0.11.1 - version: 0.11.1(vitest@2.0.5(@types/node@22.9.0)(@vitest/ui@2.0.5)) + version: 0.11.1(vitest@2.0.5) test/aws-api-gateway: dependencies: @@ -3267,6 +3273,9 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@7.1.0: + resolution: {integrity: sha512-IdycojzhJm9g7sblozLpNkyPG2dJ7bsrpfc4hq2QKrnwbDK+ebiGL3UFSwq6B3IzB3R0m3u1b4in3hrZtMnm8g==} + undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} @@ -3275,6 +3284,10 @@ packages: resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} engines: {node: '>=18.17'} + undici@7.1.0: + resolution: {integrity: sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==} + engines: {node: '>=20.18.1'} + unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} @@ -5584,7 +5597,7 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@22.9.0)(@vitest/ui@2.0.5))': + '@vitest/coverage-v8@2.0.5(vitest@2.0.5)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -7398,12 +7411,16 @@ snapshots: undici-types@6.19.8: {} + undici-types@7.1.0: {} + undici@5.28.4: dependencies: '@fastify/busboy': 2.1.1 undici@6.20.1: {} + undici@7.1.0: {} + unicode-emoji-modifier-base@1.0.0: {} unicorn-magic@0.1.0: {} @@ -7471,7 +7488,7 @@ snapshots: '@types/node': 22.9.0 fsevents: 2.3.3 - vitest-github-actions-reporter@0.11.1(vitest@2.0.5(@types/node@22.9.0)(@vitest/ui@2.0.5)): + vitest-github-actions-reporter@0.11.1(vitest@2.0.5): dependencies: '@actions/core': 1.10.1 vitest: 2.0.5(@types/node@22.9.0)(@vitest/ui@2.0.5) diff --git a/src/__tests__/parse-request.test.ts b/src/__tests__/parse-request.test.ts index 102f390..624e454 100644 --- a/src/__tests__/parse-request.test.ts +++ b/src/__tests__/parse-request.test.ts @@ -1,170 +1,254 @@ import "cross-fetch/polyfill"; +import { Request as UndiciRequest, type RequestInit as UndiciRequestInit } from "undici"; import { describe, expect, it } from "vitest"; import { parseRequest } from "../parse-request.js"; const url = "http://example.com"; describe("parseRequest", () => { - it("should parse string input", () => { - expect(parseRequest(url)).toEqual( - expect.objectContaining({ - url: new URL(url), - method: "GET", - headers: {}, - body: undefined, - }), - ); + describe("string input", () => { + it("should parse `string` input", () => { + // Arrange + const input = url; + + // Act + const parsed = parseRequest(input); + + // Assert + expect(parsed.url).toEqual(new URL(url)); + expect(parsed.method).toEqual("GET"); + expect(parsed.headers).toEqual({}); + }); }); - it("should parse URL input", () => { - expect(parseRequest(new URL(url))).toEqual( - expect.objectContaining({ - url: new URL(url), - method: "GET", - headers: {}, - body: undefined, - }), - ); + describe("URL input", () => { + it("should parse `URL` input", () => { + // Arrange + const input = new URL(url); + + // Act + const parsed = parseRequest(input); + + // Assert + expect(parsed.url).toEqual(new URL(url)); + expect(parsed.method).toEqual("GET"); + expect(parsed.headers).toEqual({}); + }); }); - it("should parse Request input", () => { - expect(parseRequest(new Request(url))).toEqual( - expect.objectContaining({ - url: new URL(url), - method: "GET", - headers: {}, - body: null, // added by Request - }), - ); - - expect( - parseRequest( - new Request(url, { - method: "POST", - body: "foo", - headers: { header1: "value1", header2: "value2" }, - }), - ), - ).toEqual( - expect.objectContaining({ - url: new URL(url), + describe("Request input", () => { + it("should parse simple `Request` input", () => { + // Arrange + const simpleRequest = new Request(url); + + // Act + const parsed = parseRequest(simpleRequest); + + // Assert + expect(parsed.url).toEqual(new URL(url)); + expect(parsed.method).toEqual("GET"); + expect(parsed.headers).toEqual({}); + expect(parsed.body).toBeNull(); + }); + + it("should parse complex `Request` input", () => { + // Arrange + const complexRequest = new Request(url, { method: "POST", - headers: { - "content-type": "text/plain;charset=UTF-8", // added by Request - header1: "value1", - header2: "value2", - }, - body: expect.any(ReadableStream), // added by Request - }), - ); + body: "foo", + headers: { header1: "value1", header2: "value2" }, + }); + + // Act + const parsedComplex = parseRequest(complexRequest); + + // Assert + expect(parsedComplex.url).toEqual(new URL(url)); + expect(parsedComplex.method).toEqual("POST"); + expect(parsedComplex.headers).toEqual({ + "content-type": "text/plain;charset=UTF-8", + header1: "value1", + header2: "value2", + }); + expect(parsedComplex.body).toBeInstanceOf(ReadableStream); + }); }); - describe("should override options from RequestInit", () => { - it("should override method", () => { - expect( - parseRequest(new Request(url, { method: "GET" }), { - method: "POST", - }), - ).toEqual( - expect.objectContaining({ - method: "POST", - }), - ); - }); - - it("should override body", () => { - expect( - parseRequest(new Request(url, { method: "POST", body: "foo" }), { - body: "bar", - }), - ).toEqual( - expect.objectContaining({ - body: "bar", - }), - ); - }); - - it("should override headers", () => { - expect( - parseRequest( - new Request(url, { - headers: { header1: "value1", header2: "value2" }, - }), - { - headers: { header3: "value3", header4: "value4" }, - }, - ), - ).toEqual( - expect.objectContaining({ - headers: { - header3: "value3", - header4: "value4", - }, - }), - ); - - expect( - parseRequest( - new Request(url, { - headers: { header1: "value1", header2: "value2" }, - }), - { - headers: [ - ["header3", "value3"], - ["header4", "value4"], - ], - }, - ), - ).toEqual( - expect.objectContaining({ - headers: { - header3: "value3", - header4: "value4", - }, - }), - ); - - expect( - parseRequest( - new Request(url, { - headers: { header1: "value1", header2: "value2" }, - }), - { - headers: new Headers({ - header3: "value3", - header4: "value4", - }), - }, - ), - ).toEqual( - expect.objectContaining({ - headers: { - header3: "value3", - header4: "value4", - }, - }), - ); + describe("body", () => { + it("should parse body of `Request`", () => { + // Arrange + const input = new Request(url, { method: "POST", body: "foo" }); + + // Act + const parsed = parseRequest(input); + + // Assert + expect(parsed.body).toBeInstanceOf(ReadableStream); + }); + + it("should parse body of `RequestInit`", () => { + // Arrange + const init = { body: "foo" }; + + // Act + const parsed = parseRequest(url, init); + + // Assert + expect(parsed.body).toEqual("foo"); + }); + + it("should override body of `Request` from `RequestInit`", () => { + // Arrange + const input = new Request(url, { method: "POST", body: "foo" }); + const init = { body: "bar" }; + + // Act + const parsed = parseRequest(input, init); + + // Assert + expect(parsed.body).toEqual("bar"); }); }); - it("should uppercase method", () => { - expect(parseRequest(url, { method: "get" })).toEqual( - expect.objectContaining({ - method: "GET", - }), - ); + describe("Node.js options ", () => { + it("should keep duplex from `Request`", () => { + // Arrange + const input = new UndiciRequest(url, { method: "POST", body: "foo", duplex: "half" }); - expect(parseRequest(new Request(url, { method: "post" }))).toEqual( - expect.objectContaining({ - method: "POST", - }), - ); + // Act + const parsed = parseRequest(input as Request); + + // Assert + expect((parsed as any).duplex).toEqual("half"); + }); + + it("should keep duplex from `RequestInit`", () => { + // Arrange + const input = new UndiciRequest(url, { method: "POST", body: "foo" }); + const init = { duplex: "half" } as UndiciRequestInit; + + // Act + const parsed = parseRequest(input as Request, init as RequestInit); + + // Assert + expect((parsed as any).duplex).toEqual("half"); + }); + }); + + describe("headers", () => { + it("should parse `Headers` to plain object", () => { + // Arrange + const headers = new Headers({ header1: "value1", header2: "value2" }); + + // Act + const parsed = parseRequest(url, { headers }); + + // Assert + expect(parsed.headers).toEqual({ + header1: "value1", + header2: "value2", + }); + }); + + it("should parse `HeadersInit` to plain object", () => { + // Arrange + const init = { headers: { header1: "value1", header2: "value2" } as HeadersInit }; + + // Act + const parsed = parseRequest(url, init); + + // Assert + expect(parsed.headers).toEqual({ header1: "value1", header2: "value2" }); + }); + + it("should parse array of headers to plain object", () => { + // Arrange + const init = { + headers: [ + ["header1", "value1"], + ["header2", "value2"], + ] as [string, string][], + }; + + // Act + const parsed = parseRequest(url, init); + + // Assert + expect(parsed.headers).toEqual({ header1: "value1", header2: "value2" }); + }); + + it("should override headers of `Request` from `RequestInit`", () => { + // Arrange + const input = new Request(url, { + headers: { header1: "value1", header2: "value2" }, + }); + const init = { + headers: { header3: "value3", header4: "value4" }, + }; + + // Act + const parsed = parseRequest(input, init); + + // Assert + expect(parsed.headers).toEqual({ + header3: "value3", + header4: "value4", + }); + }); + }); + + describe("method", () => { + it("should set default method to GET", () => { + // Arrange + const input = url; + + // Act + const parsed = parseRequest(input); + + // Assert + expect(parsed.method).toEqual("GET"); + }); + + it("should override method of `Request` from `RequestInit`", () => { + // Arrange + const input = new Request(url, { method: "GET" }); + const init = { method: "POST" }; + + // Act + const parsed = parseRequest(input, init); + + // Assert + expect(parsed.method).toEqual("POST"); + }); + + it("should uppercase method from `Request`", () => { + // Arrange + const input = new Request(url, { method: "post" }); + + // Act + const parsed = parseRequest(input); + + // Assert + expect(parsed.method).toEqual("POST"); + }); + + it("should uppercase method from `RequestInit`", () => { + // Arrange + const init = { method: "get" }; + + // Act + const parsed = parseRequest(url, init); + + // Assert + expect(parsed.method).toEqual("GET"); + }); }); it("should throw error if input is invalid", () => { - expect(() => parseRequest("")).toThrowError(); - expect(() => parseRequest(null as any)).toThrowError(); - expect(() => parseRequest(undefined as any)).toThrowError(); - expect(() => parseRequest({} as any)).toThrowError(); + // Assert + expect(() => parseRequest("")).toThrow(); + expect(() => parseRequest(null as any)).toThrow(); + expect(() => parseRequest(undefined as any)).toThrow(); + expect(() => parseRequest({} as any)).toThrow(); }); }); diff --git a/src/create-signed-fetcher.ts b/src/create-signed-fetcher.ts index 4e31fe6..4a90fc5 100644 --- a/src/create-signed-fetcher.ts +++ b/src/create-signed-fetcher.ts @@ -31,15 +31,15 @@ export const createSignedFetcher: CreateSignedFetcher = (opts: SignedFetcherOpti const region = opts.region || "us-east-1"; const credentials = opts.credentials || defaultProvider(); - const { url, method, body, headers } = parseRequest(input, init); + const { url, ...request } = parseRequest(input, init); // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - headers["host"] = url.host; + request.headers["host"] = url.host; - const request = new HttpRequest({ - method, - body, - headers, + const httpRequest = new HttpRequest({ + method: request.method, + body: request.body, + headers: request.headers, hostname: url.hostname, path: url.pathname, protocol: url.protocol, @@ -57,14 +57,11 @@ export const createSignedFetcher: CreateSignedFetcher = (opts: SignedFetcherOpti sha256: Sha256, }); - const signedRequest = await signer.sign(request); + const signedHttpRequest = await signer.sign(httpRequest); - return fetchFn(url, { - ...init, - method, - body, - // Copy only the signed headers, because the body may be modified by the signer - headers: signedRequest.headers, - }); + // Copy only the signed headers, because the body may be modified by the signer + request.headers = signedHttpRequest.headers; + + return fetchFn(url, request); }; }; diff --git a/src/parse-request.ts b/src/parse-request.ts index 28b7f6f..a8980f3 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -1,66 +1,97 @@ -type ParsedRequest = { +interface ParsedRequest extends RequestInit { url: URL; - method: string; - body: BodyInit | undefined | null; headers: Record; +} + +const isObject = (input: unknown): input is Record => { + return typeof input === "object" && input !== null; +}; + +const isRequest = (input: unknown): input is Request => { + if (input instanceof Request) return true; + + if (isObject(input) && "body" in input && "method" in input && "url" in input) return true; + + return false; +}; + +const isHeaders = (input: unknown): input is Headers => { + if (input instanceof Headers) return true; + + if (isObject(input) && "forEach" in input && "get" in input && "has" in input && "set" in input) return true; + + return false; +}; + +/** + * Copy the properties of a `Request` object to a plain object. + * This is necessary because `Request` is not a plain object and its properties are not enumerable. + */ +const copyRequest = (input: Request): Record => { + return Object.getOwnPropertyNames(Request.prototype).reduce>((acc, prop) => { + acc[prop] = input[prop as keyof Request]; + return acc; + }, {}); +}; + +/** + * Copy the properties of `HeadersInit` to a plain object. + * `HeadersInit` is a union of `[string, string][]`, `Record`, and `Headers` + */ +const copyHeaders = (headers?: HeadersInit): Record => { + const headersMap = new Map(); + + if (Array.isArray(headers)) { + headers.forEach((header) => headersMap.set(header[0], header[1])); + } else if (isHeaders(headers)) { + headers.forEach((value, key) => headersMap.set(key, value)); + } else if (isObject(headers)) { + Object.entries(headers).forEach(([key, value]) => headersMap.set(key, value)); + } + + return Object.fromEntries(headersMap.entries()); }; /** * Extract the URL, method, body, and headers from a request. - * Input can be a string, URL, or Request object. - * Init is an optional RequestInit object. If provided, it will override the values in the Request object. + * Input can be a `string`, `URL`, or `Request` object. + * Init is an optional `RequestInit` object. If provided, it will override the values in the `Request` object. */ export const parseRequest = (input: RequestInfo | URL, init?: RequestInit): ParsedRequest => { let url = ""; - let method = "GET"; - let body = undefined; - let headers = new Map(); + let request: RequestInit = {}; - // Input can be a string, URL, or Request object - // type RequestInfo = Request | string; + /** + * Input can be a `string`, `URL`, or `Request` object + * `RequestInfo` is a union of `Request` and `string` + */ if (typeof input === "string") { url = input; - method = "GET"; + request = { + ...init, + }; } else if (input instanceof URL) { url = input.href; - method = "GET"; - body = undefined; - } else if (input instanceof Request) { + request = { + ...init, + }; + } else if (isRequest(input)) { url = input.url; - method = input.method; - body = input.body; - input.headers.forEach((value, key) => headers.set(key, value)); - } - - if (init?.method) { - method = init.method; + request = { + ...copyRequest(input), + ...init, + }; } - if (init?.body) { - body = init.body; - } - - if (init?.headers) { - // Headers from RequestInit replace all existing headers from the Request object - headers = new Map(); - - // Headers can be an array, Headers object, or Record - // type HeadersInit = [string, string][] | Record | Headers; - if (Array.isArray(init.headers)) { - init.headers.forEach((header) => headers.set(header[0], header[1])); - } else if (init.headers instanceof Headers) { - init.headers.forEach((value, key) => headers.set(key, value)); - } else if (typeof init.headers === "object") { - Object.entries(init.headers).forEach(([key, value]) => headers.set(key, value)); - } - } + const headers = copyHeaders(request.headers); // must be a plain object + const method = request.method?.toUpperCase() ?? "GET"; // method must be uppercase if (!url) throw new Error("Could not parse URL from input"); return { + ...request, + method, + headers, url: new URL(url), - method: method.toUpperCase(), // method must be uppercase - body, - headers: Object.fromEntries(headers.entries()), // must be a plain object }; }; diff --git a/test/aws-s3/index.test.ts b/test/aws-s3/index.test.ts deleted file mode 100644 index b924dca..0000000 --- a/test/aws-s3/index.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import "cross-fetch/polyfill"; -import { beforeAll, describe } from "vitest"; - -beforeAll(async () => { - return async () => {}; -}); - -describe.todo("S3", () => {}); diff --git a/test/aws-s3/package.json b/test/aws-s3/package.json deleted file mode 100644 index 3ee9cf0..0000000 --- a/test/aws-s3/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "type": "module", - "scripts": { - "test": "vitest" - }, - "dependencies": { - "@aws-sdk/client-api-gateway": "^3.535.0", - "@aws-sdk/client-apigatewayv2": "^3.535.0" - } -} diff --git a/test/aws-s3/pnpm-lock.yaml b/test/aws-s3/pnpm-lock.yaml deleted file mode 100644 index c270087..0000000 --- a/test/aws-s3/pnpm-lock.yaml +++ /dev/null @@ -1,960 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@aws-sdk/client-api-gateway': - specifier: ^3.535.0 - version: 3.535.0 - '@aws-sdk/client-apigatewayv2': - specifier: ^3.535.0 - version: 3.535.0 - -packages: - - /@aws-crypto/crc32@3.0.0: - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/ie11-detection@3.0.0: - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - dependencies: - tslib: 1.14.1 - dev: false - - /@aws-crypto/sha256-browser@3.0.0: - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-locate-window': 3.535.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/sha256-js@3.0.0: - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/supports-web-crypto@3.0.0: - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - dependencies: - tslib: 1.14.1 - dev: false - - /@aws-crypto/util@3.0.0: - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: false - - /@aws-sdk/client-api-gateway@3.535.0: - resolution: {integrity: sha512-QYHP4T3lA4kQSPP4eWM0v7Lf+rQmOQbsB6YGX/0ggdBaoW6PJxUtcitLivj0dxb9ORZonNG6kFVxwpQVvSjGSw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-sdk-api-gateway': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-apigatewayv2@3.535.0: - resolution: {integrity: sha512-NEDWzr+JzymEXYzbazcng/9i2jh5RTZyUMVAoUgmAs6fot40pes9kGhjwHrUwrwFeCDDbFx2sDmrtse4hQ/AFA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-sso-oidc@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-sso@3.535.0: - resolution: {integrity: sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-sts@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/core@3.535.0: - resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/core': 1.4.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-env@3.535.0: - resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-http@3.535.0: - resolution: {integrity: sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-ini@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/credential-provider-node@3.535.0: - resolution: {integrity: sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-http': 3.535.0 - '@aws-sdk/credential-provider-ini': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/credential-provider-process@3.535.0: - resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-sso@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sso': 3.535.0 - '@aws-sdk/token-providers': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/credential-provider-web-identity@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/middleware-host-header@3.535.0: - resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-logger@3.535.0: - resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-recursion-detection@3.535.0: - resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-sdk-api-gateway@3.535.0: - resolution: {integrity: sha512-O4cwxaI9zTdCUMRFtPXpTXBhZ98Zc93+TouOJPxbNpalOI0dG1r4Ty5s4rK6N/4RW9nSWWTqyfZa2b72q4HnBw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-user-agent@3.535.0: - resolution: {integrity: sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/region-config-resolver@3.535.0: - resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/token-providers@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sso-oidc': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/types@3.535.0: - resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-endpoints@3.535.0: - resolution: {integrity: sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - '@smithy/util-endpoints': 1.2.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-locate-window@3.535.0: - resolution: {integrity: sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-user-agent-browser@3.535.0: - resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-user-agent-node@3.535.0: - resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/abort-controller@2.2.0: - resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/config-resolver@2.2.0: - resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/core@1.4.0: - resolution: {integrity: sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/credential-provider-imds@2.3.0: - resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/eventstream-codec@2.2.0: - resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/fetch-http-handler@2.5.0: - resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} - dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/hash-node@2.2.0: - resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/invalid-dependency@2.2.0: - resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/is-array-buffer@2.2.0: - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/middleware-content-length@2.2.0: - resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/middleware-endpoint@2.5.0: - resolution: {integrity: sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-serde': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/middleware-retry@2.2.0: - resolution: {integrity: sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - tslib: 2.6.2 - uuid: 8.3.2 - dev: false - - /@smithy/middleware-serde@2.3.0: - resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/middleware-stack@2.2.0: - resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/node-config-provider@2.3.0: - resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/node-http-handler@2.5.0: - resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/property-provider@2.2.0: - resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/protocol-http@3.3.0: - resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/querystring-builder@2.2.0: - resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/querystring-parser@2.2.0: - resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/service-error-classification@2.1.5: - resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - dev: false - - /@smithy/shared-ini-file-loader@2.4.0: - resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/signature-v4@2.2.0: - resolution: {integrity: sha512-+B5TNzj/fRZzVW3z8UUJOkNx15+4E0CLuvJmJUA1JUIZFp3rdJ/M2H5r2SqltaVPXL0oIxv/6YK92T9TsFGbFg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/eventstream-codec': 2.2.0 - '@smithy/is-array-buffer': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-uri-escape': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/smithy-client@2.5.0: - resolution: {integrity: sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/types@2.12.0: - resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/url-parser@2.2.0: - resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} - dependencies: - '@smithy/querystring-parser': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-base64@2.3.0: - resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-body-length-browser@2.2.0: - resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-body-length-node@2.3.0: - resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-buffer-from@2.2.0: - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-config-provider@2.3.0: - resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-defaults-mode-browser@2.2.0: - resolution: {integrity: sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==} - engines: {node: '>= 10.0.0'} - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-defaults-mode-node@2.3.0: - resolution: {integrity: sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==} - engines: {node: '>= 10.0.0'} - dependencies: - '@smithy/config-resolver': 2.2.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-endpoints@1.2.0: - resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} - engines: {node: '>= 14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-hex-encoding@2.2.0: - resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-middleware@2.2.0: - resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-retry@2.2.0: - resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} - engines: {node: '>= 14.0.0'} - dependencies: - '@smithy/service-error-classification': 2.1.5 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-stream@2.2.0: - resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-uri-escape@2.2.0: - resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-utf8@2.3.0: - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.2 - dev: false - - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false - - /fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false diff --git a/test/aws-s3/tsconfig.json b/test/aws-s3/tsconfig.json deleted file mode 100644 index 67b2735..0000000 --- a/test/aws-s3/tsconfig.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - "module": "Node16" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/test/aws-s3/vitest.config.mts b/test/aws-s3/vitest.config.mts deleted file mode 100644 index 80ad9eb..0000000 --- a/test/aws-s3/vitest.config.mts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - name: "e2e/aws-s3", - }, -}); diff --git a/test/node-undici/fetch-duplex.test.ts b/test/node-undici/fetch-duplex.test.ts new file mode 100644 index 0000000..b7b9c32 --- /dev/null +++ b/test/node-undici/fetch-duplex.test.ts @@ -0,0 +1,13 @@ +import "cross-fetch/polyfill"; +import { Request as UndiciRequest } from "undici"; +import { expect, it } from "vitest"; +import { createSignedFetcher } from "../../dist/index.js"; + +it.fails("should fail without duplex", async () => { + const request = new UndiciRequest("http://example.com", { method: "POST", body: new ReadableStream() }); + + const fetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); + const response = await fetch(request as Request); + + expect(response.status).toBe(200); +}); From dd62efa739d796cf6056c4844343fff2a64a931c Mon Sep 17 00:00:00 2001 From: zirkelc Date: Fri, 13 Dec 2024 17:47:25 +0100 Subject: [PATCH 02/21] readme --- README.md | 105 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index eda8c14..da2bd1a 100644 --- a/README.md +++ b/README.md @@ -32,52 +32,39 @@ const { createSignedFetcher } = require('aws-sigv4-fetch'); ## Usage This package exports a function `createSignedFetcher` that returns a `fetch` function to automatically sign HTTP requests with AWS Signature V4 for the given AWS service and region. The credentials can be passed to the function directly, or they will be retrieved from the environment by `defaultProvider()` from package [`@aws-sdk/credential-provider-node`](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_provider_node.html). + ```ts import { createSignedFetcher } from 'aws-sigv4-fetch'; -const signedFetch = createSignedFetcher({ service: 'appsync', region: 'eu-west-1' }); -const url = 'https://mygraphqlapi.appsync-api.eu-west-1.amazonaws.com/graphql'; - -const body = { a: 1 }; +const signedFetch = createSignedFetcher({ service: 's3', region: 'eu-west-1', credentials: { accessKeyId: '...', secretAccessKey: '...' } }); -const response = await signedFetch(url, { - method: 'post', - body: JSON.stringify(body), - headers: {'Content-Type': 'application/json'} -}); +const response = await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json'); const data = await response.json(); ``` -### Sign GraphQL Requests with `graphql-request` -If you are using [`graphql-request`](https://www.npmjs.com/package/graphql-request) as GraphQL library, you can easily sign all HTTP requests. The library has `fetch`option to pass a [custom `fetch` method](https://github.com/prisma-labs/graphql-request#using-a-custom-fetch-method): +The returned `signedFetch` function wraps the `fetch` function and automatically signs the request with AWS Signature V4. It accepts the same arguments as the `fetch` function. ```ts -import { createSignedFetcher } from 'aws-sigv4-fetch'; -import { GraphQLClient } from 'graphql-request'; +type Fetch = (input: string | Request | URL, init?: RequestInit) => Promise; -const query = ` - mutation CreateItem($input: CreateItemInput!) { - createItem(input: $input) { - id - createdAt - updatedAt - name - } - } -`; +const signedFetch: Fetch = createSignedFetcher({ service: 's3', region: 'eu-west-1' }); -const variables = { - input: { - name, - }, -}; +// string +await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json'); -const client = new GraphQLClient('https://mygraphqlapi.appsync-api.eu-west-1.amazonaws.com/graphql', { - fetch: createSignedFetcher({ service: 'appsync', region: 'eu-west-1' }), -}); +// URL +await signedFetch(new URL('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json')); -const result = await client.request(query, variables); +// Request +await signedFetch(new Request('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json')); + +// additional options +await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json', { + method: 'POST', + body: JSON.stringify({ a: 1 }), + headers: { 'Content-Type': 'application/json' } +}); ``` ### Fetch @@ -115,6 +102,60 @@ import { createSignedFetcher } from 'aws-sigv4-fetch'; const signedFetch = createSignedFetcher({ service: 'iam', region: 'eu-west-1', fetch }); ``` +## Examples + +### AWS +Here are some examples of common AWS services. + +```ts +// API Gateway +const signedFetch = createSignedFetcher({ service: 'execute-api', region: 'eu-west-1' }); +const response = await signedFetch('https://myapi.execute-api.eu-west-1.amazonaws.com/my-stage/my-resource'); + +// Lambda Function URL +const signedFetch = createSignedFetcher({ service: 'lambda', region: 'eu-west-1' }); +const response = await signedFetch(new URL('https://mylambda.lambda-url.eu-west-1.on.aws/')); + +// AppSync +const signedFetch = createSignedFetcher({ service: 'appsync', region: 'eu-west-1' }); +const response = await signedFetch('https://mygraphqlapi.appsync-api.eu-west-1.amazonaws.com/graphql', { + method: 'POST', + body: JSON.stringify({ a: 1 }), + headers: {'Content-Type': 'application/json'} +}); +``` + +### Automatically sign GraphQL Requests with `graphql-request` +If you are using [`graphql-request`](https://www.npmjs.com/package/graphql-request) as GraphQL library, you can easily sign all HTTP requests. The library has `fetch`option to pass a [custom `fetch` method](https://github.com/prisma-labs/graphql-request#using-a-custom-fetch-method): + +```ts +import { createSignedFetcher } from 'aws-sigv4-fetch'; +import { GraphQLClient } from 'graphql-request'; + +const query = ` + mutation CreateItem($input: CreateItemInput!) { + createItem(input: $input) { + id + createdAt + updatedAt + name + } + } +`; + +const variables = { + input: { + name, + }, +}; + +const client = new GraphQLClient('https://mygraphqlapi.appsync-api.eu-west-1.amazonaws.com/graphql', { + fetch: createSignedFetcher({ service: 'appsync', region: 'eu-west-1' }), +}); + +const result = await client.request(query, variables); +``` + ## Resources - [Sign GraphQL Request with AWS IAM and Signature V4](https://dev.to/zirkelc/sign-graphql-request-with-aws-iam-and-signature-v4-2il6) - [Amplify Signing a request from Lambda](https://docs.amplify.aws/lib/graphqlapi/graphql-from-nodejs/q/platform/js/#signing-a-request-from-lambda) From bc9573d917cd61f5b286035e565b13ec4f46e013 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Mon, 16 Dec 2024 17:10:44 +0100 Subject: [PATCH 03/21] sign request --- src/__tests__/sign-request.test.ts | 400 ++++++++++++++++++++++++++ src/create-signed-fetcher.ts | 31 +- src/index.ts | 1 + src/parse-request.ts | 2 +- src/sign-request.ts | 74 +++++ test/node-undici/fetch-duplex.test.ts | 65 ++++- 6 files changed, 549 insertions(+), 24 deletions(-) create mode 100644 src/__tests__/sign-request.test.ts create mode 100644 src/sign-request.ts diff --git a/src/__tests__/sign-request.test.ts b/src/__tests__/sign-request.test.ts new file mode 100644 index 0000000..5ebd338 --- /dev/null +++ b/src/__tests__/sign-request.test.ts @@ -0,0 +1,400 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { createSignedFetcher } from "../create-signed-fetcher.js"; +import { type SignRequestOptions, signRequest } from "../sign-request.js"; + +vi.useFakeTimers(); +vi.setSystemTime("2000-01-01T00:00:00.000Z"); + +const credentials: AwsCredentialIdentity = { + accessKeyId: "foo", + secretAccessKey: "bar", +}; + +const options: SignRequestOptions = { + service: "foo", + region: "us-bar-1", + credentials, +}; + +beforeEach(() => { + vi.resetAllMocks(); +}); + +const url = "https://foo.us-bar-1.amazonaws.com/"; + +const headersSigned = expect.objectContaining({ + host: "foo.us-bar-1.amazonaws.com", + "x-amz-date": "20000101T000000Z", + "x-amz-content-sha256": expect.stringMatching(/^[a-f0-9]{64}$/), + authorization: expect.stringMatching( + /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9-]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, + ), +}); + +const headersUnsignedPayload = expect.objectContaining({ + host: "foo.us-bar-1.amazonaws.com", + "x-amz-date": "20000101T000000Z", + "x-amz-content-sha256": "UNSIGNED-PAYLOAD", + authorization: expect.stringMatching( + /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9-]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, + ), +}); + +const getSignedHeaders = ( + signedRequest: Request, +): Record<"authorization" | "host" | "x-amz-content-sha256" | "x-amz-date" | "x-amz-security-token", string> => { + const headers: Record = {}; + signedRequest.headers.forEach((value, key) => { + headers[key] = value; + }); + return headers; +}; + +describe("signRequest", () => { + describe("GET", () => { + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("GET"); + expect(signedRequest.body).toEqual(null); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + + const authorization = signedHeaders.authorization; + expect(authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa773e14e7b0ff9b9c7434ba0fd3b91e16a7707f95875e96ff387c1f4c7094e7", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("GET"); + expect(signedRequest.body).toEqual(null); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa773e14e7b0ff9b9c7434ba0fd3b91e16a7707f95875e96ff387c1f4c7094e7", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("GET"); + expect(signedRequest.body).toEqual(null); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa773e14e7b0ff9b9c7434ba0fd3b91e16a7707f95875e96ff387c1f4c7094e7", + ); + }); + }); + + describe("POST", () => { + describe("Body: undefined", () => { + const body = undefined; + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(signedRequest.body).toEqual(null); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + + const authorization = signedHeaders.authorization; + expect(authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=1e3b24fcfd7655c0c245d99ba7b6b5ca6174eab903ebfbda09ce457af062ad30", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(signedRequest.body).toEqual(null); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=1e3b24fcfd7655c0c245d99ba7b6b5ca6174eab903ebfbda09ce457af062ad30", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", body }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(signedRequest.body).toEqual(null); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=1e3b24fcfd7655c0c245d99ba7b6b5ca6174eab903ebfbda09ce457af062ad30", + ); + }); + }); + + describe("Body: string", () => { + const body = "It was the best of times, it was the worst of times"; + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + + const authorization = signedHeaders.authorization; + expect(authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=cf22a0befff359388f136b158f0b1b43db7b18d2ca65ce4112bc88a16815c4b6", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=cf22a0befff359388f136b158f0b1b43db7b18d2ca65ce4112bc88a16815c4b6", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", body }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=56782e0c3a9638fb8deed0a8c0cee829174b2b250ea1d41780e8b806dd172689", + ); + }); + }); + + describe("Body: URLSearchParams", () => { + const body = new URLSearchParams({ foo: "bar" }); + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual(body.toString()); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual(body.toString()); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", body }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual(body.toString()); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=075da87c82aa0aefd095333a7a662e80512a26775a0cf193856ad9e63ddc64cb", + ); + }); + }); + + describe("Body: FormData", () => { + const body = new FormData(); + body.append("foo", "bar"); + + /** + * Undici generates a random boundary for each request. + */ + const formData = { + headers: { + "Content-Type": "multipart/form-data; boundary=----formdata-undici-0.6204674738279623", + }, + body: + "------formdata-undici-0.6204674738279623\r\n" + + 'Content-Disposition: form-data; name="foo"\r\n' + + "\r\n" + + "bar\r\n" + + "------formdata-undici-0.6204674738279623--\r\n", + }; + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", ...formData }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.formData()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=49b9a46b57b6877323d917ebc6fa3ff0c521d9a3a512f3419ae35ded4f8f58a2", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", ...formData }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.formData()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=49b9a46b57b6877323d917ebc6fa3ff0c521d9a3a512f3419ae35ded4f8f58a2", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", ...formData }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.formData()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=ae0efdc0fc4135f3ff9658b87a5b6c014c93b6a453ce6c1647d67753d193243e", + ); + }); + }); + + describe("Body: Blob", () => { + const body = new Blob(["foo"], { type: "text/plain" }); + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.blob()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.blob()).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", body }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(await signedRequest.text()).toEqual("foo"); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=8f417353b5397f12b5838c417d36070ddb38a6e37b7ed06f025ad53c908b7420", + ); + }); + }); + + describe("Body: Uint8Array", () => { + const body = new Uint8Array([0xde, 0xad, 0xbe, 0xef]); + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(new Uint8Array(await signedRequest.arrayBuffer())).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=89f092f52faedb8a6be1890b2a511b88e7998389d62bd7d72915e2f4ee271a64", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", body }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(new Uint8Array(await signedRequest.arrayBuffer())).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=89f092f52faedb8a6be1890b2a511b88e7998389d62bd7d72915e2f4ee271a64", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", body }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(new Uint8Array(await signedRequest.arrayBuffer())).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersUnsignedPayload); + + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + ); + }); + }); + }); +}); diff --git a/src/create-signed-fetcher.ts b/src/create-signed-fetcher.ts index 4a90fc5..7ebdeaa 100644 --- a/src/create-signed-fetcher.ts +++ b/src/create-signed-fetcher.ts @@ -31,23 +31,24 @@ export const createSignedFetcher: CreateSignedFetcher = (opts: SignedFetcherOpti const region = opts.region || "us-east-1"; const credentials = opts.credentials || defaultProvider(); - const { url, ...request } = parseRequest(input, init); + const parsedRequest = parseRequest(input, init); + const parsedUrl = parsedRequest.url; // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - request.headers["host"] = url.host; + parsedRequest.headers["host"] = parsedUrl.host; const httpRequest = new HttpRequest({ - method: request.method, - body: request.body, - headers: request.headers, - hostname: url.hostname, - path: url.pathname, - protocol: url.protocol, - port: url.port ? Number(url.port) : undefined, - username: url.username, - password: url.password, - fragment: url.hash, - query: Object.fromEntries(url.searchParams.entries()), + method: parsedRequest.method, + body: parsedRequest.body, + headers: parsedRequest.headers, + hostname: parsedUrl.hostname, + path: parsedUrl.pathname, + protocol: parsedUrl.protocol, + port: parsedUrl.port ? Number(parsedUrl.port) : undefined, + username: parsedUrl.username, + password: parsedUrl.password, + fragment: parsedUrl.hash, + query: Object.fromEntries(parsedUrl.searchParams.entries()), }); const signer = new SignatureV4({ @@ -60,8 +61,8 @@ export const createSignedFetcher: CreateSignedFetcher = (opts: SignedFetcherOpti const signedHttpRequest = await signer.sign(httpRequest); // Copy only the signed headers, because the body may be modified by the signer - request.headers = signedHttpRequest.headers; + parsedRequest.headers = signedHttpRequest.headers; - return fetchFn(url, request); + return fetchFn(parsedUrl, parsedRequest); }; }; diff --git a/src/index.ts b/src/index.ts index f3e3d79..d37cd60 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,2 @@ export * from "./create-signed-fetcher.js"; +export * from "./sign-request.js"; diff --git a/src/parse-request.ts b/src/parse-request.ts index a8980f3..aa7d1a1 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -57,7 +57,7 @@ const copyHeaders = (headers?: HeadersInit): Record => { * Input can be a `string`, `URL`, or `Request` object. * Init is an optional `RequestInit` object. If provided, it will override the values in the `Request` object. */ -export const parseRequest = (input: RequestInfo | URL, init?: RequestInit): ParsedRequest => { +export const parseRequest = (input: string | Request | URL, init?: RequestInit): ParsedRequest => { let url = ""; let request: RequestInit = {}; diff --git a/src/sign-request.ts b/src/sign-request.ts new file mode 100644 index 0000000..d736f52 --- /dev/null +++ b/src/sign-request.ts @@ -0,0 +1,74 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { defaultProvider } from "@aws-sdk/credential-provider-node"; +import type { AwsCredentialIdentity, Provider } from "@aws-sdk/types"; +import { HttpRequest } from "@smithy/protocol-http"; +import { SignatureV4 } from "@smithy/signature-v4"; +import { parseRequest } from "./parse-request.js"; + +export type SignRequestOptions = { + service: string; + region?: string; + credentials?: AwsCredentialIdentity | Provider; +}; + +export function signRequest(input: string | Request | URL, options: SignRequestOptions): Promise; +export function signRequest( + input: string | Request | URL, + init: RequestInit, + options: SignRequestOptions, +): Promise; +export async function signRequest( + ...args: + | [input: string | Request | URL, options: SignRequestOptions] + | [input: string | Request | URL, init: RequestInit, options: SignRequestOptions] +): Promise { + let request: string | Request | URL; + let init: RequestInit | undefined; + let options: SignRequestOptions; + + if (args.length === 2) { + request = args[0]; + options = args[1]; + } else { + request = args[0]; + init = args[1]; + options = args[2]; + } + + const { url, ...parsedRequest } = parseRequest(request, init); + + // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + parsedRequest.headers["host"] = url.host; + + const service = options.service; + const region = options.region || "us-east-1"; + const credentials = options.credentials || defaultProvider(); + + const httpRequest = new HttpRequest({ + method: parsedRequest.method, + body: parsedRequest.body, + headers: parsedRequest.headers, + hostname: url.hostname, + path: url.pathname, + protocol: url.protocol, + port: url.port ? Number(url.port) : undefined, + username: url.username, + password: url.password, + fragment: url.hash, + query: Object.fromEntries(url.searchParams.entries()), + }); + + const signer = new SignatureV4({ + credentials, + service, + region, + sha256: Sha256, + }); + + const signedHttpRequest = await signer.sign(httpRequest); + + // Copy only the signed headers, because the body may be modified by the signer + parsedRequest.headers = signedHttpRequest.headers; + + return new Request(url, parsedRequest); +} diff --git a/test/node-undici/fetch-duplex.test.ts b/test/node-undici/fetch-duplex.test.ts index b7b9c32..338b45a 100644 --- a/test/node-undici/fetch-duplex.test.ts +++ b/test/node-undici/fetch-duplex.test.ts @@ -1,13 +1,62 @@ -import "cross-fetch/polyfill"; import { Request as UndiciRequest } from "undici"; -import { expect, it } from "vitest"; -import { createSignedFetcher } from "../../dist/index.js"; +import { describe, expect, it } from "vitest"; +import { createSignedFetcher, signRequest } from "../../dist/index.js"; -it.fails("should fail without duplex", async () => { - const request = new UndiciRequest("http://example.com", { method: "POST", body: new ReadableStream() }); +const url = "https://example.com/"; +const init = () => ({ method: "POST", body: new ReadableStream() }); - const fetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); - const response = await fetch(request as Request); +// Create a helper function to create a stream from a string +function createReadableStreamFromString(content: string): ReadableStream { + return new ReadableStream({ + start(controller) { + controller.enqueue(new TextEncoder().encode(content)); + controller.close(); + }, + }); +} - expect(response.status).toBe(200); +describe("createSignedFetcher", () => { + it.fails("should fail without duplex", async () => { + const request = new UndiciRequest(url, init()); + + const fetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); + const response = await fetch(request as Request); + + expect(response.status).toBe(200); + }); + + it.only("should succeed with duplex", async () => { + const request = new UndiciRequest("https://iam.amazonaws.com", { + method: "POST", + body: createReadableStreamFromString("Action=GetUser&Version=2010-05-08"), + duplex: "half", + }); + // const response2 = await fetch(request as Request); + // expect(response2.status).toBe(200); + + const signedFetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); + const response = await signedFetch(request as Request); + + expect(response.status).toBe(200); + }); +}, 100_000); + +describe("signRequest", () => { + it.fails("should fail without duplex", async () => { + const request = new UndiciRequest(url, init()); + + const signedRequest = await signRequest(request as Request, { service: "iam", region: "us-east-1" }); + const response = await fetch(signedRequest); + + expect(response.status).toBe(200); + }); + + it("should succeed with duplex", async () => { + const request = new UndiciRequest(url, { ...init(), duplex: "half" }); + + const signedRequest = await signRequest(request as Request, { service: "iam", region: "us-east-1" }); + const response = await fetch(signedRequest); + + expect(response.status).toBe(200); + }); }); From eeac7773fdd7b59d1dd5dec42e4d93e860db6edb Mon Sep 17 00:00:00 2001 From: zirkelc Date: Thu, 19 Dec 2024 17:53:09 +0100 Subject: [PATCH 04/21] fix: parse request --- .github/workflows/ci.yml | 2 +- src/__tests__/parse-request.test.ts | 101 ++++++++++---------- src/__tests__/sign-request.test.ts | 88 ++++++++++++------ src/create-signed-fetcher.ts | 67 +++++++------ src/parse-request.ts | 129 +++++++++++++++++--------- src/sign-request.ts | 24 +++-- test/aws-api-gateway/index.test.ts | 2 +- test/node-undici/fetch-duplex.test.ts | 62 ------------- 8 files changed, 248 insertions(+), 227 deletions(-) delete mode 100644 test/node-undici/fetch-duplex.test.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a7c2a9..25c9f88 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,7 +97,7 @@ jobs: run: pnpm build - name: Publish Preview - run: npx pkg-pr-new publish + run: npx pkg-pr-new publish --pnpm --packageManager=pnpm release: name: Release diff --git a/src/__tests__/parse-request.test.ts b/src/__tests__/parse-request.test.ts index 624e454..f2ad935 100644 --- a/src/__tests__/parse-request.test.ts +++ b/src/__tests__/parse-request.test.ts @@ -1,5 +1,4 @@ import "cross-fetch/polyfill"; -import { Request as UndiciRequest, type RequestInit as UndiciRequestInit } from "undici"; import { describe, expect, it } from "vitest"; import { parseRequest } from "../parse-request.js"; @@ -7,12 +6,12 @@ const url = "http://example.com"; describe("parseRequest", () => { describe("string input", () => { - it("should parse `string` input", () => { + it("should parse `string` input", async () => { // Arrange const input = url; // Act - const parsed = parseRequest(input); + const parsed = await parseRequest(input); // Assert expect(parsed.url).toEqual(new URL(url)); @@ -22,12 +21,12 @@ describe("parseRequest", () => { }); describe("URL input", () => { - it("should parse `URL` input", () => { + it("should parse `URL` input", async () => { // Arrange const input = new URL(url); // Act - const parsed = parseRequest(input); + const parsed = await parseRequest(input); // Assert expect(parsed.url).toEqual(new URL(url)); @@ -37,21 +36,21 @@ describe("parseRequest", () => { }); describe("Request input", () => { - it("should parse simple `Request` input", () => { + it("should parse simple `Request` input", async () => { // Arrange const simpleRequest = new Request(url); // Act - const parsed = parseRequest(simpleRequest); + const parsed = await parseRequest(simpleRequest); // Assert expect(parsed.url).toEqual(new URL(url)); expect(parsed.method).toEqual("GET"); expect(parsed.headers).toEqual({}); - expect(parsed.body).toBeNull(); + expect(parsed.body).toBeUndefined(); }); - it("should parse complex `Request` input", () => { + it("should parse complex `Request` input", async () => { // Arrange const complexRequest = new Request(url, { method: "POST", @@ -60,7 +59,7 @@ describe("parseRequest", () => { }); // Act - const parsedComplex = parseRequest(complexRequest); + const parsedComplex = await parseRequest(complexRequest); // Assert expect(parsedComplex.url).toEqual(new URL(url)); @@ -70,78 +69,78 @@ describe("parseRequest", () => { header1: "value1", header2: "value2", }); - expect(parsedComplex.body).toBeInstanceOf(ReadableStream); + expect(parsedComplex.body).toBeInstanceOf(ArrayBuffer); }); }); describe("body", () => { - it("should parse body of `Request`", () => { + it("should parse body of `Request`", async () => { // Arrange const input = new Request(url, { method: "POST", body: "foo" }); // Act - const parsed = parseRequest(input); + const parsed = await parseRequest(input); // Assert - expect(parsed.body).toBeInstanceOf(ReadableStream); + expect(parsed.body).toBeInstanceOf(ArrayBuffer); }); - it("should parse body of `RequestInit`", () => { + it("should parse body of `RequestInit`", async () => { // Arrange - const init = { body: "foo" }; + const init = { method: "POST", body: "foo" }; // Act - const parsed = parseRequest(url, init); + const parsed = await parseRequest(url, init); // Assert - expect(parsed.body).toEqual("foo"); + expect(parsed.body).toEqual(new TextEncoder().encode("foo").buffer); }); - it("should override body of `Request` from `RequestInit`", () => { + it("should override body of `Request` from `RequestInit`", async () => { // Arrange const input = new Request(url, { method: "POST", body: "foo" }); const init = { body: "bar" }; // Act - const parsed = parseRequest(input, init); + const parsed = await parseRequest(input, init); // Assert - expect(parsed.body).toEqual("bar"); + expect(parsed.body).toEqual(new TextEncoder().encode("bar").buffer); }); }); describe("Node.js options ", () => { - it("should keep duplex from `Request`", () => { + it("should keep duplex from `Request`", async () => { // Arrange - const input = new UndiciRequest(url, { method: "POST", body: "foo", duplex: "half" }); + const input = new Request(url, { method: "POST", body: "foo", duplex: "half" }); // Act - const parsed = parseRequest(input as Request); + const parsed = await parseRequest(input); // Assert - expect((parsed as any).duplex).toEqual("half"); + expect(parsed.duplex).toEqual("half"); }); - it("should keep duplex from `RequestInit`", () => { + it("should keep duplex from `RequestInit`", async () => { // Arrange - const input = new UndiciRequest(url, { method: "POST", body: "foo" }); - const init = { duplex: "half" } as UndiciRequestInit; + const input = new Request(url, { method: "POST", body: "foo" }); + const init = { duplex: "half" }; // Act - const parsed = parseRequest(input as Request, init as RequestInit); + const parsed = await parseRequest(input, init); // Assert - expect((parsed as any).duplex).toEqual("half"); + expect(parsed.duplex).toEqual("half"); }); }); describe("headers", () => { - it("should parse `Headers` to plain object", () => { + it("should parse `Headers` to plain object", async () => { // Arrange const headers = new Headers({ header1: "value1", header2: "value2" }); // Act - const parsed = parseRequest(url, { headers }); + const parsed = await parseRequest(url, { headers }); // Assert expect(parsed.headers).toEqual({ @@ -150,18 +149,18 @@ describe("parseRequest", () => { }); }); - it("should parse `HeadersInit` to plain object", () => { + it("should parse `HeadersInit` to plain object", async () => { // Arrange const init = { headers: { header1: "value1", header2: "value2" } as HeadersInit }; // Act - const parsed = parseRequest(url, init); + const parsed = await parseRequest(url, init); // Assert expect(parsed.headers).toEqual({ header1: "value1", header2: "value2" }); }); - it("should parse array of headers to plain object", () => { + it("should parse array of headers to plain object", async () => { // Arrange const init = { headers: [ @@ -171,13 +170,13 @@ describe("parseRequest", () => { }; // Act - const parsed = parseRequest(url, init); + const parsed = await parseRequest(url, init); // Assert expect(parsed.headers).toEqual({ header1: "value1", header2: "value2" }); }); - it("should override headers of `Request` from `RequestInit`", () => { + it("should override headers of `Request` from `RequestInit`", async () => { // Arrange const input = new Request(url, { headers: { header1: "value1", header2: "value2" }, @@ -187,7 +186,7 @@ describe("parseRequest", () => { }; // Act - const parsed = parseRequest(input, init); + const parsed = await parseRequest(input, init); // Assert expect(parsed.headers).toEqual({ @@ -198,57 +197,57 @@ describe("parseRequest", () => { }); describe("method", () => { - it("should set default method to GET", () => { + it("should set default method to GET", async () => { // Arrange const input = url; // Act - const parsed = parseRequest(input); + const parsed = await parseRequest(input); // Assert expect(parsed.method).toEqual("GET"); }); - it("should override method of `Request` from `RequestInit`", () => { + it("should override method of `Request` from `RequestInit`", async () => { // Arrange const input = new Request(url, { method: "GET" }); const init = { method: "POST" }; // Act - const parsed = parseRequest(input, init); + const parsed = await parseRequest(input, init); // Assert expect(parsed.method).toEqual("POST"); }); - it("should uppercase method from `Request`", () => { + it("should uppercase method from `Request`", async () => { // Arrange const input = new Request(url, { method: "post" }); // Act - const parsed = parseRequest(input); + const parsed = await parseRequest(input); // Assert expect(parsed.method).toEqual("POST"); }); - it("should uppercase method from `RequestInit`", () => { + it("should uppercase method from `RequestInit`", async () => { // Arrange const init = { method: "get" }; // Act - const parsed = parseRequest(url, init); + const parsed = await parseRequest(url, init); // Assert expect(parsed.method).toEqual("GET"); }); }); - it("should throw error if input is invalid", () => { + it("should throw error if input is invalid", async () => { // Assert - expect(() => parseRequest("")).toThrow(); - expect(() => parseRequest(null as any)).toThrow(); - expect(() => parseRequest(undefined as any)).toThrow(); - expect(() => parseRequest({} as any)).toThrow(); + await expect(() => parseRequest("")).rejects.toThrow(); + await expect(() => parseRequest(null as any)).rejects.toThrow(); + await expect(() => parseRequest(undefined as any)).rejects.toThrow(); + await expect(() => parseRequest({} as any)).rejects.toThrow(); }); }); diff --git a/src/__tests__/sign-request.test.ts b/src/__tests__/sign-request.test.ts index 5ebd338..b3ccdff 100644 --- a/src/__tests__/sign-request.test.ts +++ b/src/__tests__/sign-request.test.ts @@ -155,7 +155,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual(body); + + const text = await signedRequest.text(); + expect(text).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -171,7 +173,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual(body); + + const text = await signedRequest.text(); + expect(text).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -185,12 +189,14 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual(body); + + const text = await signedRequest.text(); + expect(text).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=56782e0c3a9638fb8deed0a8c0cee829174b2b250ea1d41780e8b806dd172689", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", ); }); }); @@ -203,7 +209,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual(body.toString()); + + const text = await signedRequest.text(); + expect(text).toEqual(body.toString()); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersUnsignedPayload); @@ -217,7 +225,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual(body.toString()); + + const text = await signedRequest.text(); + expect(text).toEqual(body.toString()); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersUnsignedPayload); @@ -231,12 +241,14 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual(body.toString()); + + const text = await signedRequest.text(); + expect(text).toEqual(body.toString()); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=075da87c82aa0aefd095333a7a662e80512a26775a0cf193856ad9e63ddc64cb", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=a2b8d86879c46ff096f7b7d021a410fe09697269f0630ac31bdd7640e62d4bdb", ); }); }); @@ -248,7 +260,7 @@ describe("signRequest", () => { /** * Undici generates a random boundary for each request. */ - const formData = { + const serializedFormData = { headers: { "Content-Type": "multipart/form-data; boundary=----formdata-undici-0.6204674738279623", }, @@ -261,11 +273,13 @@ describe("signRequest", () => { }; it("should fetch with string", async () => { - const signedRequest = await signRequest(url, { method: "POST", ...formData }, options); + const signedRequest = await signRequest(url, { method: "POST", ...serializedFormData }, options); expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.formData()).toEqual(body); + + const formData = await signedRequest.formData(); + expect(formData).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -275,11 +289,13 @@ describe("signRequest", () => { }); it("should fetch with URL", async () => { - const signedRequest = await signRequest(new URL(url), { method: "POST", ...formData }, options); + const signedRequest = await signRequest(new URL(url), { method: "POST", ...serializedFormData }, options); expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.formData()).toEqual(body); + + const formData = await signedRequest.formData(); + expect(formData).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -289,16 +305,18 @@ describe("signRequest", () => { }); it("should fetch with Request", async () => { - const signedRequest = await signRequest(new Request(url, { method: "POST", ...formData }), options); + const signedRequest = await signRequest(new Request(url, { method: "POST", ...serializedFormData }), options); expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.formData()).toEqual(body); + + const formData = await signedRequest.formData(); + expect(formData).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=ae0efdc0fc4135f3ff9658b87a5b6c014c93b6a453ce6c1647d67753d193243e", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=49b9a46b57b6877323d917ebc6fa3ff0c521d9a3a512f3419ae35ded4f8f58a2", ); }); }); @@ -311,7 +329,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.blob()).toEqual(body); + + const blob = await signedRequest.blob(); + expect(blob).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersUnsignedPayload); @@ -325,7 +345,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.blob()).toEqual(body); + + const blob = await signedRequest.blob(); + expect(blob).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersUnsignedPayload); @@ -339,13 +361,15 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(await signedRequest.text()).toEqual("foo"); + + const blob = await signedRequest.blob(); + expect(blob).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=8f417353b5397f12b5838c417d36070ddb38a6e37b7ed06f025ad53c908b7420", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=5cee677704af2119be87adfacf459bf03081418a4badb22c91bd37bba8d2bf90", ); }); }); @@ -358,7 +382,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(new Uint8Array(await signedRequest.arrayBuffer())).toEqual(body); + + const arrayBuffer = await signedRequest.arrayBuffer(); + expect(new Uint8Array(arrayBuffer)).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -372,7 +398,9 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(new Uint8Array(await signedRequest.arrayBuffer())).toEqual(body); + + const arrayBuffer = await signedRequest.arrayBuffer(); + expect(new Uint8Array(arrayBuffer)).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -386,13 +414,15 @@ describe("signRequest", () => { expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); - expect(new Uint8Array(await signedRequest.arrayBuffer())).toEqual(body); + + const arrayBuffer = await signedRequest.arrayBuffer(); + expect(new Uint8Array(arrayBuffer)).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=89f092f52faedb8a6be1890b2a511b88e7998389d62bd7d72915e2f4ee271a64", ); }); }); diff --git a/src/create-signed-fetcher.ts b/src/create-signed-fetcher.ts index 7ebdeaa..9df832e 100644 --- a/src/create-signed-fetcher.ts +++ b/src/create-signed-fetcher.ts @@ -5,6 +5,7 @@ import { HttpRequest } from "@smithy/protocol-http"; import { SignatureV4 } from "@smithy/signature-v4"; import { getFetchFn } from "./get-fetch.js"; import { parseRequest } from "./parse-request.js"; +import { signRequest } from "./sign-request.js"; export type SignedFetcherOptions = { service: string; @@ -27,42 +28,48 @@ export const createSignedFetcher: CreateSignedFetcher = (opts: SignedFetcherOpti const fetchFn = getFetchFn(opts.fetch); return async (input, init?) => { - const service = opts.service; - const region = opts.region || "us-east-1"; - const credentials = opts.credentials || defaultProvider(); + // const service = opts.service; + // const region = opts.region || "us-east-1"; + // const credentials = opts.credentials || defaultProvider(); - const parsedRequest = parseRequest(input, init); - const parsedUrl = parsedRequest.url; + // const parsedRequest = parseRequest(input, init); + // const parsedUrl = parsedRequest.url; - // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - parsedRequest.headers["host"] = parsedUrl.host; + // // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + // parsedRequest.headers["host"] = parsedUrl.host; - const httpRequest = new HttpRequest({ - method: parsedRequest.method, - body: parsedRequest.body, - headers: parsedRequest.headers, - hostname: parsedUrl.hostname, - path: parsedUrl.pathname, - protocol: parsedUrl.protocol, - port: parsedUrl.port ? Number(parsedUrl.port) : undefined, - username: parsedUrl.username, - password: parsedUrl.password, - fragment: parsedUrl.hash, - query: Object.fromEntries(parsedUrl.searchParams.entries()), - }); + // const httpRequest = new HttpRequest({ + // method: parsedRequest.method, + // body: parsedRequest.body, + // headers: parsedRequest.headers, + // hostname: parsedUrl.hostname, + // path: parsedUrl.pathname, + // protocol: parsedUrl.protocol, + // port: parsedUrl.port ? Number(parsedUrl.port) : undefined, + // username: parsedUrl.username, + // password: parsedUrl.password, + // fragment: parsedUrl.hash, + // query: Object.fromEntries(parsedUrl.searchParams.entries()), + // }); - const signer = new SignatureV4({ - credentials, - service, - region, - sha256: Sha256, - }); + // const signer = new SignatureV4({ + // credentials, + // service, + // region, + // sha256: Sha256, + // }); - const signedHttpRequest = await signer.sign(httpRequest); + // const signedHttpRequest = await signer.sign(httpRequest); - // Copy only the signed headers, because the body may be modified by the signer - parsedRequest.headers = signedHttpRequest.headers; + // // Copy only the signed headers, because the body may be modified by the signer + // parsedRequest.headers = signedHttpRequest.headers; - return fetchFn(parsedUrl, parsedRequest); + // return fetchFn(parsedUrl, parsedRequest); + const { service, region, credentials } = opts; + const signedRequest = init + ? await signRequest(input, init, { service, region, credentials }) + : await signRequest(input, { service, region, credentials }); + + return fetchFn(signedRequest); }; }; diff --git a/src/parse-request.ts b/src/parse-request.ts index aa7d1a1..438f468 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -1,3 +1,13 @@ +declare global { + interface RequestInit { + duplex?: "half" | string; + } + + interface Request { + duplex?: "half" | string; + } +} + interface ParsedRequest extends RequestInit { url: URL; headers: Record; @@ -23,30 +33,19 @@ const isHeaders = (input: unknown): input is Headers => { return false; }; -/** - * Copy the properties of a `Request` object to a plain object. - * This is necessary because `Request` is not a plain object and its properties are not enumerable. - */ -const copyRequest = (input: Request): Record => { - return Object.getOwnPropertyNames(Request.prototype).reduce>((acc, prop) => { - acc[prop] = input[prop as keyof Request]; - return acc; - }, {}); -}; - /** * Copy the properties of `HeadersInit` to a plain object. * `HeadersInit` is a union of `[string, string][]`, `Record`, and `Headers` */ -const copyHeaders = (headers?: HeadersInit): Record => { +export const copyHeaders = (headers?: HeadersInit): Record => { const headersMap = new Map(); if (Array.isArray(headers)) { - headers.forEach((header) => headersMap.set(header[0], header[1])); + headers.forEach((header) => headersMap.set(header[0].toLowerCase(), header[1])); } else if (isHeaders(headers)) { - headers.forEach((value, key) => headersMap.set(key, value)); + headers.forEach((value, key) => headersMap.set(key.toLowerCase(), value)); } else if (isObject(headers)) { - Object.entries(headers).forEach(([key, value]) => headersMap.set(key, value)); + Object.entries(headers).forEach(([key, value]) => headersMap.set(key.toLowerCase(), value)); } return Object.fromEntries(headersMap.entries()); @@ -57,41 +56,81 @@ const copyHeaders = (headers?: HeadersInit): Record => { * Input can be a `string`, `URL`, or `Request` object. * Init is an optional `RequestInit` object. If provided, it will override the values in the `Request` object. */ -export const parseRequest = (input: string | Request | URL, init?: RequestInit): ParsedRequest => { - let url = ""; - let request: RequestInit = {}; - - /** - * Input can be a `string`, `URL`, or `Request` object - * `RequestInfo` is a union of `Request` and `string` - */ - if (typeof input === "string") { - url = input; - request = { - ...init, - }; - } else if (input instanceof URL) { - url = input.href; - request = { - ...init, - }; - } else if (isRequest(input)) { - url = input.url; - request = { - ...copyRequest(input), - ...init, - }; +export const parseRequest = async (input: string | Request | URL, init?: RequestInit): Promise => { + let finalRequest: Request; + + if (typeof input === "string" || input instanceof URL) { + // If input is a string or a URL, first create a request from it + // If input is a Request, we directly construct from it. + const url = input instanceof URL ? input.href : input; + finalRequest = new Request(url, init); + } else { + // input is a Request, create a new Request that applies init overrides + finalRequest = new Request(input, init); } - const headers = copyHeaders(request.headers); // must be a plain object - const method = request.method?.toUpperCase() ?? "GET"; // method must be uppercase - - if (!url) throw new Error("Could not parse URL from input"); + // Extract properties from finalRequest + const method = finalRequest.method.toUpperCase(); + const url = new URL(finalRequest.url); + const headers = copyHeaders(finalRequest.headers); + + // Reading the body: If the request has a body, clone and read it. + // This example uses arrayBuffer, but you could use .text(), .json(), etc. + let body: BodyInit | null | undefined = undefined; + if (finalRequest.body) { + // Clone and read the body + const clonedRequest = finalRequest.clone(); + body = await clonedRequest.arrayBuffer(); + } return { - ...request, method, headers, - url: new URL(url), + url, + body, + + credentials: finalRequest.credentials, + cache: finalRequest.cache, + mode: finalRequest.mode, + redirect: finalRequest.redirect, + referrer: finalRequest.referrer, + referrerPolicy: finalRequest.referrerPolicy, + integrity: finalRequest.integrity, + signal: finalRequest.signal, + duplex: finalRequest.duplex, }; + + // let url = ""; + // let method = "GET"; + // let headers: HeadersInit | undefined = undefined; + // let body: BodyInit | null | undefined = undefined; + + // /** + // * Input can be a `string`, `URL`, or `Request` object + // * `RequestInfo` is a union of `Request` and `string` + // */ + // if (typeof input === "string") { + // url = input; + // method = init?.method ?? "GET"; + // headers = init?.headers; + // body = init?.body; + // } else if (input instanceof URL) { + // url = input.href; + // method = init?.method ?? "GET"; + // headers = init?.headers; + // body = init?.body; + // } else if (isRequest(input)) { + // url = input.url; + // method = init?.method ?? input.method; + // headers = init?.headers ?? input.headers; + // body = init?.body ?? input.body ? await input.clone().arrayBuffer() : undefined; + // } + + // return { + // ...init, + // method: method.toUpperCase(), // method must be uppercase + // headers: copyHeaders(headers), // must be a plain object + // url: new URL(url), + // body, + // }; }; diff --git a/src/sign-request.ts b/src/sign-request.ts index d736f52..e49dbc7 100644 --- a/src/sign-request.ts +++ b/src/sign-request.ts @@ -35,19 +35,22 @@ export async function signRequest( options = args[2]; } - const { url, ...parsedRequest } = parseRequest(request, init); + const { url, method, body, headers, ...requestInit } = await parseRequest(request, init); + + // const parsedRequest = await parseRequest(request, init); + // const url = new URL(parsedRequest.url); // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - parsedRequest.headers["host"] = url.host; + headers["host"] = url.host; const service = options.service; const region = options.region || "us-east-1"; const credentials = options.credentials || defaultProvider(); const httpRequest = new HttpRequest({ - method: parsedRequest.method, - body: parsedRequest.body, - headers: parsedRequest.headers, + method, + body, + headers, hostname: url.hostname, path: url.pathname, protocol: url.protocol, @@ -65,10 +68,15 @@ export async function signRequest( sha256: Sha256, }); - const signedHttpRequest = await signer.sign(httpRequest); + const { headers: signedHeaders } = await signer.sign(httpRequest); // Copy only the signed headers, because the body may be modified by the signer - parsedRequest.headers = signedHttpRequest.headers; + // parsedRequest.headers = signedHttpRequest.headers; + // for (const [key, value] of Object.entries(signedHttpRequest.headers)) { + // parsedRequest.headers.set(key, value); + // } + + const signedRequestInit = { ...requestInit, method, body, headers: signedHeaders }; - return new Request(url, parsedRequest); + return new Request(url, signedRequestInit); } diff --git a/test/aws-api-gateway/index.test.ts b/test/aws-api-gateway/index.test.ts index d76fb03..0a62514 100644 --- a/test/aws-api-gateway/index.test.ts +++ b/test/aws-api-gateway/index.test.ts @@ -13,7 +13,7 @@ import { } from "@aws-sdk/client-api-gateway"; import "cross-fetch/polyfill"; import { beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { createSignedFetcher } from "../../src/index.js"; +import { createSignedFetcher, signRequest } from "../../src/index.js"; const SERVICE = "execute-api"; const REGION = "us-east-1"; diff --git a/test/node-undici/fetch-duplex.test.ts b/test/node-undici/fetch-duplex.test.ts deleted file mode 100644 index 338b45a..0000000 --- a/test/node-undici/fetch-duplex.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Request as UndiciRequest } from "undici"; -import { describe, expect, it } from "vitest"; -import { createSignedFetcher, signRequest } from "../../dist/index.js"; - -const url = "https://example.com/"; -const init = () => ({ method: "POST", body: new ReadableStream() }); - -// Create a helper function to create a stream from a string -function createReadableStreamFromString(content: string): ReadableStream { - return new ReadableStream({ - start(controller) { - controller.enqueue(new TextEncoder().encode(content)); - controller.close(); - }, - }); -} - -describe("createSignedFetcher", () => { - it.fails("should fail without duplex", async () => { - const request = new UndiciRequest(url, init()); - - const fetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); - const response = await fetch(request as Request); - - expect(response.status).toBe(200); - }); - - it.only("should succeed with duplex", async () => { - const request = new UndiciRequest("https://iam.amazonaws.com", { - method: "POST", - body: createReadableStreamFromString("Action=GetUser&Version=2010-05-08"), - duplex: "half", - }); - // const response2 = await fetch(request as Request); - // expect(response2.status).toBe(200); - - const signedFetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); - const response = await signedFetch(request as Request); - - expect(response.status).toBe(200); - }); -}, 100_000); - -describe("signRequest", () => { - it.fails("should fail without duplex", async () => { - const request = new UndiciRequest(url, init()); - - const signedRequest = await signRequest(request as Request, { service: "iam", region: "us-east-1" }); - const response = await fetch(signedRequest); - - expect(response.status).toBe(200); - }); - - it("should succeed with duplex", async () => { - const request = new UndiciRequest(url, { ...init(), duplex: "half" }); - - const signedRequest = await signRequest(request as Request, { service: "iam", region: "us-east-1" }); - const response = await fetch(signedRequest); - - expect(response.status).toBe(200); - }); -}); From 360f33cc5e5e9d80e229ecdb995f64d9c055360d Mon Sep 17 00:00:00 2001 From: zirkelc Date: Thu, 19 Dec 2024 18:00:04 +0100 Subject: [PATCH 05/21] fix: remove old code --- src/parse-request.ts | 83 +++++++++++--------------------------------- src/sign-request.ts | 29 +++++----------- 2 files changed, 29 insertions(+), 83 deletions(-) diff --git a/src/parse-request.ts b/src/parse-request.ts index 438f468..2e5b990 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -57,80 +57,37 @@ export const copyHeaders = (headers?: HeadersInit): Record => { * Init is an optional `RequestInit` object. If provided, it will override the values in the `Request` object. */ export const parseRequest = async (input: string | Request | URL, init?: RequestInit): Promise => { - let finalRequest: Request; + let request: Request; + /** + * Input can be a `string`, `URL`, or `Request` object + * `RequestInfo` is a union of `Request` and `string` + */ if (typeof input === "string" || input instanceof URL) { - // If input is a string or a URL, first create a request from it - // If input is a Request, we directly construct from it. const url = input instanceof URL ? input.href : input; - finalRequest = new Request(url, init); + request = new Request(url, init); } else { - // input is a Request, create a new Request that applies init overrides - finalRequest = new Request(input, init); + request = new Request(input, init); } - // Extract properties from finalRequest - const method = finalRequest.method.toUpperCase(); - const url = new URL(finalRequest.url); - const headers = copyHeaders(finalRequest.headers); - - // Reading the body: If the request has a body, clone and read it. - // This example uses arrayBuffer, but you could use .text(), .json(), etc. - let body: BodyInit | null | undefined = undefined; - if (finalRequest.body) { - // Clone and read the body - const clonedRequest = finalRequest.clone(); - body = await clonedRequest.arrayBuffer(); - } + const method = request.method.toUpperCase(); + const url = new URL(request.url); + const headers = copyHeaders(request.headers); + const body = request.body ? await request.clone().arrayBuffer() : undefined; return { method, headers, url, body, - - credentials: finalRequest.credentials, - cache: finalRequest.cache, - mode: finalRequest.mode, - redirect: finalRequest.redirect, - referrer: finalRequest.referrer, - referrerPolicy: finalRequest.referrerPolicy, - integrity: finalRequest.integrity, - signal: finalRequest.signal, - duplex: finalRequest.duplex, + credentials: request.credentials, + cache: request.cache, + mode: request.mode, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + integrity: request.integrity, + signal: request.signal, + duplex: request.duplex, }; - - // let url = ""; - // let method = "GET"; - // let headers: HeadersInit | undefined = undefined; - // let body: BodyInit | null | undefined = undefined; - - // /** - // * Input can be a `string`, `URL`, or `Request` object - // * `RequestInfo` is a union of `Request` and `string` - // */ - // if (typeof input === "string") { - // url = input; - // method = init?.method ?? "GET"; - // headers = init?.headers; - // body = init?.body; - // } else if (input instanceof URL) { - // url = input.href; - // method = init?.method ?? "GET"; - // headers = init?.headers; - // body = init?.body; - // } else if (isRequest(input)) { - // url = input.url; - // method = init?.method ?? input.method; - // headers = init?.headers ?? input.headers; - // body = init?.body ?? input.body ? await input.clone().arrayBuffer() : undefined; - // } - - // return { - // ...init, - // method: method.toUpperCase(), // method must be uppercase - // headers: copyHeaders(headers), // must be a plain object - // url: new URL(url), - // body, - // }; }; diff --git a/src/sign-request.ts b/src/sign-request.ts index e49dbc7..4308309 100644 --- a/src/sign-request.ts +++ b/src/sign-request.ts @@ -22,35 +22,32 @@ export async function signRequest( | [input: string | Request | URL, options: SignRequestOptions] | [input: string | Request | URL, init: RequestInit, options: SignRequestOptions] ): Promise { - let request: string | Request | URL; + let input: string | Request | URL; let init: RequestInit | undefined; let options: SignRequestOptions; if (args.length === 2) { - request = args[0]; + input = args[0]; options = args[1]; } else { - request = args[0]; + input = args[0]; init = args[1]; options = args[2]; } - const { url, method, body, headers, ...requestInit } = await parseRequest(request, init); - - // const parsedRequest = await parseRequest(request, init); - // const url = new URL(parsedRequest.url); + const { url, ...request } = await parseRequest(input, init); // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - headers["host"] = url.host; + request.headers["host"] = url.host; const service = options.service; const region = options.region || "us-east-1"; const credentials = options.credentials || defaultProvider(); const httpRequest = new HttpRequest({ - method, - body, - headers, + method: request.method, + body: request.body, + headers: request.headers, hostname: url.hostname, path: url.pathname, protocol: url.protocol, @@ -70,13 +67,5 @@ export async function signRequest( const { headers: signedHeaders } = await signer.sign(httpRequest); - // Copy only the signed headers, because the body may be modified by the signer - // parsedRequest.headers = signedHttpRequest.headers; - // for (const [key, value] of Object.entries(signedHttpRequest.headers)) { - // parsedRequest.headers.set(key, value); - // } - - const signedRequestInit = { ...requestInit, method, body, headers: signedHeaders }; - - return new Request(url, signedRequestInit); + return new Request(url, { ...request, headers: signedHeaders }); } From 8a94065a2f840d2b16e818107d80987cf1919879 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Thu, 19 Dec 2024 18:02:03 +0100 Subject: [PATCH 06/21] fix: type --- src/parse-request.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parse-request.ts b/src/parse-request.ts index 2e5b990..c4500f0 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -1,10 +1,10 @@ declare global { interface RequestInit { - duplex?: "half" | string; + duplex?: "half"; } interface Request { - duplex?: "half" | string; + duplex?: "half"; } } From 16433c8fce9727e1d7c840e07970dac314c56ea9 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Thu, 19 Dec 2024 18:06:48 +0100 Subject: [PATCH 07/21] test: fix --- src/__tests__/sign-request.test.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/__tests__/sign-request.test.ts b/src/__tests__/sign-request.test.ts index b3ccdff..b42ff23 100644 --- a/src/__tests__/sign-request.test.ts +++ b/src/__tests__/sign-request.test.ts @@ -164,7 +164,7 @@ describe("signRequest", () => { const authorization = signedHeaders.authorization; expect(authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=cf22a0befff359388f136b158f0b1b43db7b18d2ca65ce4112bc88a16815c4b6", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", ); }); @@ -180,7 +180,7 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=cf22a0befff359388f136b158f0b1b43db7b18d2ca65ce4112bc88a16815c4b6", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", ); }); @@ -214,9 +214,9 @@ describe("signRequest", () => { expect(text).toEqual(body.toString()); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=a2b8d86879c46ff096f7b7d021a410fe09697269f0630ac31bdd7640e62d4bdb", ); }); @@ -230,9 +230,9 @@ describe("signRequest", () => { expect(text).toEqual(body.toString()); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=a2b8d86879c46ff096f7b7d021a410fe09697269f0630ac31bdd7640e62d4bdb", ); }); @@ -334,9 +334,9 @@ describe("signRequest", () => { expect(blob).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=5cee677704af2119be87adfacf459bf03081418a4badb22c91bd37bba8d2bf90", ); }); @@ -350,9 +350,9 @@ describe("signRequest", () => { expect(blob).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); - expect(signedHeaders).toEqual(headersUnsignedPayload); + expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2d17bf1aa1624819549626389790503937599b27a998286e0e190b897b1467dd", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=5cee677704af2119be87adfacf459bf03081418a4badb22c91bd37bba8d2bf90", ); }); From 18cef3d1fe9ef301cc2eef756169e1d72dc31a4b Mon Sep 17 00:00:00 2001 From: zirkelc Date: Fri, 20 Dec 2024 07:42:20 +0100 Subject: [PATCH 08/21] fix: use request for cloning --- src/__tests__/parse-request.test.ts | 25 ----------- src/__tests__/sign-request.test.ts | 66 +++++++++++++++++++++++++---- src/parse-request.ts | 19 +++------ src/sign-request.ts | 13 +++--- 4 files changed, 71 insertions(+), 52 deletions(-) diff --git a/src/__tests__/parse-request.test.ts b/src/__tests__/parse-request.test.ts index f2ad935..d6dfad4 100644 --- a/src/__tests__/parse-request.test.ts +++ b/src/__tests__/parse-request.test.ts @@ -109,31 +109,6 @@ describe("parseRequest", () => { }); }); - describe("Node.js options ", () => { - it("should keep duplex from `Request`", async () => { - // Arrange - const input = new Request(url, { method: "POST", body: "foo", duplex: "half" }); - - // Act - const parsed = await parseRequest(input); - - // Assert - expect(parsed.duplex).toEqual("half"); - }); - - it("should keep duplex from `RequestInit`", async () => { - // Arrange - const input = new Request(url, { method: "POST", body: "foo" }); - const init = { duplex: "half" }; - - // Act - const parsed = await parseRequest(input, init); - - // Assert - expect(parsed.duplex).toEqual("half"); - }); - }); - describe("headers", () => { it("should parse `Headers` to plain object", async () => { // Arrange diff --git a/src/__tests__/sign-request.test.ts b/src/__tests__/sign-request.test.ts index b42ff23..a2bcc46 100644 --- a/src/__tests__/sign-request.test.ts +++ b/src/__tests__/sign-request.test.ts @@ -32,15 +32,6 @@ const headersSigned = expect.objectContaining({ ), }); -const headersUnsignedPayload = expect.objectContaining({ - host: "foo.us-bar-1.amazonaws.com", - "x-amz-date": "20000101T000000Z", - "x-amz-content-sha256": "UNSIGNED-PAYLOAD", - authorization: expect.stringMatching( - /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9-]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, - ), -}); - const getSignedHeaders = ( signedRequest: Request, ): Record<"authorization" | "host" | "x-amz-content-sha256" | "x-amz-date" | "x-amz-security-token", string> => { @@ -426,5 +417,62 @@ describe("signRequest", () => { ); }); }); + + describe("Duplex: Half", () => { + const body = "It was the best of times, it was the worst of times"; + + it("should fetch with string", async () => { + const signedRequest = await signRequest(url, { method: "POST", body, duplex: "half" }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(signedRequest.duplex).toEqual("half"); + + const text = await signedRequest.text(); + expect(text).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + + const authorization = signedHeaders.authorization; + expect(authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + ); + }); + + it("should fetch with URL", async () => { + const signedRequest = await signRequest(new URL(url), { method: "POST", body, duplex: "half" }, options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(signedRequest.duplex).toEqual("half"); + + const text = await signedRequest.text(); + expect(text).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + ); + }); + + it("should fetch with Request", async () => { + const signedRequest = await signRequest(new Request(url, { method: "POST", body, duplex: "half" }), options); + + expect(signedRequest.url).toEqual(url); + expect(signedRequest.method).toEqual("POST"); + expect(signedRequest.duplex).toEqual("half"); + + const text = await signedRequest.text(); + expect(text).toEqual(body); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + ); + }); + }); }); }); diff --git a/src/parse-request.ts b/src/parse-request.ts index c4500f0..0ef1c22 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -8,9 +8,11 @@ declare global { } } -interface ParsedRequest extends RequestInit { +interface ParsedRequest { url: URL; + method: string; headers: Record; + body?: ArrayBuffer; } const isObject = (input: unknown): input is Record => { @@ -67,27 +69,20 @@ export const parseRequest = async (input: string | Request | URL, init?: Request const url = input instanceof URL ? input.href : input; request = new Request(url, init); } else { - request = new Request(input, init); + // Creating a request from a request object will consume the body + // Clone the request to keep the original request intact + request = new Request(input.clone(), init); } const method = request.method.toUpperCase(); const url = new URL(request.url); const headers = copyHeaders(request.headers); - const body = request.body ? await request.clone().arrayBuffer() : undefined; + const body = request.body ? await request.arrayBuffer() : undefined; return { method, headers, url, body, - credentials: request.credentials, - cache: request.cache, - mode: request.mode, - redirect: request.redirect, - referrer: request.referrer, - referrerPolicy: request.referrerPolicy, - integrity: request.integrity, - signal: request.signal, - duplex: request.duplex, }; }; diff --git a/src/sign-request.ts b/src/sign-request.ts index 4308309..aaa7a60 100644 --- a/src/sign-request.ts +++ b/src/sign-request.ts @@ -35,19 +35,19 @@ export async function signRequest( options = args[2]; } - const { url, ...request } = await parseRequest(input, init); + const { url, method, headers, body } = await parseRequest(input, init); // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - request.headers["host"] = url.host; + headers["host"] = url.host; const service = options.service; const region = options.region || "us-east-1"; const credentials = options.credentials || defaultProvider(); const httpRequest = new HttpRequest({ - method: request.method, - body: request.body, - headers: request.headers, + method, + body, + headers, hostname: url.hostname, path: url.pathname, protocol: url.protocol, @@ -67,5 +67,6 @@ export async function signRequest( const { headers: signedHeaders } = await signer.sign(httpRequest); - return new Request(url, { ...request, headers: signedHeaders }); + // Create a new request with the signed headers + return new Request(input, { ...init, headers: signedHeaders }); } From d2bc8965812d4ea82d1fa362cf207b169a616e95 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Fri, 20 Dec 2024 07:44:32 +0100 Subject: [PATCH 09/21] build: fix --- src/parse-request.ts | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/parse-request.ts b/src/parse-request.ts index 0ef1c22..abb6003 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -1,13 +1,3 @@ -declare global { - interface RequestInit { - duplex?: "half"; - } - - interface Request { - duplex?: "half"; - } -} - interface ParsedRequest { url: URL; method: string; @@ -19,14 +9,6 @@ const isObject = (input: unknown): input is Record => { return typeof input === "object" && input !== null; }; -const isRequest = (input: unknown): input is Request => { - if (input instanceof Request) return true; - - if (isObject(input) && "body" in input && "method" in input && "url" in input) return true; - - return false; -}; - const isHeaders = (input: unknown): input is Headers => { if (input instanceof Headers) return true; @@ -37,6 +19,7 @@ const isHeaders = (input: unknown): input is Headers => { /** * Copy the properties of `HeadersInit` to a plain object. + * Lowercase the keys of the headers. * `HeadersInit` is a union of `[string, string][]`, `Record`, and `Headers` */ export const copyHeaders = (headers?: HeadersInit): Record => { From 6bbd52e29ff53da5c41e02b471c1f70b421112ef Mon Sep 17 00:00:00 2001 From: zirkelc Date: Fri, 20 Dec 2024 08:33:40 +0100 Subject: [PATCH 10/21] test: fix --- src/__tests__/__fixtures__.ts | 68 +++ src/__tests__/create-signed-fetcher.test.ts | 479 +++++++++----------- src/__tests__/parse-request.test.ts | 3 +- src/__tests__/sign-request.test.ts | 112 ++--- src/create-signed-fetcher.ts | 43 +- 5 files changed, 320 insertions(+), 385 deletions(-) create mode 100644 src/__tests__/__fixtures__.ts diff --git a/src/__tests__/__fixtures__.ts b/src/__tests__/__fixtures__.ts new file mode 100644 index 0000000..7ad3ff0 --- /dev/null +++ b/src/__tests__/__fixtures__.ts @@ -0,0 +1,68 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import { expect } from "vitest"; + +export const date = "2000-01-01T00:00:00.000Z"; + +export const url = "https://foo.us-bar-1.amazonaws.com/"; + +export const service = "foo"; +export const region = "us-bar-1"; + +export const credentials: AwsCredentialIdentity = { + accessKeyId: "foo", + secretAccessKey: "bar", +}; + +export const headersSigned = expect.objectContaining({ + host: `${service}.${region}.amazonaws.com`, + "x-amz-date": "20000101T000000Z", + "x-amz-content-sha256": expect.stringMatching(/^[a-f0-9]{64}$/), + authorization: expect.stringMatching( + /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9-]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, + ), +}); + +export const getSignedHeaders = ( + signedRequest: Request, +): Record<"authorization" | "host" | "x-amz-content-sha256" | "x-amz-date" | "x-amz-security-token", string> => { + const headers: Record = {}; + signedRequest.headers.forEach((value, key) => { + headers[key] = value; + }); + return headers; +}; + +const formData = new FormData(); +formData.append("foo", "bar"); + +export const bodyFixture = { + string: { + body: "foo", + }, + urlSearchParams: { + body: new URLSearchParams({ foo: "bar" }), + }, + blob: { + body: new Blob(["foo"]), + }, + arrayBuffer: { + body: new Uint8Array([0xde, 0xad, 0xbe, 0xef]).buffer, + }, + formData: { + body: formData, + /** + * Undici generates a random boundary for each request. + */ + init: { + headers: { + "Content-Type": "multipart/form-data; boundary=----formdata-undici-0.6204674738279623", + }, + body: + "------formdata-undici-0.6204674738279623\r\n" + + 'Content-Disposition: form-data; name="foo"\r\n' + + "\r\n" + + "bar\r\n" + + "------formdata-undici-0.6204674738279623--\r\n", + }, + }, +}; diff --git a/src/__tests__/create-signed-fetcher.test.ts b/src/__tests__/create-signed-fetcher.test.ts index 3bde33b..15dee75 100644 --- a/src/__tests__/create-signed-fetcher.test.ts +++ b/src/__tests__/create-signed-fetcher.test.ts @@ -1,70 +1,51 @@ -import type { AwsCredentialIdentity } from "@aws-sdk/types"; import { beforeEach, describe, expect, it, vi } from "vitest"; -import { createSignedFetcher } from "../create-signed-fetcher.js"; +import { type SignedFetcherOptions, createSignedFetcher } from "../create-signed-fetcher.js"; +import { + url, + bodyFixture, + credentials, + date, + getSignedHeaders, + headersSigned, + region, + service, +} from "./__fixtures__.js"; const fetchMock = vi.fn(fetch); let signedFetch: typeof fetch; vi.useFakeTimers(); -vi.setSystemTime("2024-01-01T00:00:00.000Z"); +vi.setSystemTime(date); -const credentials: AwsCredentialIdentity = { - accessKeyId: "dummyAccessKeyId", - secretAccessKey: "dummySecretAccessKey", - sessionToken: "dummySessionToken", +const options: SignedFetcherOptions = { + service, + region, + credentials, + fetch: fetchMock, }; beforeEach(() => { vi.resetAllMocks(); - signedFetch = createSignedFetcher({ - service: "dummyService", - region: "dummyRegion", - credentials, - fetch: fetchMock, - }); -}); - -const url = "http://example.com/foo?bar=baz#qux"; - -const headersSigned = expect.objectContaining({ - host: "example.com", - "x-amz-date": expect.stringMatching(/\d{8}T\d{6}Z/), - "x-amz-security-token": "dummySessionToken", - "x-amz-content-sha256": expect.stringMatching(/^[a-f0-9]{64}$/), - authorization: expect.stringMatching( - /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, - ), -}); - -const headersUnsignedPayload = expect.objectContaining({ - host: "example.com", - "x-amz-date": expect.stringMatching(/\d{8}T\d{6}Z/), - "x-amz-security-token": "dummySessionToken", - "x-amz-content-sha256": "UNSIGNED-PAYLOAD", - authorization: expect.stringMatching( - /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, - ), + signedFetch = createSignedFetcher(options); }); describe("createSignedFetcher", () => { describe("GET", () => { - const expectedMethod = "GET"; - it("should fetch with string", async () => { await signedFetch(url); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual(expectedMethod); - expect(fetchInit?.body).toEqual(undefined); - expect(fetchInit?.headers).toEqual(headersSigned); + expect(request.url).toEqual(url); + expect(request.method).toEqual("GET"); + expect(request.body).toEqual(null); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=87967143809950c291d1539ed6a88fa6eb19cddbacfdae416db867d73e8fc08b"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa773e14e7b0ff9b9c7434ba0fd3b91e16a7707f95875e96ff387c1f4c7094e7"`, ); }); @@ -72,16 +53,16 @@ describe("createSignedFetcher", () => { await signedFetch(new URL(url)); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual(expectedMethod); - expect(fetchInit?.body).toEqual(undefined); - expect(fetchInit?.headers).toEqual(headersSigned); + expect(request.url).toEqual(url); + expect(request.method).toEqual("GET"); + expect(request.body).toEqual(null); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=87967143809950c291d1539ed6a88fa6eb19cddbacfdae416db867d73e8fc08b"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa773e14e7b0ff9b9c7434ba0fd3b91e16a7707f95875e96ff387c1f4c7094e7"`, ); }); @@ -89,33 +70,16 @@ describe("createSignedFetcher", () => { await signedFetch(new Request(url)); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual(expectedMethod); - expect(fetchInit?.body).toEqual(null); - expect(fetchInit?.headers).toEqual(headersSigned); + expect(request.url).toEqual(url); + expect(request.method).toEqual("GET"); + expect(request.body).toEqual(null); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=87967143809950c291d1539ed6a88fa6eb19cddbacfdae416db867d73e8fc08b"`, - ); - }); - - it("should fetch with Request and options", async () => { - await signedFetch(new Request(url)); - - expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual(expectedMethod); - expect(fetchInit?.body).toEqual(null); - expect(fetchInit?.headers).toEqual(headersSigned); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=87967143809950c291d1539ed6a88fa6eb19cddbacfdae416db867d73e8fc08b"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa773e14e7b0ff9b9c7434ba0fd3b91e16a7707f95875e96ff387c1f4c7094e7"`, ); }); }); @@ -128,16 +92,15 @@ describe("createSignedFetcher", () => { await signedFetch(url, { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersSigned); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=c11bdcfcc19e3e5f3f3afdd81a8bf9456650ed6a94803142a92cd432fdacc714"`, + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); + expect(request.body).toEqual(null); + + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=1e3b24fcfd7655c0c245d99ba7b6b5ca6174eab903ebfbda09ce457af062ad30"`, ); }); @@ -145,16 +108,15 @@ describe("createSignedFetcher", () => { await signedFetch(new URL(url), { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersSigned); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=c11bdcfcc19e3e5f3f3afdd81a8bf9456650ed6a94803142a92cd432fdacc714"`, + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); + expect(request.body).toEqual(null); + + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=1e3b24fcfd7655c0c245d99ba7b6b5ca6174eab903ebfbda09ce457af062ad30"`, ); }); @@ -162,37 +124,37 @@ describe("createSignedFetcher", () => { await signedFetch(new Request(url, { method: "POST", body })); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(null); - expect(fetchInit?.headers).toEqual(headersSigned); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=c11bdcfcc19e3e5f3f3afdd81a8bf9456650ed6a94803142a92cd432fdacc714"`, + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); + expect(request.body).toEqual(null); + + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=1e3b24fcfd7655c0c245d99ba7b6b5ca6174eab903ebfbda09ce457af062ad30"`, ); }); }); describe(`Body: String("foo")`, () => { - const body = "foo"; + const { body } = bodyFixture.string; it("should fetch with string", async () => { await signedFetch(url, { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersSigned); + const text = await request.text(); + expect(text).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=1c6004639bd60c69bfba7f46231d4f25423ae92a8a2746f489bed437273693dc"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26"`, ); }); @@ -200,16 +162,17 @@ describe("createSignedFetcher", () => { await signedFetch(new URL(url), { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersSigned); + const text = await request.text(); + expect(text).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=1c6004639bd60c69bfba7f46231d4f25423ae92a8a2746f489bed437273693dc"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26"`, ); }); @@ -217,37 +180,39 @@ describe("createSignedFetcher", () => { await signedFetch(new Request(url, { method: "POST", body })); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(expect.any(ReadableStream)); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const text = await request.text(); + expect(text).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=30e1c46ef773fb1a3f82a537e15384d9601aebf38190e9ff03bdb2ff8a8c504f"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26"`, ); }); }); describe(`Body: URLSearchParams({ foo: "bar" })`, () => { - const body = new URLSearchParams({ foo: "bar" }); + const { body } = bodyFixture.urlSearchParams; it("should fetch with string", async () => { await signedFetch(url, { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const text = await request.text(); + expect(text).toEqual(body.toString()); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=a2b8d86879c46ff096f7b7d021a410fe09697269f0630ac31bdd7640e62d4bdb"`, ); }); @@ -255,16 +220,17 @@ describe("createSignedFetcher", () => { await signedFetch(new URL(url), { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const text = await request.text(); + expect(text).toEqual(body.toString()); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=a2b8d86879c46ff096f7b7d021a410fe09697269f0630ac31bdd7640e62d4bdb"`, ); }); @@ -272,107 +238,97 @@ describe("createSignedFetcher", () => { await signedFetch(new Request(url, { method: "POST", body })); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(expect.any(ReadableStream)); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const text = await request.text(); + expect(text).toEqual(body.toString()); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=783834f3cc782c06f67ca1e74af2defb2cdf7b0e3690e887f5ca6bdee72003e1"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=a2b8d86879c46ff096f7b7d021a410fe09697269f0630ac31bdd7640e62d4bdb"`, ); }); }); describe(`Body: FormData({ foo: "bar" })`, () => { - const body = new FormData(); - body.append("foo", "bar"); + const { body, init } = bodyFixture.formData; it("should fetch with string", async () => { - await signedFetch(url, { method: "POST", body }); + await signedFetch(url, { method: "POST", ...init }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const formData = await request.formData(); + expect(formData).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=49b9a46b57b6877323d917ebc6fa3ff0c521d9a3a512f3419ae35ded4f8f58a2"`, ); }); it("should fetch with URL", async () => { - await signedFetch(new URL(url), { method: "POST", body }); + await signedFetch(new URL(url), { method: "POST", ...init }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const formData = await request.formData(); + expect(formData).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=49b9a46b57b6877323d917ebc6fa3ff0c521d9a3a512f3419ae35ded4f8f58a2"`, ); }); it("should fetch with Request", async () => { - // Copied from: https://github.com/nodejs/undici/blob/fb3138d61d652866c54ff78eb182c40fe22f1c5d/test/fetch/formdata.js#L373-L388 - await signedFetch( - new Request(url, { - method: "POST", - headers: { - "Content-Type": "multipart/form-data; boundary=----formdata-undici-0.6204674738279623", - }, - body: - "------formdata-undici-0.6204674738279623\r\n" + - 'Content-Disposition: form-data; name="fiŝo"\r\n' + - "\r\n" + - "value1\r\n" + - "------formdata-undici-0.6204674738279623--\r\n", - }), - ); + await signedFetch(new Request(url, { method: "POST", ...init })); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(expect.any(ReadableStream)); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const formData = await request.formData(); + expect(formData).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=f386b9865153ea2c54b5ece7cff7a3885419a25733e802dea5084b993c1e47d3"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=49b9a46b57b6877323d917ebc6fa3ff0c521d9a3a512f3419ae35ded4f8f58a2"`, ); }); }); describe(`Body: Blob(["foo"])`, () => { - const body = new Blob(["foo"]); + const { body } = bodyFixture.blob; it("should fetch with string", async () => { await signedFetch(url, { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const blob = await request.blob(); + expect(blob).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d645977d43102b68b395bd50c040f691da79150ada63172a42becc54faa2a232"`, ); }); @@ -380,16 +336,17 @@ describe("createSignedFetcher", () => { await signedFetch(new URL(url), { method: "POST", body }); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const blob = await request.blob(); + expect(blob).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d645977d43102b68b395bd50c040f691da79150ada63172a42becc54faa2a232"`, ); }); @@ -397,83 +354,57 @@ describe("createSignedFetcher", () => { await signedFetch(new Request(url, { method: "POST", body })); expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - expect(fetchUrl).toEqual(new URL(url)); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(expect.any(ReadableStream)); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); + const blob = await request.blob(); + expect(blob).toEqual(body); - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d645977d43102b68b395bd50c040f691da79150ada63172a42becc54faa2a232"`, ); }); }); describe("Body: Uint8Array([0xde, 0xad, 0xbe, 0xef])", () => { - const body = new Uint8Array([0xde, 0xad, 0xbe, 0xef]); + const { body } = bodyFixture.arrayBuffer; it("should fetch with string", async () => { - // Arrange - const expectedUrl = new URL(url); - - // Act await signedFetch(url, { method: "POST", body }); - // Assert expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - expect(fetchUrl).toEqual(expectedUrl); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersSigned); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=f8f04362ccf0b2582c6e4fd9597578d1fcbcd831298cce0adb56adb451f4151d"`, + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); + + const arrayBuffer = await request.arrayBuffer(); + expect(arrayBuffer).toEqual(new Uint8Array([0xde, 0xad, 0xbe, 0xef]).buffer); + + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=89f092f52faedb8a6be1890b2a511b88e7998389d62bd7d72915e2f4ee271a64"`, ); }); it("should fetch with URL", async () => { - // Arrange - const expectedUrl = new URL(url); - - // Act await signedFetch(new URL(url), { method: "POST", body }); - // Assert expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - expect(fetchUrl).toEqual(expectedUrl); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(body); - expect(fetchInit?.headers).toEqual(headersSigned); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=f8f04362ccf0b2582c6e4fd9597578d1fcbcd831298cce0adb56adb451f4151d"`, - ); - }); + const [request] = fetchMock.mock.calls[0] as [Request]; + expect(request.url).toEqual(url); + expect(request.method).toEqual("POST"); - it("should fetch with Request", async () => { - // Arrange - const expectedUrl = new URL(url); - - // Act - await signedFetch(new Request(url, { method: "POST", body })); + const arrayBuffer = await request.arrayBuffer(); + expect(arrayBuffer).toEqual(new Uint8Array([0xde, 0xad, 0xbe, 0xef]).buffer); - // Assert - expect(fetchMock).toHaveBeenCalled(); - const [fetchUrl, fetchInit] = fetchMock.mock.calls[0]; - expect(fetchUrl).toEqual(expectedUrl); - expect(fetchInit?.method).toEqual("POST"); - expect(fetchInit?.body).toEqual(expect.any(ReadableStream)); - expect(fetchInit?.headers).toEqual(headersUnsignedPayload); - - const authorization = fetchInit?.headers?.["authorization"]; - expect(authorization).toMatchInlineSnapshot( - `"AWS4-HMAC-SHA256 Credential=dummyAccessKeyId/20240101/dummyRegion/dummyService/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=8edb7328e32484357649bb350b9c9d8b95d18c041fc7098ace02a3ab574afc8d"`, + const signedHeaders = getSignedHeaders(request); + expect(signedHeaders).toEqual(headersSigned); + expect(signedHeaders.authorization).toMatchInlineSnapshot( + `"AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=89f092f52faedb8a6be1890b2a511b88e7998389d62bd7d72915e2f4ee271a64"`, ); }); }); diff --git a/src/__tests__/parse-request.test.ts b/src/__tests__/parse-request.test.ts index d6dfad4..932842b 100644 --- a/src/__tests__/parse-request.test.ts +++ b/src/__tests__/parse-request.test.ts @@ -1,8 +1,7 @@ import "cross-fetch/polyfill"; import { describe, expect, it } from "vitest"; import { parseRequest } from "../parse-request.js"; - -const url = "http://example.com"; +import { url } from "./__fixtures__.js"; describe("parseRequest", () => { describe("string input", () => { diff --git a/src/__tests__/sign-request.test.ts b/src/__tests__/sign-request.test.ts index a2bcc46..f9632c1 100644 --- a/src/__tests__/sign-request.test.ts +++ b/src/__tests__/sign-request.test.ts @@ -1,19 +1,32 @@ -import type { AwsCredentialIdentity } from "@aws-sdk/types"; import { beforeEach, describe, expect, it, vi } from "vitest"; -import { createSignedFetcher } from "../create-signed-fetcher.js"; import { type SignRequestOptions, signRequest } from "../sign-request.js"; +import { + url, + bodyFixture, + credentials, + date, + getSignedHeaders, + headersSigned, + region, + service, +} from "./__fixtures__.js"; + +declare global { + interface RequestInit { + duplex?: "half"; + } + + interface Request { + duplex?: "half"; + } +} vi.useFakeTimers(); -vi.setSystemTime("2000-01-01T00:00:00.000Z"); - -const credentials: AwsCredentialIdentity = { - accessKeyId: "foo", - secretAccessKey: "bar", -}; +vi.setSystemTime(date); const options: SignRequestOptions = { - service: "foo", - region: "us-bar-1", + service, + region, credentials, }; @@ -21,27 +34,6 @@ beforeEach(() => { vi.resetAllMocks(); }); -const url = "https://foo.us-bar-1.amazonaws.com/"; - -const headersSigned = expect.objectContaining({ - host: "foo.us-bar-1.amazonaws.com", - "x-amz-date": "20000101T000000Z", - "x-amz-content-sha256": expect.stringMatching(/^[a-f0-9]{64}$/), - authorization: expect.stringMatching( - /AWS4-HMAC-SHA256 Credential=([a-zA-Z0-9]+)\/(\d{8})\/([a-zA-Z0-9-]+)\/([a-zA-Z0-9]+)\/aws4_request, SignedHeaders=([a-zA-Z0-9;-]+), Signature=([a-fA-F0-9]{64})/, - ), -}); - -const getSignedHeaders = ( - signedRequest: Request, -): Record<"authorization" | "host" | "x-amz-content-sha256" | "x-amz-date" | "x-amz-security-token", string> => { - const headers: Record = {}; - signedRequest.headers.forEach((value, key) => { - headers[key] = value; - }); - return headers; -}; - describe("signRequest", () => { describe("GET", () => { it("should fetch with string", async () => { @@ -139,7 +131,7 @@ describe("signRequest", () => { }); describe("Body: string", () => { - const body = "It was the best of times, it was the worst of times"; + const { body } = bodyFixture.string; it("should fetch with string", async () => { const signedRequest = await signRequest(url, { method: "POST", body }, options); @@ -155,7 +147,7 @@ describe("signRequest", () => { const authorization = signedHeaders.authorization; expect(authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26", ); }); @@ -171,7 +163,7 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26", ); }); @@ -187,13 +179,13 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26", ); }); }); describe("Body: URLSearchParams", () => { - const body = new URLSearchParams({ foo: "bar" }); + const { body } = bodyFixture.urlSearchParams; it("should fetch with string", async () => { const signedRequest = await signRequest(url, { method: "POST", body }, options); @@ -245,26 +237,10 @@ describe("signRequest", () => { }); describe("Body: FormData", () => { - const body = new FormData(); - body.append("foo", "bar"); - - /** - * Undici generates a random boundary for each request. - */ - const serializedFormData = { - headers: { - "Content-Type": "multipart/form-data; boundary=----formdata-undici-0.6204674738279623", - }, - body: - "------formdata-undici-0.6204674738279623\r\n" + - 'Content-Disposition: form-data; name="foo"\r\n' + - "\r\n" + - "bar\r\n" + - "------formdata-undici-0.6204674738279623--\r\n", - }; + const { body, init } = bodyFixture.formData; it("should fetch with string", async () => { - const signedRequest = await signRequest(url, { method: "POST", ...serializedFormData }, options); + const signedRequest = await signRequest(url, { method: "POST", ...init }, options); expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); @@ -280,7 +256,7 @@ describe("signRequest", () => { }); it("should fetch with URL", async () => { - const signedRequest = await signRequest(new URL(url), { method: "POST", ...serializedFormData }, options); + const signedRequest = await signRequest(new URL(url), { method: "POST", ...init }, options); expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); @@ -296,7 +272,7 @@ describe("signRequest", () => { }); it("should fetch with Request", async () => { - const signedRequest = await signRequest(new Request(url, { method: "POST", ...serializedFormData }), options); + const signedRequest = await signRequest(new Request(url, { method: "POST", ...init }), options); expect(signedRequest.url).toEqual(url); expect(signedRequest.method).toEqual("POST"); @@ -313,7 +289,7 @@ describe("signRequest", () => { }); describe("Body: Blob", () => { - const body = new Blob(["foo"], { type: "text/plain" }); + const { body } = bodyFixture.blob; it("should fetch with string", async () => { const signedRequest = await signRequest(url, { method: "POST", body }, options); @@ -327,7 +303,7 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=5cee677704af2119be87adfacf459bf03081418a4badb22c91bd37bba8d2bf90", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d645977d43102b68b395bd50c040f691da79150ada63172a42becc54faa2a232", ); }); @@ -343,7 +319,7 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=5cee677704af2119be87adfacf459bf03081418a4badb22c91bd37bba8d2bf90", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d645977d43102b68b395bd50c040f691da79150ada63172a42becc54faa2a232", ); }); @@ -360,13 +336,13 @@ describe("signRequest", () => { expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=5cee677704af2119be87adfacf459bf03081418a4badb22c91bd37bba8d2bf90", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=d645977d43102b68b395bd50c040f691da79150ada63172a42becc54faa2a232", ); }); }); describe("Body: Uint8Array", () => { - const body = new Uint8Array([0xde, 0xad, 0xbe, 0xef]); + const { body } = bodyFixture.arrayBuffer; it("should fetch with string", async () => { const signedRequest = await signRequest(url, { method: "POST", body }, options); @@ -375,7 +351,7 @@ describe("signRequest", () => { expect(signedRequest.method).toEqual("POST"); const arrayBuffer = await signedRequest.arrayBuffer(); - expect(new Uint8Array(arrayBuffer)).toEqual(body); + expect(arrayBuffer).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -391,7 +367,7 @@ describe("signRequest", () => { expect(signedRequest.method).toEqual("POST"); const arrayBuffer = await signedRequest.arrayBuffer(); - expect(new Uint8Array(arrayBuffer)).toEqual(body); + expect(arrayBuffer).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -407,7 +383,7 @@ describe("signRequest", () => { expect(signedRequest.method).toEqual("POST"); const arrayBuffer = await signedRequest.arrayBuffer(); - expect(new Uint8Array(arrayBuffer)).toEqual(body); + expect(arrayBuffer).toEqual(body); const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); @@ -419,7 +395,7 @@ describe("signRequest", () => { }); describe("Duplex: Half", () => { - const body = "It was the best of times, it was the worst of times"; + const { body } = bodyFixture.string; it("should fetch with string", async () => { const signedRequest = await signRequest(url, { method: "POST", body, duplex: "half" }, options); @@ -436,7 +412,7 @@ describe("signRequest", () => { const authorization = signedHeaders.authorization; expect(authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26", ); }); @@ -453,7 +429,7 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26", ); }); @@ -470,7 +446,7 @@ describe("signRequest", () => { const signedHeaders = getSignedHeaders(signedRequest); expect(signedHeaders).toEqual(headersSigned); expect(signedHeaders.authorization).toBe( - "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=3669d63039ee68092095433425d2cebeac18afe80260a4b2f983694647e87a66", + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-bar-1/foo/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=9db1a3e5ba8d56d886872466535108231480376835a70889b107abb78766af26", ); }); }); diff --git a/src/create-signed-fetcher.ts b/src/create-signed-fetcher.ts index 9df832e..b27f726 100644 --- a/src/create-signed-fetcher.ts +++ b/src/create-signed-fetcher.ts @@ -26,49 +26,10 @@ export type CreateSignedFetcher = (init: SignedFetcherOptions) => typeof fetch; */ export const createSignedFetcher: CreateSignedFetcher = (opts: SignedFetcherOptions): typeof fetch => { const fetchFn = getFetchFn(opts.fetch); + const signOptions = { service: opts.service, region: opts.region, credentials: opts.credentials }; return async (input, init?) => { - // const service = opts.service; - // const region = opts.region || "us-east-1"; - // const credentials = opts.credentials || defaultProvider(); - - // const parsedRequest = parseRequest(input, init); - // const parsedUrl = parsedRequest.url; - - // // host is required by AWS Signature V4: https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - // parsedRequest.headers["host"] = parsedUrl.host; - - // const httpRequest = new HttpRequest({ - // method: parsedRequest.method, - // body: parsedRequest.body, - // headers: parsedRequest.headers, - // hostname: parsedUrl.hostname, - // path: parsedUrl.pathname, - // protocol: parsedUrl.protocol, - // port: parsedUrl.port ? Number(parsedUrl.port) : undefined, - // username: parsedUrl.username, - // password: parsedUrl.password, - // fragment: parsedUrl.hash, - // query: Object.fromEntries(parsedUrl.searchParams.entries()), - // }); - - // const signer = new SignatureV4({ - // credentials, - // service, - // region, - // sha256: Sha256, - // }); - - // const signedHttpRequest = await signer.sign(httpRequest); - - // // Copy only the signed headers, because the body may be modified by the signer - // parsedRequest.headers = signedHttpRequest.headers; - - // return fetchFn(parsedUrl, parsedRequest); - const { service, region, credentials } = opts; - const signedRequest = init - ? await signRequest(input, init, { service, region, credentials }) - : await signRequest(input, { service, region, credentials }); + const signedRequest = init ? await signRequest(input, init, signOptions) : await signRequest(input, signOptions); return fetchFn(signedRequest); }; From b854f66f10de61d9e2f02e3b15cd92de8c9b0a1a Mon Sep 17 00:00:00 2001 From: zirkelc Date: Mon, 23 Dec 2024 09:07:27 +0100 Subject: [PATCH 11/21] e2e test --- .github/workflows/ci.yml | 29 +- README.md | 56 +- package.json | 7 +- pnpm-lock.yaml | 2138 +++++++---------- src/__tests__/create-signed-fetcher.test.ts | 11 +- .../{__fixtures__.ts => fixtures.ts} | 0 src/__tests__/parse-request.test.ts | 2 +- src/__tests__/sign-request.test.ts | 11 +- test/aws-api-gateway/index.test.ts | 272 --- test/aws-api-gateway/package.json | 10 - test/aws-api-gateway/pnpm-lock.yaml | 960 -------- test/aws-api-gateway/tsconfig.json | 101 - test/aws-api-gateway/vitest.config.mts | 7 - test/aws-iam/index.test.ts | 179 -- test/aws-iam/package.json | 6 - test/aws-iam/tsconfig.json | 101 - test/aws/__tests__/api-gateway.test.ts | 78 + test/aws/__tests__/iam.test.ts | 230 ++ test/aws/__tests__/lambda.test.ts | 83 + test/aws/bin/app.ts | 18 + test/aws/cdk.json | 3 + .../cdk.out/ApiGatewayTestStack.assets.json | 20 + .../cdk.out/ApiGatewayTestStack.template.json | 402 ++++ test/aws/cdk.out/LambdaTestStack.assets.json | 20 + .../aws/cdk.out/LambdaTestStack.template.json | 130 + test/aws/cdk.out/cdk.out | 1 + test/aws/cdk.out/manifest.json | 227 ++ test/aws/cdk.out/tree.json | 732 ++++++ test/aws/lib/api-gateway-test-stack.ts | 83 + test/aws/lib/lambda-test-stack.ts | 49 + test/aws/package.json | 20 + test/aws/tsconfig.json | 15 + .../vitest.config.ts} | 2 +- test/module-commonjs/index.test.ts | 15 - test/module-commonjs/package.json | 6 - test/module-commonjs/tsconfig.json | 109 - test/module-commonjs/vitest.config.mts | 7 - test/module-esm/index.test.ts | 15 - test/module-esm/package.json | 6 - test/module-esm/tsconfig.json | 101 - test/module-esm/vitest.config.mts | 7 - vitest.config.ts | 26 + vitest.config.unit.ts | 27 - vitest.workspace.ts | 2 +- 44 files changed, 3087 insertions(+), 3237 deletions(-) rename src/__tests__/{__fixtures__.ts => fixtures.ts} (100%) delete mode 100644 test/aws-api-gateway/index.test.ts delete mode 100644 test/aws-api-gateway/package.json delete mode 100644 test/aws-api-gateway/pnpm-lock.yaml delete mode 100644 test/aws-api-gateway/tsconfig.json delete mode 100644 test/aws-api-gateway/vitest.config.mts delete mode 100644 test/aws-iam/index.test.ts delete mode 100644 test/aws-iam/package.json delete mode 100644 test/aws-iam/tsconfig.json create mode 100644 test/aws/__tests__/api-gateway.test.ts create mode 100644 test/aws/__tests__/iam.test.ts create mode 100644 test/aws/__tests__/lambda.test.ts create mode 100644 test/aws/bin/app.ts create mode 100644 test/aws/cdk.json create mode 100644 test/aws/cdk.out/ApiGatewayTestStack.assets.json create mode 100644 test/aws/cdk.out/ApiGatewayTestStack.template.json create mode 100644 test/aws/cdk.out/LambdaTestStack.assets.json create mode 100644 test/aws/cdk.out/LambdaTestStack.template.json create mode 100644 test/aws/cdk.out/cdk.out create mode 100644 test/aws/cdk.out/manifest.json create mode 100644 test/aws/cdk.out/tree.json create mode 100644 test/aws/lib/api-gateway-test-stack.ts create mode 100644 test/aws/lib/lambda-test-stack.ts create mode 100644 test/aws/package.json create mode 100644 test/aws/tsconfig.json rename test/{aws-iam/vitest.config.mts => aws/vitest.config.ts} (79%) delete mode 100644 test/module-commonjs/index.test.ts delete mode 100644 test/module-commonjs/package.json delete mode 100644 test/module-commonjs/tsconfig.json delete mode 100644 test/module-commonjs/vitest.config.mts delete mode 100644 test/module-esm/index.test.ts delete mode 100644 test/module-esm/package.json delete mode 100644 test/module-esm/tsconfig.json delete mode 100644 test/module-esm/vitest.config.mts create mode 100644 vitest.config.ts delete mode 100644 vitest.config.unit.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25c9f88..86aa408 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,8 +33,8 @@ jobs: - name: Lint run: pnpm lint - test: - name: Test + unit-test: + name: Unit Test runs-on: ubuntu-latest strategy: fail-fast: false @@ -56,8 +56,14 @@ jobs: - name: Test run: pnpm test - coverage: - name: Coverage + - name: Coverage + if: ${{ steps.install.conclusion == 'success' }} + uses: davelosert/vitest-coverage-report-action@v2 + with: + vite-config-path: vitest.config.unit.ts + + e2e-test: + name: E2E Test runs-on: ubuntu-latest steps: @@ -67,17 +73,12 @@ jobs: id: install uses: zirkelc/setup-and-install@v1 - - name: Build - run: pnpm build + - name: Deploy + working-directory: test + run: pnpm run deploy - name: Test - run: pnpm test:coverage - - - name: Coverage - if: ${{ steps.install.conclusion == 'success' }} - uses: davelosert/vitest-coverage-report-action@v2 - with: - vite-config-path: vitest.config.unit.ts + run: pnpm test:e2e preview: name: Preview @@ -102,7 +103,7 @@ jobs: release: name: Release runs-on: ubuntu-latest - needs: [lint,test] + needs: [lint, unit-test, e2e-test] if: github.ref == 'refs/heads/main' steps: diff --git a/README.md b/README.md index da2bd1a..41f194f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![npm](https://img.shields.io/npm/dt/aws-sigv4-fetch)](https://www.npmjs.com/package/aws-sigv4-fetch) # aws-sigv4-fetch -AWS SignatureV4 fetch API function to automatically sign HTTP request with given AWS credentials. Built entirely on the newest version of the official [AWS SDK for JS](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html). +A lightweight wrapper around the fetch API that automatically signs HTTP requests with AWS Signature Version 4 (SigV4) authentication. Built on the official AWS SDK for JS v3. ## Signature Version 4 > Signature Version 4 (SigV4) is the process to add authentication information to AWS API requests sent by HTTP. For security, most requests to AWS must be signed with an access key. The access key consists of an access key ID and secret access key, which are commonly referred to as your security credentials @@ -13,14 +13,10 @@ AWS SignatureV4 fetch API function to automatically sign HTTP request with given ## Install ```sh npm install --save aws-sigv4-fetch - -yarn add aws-sigv4-fetch - -pnpm add aws-sigv4-fetch ``` ## ESM and CommonJS -This package ships with ES Module and CommonJS support. That means you can `import` or `require` the package in your project depending on your mdoule format. +This package ships with ES Module and CommonJS support. That means you can `import` or `require` the package in your project depending on your module format. ```ts // ESM @@ -31,42 +27,45 @@ const { createSignedFetcher } = require('aws-sigv4-fetch'); ``` ## Usage -This package exports a function `createSignedFetcher` that returns a `fetch` function to automatically sign HTTP requests with AWS Signature V4 for the given AWS service and region. The credentials can be passed to the function directly, or they will be retrieved from the environment by `defaultProvider()` from package [`@aws-sdk/credential-provider-node`](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_provider_node.html). +This package exports a function `createSignedFetcher` that returns a `fetch` function to automatically sign HTTP requests with AWS Signature V4 for the given AWS service and region. +The returned `signedFetch` function accepts the same arguments as the default `fetch` function. + ```ts import { createSignedFetcher } from 'aws-sigv4-fetch'; -const signedFetch = createSignedFetcher({ service: 's3', region: 'eu-west-1', credentials: { accessKeyId: '...', secretAccessKey: '...' } }); +const signedFetch = createSignedFetcher({ service: 's3', region: 'eu-west-1' }); +// signedFetch(input: string) const response = await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json'); -const data = await response.json(); -``` - -The returned `signedFetch` function wraps the `fetch` function and automatically signs the request with AWS Signature V4. It accepts the same arguments as the `fetch` function. - -```ts -type Fetch = (input: string | Request | URL, init?: RequestInit) => Promise; - -const signedFetch: Fetch = createSignedFetcher({ service: 's3', region: 'eu-west-1' }); - -// string -await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json'); +// signedFetch(input: URL) +const response = await signedFetch(new URL('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json')); -// URL -await signedFetch(new URL('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json')); +// signedFetch(input: Request) +const response = await signedFetch(new Request('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json')); -// Request -await signedFetch(new Request('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json')); - -// additional options -await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json', { +// signedFetch(input: string, init?: RequestInit) +const response = await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket/my-key.json', { method: 'POST', body: JSON.stringify({ a: 1 }), headers: { 'Content-Type': 'application/json' } }); ``` +### Credentials +Signing requests with AWS Signature V4 requires credentials (access key ID and secret access key). The `createSignedFetcher` function accepts an optional `credentials` option. If not provided, the credentials will be retrieved from the environment by the package [`@aws-sdk/credential-provider-node`](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_provider_node.html). + +```ts +import { createSignedFetcher } from 'aws-sigv4-fetch'; + +// credentials will be retrieved from the environment +const signedFetch = createSignedFetcher({ service: 's3', region: 'eu-west-1' }); + +// credentials will be passed directly to the function +const signedFetch = createSignedFetcher({ service: 's3', region: 'eu-west-1', credentials: { accessKeyId: '...', secretAccessKey: '...' } }); +``` + ### Fetch By default, `createSignedFetcher` uses the `fetch` function from the environment. Native `fetch` is supported in Node.js >= v18. If you are running in an environment where native `fetch` is **not** available, the `fetch` function must be polyfilled or provided as an argument to `createSignedFetcher`. This allows to use the same `fetch` function that is already used in your application. There are several ways to do this: @@ -160,3 +159,6 @@ const result = await client.request(query, variables); - [Sign GraphQL Request with AWS IAM and Signature V4](https://dev.to/zirkelc/sign-graphql-request-with-aws-iam-and-signature-v4-2il6) - [Amplify Signing a request from Lambda](https://docs.amplify.aws/lib/graphqlapi/graphql-from-nodejs/q/platform/js/#signing-a-request-from-lambda) - [Signing HTTP requests to Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/request-signing.html#request-signing-node) + +## License +MIT diff --git a/package.json b/package.json index 1288591..2b8d9b6 100644 --- a/package.json +++ b/package.json @@ -26,12 +26,12 @@ "dist" ], "scripts": { - "test": "vitest", - "test:coverage": "vitest --coverage.enabled --coverage.provider=v8 --coverage.reporter=json-summary --coverage.reporter=json --coverage.reporter=text-summary --coverage.reporter=html", + "test:unit": "vitest --project=unit --coverage", + "test:e2e": "vitest --project=e2e/*", "build": "tsup && attw --pack .", "dev": "tsup ./src/index.ts --watch", "prepublishOnly": "pnpm build", - "lint": "pnpm biome check --write --no-errors-on-unmatched src test" + "lint": "pnpm biome check --write --no-errors-on-unmatched ." }, "repository": { "type": "git", @@ -56,6 +56,7 @@ "@types/node": "^22.9.0", "@vitest/coverage-v8": "^2.0.4", "@vitest/ui": "^2.0.5", + "cdk": "^2.173.2", "cross-fetch": "^4.0.0", "np": "^10.0.6", "pkg-pr-new": "^0.0.30", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b28741..e442f30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 5.2.0 '@aws-sdk/credential-provider-node': specifier: ^3.609.0 - version: 3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0) + version: 3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) '@aws-sdk/types': specifier: ^3.609.0 version: 3.609.0 @@ -42,6 +42,9 @@ importers: '@vitest/ui': specifier: ^2.0.5 version: 2.0.5(vitest@2.0.5) + cdk: + specifier: ^2.173.2 + version: 2.173.2 cross-fetch: specifier: ^4.0.0 version: 4.0.0 @@ -53,7 +56,7 @@ importers: version: 0.0.30 tsup: specifier: ^8.1.0 - version: 8.1.0(postcss@8.4.41)(typescript@5.5.3) + version: 8.1.0(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.5.3))(typescript@5.5.3) tsx: specifier: ^4.17.0 version: 4.17.0 @@ -73,29 +76,33 @@ importers: specifier: ^0.11.1 version: 0.11.1(vitest@2.0.5) - test/aws-api-gateway: - dependencies: - '@aws-sdk/client-api-gateway': - specifier: ^3.535.0 - version: 3.535.0 - '@aws-sdk/client-apigatewayv2': - specifier: ^3.535.0 - version: 3.535.0 - - test/aws-iam: {} - - test/aws-s3: - dependencies: + test/aws: + devDependencies: '@aws-sdk/client-api-gateway': specifier: ^3.535.0 - version: 3.535.0 + version: 3.716.0 '@aws-sdk/client-apigatewayv2': specifier: ^3.535.0 - version: 3.535.0 + version: 3.716.0 + '@aws-sdk/client-lambda': + specifier: ^3.716.0 + version: 3.716.0 + aws-cdk: + specifier: ^2.124.0 + version: 2.173.2 + aws-cdk-lib: + specifier: ^2.124.0 + version: 2.173.2(constructs@10.4.2) + constructs: + specifier: ^10.0.0 + version: 10.4.2 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.9.0)(typescript@5.5.3) - test/module-commonjs: {} + test/commonjs: {} - test/module-esm: {} + test/esm: {} packages: @@ -121,294 +128,221 @@ packages: resolution: {integrity: sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==} engines: {node: '>=18'} - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + '@aws-cdk/asset-awscli-v1@2.2.215': + resolution: {integrity: sha512-D+Jzwpl+zlBGjJf7nuRcz6JFNwqDQ+IzwIq0VSC4LMRRvrkhGE/ZE+zab3EnjmVkipcQqtQe+PVKefgmxETbvA==} + + '@aws-cdk/asset-kubectl-v20@2.1.3': + resolution: {integrity: sha512-cDG1w3ieM6eOT9mTefRuTypk95+oyD7P5X/wRltwmYxU7nZc3+076YEVS6vrjDKr3ADYbfn0lDKpfB1FBtO9CQ==} + + '@aws-cdk/asset-node-proxy-agent-v6@2.1.0': + resolution: {integrity: sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A==} - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + '@aws-cdk/cloud-assembly-schema@38.0.1': + resolution: {integrity: sha512-KvPe+NMWAulfNVwY7jenFhzhuLhLqJ/OPy5jx7wUstbjnYnjRVLpUHPU3yCjXFE0J8cuJVdx95BJ4rOs66Pi9w==} + bundledDependencies: + - jsonschema + - semver + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - '@aws-crypto/sha256-js@5.2.0': resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} engines: {node: '>=16.0.0'} - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - '@aws-crypto/supports-web-crypto@5.2.0': resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - '@aws-crypto/util@3.0.0': - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-api-gateway@3.535.0': - resolution: {integrity: sha512-QYHP4T3lA4kQSPP4eWM0v7Lf+rQmOQbsB6YGX/0ggdBaoW6PJxUtcitLivj0dxb9ORZonNG6kFVxwpQVvSjGSw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-api-gateway@3.716.0': + resolution: {integrity: sha512-ubNM+YrBZqb+RrChA9ygvakbaWzhgcfqlQ5InQVwk75NVepvPPbfFC4FLRmteVFgPw1T4jZ2cyL8Jyap9di++Q==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-apigatewayv2@3.535.0': - resolution: {integrity: sha512-NEDWzr+JzymEXYzbazcng/9i2jh5RTZyUMVAoUgmAs6fot40pes9kGhjwHrUwrwFeCDDbFx2sDmrtse4hQ/AFA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-apigatewayv2@3.716.0': + resolution: {integrity: sha512-dv/EgqOh7iAmazzMwcafa8Vs+5lF+MESloBT4RD1TqmHBcxiClxTU6hm9xr+juwOrEApPABEne1L/TSOZwbPLA==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.535.0': - resolution: {integrity: sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 + '@aws-sdk/client-lambda@3.716.0': + resolution: {integrity: sha512-pWcnLQFbG4/xmzq7614YBz6Kbx3Skm3yuQOhac9y163hSmey1bfFdr1bZ+FcxquHbRb5KNvhU1RGmwmNVxsOfg==} + engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.632.0': - resolution: {integrity: sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==} + '@aws-sdk/client-sso-oidc@3.716.0': + resolution: {integrity: sha512-lA4IB9FzR2KjH7EVCo+mHGFKqdViVyeBQEIX9oVratL/l7P0bMS1fMwgfHOc3ACazqNxBxDES7x08ZCp32y6Lw==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.632.0 - - '@aws-sdk/client-sso@3.535.0': - resolution: {integrity: sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sts': ^3.716.0 '@aws-sdk/client-sso@3.609.0': resolution: {integrity: sha512-gqXGFDkIpKHCKAbeJK4aIDt3tiwJ26Rf5Tqw9JS6BYXsdMeOB8FTzqD9R+Yc1epHd8s5L94sdqXT5PapgxFZrg==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso@3.632.0': - resolution: {integrity: sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==} + '@aws-sdk/client-sso@3.716.0': + resolution: {integrity: sha512-5Nb0jJXce2TclbjG7WVPufwhgV1TRydz1QnsuBtKU0AdViEpr787YrZhPpGnNIM1Dx+R1H/tmAHZnOoohS6D8g==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.535.0': - resolution: {integrity: sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 - - '@aws-sdk/client-sts@3.632.0': - resolution: {integrity: sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==} + '@aws-sdk/client-sts@3.716.0': + resolution: {integrity: sha512-i4SVNsrdXudp8T4bkm7Fi3YWlRnvXCSwvNDqf6nLqSJxqr4CN3VlBELueDyjBK7TAt453/qSif+eNx+bHmwo4Q==} engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.535.0': - resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} - engines: {node: '>=14.0.0'} - '@aws-sdk/core@3.609.0': resolution: {integrity: sha512-ptqw+DTxLr01+pKjDUuo53SEDzI+7nFM3WfQaEo0yhDg8vWw8PER4sWj1Ysx67ksctnZesPUjqxd5SHbtdBxiA==} engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.629.0': - resolution: {integrity: sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==} + '@aws-sdk/core@3.716.0': + resolution: {integrity: sha512-5DkUiTrbyzO8/W4g7UFEqRFpuhgizayHI/Zbh0wtFMcot8801nJV+MP/YMhdjimlvAr/OqYB08FbGsPyWppMTw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.535.0': - resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} - engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-env@3.609.0': resolution: {integrity: sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.620.1': - resolution: {integrity: sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==} + '@aws-sdk/credential-provider-env@3.716.0': + resolution: {integrity: sha512-JI2KQUnn2arICwP9F3CnqP1W3nAbm4+meQg/yOhp9X0DMzQiHrHRd4HIrK2vyVgi2/6hGhONY5uLF26yRTA7nQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-http@3.535.0': - resolution: {integrity: sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==} - engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-http@3.609.0': resolution: {integrity: sha512-GQQfB9Mk4XUZwaPsk4V3w8MqleS6ApkZKVQn3vTLAKa8Y7B2Imcpe5zWbKYjDd8MPpMWjHcBGFTVlDRFP4zwSQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-http@3.622.0': - resolution: {integrity: sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==} + '@aws-sdk/credential-provider-http@3.716.0': + resolution: {integrity: sha512-CZ04pl2z7igQPysQyH2xKZHM3fLwkemxQbKOlje3TmiS1NwXvcKvERhp9PE/H23kOL7beTM19NMRog/Fka/rlw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-ini@3.535.0': - resolution: {integrity: sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==} - engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-ini@3.609.0': resolution: {integrity: sha512-hwaBfXuBTv6/eAdEsDfGcteYUW6Km7lvvubbxEdxIuJNF3vswR7RMGIXaEC37hhPkTTgd3H0TONammhwZIfkog==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.609.0 - '@aws-sdk/credential-provider-ini@3.632.0': - resolution: {integrity: sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==} + '@aws-sdk/credential-provider-ini@3.716.0': + resolution: {integrity: sha512-P37We2GtZvdROxiwP0zrpEL81/HuYK1qlYxp5VCj3uV+G4mG8UQN2gMIU/baYrpOQqa0h81RfyQGRFUjVaDVqw==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.632.0 - - '@aws-sdk/credential-provider-node@3.535.0': - resolution: {integrity: sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sts': ^3.716.0 '@aws-sdk/credential-provider-node@3.609.0': resolution: {integrity: sha512-4J8/JRuqfxJDGD9jTHVCBxCvYt7/Vgj2Stlhj930mrjFPO/yRw8ilAAZxBWe0JHPX3QwepCmh4ErZe53F5ysxQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-node@3.632.0': - resolution: {integrity: sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==} + '@aws-sdk/credential-provider-node@3.716.0': + resolution: {integrity: sha512-FGQPK2uKfS53dVvoskN/s/t6m0Po24BGd1PzJdzHBFCOjxbZLM6+8mDMXeyi2hCLVVQOUcuW41kOgmJ0+zMbww==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.535.0': - resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} - engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-process@3.609.0': resolution: {integrity: sha512-Ux35nGOSJKZWUIM3Ny0ROZ8cqPRUEkh+tR3X2o9ydEbFiLq3eMMyEnHJqx4EeUjLRchidlm4CCid9GxMe5/gdw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.620.1': - resolution: {integrity: sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==} + '@aws-sdk/credential-provider-process@3.716.0': + resolution: {integrity: sha512-0spcu2MWVVHSTHH3WE2E//ttUJPwXRM3BCp+WyI41xLzpNu1Fd8zjOrDpEo0SnGUzsSiRTIJWgkuu/tqv9NJ2A==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.535.0': - resolution: {integrity: sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==} - engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-sso@3.609.0': resolution: {integrity: sha512-oQPGDKMMIxjvTcm86g07RPYeC7mCNk+29dPpY15ZAPRpAF7F0tircsC3wT9fHzNaKShEyK5LuI5Kg/uxsdy+Iw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.632.0': - resolution: {integrity: sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==} + '@aws-sdk/credential-provider-sso@3.716.0': + resolution: {integrity: sha512-J2IA3WuCpRGGoZm6VHZVFCnrxXP+41iUWb9Ct/1spljegTa1XjiaZ5Jf3+Ubj7WKiyvP9/dgz1L0bu2bYEjliw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.535.0': - resolution: {integrity: sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==} - engines: {node: '>=14.0.0'} - '@aws-sdk/credential-provider-web-identity@3.609.0': resolution: {integrity: sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sts': ^3.609.0 - '@aws-sdk/credential-provider-web-identity@3.621.0': - resolution: {integrity: sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==} + '@aws-sdk/credential-provider-web-identity@3.716.0': + resolution: {integrity: sha512-vzgpWKs2gGXZGdbMKRFrMW4PqEFWkGvwWH2T7ZwQv9m+8lQ7P4Dk2uimqu0f37HZAbpn8HFMqRh4CaySjU354A==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.621.0 - - '@aws-sdk/middleware-host-header@3.535.0': - resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sts': ^3.716.0 '@aws-sdk/middleware-host-header@3.609.0': resolution: {integrity: sha512-iTKfo158lc4jLDfYeZmYMIBHsn8m6zX+XB6birCSNZ/rrlzAkPbGE43CNdKfvjyWdqgLMRXF+B+OcZRvqhMXPQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.620.0': - resolution: {integrity: sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==} + '@aws-sdk/middleware-host-header@3.714.0': + resolution: {integrity: sha512-6l68kjNrh5QC8FGX3I3geBDavWN5Tg1RLHJ2HLA8ByGBtJyCwnz3hEkKfaxn0bBx0hF9DzbfjEOUF6cDqy2Kjg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-logger@3.535.0': - resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} - engines: {node: '>=14.0.0'} - '@aws-sdk/middleware-logger@3.609.0': resolution: {integrity: sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-recursion-detection@3.535.0': - resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-logger@3.714.0': + resolution: {integrity: sha512-RkqHlMvQWUaRklU1bMfUuBvdWwxgUtEqpADaHXlGVj3vtEY2UgBjy+57CveC4MByqKIunNvVHBBbjrGVtwY7Lg==} + engines: {node: '>=16.0.0'} '@aws-sdk/middleware-recursion-detection@3.609.0': resolution: {integrity: sha512-6sewsYB7/o/nbUfA99Aa/LokM+a/u4Wpm/X2o0RxOsDtSB795ObebLJe2BxY5UssbGaWkn7LswyfvrdZNXNj1w==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-recursion-detection@3.620.0': - resolution: {integrity: sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==} + '@aws-sdk/middleware-recursion-detection@3.714.0': + resolution: {integrity: sha512-AVU5ixnh93nqtsfgNc284oXsXaadyHGPHpql/jwgaaqQfEXjS/1/j3j9E/vpacfTTz2Vzo7hAOjnvrOXSEVDaA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-sdk-api-gateway@3.535.0': - resolution: {integrity: sha512-O4cwxaI9zTdCUMRFtPXpTXBhZ98Zc93+TouOJPxbNpalOI0dG1r4Ty5s4rK6N/4RW9nSWWTqyfZa2b72q4HnBw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-user-agent@3.535.0': - resolution: {integrity: sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-sdk-api-gateway@3.714.0': + resolution: {integrity: sha512-0YcNllNd3vh3jyj9qtFlRvOImi0IR6IzKgkMw4kCUDcL9tlvijei22i8UMFfzX8lvpwLh80Afifk1xbi/mXf8Q==} + engines: {node: '>=16.0.0'} '@aws-sdk/middleware-user-agent@3.609.0': resolution: {integrity: sha512-nbq7MXRmeXm4IDqh+sJRAxGPAq0OfGmGIwKvJcw66hLoG8CmhhVMZmIAEBDFr57S+YajGwnLLRt+eMI05MMeVA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-user-agent@3.632.0': - resolution: {integrity: sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==} + '@aws-sdk/middleware-user-agent@3.716.0': + resolution: {integrity: sha512-FpAtT6nNKrYdkDZndutEraiRMf+TgDzAGvniqRtZ/YTPA+gIsWrsn+TwMKINR81lFC3nQfb9deS5CFtxd021Ew==} engines: {node: '>=16.0.0'} - '@aws-sdk/region-config-resolver@3.535.0': - resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} - engines: {node: '>=14.0.0'} - '@aws-sdk/region-config-resolver@3.609.0': resolution: {integrity: sha512-lMHBG8zg9GWYBc9/XVPKyuAUd7iKqfPP7z04zGta2kGNOKbUTeqmAdc1gJGku75p4kglIPlGBorOxti8DhRmKw==} engines: {node: '>=16.0.0'} - '@aws-sdk/region-config-resolver@3.614.0': - resolution: {integrity: sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==} + '@aws-sdk/region-config-resolver@3.714.0': + resolution: {integrity: sha512-HJzsQxgMOAzZrbf/YIqEx30or4tZK1oNAk6Wm6xecUQx+23JXIaePRu1YFUOLBBERQ4QBPpISFurZWBMZ5ibAw==} engines: {node: '>=16.0.0'} - '@aws-sdk/token-providers@3.535.0': - resolution: {integrity: sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==} - engines: {node: '>=14.0.0'} - '@aws-sdk/token-providers@3.609.0': resolution: {integrity: sha512-WvhW/7XSf+H7YmtiIigQxfDVZVZI7mbKikQ09YpzN7FeN3TmYib1+0tB+EE9TbICkwssjiFc71FEBEh4K9grKQ==} engines: {node: '>=16.0.0'} peerDependencies: '@aws-sdk/client-sso-oidc': ^3.609.0 - '@aws-sdk/token-providers@3.614.0': - resolution: {integrity: sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==} + '@aws-sdk/token-providers@3.714.0': + resolution: {integrity: sha512-vKN064aLE3kl+Zl16Ony3jltHnMddMBT7JRkP1L+lLywhA0PcAKxpdvComul/sTBWnbnwLnaS5NsDUhcWySH8A==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.614.0 - - '@aws-sdk/types@3.535.0': - resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sso-oidc': ^3.714.0 '@aws-sdk/types@3.609.0': resolution: {integrity: sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-endpoints@3.535.0': - resolution: {integrity: sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/types@3.714.0': + resolution: {integrity: sha512-ZjpP2gYbSFlxxaUDa1Il5AVvfggvUPbjzzB/l3q0gIE5Thd6xKW+yzEpt2mLZ5s5UaYSABZbF94g8NUOF4CVGA==} + engines: {node: '>=16.0.0'} '@aws-sdk/util-endpoints@3.609.0': resolution: {integrity: sha512-Rh+3V8dOvEeE1aQmUy904DYWtLUEJ7Vf5XBPlQ6At3pBhp+zpXbsnpZzVL33c8lW1xfj6YPwtO6gOeEsl1juCQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-endpoints@3.632.0': - resolution: {integrity: sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==} + '@aws-sdk/util-endpoints@3.714.0': + resolution: {integrity: sha512-Xv+Z2lhe7w7ZZRsgBwBMZgGTVmS+dkkj2S13uNHAx9lhB5ovM8PhK5G/j28xYf6vIibeuHkRAbb7/ozdZIGR+A==} engines: {node: '>=16.0.0'} '@aws-sdk/util-locate-window@3.568.0': resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-user-agent-browser@3.535.0': - resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} - '@aws-sdk/util-user-agent-browser@3.609.0': resolution: {integrity: sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==} - '@aws-sdk/util-user-agent-node@3.535.0': - resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true + '@aws-sdk/util-user-agent-browser@3.714.0': + resolution: {integrity: sha512-OdJJ03cP9/MgIVToPJPCPUImbpZzTcwdIgbXC0tUQPJhbD7b7cB4LdnkhNHko+MptpOrCq4CPY/33EpOjRdofw==} '@aws-sdk/util-user-agent-node@3.609.0': resolution: {integrity: sha512-DlZBwQ/HkZyf3pOWc7+wjJRk5R7x9YxHhs2szHwtv1IW30KMabjjjX0GMlGJ9LLkBHkbaaEY/w9Tkj12XRLhRg==} @@ -419,8 +353,8 @@ packages: aws-crt: optional: true - '@aws-sdk/util-user-agent-node@3.614.0': - resolution: {integrity: sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==} + '@aws-sdk/util-user-agent-node@3.716.0': + resolution: {integrity: sha512-3PqaXmQbxrtHKAsPCdp7kn5FrQktj8j3YyuNsqFZ8rWZeEQ88GWlsvE61PTsr2peYCKzpFqYVddef2x1axHU0w==} engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -428,9 +362,6 @@ packages: aws-crt: optional: true - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -516,6 +447,10 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -835,6 +770,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jsdevtools/ez-spawn@3.0.4': resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} @@ -1106,69 +1044,73 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - '@smithy/abort-controller@2.2.0': - resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} - engines: {node: '>=14.0.0'} - '@smithy/abort-controller@3.1.1': resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} engines: {node: '>=16.0.0'} - '@smithy/config-resolver@2.2.0': - resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} - engines: {node: '>=14.0.0'} - - '@smithy/config-resolver@3.0.4': - resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} + '@smithy/abort-controller@3.1.9': + resolution: {integrity: sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==} engines: {node: '>=16.0.0'} - '@smithy/config-resolver@3.0.5': - resolution: {integrity: sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==} + '@smithy/config-resolver@3.0.13': + resolution: {integrity: sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==} engines: {node: '>=16.0.0'} - '@smithy/core@1.4.0': - resolution: {integrity: sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==} - engines: {node: '>=14.0.0'} + '@smithy/config-resolver@3.0.4': + resolution: {integrity: sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==} + engines: {node: '>=16.0.0'} '@smithy/core@2.2.4': resolution: {integrity: sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==} engines: {node: '>=16.0.0'} - '@smithy/core@2.4.0': - resolution: {integrity: sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==} + '@smithy/core@2.5.5': + resolution: {integrity: sha512-G8G/sDDhXA7o0bOvkc7bgai6POuSld/+XhNnWAbpQTpLv2OZPvyqQ58tLPPlz0bSNsXktldDDREIv1LczFeNEw==} engines: {node: '>=16.0.0'} - '@smithy/credential-provider-imds@2.3.0': - resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} - engines: {node: '>=14.0.0'} - '@smithy/credential-provider-imds@3.1.3': resolution: {integrity: sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==} engines: {node: '>=16.0.0'} - '@smithy/credential-provider-imds@3.2.0': - resolution: {integrity: sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==} + '@smithy/credential-provider-imds@3.2.8': + resolution: {integrity: sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@3.1.10': + resolution: {integrity: sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==} + + '@smithy/eventstream-serde-browser@3.0.14': + resolution: {integrity: sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.11': + resolution: {integrity: sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.13': + resolution: {integrity: sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==} engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@2.5.0': - resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + '@smithy/eventstream-serde-universal@3.0.13': + resolution: {integrity: sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==} + engines: {node: '>=16.0.0'} '@smithy/fetch-http-handler@3.2.0': resolution: {integrity: sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==} - '@smithy/fetch-http-handler@3.2.4': - resolution: {integrity: sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==} + '@smithy/fetch-http-handler@4.1.2': + resolution: {integrity: sha512-R7rU7Ae3ItU4rC0c5mB2sP5mJNbCfoDc8I5XlYjIZnquyUwec7fEo78F6DA3SmgJgkU1qTMcZJuGblxZsl10ZA==} - '@smithy/hash-node@2.2.0': - resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} - engines: {node: '>=14.0.0'} + '@smithy/hash-node@3.0.11': + resolution: {integrity: sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==} + engines: {node: '>=16.0.0'} '@smithy/hash-node@3.0.3': resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} engines: {node: '>=16.0.0'} - '@smithy/invalid-dependency@2.2.0': - resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} + '@smithy/invalid-dependency@3.0.11': + resolution: {integrity: sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==} '@smithy/invalid-dependency@3.0.3': resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} @@ -1181,194 +1123,147 @@ packages: resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-content-length@2.2.0': - resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-content-length@3.0.13': + resolution: {integrity: sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==} + engines: {node: '>=16.0.0'} '@smithy/middleware-content-length@3.0.3': resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-content-length@3.0.5': - resolution: {integrity: sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-endpoint@2.5.0': - resolution: {integrity: sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==} - engines: {node: '>=14.0.0'} - '@smithy/middleware-endpoint@3.0.4': resolution: {integrity: sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==} engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@3.1.0': - resolution: {integrity: sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==} + '@smithy/middleware-endpoint@3.2.6': + resolution: {integrity: sha512-WAqzyulvvSKrT5c6VrQelgNVNNO7BlTQW9Z+s9tcG6G5CaBS1YBpPtT3VuhXLQbewSiGi7oXQROwpw26EG9PLQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-retry@2.2.0': - resolution: {integrity: sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-retry@3.0.15': - resolution: {integrity: sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==} + '@smithy/middleware-retry@3.0.31': + resolution: {integrity: sha512-yq9wawrJLYHAYFpChLujxRN4My+SiKXvZk9Ml/CvTdRSA8ew+hvuR5LT+mjSlSBv3c4XJrkN8CWegkBaeD0Vrg==} engines: {node: '>=16.0.0'} '@smithy/middleware-retry@3.0.7': resolution: {integrity: sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==} engines: {node: '>=16.0.0'} - '@smithy/middleware-serde@2.3.0': - resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-serde@3.0.11': + resolution: {integrity: sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==} + engines: {node: '>=16.0.0'} '@smithy/middleware-serde@3.0.3': resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} engines: {node: '>=16.0.0'} - '@smithy/middleware-stack@2.2.0': - resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-stack@3.0.11': + resolution: {integrity: sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==} + engines: {node: '>=16.0.0'} '@smithy/middleware-stack@3.0.3': resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} engines: {node: '>=16.0.0'} - '@smithy/node-config-provider@2.3.0': - resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} - engines: {node: '>=14.0.0'} + '@smithy/node-config-provider@3.1.12': + resolution: {integrity: sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==} + engines: {node: '>=16.0.0'} '@smithy/node-config-provider@3.1.3': resolution: {integrity: sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==} engines: {node: '>=16.0.0'} - '@smithy/node-config-provider@3.1.4': - resolution: {integrity: sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==} - engines: {node: '>=16.0.0'} - - '@smithy/node-http-handler@2.5.0': - resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} - engines: {node: '>=14.0.0'} - '@smithy/node-http-handler@3.1.1': resolution: {integrity: sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==} engines: {node: '>=16.0.0'} - '@smithy/node-http-handler@3.1.4': - resolution: {integrity: sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==} + '@smithy/node-http-handler@3.3.2': + resolution: {integrity: sha512-t4ng1DAd527vlxvOfKFYEe6/QFBcsj7WpNlWTyjorwXXcKw3XlltBGbyHfSJ24QT84nF+agDha9tNYpzmSRZPA==} engines: {node: '>=16.0.0'} - '@smithy/property-provider@2.2.0': - resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} - engines: {node: '>=14.0.0'} + '@smithy/property-provider@3.1.11': + resolution: {integrity: sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==} + engines: {node: '>=16.0.0'} '@smithy/property-provider@3.1.3': resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} engines: {node: '>=16.0.0'} - '@smithy/protocol-http@3.3.0': - resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} - engines: {node: '>=14.0.0'} - '@smithy/protocol-http@4.0.3': resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} engines: {node: '>=16.0.0'} - '@smithy/protocol-http@4.1.0': - resolution: {integrity: sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==} + '@smithy/protocol-http@4.1.8': + resolution: {integrity: sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==} engines: {node: '>=16.0.0'} - '@smithy/querystring-builder@2.2.0': - resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} - engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@3.0.11': + resolution: {integrity: sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==} + engines: {node: '>=16.0.0'} '@smithy/querystring-builder@3.0.3': resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} engines: {node: '>=16.0.0'} - '@smithy/querystring-parser@2.2.0': - resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} - engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@3.0.11': + resolution: {integrity: sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==} + engines: {node: '>=16.0.0'} '@smithy/querystring-parser@3.0.3': resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} engines: {node: '>=16.0.0'} - '@smithy/service-error-classification@2.1.5': - resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} - engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@3.0.11': + resolution: {integrity: sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==} + engines: {node: '>=16.0.0'} '@smithy/service-error-classification@3.0.3': resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} engines: {node: '>=16.0.0'} - '@smithy/shared-ini-file-loader@2.4.0': - resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} - engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@3.1.12': + resolution: {integrity: sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==} + engines: {node: '>=16.0.0'} '@smithy/shared-ini-file-loader@3.1.3': resolution: {integrity: sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==} engines: {node: '>=16.0.0'} - '@smithy/shared-ini-file-loader@3.1.4': - resolution: {integrity: sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==} - engines: {node: '>=16.0.0'} - - '@smithy/signature-v4@2.3.0': - resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} - engines: {node: '>=14.0.0'} - '@smithy/signature-v4@3.1.2': resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} engines: {node: '>=16.0.0'} - '@smithy/signature-v4@4.1.0': - resolution: {integrity: sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==} + '@smithy/signature-v4@4.2.4': + resolution: {integrity: sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@2.5.0': - resolution: {integrity: sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==} - engines: {node: '>=14.0.0'} - '@smithy/smithy-client@3.1.5': resolution: {integrity: sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@3.2.0': - resolution: {integrity: sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==} + '@smithy/smithy-client@3.5.1': + resolution: {integrity: sha512-PmjskH4Os1Eh3rd5vSsa5uVelZ4DRu+N5CBEgb9AT96hQSJGWSEb6pGxKV/PtKQSIp9ft3+KvnT8ViMKaguzgA==} engines: {node: '>=16.0.0'} - '@smithy/types@2.12.0': - resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} - engines: {node: '>=14.0.0'} - '@smithy/types@3.3.0': resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} engines: {node: '>=16.0.0'} - '@smithy/url-parser@2.2.0': - resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + '@smithy/types@3.7.2': + resolution: {integrity: sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.11': + resolution: {integrity: sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==} '@smithy/url-parser@3.0.3': resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} - '@smithy/util-base64@2.3.0': - resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} - engines: {node: '>=14.0.0'} - '@smithy/util-base64@3.0.0': resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} engines: {node: '>=16.0.0'} - '@smithy/util-body-length-browser@2.2.0': - resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} - '@smithy/util-body-length-browser@3.0.0': resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} - '@smithy/util-body-length-node@2.3.0': - resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} - engines: {node: '>=14.0.0'} - '@smithy/util-body-length-node@3.0.0': resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} engines: {node: '>=16.0.0'} @@ -1381,90 +1276,62 @@ packages: resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} engines: {node: '>=16.0.0'} - '@smithy/util-config-provider@2.3.0': - resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} - engines: {node: '>=14.0.0'} - '@smithy/util-config-provider@3.0.0': resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@2.2.0': - resolution: {integrity: sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-defaults-mode-browser@3.0.15': - resolution: {integrity: sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==} + '@smithy/util-defaults-mode-browser@3.0.31': + resolution: {integrity: sha512-eO+zkbqrPnmsagqzrmF7IJrCoU2wTQXWVYxMPqA9Oue55kw9WEvhyuw2XQzTVTCRcYsg6KgmV3YYhLlWQJfK1A==} engines: {node: '>= 10.0.0'} '@smithy/util-defaults-mode-browser@3.0.7': resolution: {integrity: sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@2.3.0': - resolution: {integrity: sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-defaults-mode-node@3.0.15': - resolution: {integrity: sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==} + '@smithy/util-defaults-mode-node@3.0.31': + resolution: {integrity: sha512-0/nJfpSpbGZOs6qs42wCe2TdjobbnnD4a3YUUlvTXSQqLy4qa63luDaV04hGvqSHP7wQ7/WGehbvHkDhMZd1MQ==} engines: {node: '>= 10.0.0'} '@smithy/util-defaults-mode-node@3.0.7': resolution: {integrity: sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==} engines: {node: '>= 10.0.0'} - '@smithy/util-endpoints@1.2.0': - resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} - engines: {node: '>= 14.0.0'} - '@smithy/util-endpoints@2.0.4': resolution: {integrity: sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==} engines: {node: '>=16.0.0'} - '@smithy/util-endpoints@2.0.5': - resolution: {integrity: sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==} + '@smithy/util-endpoints@2.1.7': + resolution: {integrity: sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==} engines: {node: '>=16.0.0'} - '@smithy/util-hex-encoding@2.2.0': - resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} - engines: {node: '>=14.0.0'} - '@smithy/util-hex-encoding@3.0.0': resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} engines: {node: '>=16.0.0'} - '@smithy/util-middleware@2.2.0': - resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} - engines: {node: '>=14.0.0'} + '@smithy/util-middleware@3.0.11': + resolution: {integrity: sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==} + engines: {node: '>=16.0.0'} '@smithy/util-middleware@3.0.3': resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} engines: {node: '>=16.0.0'} - '@smithy/util-retry@2.2.0': - resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} - engines: {node: '>= 14.0.0'} + '@smithy/util-retry@3.0.11': + resolution: {integrity: sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==} + engines: {node: '>=16.0.0'} '@smithy/util-retry@3.0.3': resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@2.2.0': - resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} - engines: {node: '>=14.0.0'} - '@smithy/util-stream@3.0.5': resolution: {integrity: sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@3.1.3': - resolution: {integrity: sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==} + '@smithy/util-stream@3.3.2': + resolution: {integrity: sha512-sInAqdiVeisUGYAv/FrXpmJ0b4WTFmciTRqzhb7wVuem9BHvhIG7tpiYHLDWrl2stOokNZpTTGqz3mzB2qFwXg==} engines: {node: '>=16.0.0'} - '@smithy/util-uri-escape@2.2.0': - resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} - engines: {node: '>=14.0.0'} - '@smithy/util-uri-escape@3.0.0': resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} engines: {node: '>=16.0.0'} @@ -1477,10 +1344,26 @@ packages: resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} engines: {node: '>=16.0.0'} + '@smithy/util-waiter@3.2.0': + resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==} + engines: {node: '>=16.0.0'} + '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tsconfig/node20@20.1.4': resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} @@ -1524,6 +1407,10 @@ packages: '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} @@ -1607,6 +1494,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1618,6 +1508,29 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + aws-cdk-lib@2.173.2: + resolution: {integrity: sha512-cL9+z8Pl3VZGoO7BwdsrFAOeud/vSl3at7OvmhihbNprMN15XuFUx/rViAU5OI1m92NbV4NBzYSLbSeCwYLNyw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + constructs: ^10.0.0 + bundledDependencies: + - '@balena/dockerignore' + - case + - fs-extra + - ignore + - jsonschema + - minimatch + - punycode + - semver + - table + - yaml + - mime-types + + aws-cdk@2.173.2: + resolution: {integrity: sha512-qyMU4FoRJdZDUpsOBqyRBALBjf5A2N/MaHKX9iJUkbTET+d+nR07x3ai4TcEES+8pqPFHMTKpQMRDXs9Py/15w==} + engines: {node: '>= 14.15.0'} + hasBin: true + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1687,6 +1600,11 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} + cdk@2.173.2: + resolution: {integrity: sha512-1hxu2ZmtKO8tHARjJ2gCL9WJgbxvDDDBsbuMb9+bRCu+VAOWvH/5DplJ9eJklh7IJWuvfVPTUw98qA9A/tJd9w==} + engines: {node: '>= 14.15.0'} + hasBin: true + chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -1815,6 +1733,9 @@ packages: resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} engines: {node: '>=12'} + constructs@10.4.2: + resolution: {integrity: sha512-wsNxBlAott2qg8Zv87q3eYZYgheb9lchtBfjHzzLHtXbttwSrHPs1NNQbBrmbb1YZvYg2+Vh0Dor76w4mFxJkA==} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -1824,6 +1745,9 @@ packages: typescript: optional: true + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-fetch@4.0.0: resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} @@ -1898,6 +1822,10 @@ packages: deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2042,6 +1970,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2487,6 +2420,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + marked-terminal@7.1.0: resolution: {integrity: sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==} engines: {node: '>=16.0.0'} @@ -3196,6 +3132,20 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -3322,6 +3272,9 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3468,6 +3421,10 @@ packages: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yoctocolors-cjs@2.1.2: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} @@ -3517,285 +3474,233 @@ snapshots: typescript: 5.3.3 validate-npm-package-name: 5.0.1 - '@aws-crypto/ie11-detection@3.0.0': - dependencies: - tslib: 1.14.1 + '@aws-cdk/asset-awscli-v1@2.2.215': {} + + '@aws-cdk/asset-kubectl-v20@2.1.3': {} + + '@aws-cdk/asset-node-proxy-agent-v6@2.1.0': {} - '@aws-crypto/sha256-browser@3.0.0': + '@aws-cdk/cloud-assembly-schema@38.0.1': {} + + '@aws-crypto/crc32@5.2.0': dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.714.0 + tslib: 2.6.3 '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.609.0 + '@aws-sdk/types': 3.714.0 '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 - '@aws-crypto/sha256-js@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.609.0 - tslib: 1.14.1 - '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.609.0 tslib: 2.6.3 - '@aws-crypto/supports-web-crypto@3.0.0': - dependencies: - tslib: 1.14.1 - '@aws-crypto/supports-web-crypto@5.2.0': dependencies: tslib: 2.6.3 - '@aws-crypto/util@3.0.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - '@aws-crypto/util@5.2.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/util-utf8': 2.3.0 tslib: 2.6.3 - '@aws-sdk/client-api-gateway@3.535.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-sdk-api-gateway': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-apigatewayv2@3.535.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@aws-sdk/client-api-gateway@3.716.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-sdk-api-gateway': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-stream': 3.3.2 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@aws-sdk/client-apigatewayv2@3.716.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-stream': 3.3.2 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)': + '@aws-sdk/client-lambda@3.716.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.632.0 - '@aws-sdk/core': 3.629.0 - '@aws-sdk/credential-provider-node': 3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.632.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.632.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0 - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.4.0 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.15 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/eventstream-serde-browser': 3.0.14 + '@smithy/eventstream-serde-config-resolver': 3.0.11 + '@smithy/eventstream-serde-node': 3.0.13 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.15 - '@smithy/util-defaults-mode-node': 3.0.15 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-stream': 3.3.2 '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.2.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.535.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -3843,148 +3748,94 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.632.0': + '@aws-sdk/client-sso@3.716.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.629.0 - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.632.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.632.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0 - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.4.0 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.15 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.15 - '@smithy/util-defaults-mode-node': 3.0.15 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.632.0': + '@aws-sdk/client-sts@3.716.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.632.0(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/core': 3.629.0 - '@aws-sdk/credential-provider-node': 3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/middleware-host-header': 3.620.0 - '@aws-sdk/middleware-logger': 3.609.0 - '@aws-sdk/middleware-recursion-detection': 3.620.0 - '@aws-sdk/middleware-user-agent': 3.632.0 - '@aws-sdk/region-config-resolver': 3.614.0 - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.632.0 - '@aws-sdk/util-user-agent-browser': 3.609.0 - '@aws-sdk/util-user-agent-node': 3.614.0 - '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.4.0 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/hash-node': 3.0.3 - '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.5 - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.15 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-node': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/middleware-host-header': 3.714.0 + '@aws-sdk/middleware-logger': 3.714.0 + '@aws-sdk/middleware-recursion-detection': 3.714.0 + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/region-config-resolver': 3.714.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@aws-sdk/util-user-agent-browser': 3.714.0 + '@aws-sdk/util-user-agent-node': 3.716.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-retry': 3.0.31 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.15 - '@smithy/util-defaults-mode-node': 3.0.15 - '@smithy/util-endpoints': 2.0.5 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/util-defaults-mode-browser': 3.0.31 + '@smithy/util-defaults-mode-node': 3.0.31 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.535.0': - dependencies: - '@smithy/core': 1.4.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.3 - '@aws-sdk/core@3.609.0': dependencies: '@smithy/core': 2.2.4 @@ -3995,26 +3846,20 @@ snapshots: fast-xml-parser: 4.2.5 tslib: 2.6.3 - '@aws-sdk/core@3.629.0': + '@aws-sdk/core@3.716.0': dependencies: - '@smithy/core': 2.4.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/signature-v4': 4.1.0 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 + '@aws-sdk/types': 3.714.0 + '@smithy/core': 2.5.5 + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/signature-v4': 4.2.4 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/util-middleware': 3.0.11 fast-xml-parser: 4.4.1 tslib: 2.6.3 - '@aws-sdk/credential-provider-env@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - '@aws-sdk/credential-provider-env@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 @@ -4022,23 +3867,12 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/credential-provider-env@3.620.1': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/credential-provider-http@3.535.0': + '@aws-sdk/credential-provider-env@3.716.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/credential-provider-http@3.609.0': @@ -4053,43 +3887,27 @@ snapshots: '@smithy/util-stream': 3.0.5 tslib: 2.6.3 - '@aws-sdk/credential-provider-http@3.622.0': + '@aws-sdk/credential-provider-http@3.716.0': dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.1.3 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/node-http-handler': 3.3.2 + '@smithy/property-provider': 3.1.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/util-stream': 3.3.2 tslib: 2.6.3 - '@aws-sdk/credential-provider-ini@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': - dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/credential-provider-ini@3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0)': + '@aws-sdk/credential-provider-ini@3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0)': dependencies: - '@aws-sdk/client-sts': 3.632.0 + '@aws-sdk/client-sts': 3.716.0 '@aws-sdk/credential-provider-env': 3.609.0 '@aws-sdk/credential-provider-http': 3.609.0 '@aws-sdk/credential-provider-process': 3.609.0 - '@aws-sdk/credential-provider-sso': 3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)) - '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.632.0) + '@aws-sdk/credential-provider-sso': 3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.716.0) '@aws-sdk/types': 3.609.0 '@smithy/credential-provider-imds': 3.1.3 '@smithy/property-provider': 3.1.3 @@ -4100,49 +3918,33 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-ini@3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0)': - dependencies: - '@aws-sdk/client-sts': 3.632.0 - '@aws-sdk/credential-provider-env': 3.620.1 - '@aws-sdk/credential-provider-http': 3.622.0 - '@aws-sdk/credential-provider-process': 3.620.1 - '@aws-sdk/credential-provider-sso': 3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)) - '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/types': 3.609.0 - '@smithy/credential-provider-imds': 3.2.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 + '@aws-sdk/credential-provider-ini@3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0)': + dependencies: + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/credential-provider-env': 3.716.0 + '@aws-sdk/credential-provider-http': 3.716.0 + '@aws-sdk/credential-provider-process': 3.716.0 + '@aws-sdk/credential-provider-sso': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/credential-provider-web-identity': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.714.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.535.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-http': 3.535.0 - '@aws-sdk/credential-provider-ini': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0)': + '@aws-sdk/credential-provider-node@3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0)': dependencies: '@aws-sdk/credential-provider-env': 3.609.0 '@aws-sdk/credential-provider-http': 3.609.0 - '@aws-sdk/credential-provider-ini': 3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0) + '@aws-sdk/credential-provider-ini': 3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) '@aws-sdk/credential-provider-process': 3.609.0 - '@aws-sdk/credential-provider-sso': 3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)) - '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.632.0) + '@aws-sdk/credential-provider-sso': 3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.716.0) '@aws-sdk/types': 3.609.0 '@smithy/credential-provider-imds': 3.1.3 '@smithy/property-provider': 3.1.3 @@ -4154,33 +3956,25 @@ snapshots: - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-node@3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0)': + '@aws-sdk/credential-provider-node@3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0)': dependencies: - '@aws-sdk/credential-provider-env': 3.620.1 - '@aws-sdk/credential-provider-http': 3.622.0 - '@aws-sdk/credential-provider-ini': 3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/credential-provider-process': 3.620.1 - '@aws-sdk/credential-provider-sso': 3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)) - '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/types': 3.609.0 - '@smithy/credential-provider-imds': 3.2.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 + '@aws-sdk/credential-provider-env': 3.716.0 + '@aws-sdk/credential-provider-http': 3.716.0 + '@aws-sdk/credential-provider-ini': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/credential-provider-process': 3.716.0 + '@aws-sdk/credential-provider-sso': 3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/credential-provider-web-identity': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.714.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - '@aws-sdk/credential-provider-process@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 @@ -4189,31 +3983,19 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/credential-provider-process@3.620.1': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/credential-provider-sso@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': + '@aws-sdk/credential-provider-process@3.716.0': dependencies: - '@aws-sdk/client-sso': 3.535.0 - '@aws-sdk/token-providers': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - '@aws-sdk/credential-provider-sso@3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))': + '@aws-sdk/credential-provider-sso@3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': dependencies: '@aws-sdk/client-sso': 3.609.0 - '@aws-sdk/token-providers': 3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)) + '@aws-sdk/token-providers': 3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.3 @@ -4223,51 +4005,35 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-sso@3.632.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))': + '@aws-sdk/credential-provider-sso@3.716.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': dependencies: - '@aws-sdk/client-sso': 3.632.0 - '@aws-sdk/token-providers': 3.614.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0)) - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 + '@aws-sdk/client-sso': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/token-providers': 3.714.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0)) + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': - dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.609.0(@aws-sdk/client-sts@3.632.0)': - dependencies: - '@aws-sdk/client-sts': 3.632.0 - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/credential-provider-web-identity@3.621.0(@aws-sdk/client-sts@3.632.0)': + '@aws-sdk/credential-provider-web-identity@3.609.0(@aws-sdk/client-sts@3.716.0)': dependencies: - '@aws-sdk/client-sts': 3.632.0 + '@aws-sdk/client-sts': 3.716.0 '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-host-header@3.535.0': + '@aws-sdk/credential-provider-web-identity@3.716.0(@aws-sdk/client-sts@3.716.0)': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/client-sts': 3.716.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/middleware-host-header@3.609.0': @@ -4277,17 +4043,11 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-host-header@3.620.0': + '@aws-sdk/middleware-host-header@3.714.0': dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/middleware-logger@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.714.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/middleware-logger@3.609.0': @@ -4296,11 +4056,10 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-recursion-detection@3.535.0': + '@aws-sdk/middleware-logger@3.714.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.714.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/middleware-recursion-detection@3.609.0': @@ -4310,26 +4069,18 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-recursion-detection@3.620.0': + '@aws-sdk/middleware-recursion-detection@3.714.0': dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 + '@aws-sdk/types': 3.714.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 tslib: 2.6.3 - '@aws-sdk/middleware-sdk-api-gateway@3.535.0': + '@aws-sdk/middleware-sdk-api-gateway@3.714.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - - '@aws-sdk/middleware-user-agent@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.714.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/middleware-user-agent@3.609.0': @@ -4340,21 +4091,14 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/middleware-user-agent@3.632.0': + '@aws-sdk/middleware-user-agent@3.716.0': dependencies: - '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-endpoints': 3.632.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/region-config-resolver@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 + '@aws-sdk/core': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@aws-sdk/util-endpoints': 3.714.0 + '@smithy/core': 2.5.5 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/region-config-resolver@3.609.0': @@ -4366,48 +4110,31 @@ snapshots: '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@aws-sdk/region-config-resolver@3.614.0': + '@aws-sdk/region-config-resolver@3.714.0': dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 + '@aws-sdk/types': 3.714.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 - tslib: 2.6.3 - - '@aws-sdk/token-providers@3.535.0(@aws-sdk/credential-provider-node@3.535.0)': - dependencies: - '@aws-sdk/client-sso-oidc': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@smithy/util-middleware': 3.0.11 tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - '@aws-sdk/token-providers@3.609.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))': + '@aws-sdk/token-providers@3.609.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': dependencies: - '@aws-sdk/client-sso-oidc': 3.632.0(@aws-sdk/client-sts@3.632.0) + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.632.0(@aws-sdk/client-sts@3.632.0))': + '@aws-sdk/token-providers@3.714.0(@aws-sdk/client-sso-oidc@3.716.0(@aws-sdk/client-sts@3.716.0))': dependencies: - '@aws-sdk/client-sso-oidc': 3.632.0(@aws-sdk/client-sts@3.632.0) - '@aws-sdk/types': 3.609.0 - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/types@3.535.0': - dependencies: - '@smithy/types': 2.12.0 + '@aws-sdk/client-sso-oidc': 3.716.0(@aws-sdk/client-sts@3.716.0) + '@aws-sdk/types': 3.714.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/types@3.609.0': @@ -4415,11 +4142,9 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/util-endpoints@3.535.0': + '@aws-sdk/types@3.714.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - '@smithy/util-endpoints': 1.2.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@aws-sdk/util-endpoints@3.609.0': @@ -4429,24 +4154,17 @@ snapshots: '@smithy/util-endpoints': 2.0.4 tslib: 2.6.3 - '@aws-sdk/util-endpoints@3.632.0': + '@aws-sdk/util-endpoints@3.714.0': dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/types': 3.3.0 - '@smithy/util-endpoints': 2.0.5 + '@aws-sdk/types': 3.714.0 + '@smithy/types': 3.7.2 + '@smithy/util-endpoints': 2.1.7 tslib: 2.6.3 '@aws-sdk/util-locate-window@3.568.0': dependencies: tslib: 2.6.3 - '@aws-sdk/util-user-agent-browser@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.3 - '@aws-sdk/util-user-agent-browser@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 @@ -4454,11 +4172,11 @@ snapshots: bowser: 2.11.0 tslib: 2.6.3 - '@aws-sdk/util-user-agent-node@3.535.0': + '@aws-sdk/util-user-agent-browser@3.714.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 + '@aws-sdk/types': 3.714.0 + '@smithy/types': 3.7.2 + bowser: 2.11.0 tslib: 2.6.3 '@aws-sdk/util-user-agent-node@3.609.0': @@ -4468,15 +4186,12 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@aws-sdk/util-user-agent-node@3.614.0': - dependencies: - '@aws-sdk/types': 3.609.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@aws-sdk/util-utf8-browser@3.259.0': + '@aws-sdk/util-user-agent-node@3.716.0': dependencies: + '@aws-sdk/middleware-user-agent': 3.716.0 + '@aws-sdk/types': 3.714.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@babel/code-frame@7.24.7': @@ -4545,6 +4260,10 @@ snapshots: '@colors/colors@1.5.0': optional: true + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -4720,6 +4439,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jsdevtools/ez-spawn@3.0.4': dependencies: call-me-maybe: 1.0.2 @@ -4936,51 +4660,32 @@ snapshots: '@sindresorhus/is@5.6.0': {} - '@smithy/abort-controller@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.3 - '@smithy/abort-controller@3.1.1': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/config-resolver@2.2.0': + '@smithy/abort-controller@3.1.9': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 - '@smithy/config-resolver@3.0.4': + '@smithy/config-resolver@3.0.13': dependencies: - '@smithy/node-config-provider': 3.1.3 - '@smithy/types': 3.3.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.3 + '@smithy/util-middleware': 3.0.11 tslib: 2.6.3 - '@smithy/config-resolver@3.0.5': + '@smithy/config-resolver@3.0.4': dependencies: - '@smithy/node-config-provider': 3.1.4 + '@smithy/node-config-provider': 3.1.3 '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/core@1.4.0': - dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.3 - '@smithy/core@2.2.4': dependencies: '@smithy/middleware-endpoint': 3.0.4 @@ -4992,27 +4697,17 @@ snapshots: '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/core@2.4.0': + '@smithy/core@2.5.5': dependencies: - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-retry': 3.0.15 - '@smithy/middleware-serde': 3.0.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 + '@smithy/middleware-serde': 3.0.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-middleware': 3.0.3 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-stream': 3.3.2 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/credential-provider-imds@2.3.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - tslib: 2.6.3 - '@smithy/credential-provider-imds@3.1.3': dependencies: '@smithy/node-config-provider': 3.1.3 @@ -5021,20 +4716,42 @@ snapshots: '@smithy/url-parser': 3.0.3 tslib: 2.6.3 - '@smithy/credential-provider-imds@3.2.0': + '@smithy/credential-provider-imds@3.2.8': dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + tslib: 2.6.3 + + '@smithy/eventstream-codec@3.1.10': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.7.2 + '@smithy/util-hex-encoding': 3.0.0 tslib: 2.6.3 - '@smithy/fetch-http-handler@2.5.0': + '@smithy/eventstream-serde-browser@3.0.14': dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 + '@smithy/eventstream-serde-universal': 3.0.13 + '@smithy/types': 3.7.2 + tslib: 2.6.3 + + '@smithy/eventstream-serde-config-resolver@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.3 + + '@smithy/eventstream-serde-node@3.0.13': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.13 + '@smithy/types': 3.7.2 + tslib: 2.6.3 + + '@smithy/eventstream-serde-universal@3.0.13': + dependencies: + '@smithy/eventstream-codec': 3.1.10 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/fetch-http-handler@3.2.0': @@ -5045,19 +4762,19 @@ snapshots: '@smithy/util-base64': 3.0.0 tslib: 2.6.3 - '@smithy/fetch-http-handler@3.2.4': + '@smithy/fetch-http-handler@4.1.2': dependencies: - '@smithy/protocol-http': 4.1.0 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/querystring-builder': 3.0.11 + '@smithy/types': 3.7.2 '@smithy/util-base64': 3.0.0 tslib: 2.6.3 - '@smithy/hash-node@2.2.0': + '@smithy/hash-node@3.0.11': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 + '@smithy/types': 3.7.2 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 '@smithy/hash-node@3.0.3': @@ -5067,9 +4784,9 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/invalid-dependency@2.2.0': + '@smithy/invalid-dependency@3.0.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/invalid-dependency@3.0.3': @@ -5085,10 +4802,10 @@ snapshots: dependencies: tslib: 2.6.3 - '@smithy/middleware-content-length@2.2.0': + '@smithy/middleware-content-length@3.0.13': dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/middleware-content-length@3.0.3': @@ -5097,22 +4814,6 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/middleware-content-length@3.0.5': - dependencies: - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@smithy/middleware-endpoint@2.5.0': - dependencies: - '@smithy/middleware-serde': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.3 - '@smithy/middleware-endpoint@3.0.4': dependencies: '@smithy/middleware-serde': 3.0.3 @@ -5123,37 +4824,26 @@ snapshots: '@smithy/util-middleware': 3.0.3 tslib: 2.6.3 - '@smithy/middleware-endpoint@3.1.0': + '@smithy/middleware-endpoint@3.2.6': dependencies: - '@smithy/middleware-serde': 3.0.3 - '@smithy/node-config-provider': 3.1.4 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-middleware': 3.0.3 + '@smithy/core': 2.5.5 + '@smithy/middleware-serde': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-middleware': 3.0.11 tslib: 2.6.3 - '@smithy/middleware-retry@2.2.0': + '@smithy/middleware-retry@3.0.31': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - tslib: 2.6.3 - uuid: 8.3.2 - - '@smithy/middleware-retry@3.0.15': - dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/protocol-http': 4.1.0 - '@smithy/service-error-classification': 3.0.3 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.3 + '@smithy/node-config-provider': 3.1.12 + '@smithy/protocol-http': 4.1.8 + '@smithy/service-error-classification': 3.0.11 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 tslib: 2.6.3 uuid: 9.0.1 @@ -5169,9 +4859,9 @@ snapshots: tslib: 2.6.3 uuid: 9.0.1 - '@smithy/middleware-serde@2.3.0': + '@smithy/middleware-serde@3.0.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/middleware-serde@3.0.3': @@ -5179,9 +4869,9 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/middleware-stack@2.2.0': + '@smithy/middleware-stack@3.0.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/middleware-stack@3.0.3': @@ -5189,11 +4879,11 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/node-config-provider@2.3.0': + '@smithy/node-config-provider@3.1.12': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/node-config-provider@3.1.3': @@ -5203,21 +4893,6 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/node-config-provider@3.1.4': - dependencies: - '@smithy/property-provider': 3.1.3 - '@smithy/shared-ini-file-loader': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@smithy/node-http-handler@2.5.0': - dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - '@smithy/node-http-handler@3.1.1': dependencies: '@smithy/abort-controller': 3.1.1 @@ -5226,17 +4901,17 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/node-http-handler@3.1.4': + '@smithy/node-http-handler@3.3.2': dependencies: - '@smithy/abort-controller': 3.1.1 - '@smithy/protocol-http': 4.1.0 - '@smithy/querystring-builder': 3.0.3 - '@smithy/types': 3.3.0 + '@smithy/abort-controller': 3.1.9 + '@smithy/protocol-http': 4.1.8 + '@smithy/querystring-builder': 3.0.11 + '@smithy/types': 3.7.2 tslib: 2.6.3 - '@smithy/property-provider@2.2.0': + '@smithy/property-provider@3.1.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/property-provider@3.1.3': @@ -5244,25 +4919,20 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/protocol-http@3.3.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.3 - '@smithy/protocol-http@4.0.3': dependencies: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/protocol-http@4.1.0': + '@smithy/protocol-http@4.1.8': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 - '@smithy/querystring-builder@2.2.0': + '@smithy/querystring-builder@3.0.11': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.2.0 + '@smithy/types': 3.7.2 + '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.3 '@smithy/querystring-builder@3.0.3': @@ -5271,9 +4941,9 @@ snapshots: '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.3 - '@smithy/querystring-parser@2.2.0': + '@smithy/querystring-parser@3.0.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/querystring-parser@3.0.3': @@ -5281,17 +4951,17 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/service-error-classification@2.1.5': + '@smithy/service-error-classification@3.0.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 '@smithy/service-error-classification@3.0.3': dependencies: - '@smithy/types': 3.3.0 + '@smithy/types': 3.7.2 - '@smithy/shared-ini-file-loader@2.4.0': + '@smithy/shared-ini-file-loader@3.1.12': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/shared-ini-file-loader@3.1.3': @@ -5299,21 +4969,6 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/shared-ini-file-loader@3.1.4': - dependencies: - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@smithy/signature-v4@2.3.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-uri-escape': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - '@smithy/signature-v4@3.1.2': dependencies: '@smithy/is-array-buffer': 3.0.0 @@ -5324,26 +4979,17 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/signature-v4@4.1.0': + '@smithy/signature-v4@4.2.4': dependencies: '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.3 + '@smithy/util-middleware': 3.0.11 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/smithy-client@2.5.0': - dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.3 - '@smithy/smithy-client@3.1.5': dependencies: '@smithy/middleware-endpoint': 3.0.4 @@ -5353,27 +4999,28 @@ snapshots: '@smithy/util-stream': 3.0.5 tslib: 2.6.3 - '@smithy/smithy-client@3.2.0': + '@smithy/smithy-client@3.5.1': dependencies: - '@smithy/middleware-endpoint': 3.1.0 - '@smithy/middleware-stack': 3.0.3 - '@smithy/protocol-http': 4.1.0 - '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.1.3 + '@smithy/core': 2.5.5 + '@smithy/middleware-endpoint': 3.2.6 + '@smithy/middleware-stack': 3.0.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + '@smithy/util-stream': 3.3.2 tslib: 2.6.3 - '@smithy/types@2.12.0': + '@smithy/types@3.3.0': dependencies: tslib: 2.6.3 - '@smithy/types@3.3.0': + '@smithy/types@3.7.2': dependencies: tslib: 2.6.3 - '@smithy/url-parser@2.2.0': + '@smithy/url-parser@3.0.11': dependencies: - '@smithy/querystring-parser': 2.2.0 - '@smithy/types': 2.12.0 + '@smithy/querystring-parser': 3.0.11 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/url-parser@3.0.3': @@ -5382,30 +5029,16 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-base64@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/util-body-length-browser@2.2.0': - dependencies: - tslib: 2.6.3 - '@smithy/util-body-length-browser@3.0.0': dependencies: tslib: 2.6.3 - '@smithy/util-body-length-node@2.3.0': - dependencies: - tslib: 2.6.3 - '@smithy/util-body-length-node@3.0.0': dependencies: tslib: 2.6.3 @@ -5420,27 +5053,15 @@ snapshots: '@smithy/is-array-buffer': 3.0.0 tslib: 2.6.3 - '@smithy/util-config-provider@2.3.0': - dependencies: - tslib: 2.6.3 - '@smithy/util-config-provider@3.0.0': dependencies: tslib: 2.6.3 - '@smithy/util-defaults-mode-browser@2.2.0': + '@smithy/util-defaults-mode-browser@3.0.31': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.3 - - '@smithy/util-defaults-mode-browser@3.0.15': - dependencies: - '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 + '@smithy/property-provider': 3.1.11 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 bowser: 2.11.0 tslib: 2.6.3 @@ -5452,24 +5073,14 @@ snapshots: bowser: 2.11.0 tslib: 2.6.3 - '@smithy/util-defaults-mode-node@2.3.0': + '@smithy/util-defaults-mode-node@3.0.31': dependencies: - '@smithy/config-resolver': 2.2.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - - '@smithy/util-defaults-mode-node@3.0.15': - dependencies: - '@smithy/config-resolver': 3.0.5 - '@smithy/credential-provider-imds': 3.2.0 - '@smithy/node-config-provider': 3.1.4 - '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.2.0 - '@smithy/types': 3.3.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/smithy-client': 3.5.1 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/util-defaults-mode-node@3.0.7': @@ -5482,35 +5093,25 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-endpoints@1.2.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.3 - '@smithy/util-endpoints@2.0.4': dependencies: '@smithy/node-config-provider': 3.1.3 '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-endpoints@2.0.5': - dependencies: - '@smithy/node-config-provider': 3.1.4 - '@smithy/types': 3.3.0 - tslib: 2.6.3 - - '@smithy/util-hex-encoding@2.2.0': + '@smithy/util-endpoints@2.1.7': dependencies: + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/util-hex-encoding@3.0.0': dependencies: tslib: 2.6.3 - '@smithy/util-middleware@2.2.0': + '@smithy/util-middleware@3.0.11': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/util-middleware@3.0.3': @@ -5518,10 +5119,10 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-retry@2.2.0': + '@smithy/util-retry@3.0.11': dependencies: - '@smithy/service-error-classification': 2.1.5 - '@smithy/types': 2.12.0 + '@smithy/service-error-classification': 3.0.11 + '@smithy/types': 3.7.2 tslib: 2.6.3 '@smithy/util-retry@3.0.3': @@ -5530,17 +5131,6 @@ snapshots: '@smithy/types': 3.3.0 tslib: 2.6.3 - '@smithy/util-stream@2.2.0': - dependencies: - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.3 - '@smithy/util-stream@3.0.5': dependencies: '@smithy/fetch-http-handler': 3.2.0 @@ -5552,21 +5142,17 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/util-stream@3.1.3': + '@smithy/util-stream@3.3.2': dependencies: - '@smithy/fetch-http-handler': 3.2.4 - '@smithy/node-http-handler': 3.1.4 - '@smithy/types': 3.3.0 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/node-http-handler': 3.3.2 + '@smithy/types': 3.7.2 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 - '@smithy/util-uri-escape@2.2.0': - dependencies: - tslib: 2.6.3 - '@smithy/util-uri-escape@3.0.0': dependencies: tslib: 2.6.3 @@ -5581,10 +5167,24 @@ snapshots: '@smithy/util-buffer-from': 3.0.0 tslib: 2.6.3 + '@smithy/util-waiter@3.2.0': + dependencies: + '@smithy/abort-controller': 3.1.9 + '@smithy/types': 3.7.2 + tslib: 2.6.3 + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@tsconfig/node20@20.1.4': {} '@types/estree@1.0.5': {} @@ -5659,6 +5259,10 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + acorn@8.14.0: {} aggregate-error@4.0.1: @@ -5717,12 +5321,26 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + arg@4.1.3: {} + argparse@2.0.1: {} array-union@2.1.0: {} assertion-error@2.0.1: {} + aws-cdk-lib@2.173.2(constructs@10.4.2): + dependencies: + '@aws-cdk/asset-awscli-v1': 2.2.215 + '@aws-cdk/asset-kubectl-v20': 2.1.3 + '@aws-cdk/asset-node-proxy-agent-v6': 2.1.0 + '@aws-cdk/cloud-assembly-schema': 38.0.1 + constructs: 10.4.2 + + aws-cdk@2.173.2: + optionalDependencies: + fsevents: 2.3.2 + balanced-match@1.0.2: {} base64-js@1.5.1: {} @@ -5797,6 +5415,10 @@ snapshots: camelcase@7.0.1: {} + cdk@2.173.2: + dependencies: + aws-cdk: 2.173.2 + chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -5933,6 +5555,8 @@ snapshots: write-file-atomic: 3.0.3 xdg-basedir: 5.1.0 + constructs@10.4.2: {} + cosmiconfig@8.3.6(typescript@5.5.3): dependencies: import-fresh: 3.3.0 @@ -5942,6 +5566,8 @@ snapshots: optionalDependencies: typescript: 5.5.3 + create-require@1.1.1: {} + cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 @@ -6006,6 +5632,8 @@ snapshots: deprecation@2.3.1: {} + diff@4.0.2: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -6190,6 +5818,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -6635,6 +6266,8 @@ snapshots: dependencies: semver: 7.6.2 + make-error@1.3.6: {} + marked-terminal@7.1.0(marked@9.1.6): dependencies: ansi-escapes: 7.0.0 @@ -6959,12 +6592,13 @@ snapshots: mlly: 1.7.3 pathe: 1.1.2 - postcss-load-config@4.0.2(postcss@8.4.41): + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.5.3)): dependencies: lilconfig: 3.1.2 yaml: 2.4.5 optionalDependencies: postcss: 8.4.41 + ts-node: 10.9.2(@types/node@22.9.0)(typescript@5.5.3) postcss@8.4.41: dependencies: @@ -7351,11 +6985,29 @@ snapshots: ts-interface-checker@0.1.13: {} + ts-node@10.9.2(@types/node@22.9.0)(typescript@5.5.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.9.0 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + tslib@1.14.1: {} tslib@2.6.3: {} - tsup@8.1.0(postcss@8.4.41)(typescript@5.5.3): + tsup@8.1.0(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.5.3))(typescript@5.5.3): dependencies: bundle-require: 4.2.1(esbuild@0.21.5) cac: 6.7.14 @@ -7365,7 +7017,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.5.3)) resolve-from: 5.0.0 rollup: 4.18.0 source-map: 0.8.0-beta.0 @@ -7454,6 +7106,8 @@ snapshots: uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -7609,6 +7263,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 20.2.9 + yn@3.1.1: {} + yoctocolors-cjs@2.1.2: {} zod-package-json@1.0.3: diff --git a/src/__tests__/create-signed-fetcher.test.ts b/src/__tests__/create-signed-fetcher.test.ts index 15dee75..6b60380 100644 --- a/src/__tests__/create-signed-fetcher.test.ts +++ b/src/__tests__/create-signed-fetcher.test.ts @@ -1,15 +1,6 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { type SignedFetcherOptions, createSignedFetcher } from "../create-signed-fetcher.js"; -import { - url, - bodyFixture, - credentials, - date, - getSignedHeaders, - headersSigned, - region, - service, -} from "./__fixtures__.js"; +import { url, bodyFixture, credentials, date, getSignedHeaders, headersSigned, region, service } from "./fixtures.js"; const fetchMock = vi.fn(fetch); let signedFetch: typeof fetch; diff --git a/src/__tests__/__fixtures__.ts b/src/__tests__/fixtures.ts similarity index 100% rename from src/__tests__/__fixtures__.ts rename to src/__tests__/fixtures.ts diff --git a/src/__tests__/parse-request.test.ts b/src/__tests__/parse-request.test.ts index 932842b..cb94e97 100644 --- a/src/__tests__/parse-request.test.ts +++ b/src/__tests__/parse-request.test.ts @@ -1,7 +1,7 @@ import "cross-fetch/polyfill"; import { describe, expect, it } from "vitest"; import { parseRequest } from "../parse-request.js"; -import { url } from "./__fixtures__.js"; +import { url } from "./fixtures.js"; describe("parseRequest", () => { describe("string input", () => { diff --git a/src/__tests__/sign-request.test.ts b/src/__tests__/sign-request.test.ts index f9632c1..2f4412e 100644 --- a/src/__tests__/sign-request.test.ts +++ b/src/__tests__/sign-request.test.ts @@ -1,15 +1,6 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { type SignRequestOptions, signRequest } from "../sign-request.js"; -import { - url, - bodyFixture, - credentials, - date, - getSignedHeaders, - headersSigned, - region, - service, -} from "./__fixtures__.js"; +import { url, bodyFixture, credentials, date, getSignedHeaders, headersSigned, region, service } from "./fixtures.js"; declare global { interface RequestInit { diff --git a/test/aws-api-gateway/index.test.ts b/test/aws-api-gateway/index.test.ts deleted file mode 100644 index 0a62514..0000000 --- a/test/aws-api-gateway/index.test.ts +++ /dev/null @@ -1,272 +0,0 @@ -import { - APIGatewayClient, - CreateDeploymentCommand, - CreateResourceCommand, - CreateRestApiCommand, - DeleteRestApiCommand, - GetResourcesCommand, - GetRestApisCommand, - PutIntegrationCommand, - PutIntegrationResponseCommand, - PutMethodCommand, - PutMethodResponseCommand, -} from "@aws-sdk/client-api-gateway"; -import "cross-fetch/polyfill"; -import { beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { createSignedFetcher, signRequest } from "../../src/index.js"; - -const SERVICE = "execute-api"; -const REGION = "us-east-1"; -const STAGE = "test"; -const API_NAME = "aws-sigv4-fetch"; -const API_RESPONSE = { foo: "bar" }; -const paths = ["/mock", "/mock/foo", "/mock/foo-*"]; - -let apiRootUrl = ""; -let signedFetch: typeof fetch; - -beforeAll(async () => { - const client = new APIGatewayClient({ region: REGION }); - let restApiId: string | undefined; - - const deleteApi = async (restApiId?: string) => { - if (!restApiId) return; - const deleteRestApiCommand = new DeleteRestApiCommand({ - restApiId: restApiId, - }); - await client.send(deleteRestApiCommand); - }; - - const findApi = async (apiName: string) => { - const apisResponse = await client.send(new GetRestApisCommand({})); - const api = apisResponse.items?.find((api) => api.name === apiName); - return api; - }; - - const createApi = async (apiName: string, response: Record) => { - const api = await client.send( - new CreateRestApiCommand({ - name: apiName, - description: `${apiName}: Mock REST API for testing with IAM authentication`, - }), - ); - - const restApiId = api.id; - if (!restApiId) throw new Error("API not created"); - - const resourcesResponse = await client.send( - new GetResourcesCommand({ - restApiId: restApiId, - }), - ); - const rootResource = resourcesResponse.items?.find((item) => item.path === "/"); - - const rootResourceId = rootResource?.id; - if (!rootResourceId) throw new Error("Root resource not found"); - - const resourceCreationResponse = await client.send( - new CreateResourceCommand({ - restApiId: restApiId, - parentId: rootResourceId, - pathPart: "mock", - }), - ); - const mockResourceId = resourceCreationResponse.id; - if (!mockResourceId) throw new Error("Resource not found"); - - const httpMethods = ["GET", "POST"]; - - // resource /mock - for (const httpMethod of httpMethods) { - await client.send( - new PutMethodCommand({ - restApiId, - resourceId: mockResourceId, - httpMethod, - authorizationType: "AWS_IAM", - }), - ); - - await client.send( - new PutIntegrationCommand({ - restApiId, - resourceId: mockResourceId, - httpMethod, - type: "MOCK", - requestTemplates: { - "application/json": '{"statusCode": 200}', - }, - }), - ); - - await client.send( - new PutIntegrationResponseCommand({ - restApiId, - resourceId: mockResourceId, - httpMethod, - statusCode: "200", - responseTemplates: { - "application/json": JSON.stringify(response), - }, - }), - ); - - await client.send( - new PutMethodResponseCommand({ - restApiId, - resourceId: mockResourceId, - httpMethod, - statusCode: "200", - responseModels: { - "application/json": "Empty", - }, - }), - ); - } - - const proxyResourceCreationResponse = await client.send( - new CreateResourceCommand({ - restApiId: restApiId, - parentId: mockResourceId, - pathPart: "{proxy+}", - }), - ); - const proxyResourceId = proxyResourceCreationResponse.id; - if (!proxyResourceId) throw new Error("Proxy resource not found"); - - // resource /mock/{proxy+} - for (const httpMethod of httpMethods) { - await client.send( - new PutMethodCommand({ - restApiId, - resourceId: proxyResourceId, - httpMethod, - authorizationType: "AWS_IAM", - }), - ); - - await client.send( - new PutIntegrationCommand({ - restApiId, - resourceId: proxyResourceId, - httpMethod, - type: "MOCK", - requestTemplates: { - "application/json": '{"statusCode": 200}', - }, - }), - ); - - await client.send( - new PutIntegrationResponseCommand({ - restApiId, - resourceId: proxyResourceId, - httpMethod, - statusCode: "200", - responseTemplates: { - "application/json": JSON.stringify(response), - }, - }), - ); - - await client.send( - new PutMethodResponseCommand({ - restApiId, - resourceId: proxyResourceId, - httpMethod, - statusCode: "200", - responseModels: { - "application/json": "Empty", - }, - }), - ); - } - - const deploymentResponse = await client.send( - new CreateDeploymentCommand({ - restApiId: restApiId, - stageName: "test", - }), - ); - const deploymentId = deploymentResponse.id; - if (!deploymentId) throw new Error("Deployment not found"); - - return api; - }; - - try { - // doesn't work on CI if tests are run in parallel - let api = await findApi(API_NAME); - if (!api?.id) api = await createApi(API_NAME, API_RESPONSE); - - restApiId = api.id; - if (!restApiId) throw new Error("API not created"); - - apiRootUrl = `https://${restApiId}.execute-api.${REGION}.amazonaws.com/${STAGE}`; - } catch (error) { - console.error("Error setting up the REST API: ", error); - throw error; - } - - return async () => { - // await deleteApi(restApiId); - }; -}); - -beforeEach(() => { - signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); -}); - -describe("APIGateway", () => { - beforeAll(async () => { - if (!apiRootUrl) throw new Error("API URL not set"); - }); - - describe("GET", () => { - describe.each(paths)("Path: %s", async (path) => { - it("should fetch with string", async () => { - const response = await signedFetch(`${apiRootUrl}${path}`, { - method: "GET", - }); - expect(response.status).toBe(200); - - const data = await response.json(); - expect(data).toEqual(API_RESPONSE); - }); - - it("should throw an error for unsigned fetch", async () => { - const response = await fetch(`${apiRootUrl}/mock`, { - method: "GET", - }); - - expect(response.status).toBe(403); - expect(response.statusText).toBe("Forbidden"); - }); - }); - }); - - describe("POST", () => { - describe.each(paths)("Path: %s", async (path) => { - it("should fetch with string", async () => { - const response = await signedFetch(`${apiRootUrl}${path}`, { - method: "POST", - body: JSON.stringify({}), - headers: { - "Content-Type": "application/json", - }, - }); - expect(response.status).toBe(200); - - const data = await response.json(); - expect(data).toEqual(API_RESPONSE); - }); - - it("should throw an error for unsigned fetch", async () => { - const response = await fetch(`${apiRootUrl}/mock`, { method: "POST" }); - - expect(response.status).toBe(403); - expect(response.statusText).toBe("Forbidden"); - }); - }); - }); -}); diff --git a/test/aws-api-gateway/package.json b/test/aws-api-gateway/package.json deleted file mode 100644 index 3ee9cf0..0000000 --- a/test/aws-api-gateway/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "type": "module", - "scripts": { - "test": "vitest" - }, - "dependencies": { - "@aws-sdk/client-api-gateway": "^3.535.0", - "@aws-sdk/client-apigatewayv2": "^3.535.0" - } -} diff --git a/test/aws-api-gateway/pnpm-lock.yaml b/test/aws-api-gateway/pnpm-lock.yaml deleted file mode 100644 index c270087..0000000 --- a/test/aws-api-gateway/pnpm-lock.yaml +++ /dev/null @@ -1,960 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@aws-sdk/client-api-gateway': - specifier: ^3.535.0 - version: 3.535.0 - '@aws-sdk/client-apigatewayv2': - specifier: ^3.535.0 - version: 3.535.0 - -packages: - - /@aws-crypto/crc32@3.0.0: - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/ie11-detection@3.0.0: - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - dependencies: - tslib: 1.14.1 - dev: false - - /@aws-crypto/sha256-browser@3.0.0: - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-locate-window': 3.535.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/sha256-js@3.0.0: - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - tslib: 1.14.1 - dev: false - - /@aws-crypto/supports-web-crypto@3.0.0: - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - dependencies: - tslib: 1.14.1 - dev: false - - /@aws-crypto/util@3.0.0: - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: false - - /@aws-sdk/client-api-gateway@3.535.0: - resolution: {integrity: sha512-QYHP4T3lA4kQSPP4eWM0v7Lf+rQmOQbsB6YGX/0ggdBaoW6PJxUtcitLivj0dxb9ORZonNG6kFVxwpQVvSjGSw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-sdk-api-gateway': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-apigatewayv2@3.535.0: - resolution: {integrity: sha512-NEDWzr+JzymEXYzbazcng/9i2jh5RTZyUMVAoUgmAs6fot40pes9kGhjwHrUwrwFeCDDbFx2sDmrtse4hQ/AFA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-sso-oidc@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-sso@3.535.0: - resolution: {integrity: sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/client-sts@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.535.0 - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.535.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.535.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.0 - '@smithy/util-defaults-mode-node': 2.3.0 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/core@3.535.0: - resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/core': 1.4.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-env@3.535.0: - resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-http@3.535.0: - resolution: {integrity: sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-ini@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/credential-provider-node@3.535.0: - resolution: {integrity: sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-http': 3.535.0 - '@aws-sdk/credential-provider-ini': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: false - - /@aws-sdk/credential-provider-process@3.535.0: - resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/credential-provider-sso@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sso': 3.535.0 - '@aws-sdk/token-providers': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/credential-provider-web-identity@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/middleware-host-header@3.535.0: - resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-logger@3.535.0: - resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-recursion-detection@3.535.0: - resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-sdk-api-gateway@3.535.0: - resolution: {integrity: sha512-O4cwxaI9zTdCUMRFtPXpTXBhZ98Zc93+TouOJPxbNpalOI0dG1r4Ty5s4rK6N/4RW9nSWWTqyfZa2b72q4HnBw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/middleware-user-agent@3.535.0: - resolution: {integrity: sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/region-config-resolver@3.535.0: - resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/token-providers@3.535.0(@aws-sdk/credential-provider-node@3.535.0): - resolution: {integrity: sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-sso-oidc': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt - dev: false - - /@aws-sdk/types@3.535.0: - resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-endpoints@3.535.0: - resolution: {integrity: sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - '@smithy/util-endpoints': 1.2.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-locate-window@3.535.0: - resolution: {integrity: sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-user-agent-browser@3.535.0: - resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-user-agent-node@3.535.0: - resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/abort-controller@2.2.0: - resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/config-resolver@2.2.0: - resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/core@1.4.0: - resolution: {integrity: sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 - '@smithy/middleware-serde': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/credential-provider-imds@2.3.0: - resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/eventstream-codec@2.2.0: - resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/fetch-http-handler@2.5.0: - resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} - dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/hash-node@2.2.0: - resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/invalid-dependency@2.2.0: - resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/is-array-buffer@2.2.0: - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/middleware-content-length@2.2.0: - resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/middleware-endpoint@2.5.0: - resolution: {integrity: sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-serde': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/middleware-retry@2.2.0: - resolution: {integrity: sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - tslib: 2.6.2 - uuid: 8.3.2 - dev: false - - /@smithy/middleware-serde@2.3.0: - resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/middleware-stack@2.2.0: - resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/node-config-provider@2.3.0: - resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/node-http-handler@2.5.0: - resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/property-provider@2.2.0: - resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/protocol-http@3.3.0: - resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/querystring-builder@2.2.0: - resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/querystring-parser@2.2.0: - resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/service-error-classification@2.1.5: - resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - dev: false - - /@smithy/shared-ini-file-loader@2.4.0: - resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/signature-v4@2.2.0: - resolution: {integrity: sha512-+B5TNzj/fRZzVW3z8UUJOkNx15+4E0CLuvJmJUA1JUIZFp3rdJ/M2H5r2SqltaVPXL0oIxv/6YK92T9TsFGbFg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/eventstream-codec': 2.2.0 - '@smithy/is-array-buffer': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-uri-escape': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/smithy-client@2.5.0: - resolution: {integrity: sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/types@2.12.0: - resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/url-parser@2.2.0: - resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} - dependencies: - '@smithy/querystring-parser': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-base64@2.3.0: - resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-body-length-browser@2.2.0: - resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-body-length-node@2.3.0: - resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-buffer-from@2.2.0: - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-config-provider@2.3.0: - resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-defaults-mode-browser@2.2.0: - resolution: {integrity: sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==} - engines: {node: '>= 10.0.0'} - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-defaults-mode-node@2.3.0: - resolution: {integrity: sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==} - engines: {node: '>= 10.0.0'} - dependencies: - '@smithy/config-resolver': 2.2.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-endpoints@1.2.0: - resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} - engines: {node: '>= 14.0.0'} - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-hex-encoding@2.2.0: - resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-middleware@2.2.0: - resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-retry@2.2.0: - resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} - engines: {node: '>= 14.0.0'} - dependencies: - '@smithy/service-error-classification': 2.1.5 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-stream@2.2.0: - resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - dev: false - - /@smithy/util-uri-escape@2.2.0: - resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@smithy/util-utf8@2.3.0: - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.2 - dev: false - - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false - - /fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false diff --git a/test/aws-api-gateway/tsconfig.json b/test/aws-api-gateway/tsconfig.json deleted file mode 100644 index 67b2735..0000000 --- a/test/aws-api-gateway/tsconfig.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - "module": "Node16" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/test/aws-api-gateway/vitest.config.mts b/test/aws-api-gateway/vitest.config.mts deleted file mode 100644 index 12a3f0e..0000000 --- a/test/aws-api-gateway/vitest.config.mts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - name: "e2e/aws-api-gateway", - }, -}); diff --git a/test/aws-iam/index.test.ts b/test/aws-iam/index.test.ts deleted file mode 100644 index e3d3c7b..0000000 --- a/test/aws-iam/index.test.ts +++ /dev/null @@ -1,179 +0,0 @@ -import "cross-fetch/polyfill"; -import { beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { createSignedFetcher } from "../../src/index.js"; - -const SERVICE = "iam"; -const REGION = "us-east-1"; - -let signedFetch: typeof fetch; - -beforeAll(() => {}); - -beforeEach(() => { - signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); -}); - -describe("IAM", () => { - describe("GET", () => { - const url = "https://iam.amazonaws.com/?Action=GetUser&Version=2010-05-08"; - - it("should fetch with string", async () => { - const response = await signedFetch(url); - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should fetch with URL", async () => { - const response = await signedFetch(new URL(url)); - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should fetch with Request", async () => { - const response = await signedFetch(new Request(url)); - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should fetch with additional headers", async () => { - const response = await signedFetch(url, { - method: "GET", - headers: { - "x-amz-test-header": "test-value", - "x-api-key": "test-api-key", - }, - }); - - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should abort request", async () => { - const controller = new AbortController(); - const signal = controller.signal; - - const response = signedFetch(url, { - method: "GET", - signal, - }); - - controller.abort(); - - await expect(response).rejects.toThrow(); - }); - - it("should throw an error for unsigned fetch", async () => { - const response = await fetch(url, { - method: "GET", - }); - - expect(response.status).toBe(403); - expect(response.statusText).toBe("Forbidden"); - }); - }); - - describe("POST", () => { - const url = "https://iam.amazonaws.com/"; - const bodies = ["Action=GetUser&Version=2010-05-08"]; - - describe.each(bodies)("Body: %s", (body) => { - it("should fetch with string", async () => { - const response = await signedFetch(url, { - method: "POST", - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - }, - }); - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should fetch with URL", async () => { - const response = await signedFetch(new URL(url), { - method: "POST", - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - }, - }); - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should fetch with Request", async () => { - const response = await signedFetch(new Request(url), { - method: "POST", - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - }, - }); - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should fetch with additional headers", async () => { - const response = await signedFetch(url, { - method: "POST", - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - "x-amz-test-header": "test-value", - "x-api-key": "test-api-key", - }, - }); - - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should abort request", async () => { - const controller = new AbortController(); - const signal = controller.signal; - - const response = signedFetch(url, { - method: "POST", - signal, - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - }, - }); - - controller.abort(); - - await expect(response).rejects.toThrow(); - }); - - it("should throw an error for unsigned fetch", async () => { - const response = await fetch(url, { - method: "POST", - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - }, - }); - - expect(response.status).toBe(403); - expect(response.statusText).toBe("Forbidden"); - }); - }); - }); -}); diff --git a/test/aws-iam/package.json b/test/aws-iam/package.json deleted file mode 100644 index e532f86..0000000 --- a/test/aws-iam/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "module", - "scripts": { - "test": "vitest" - } -} diff --git a/test/aws-iam/tsconfig.json b/test/aws-iam/tsconfig.json deleted file mode 100644 index 67b2735..0000000 --- a/test/aws-iam/tsconfig.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - "module": "Node16" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/test/aws/__tests__/api-gateway.test.ts b/test/aws/__tests__/api-gateway.test.ts new file mode 100644 index 0000000..60a3019 --- /dev/null +++ b/test/aws/__tests__/api-gateway.test.ts @@ -0,0 +1,78 @@ +import { APIGatewayClient, GetRestApisCommand } from "@aws-sdk/client-api-gateway"; +import { describe, expect, it } from "vitest"; +import { createSignedFetcher } from "../../dist/index.js"; +import { API_NAME, REGION, RESOURCE, RESPONSE, SERVICE, STAGE } from "../lib/api-gateway-test-stack.js"; + +const client = new APIGatewayClient({ region: REGION }); +const response = await client.send(new GetRestApisCommand({})); +const api = response.items?.find((api) => api.name === API_NAME); +if (!api) throw new Error("API not found"); + +const restApiId = api.id; + +const apiRootUrl = `https://${restApiId}.execute-api.${REGION}.amazonaws.com/${STAGE}`; +console.log("API URL:", apiRootUrl); + +const paths = [`/${RESOURCE}`, `/${RESOURCE}/foo`, `/${RESOURCE}/foo-*`]; + +describe("APIGateway", () => { + describe("GET", () => { + describe.each(paths)("Path: %s", async (path) => { + it("should fetch with string", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(`${apiRootUrl}${path}`, { + method: "GET", + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should throw an error for unsigned fetch", async () => { + const response = await fetch(`${apiRootUrl}/mock`, { + method: "GET", + }); + + expect(response.status).toBe(403); + expect(response.statusText).toBe("Forbidden"); + }); + }); + }); + + describe("POST", () => { + describe.each(paths)("Path: %s", async (path) => { + it("should fetch with string", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(`${apiRootUrl}${path}`, { + method: "POST", + body: JSON.stringify({}), + headers: { + "Content-Type": "application/json", + }, + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should throw an error for unsigned fetch", async () => { + const response = await fetch(`${apiRootUrl}/mock`, { method: "POST" }); + + expect(response.status).toBe(403); + expect(response.statusText).toBe("Forbidden"); + }); + }); + }); +}); diff --git a/test/aws/__tests__/iam.test.ts b/test/aws/__tests__/iam.test.ts new file mode 100644 index 0000000..08ed036 --- /dev/null +++ b/test/aws/__tests__/iam.test.ts @@ -0,0 +1,230 @@ +import "cross-fetch/polyfill"; +import { describe, expect, it } from "vitest"; +import { createSignedFetcher } from "../../dist/index.js"; + +const SERVICE = "iam"; +const REGION = "us-east-1"; + +describe("IAM", () => { + describe("GET", () => { + const url = "https://iam.amazonaws.com/?Action=GetUser&Version=2010-05-08"; + + it("should fetch with string", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(url); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should fetch with URL", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new URL(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should fetch with Request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new Request(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should fetch with additional headers", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(url, { + method: "GET", + headers: { + "x-amz-test-header": "test-value", + "x-api-key": "test-api-key", + }, + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should abort request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + const controller = new AbortController(); + const signal = controller.signal; + + // Act + const response = signedFetch(url, { + method: "GET", + signal, + }); + + controller.abort(); + + // Assert + await expect(response).rejects.toThrow(); + }); + + it("should throw an error for unsigned fetch", async () => { + // Arrange + + // Act + const response = await fetch(url, { + method: "GET", + }); + + // Assert + expect(response.status).toBe(403); + expect(response.statusText).toBe("Forbidden"); + }); + }); + + describe("POST", () => { + const url = "https://iam.amazonaws.com/"; + const body = "Action=GetUser&Version=2010-05-08"; + + it("should fetch with string", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(url, { + method: "POST", + body, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", + }, + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should fetch with URL", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new URL(url), { + method: "POST", + body, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", + }, + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should fetch with Request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new Request(url), { + method: "POST", + body, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", + }, + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should fetch with additional headers", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(url, { + method: "POST", + body, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", + "x-amz-test-header": "test-value", + "x-api-key": "test-api-key", + }, + }); + + // Assert + expect(response.status).toBe(200); + + const data = await response.text(); + expect(data).toContain(""); + }); + + it("should abort request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + const controller = new AbortController(); + const signal = controller.signal; + + // Act + const response = signedFetch(url, { + method: "POST", + signal, + body, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", + }, + }); + + controller.abort(); + + await expect(response).rejects.toThrow(); + }); + + it("should throw an error for unsigned fetch", async () => { + // Arrange + + // Act + const response = await fetch(url, { + method: "POST", + body, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", + }, + }); + + // Assert + expect(response.status).toBe(403); + expect(response.statusText).toBe("Forbidden"); + }); + }); +}); diff --git a/test/aws/__tests__/lambda.test.ts b/test/aws/__tests__/lambda.test.ts new file mode 100644 index 0000000..0398894 --- /dev/null +++ b/test/aws/__tests__/lambda.test.ts @@ -0,0 +1,83 @@ +import { GetFunctionUrlConfigCommand, LambdaClient } from "@aws-sdk/client-lambda"; +import { describe, expect, it } from "vitest"; +import { createSignedFetcher } from "../../dist/index.js"; +import { FUNCTION_NAME, REGION, RESPONSE, SERVICE } from "../lib/lambda-test-stack.js"; + +const client = new LambdaClient({ region: REGION }); +const response = await client.send(new GetFunctionUrlConfigCommand({ FunctionName: FUNCTION_NAME })); +if (!response.FunctionUrl) throw new Error("Function URL not found"); + +const functionUrl = response.FunctionUrl; +console.log("Function URL:", functionUrl); + +const paths = ["", "/foo", "/foo-bar"]; + +describe("Lambda Function URL", () => { + describe("GET", () => { + describe.each(paths)("Path: %s", (path) => { + it("should fetch with string", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(`${functionUrl}${path}`, { + method: "GET", + }); + + // Assert + expect(response.status).toBe(200); + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should throw an error for unsigned fetch", async () => { + // Arrange + + // Act + const response = await fetch(`${functionUrl}${path}`, { + method: "GET", + }); + + // Assert + expect(response.status).toBe(403); + expect(response.statusText).toBe("Forbidden"); + }); + }); + }); + + describe("POST", () => { + describe.each(paths)("Path: %s", (path) => { + it("should fetch with string", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(`${functionUrl}${path}`, { + method: "POST", + body: JSON.stringify({}), + headers: { + "Content-Type": "application/json", + }, + }); + + // Assert + expect(response.status).toBe(200); + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should throw an error for unsigned fetch", async () => { + // Arrange + + // Act + const response = await fetch(`${functionUrl}${path}`, { + method: "GET", + }); + + // Assert + expect(response.status).toBe(403); + expect(response.statusText).toBe("Forbidden"); + }); + }); + }); +}); diff --git a/test/aws/bin/app.ts b/test/aws/bin/app.ts new file mode 100644 index 0000000..7c72fe3 --- /dev/null +++ b/test/aws/bin/app.ts @@ -0,0 +1,18 @@ +#!/usr/bin/env node +import * as cdk from "aws-cdk-lib"; +import { ApiGatewayTestStack } from "../lib/api-gateway-test-stack.js"; +import { LambdaTestStack } from "../lib/lambda-test-stack.js"; + +const app = new cdk.App(); + +new ApiGatewayTestStack(app, "ApiGatewayTestStack", { + env: { + region: "us-east-1", + }, +}); + +new LambdaTestStack(app, "LambdaTestStack", { + env: { + region: "us-east-1", + }, +}); diff --git a/test/aws/cdk.json b/test/aws/cdk.json new file mode 100644 index 0000000..9e1d4f4 --- /dev/null +++ b/test/aws/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "pnpm tsx bin/app.ts" +} \ No newline at end of file diff --git a/test/aws/cdk.out/ApiGatewayTestStack.assets.json b/test/aws/cdk.out/ApiGatewayTestStack.assets.json new file mode 100644 index 0000000..c5b2b11 --- /dev/null +++ b/test/aws/cdk.out/ApiGatewayTestStack.assets.json @@ -0,0 +1,20 @@ +{ + "version": "38.0.1", + "files": { + "a3fa5648bcd67c28128e523d226652e9123e873b042dfd40ebd84c77924ffe66": { + "source": { + "path": "ApiGatewayTestStack.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-us-east-1": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", + "objectKey": "a3fa5648bcd67c28128e523d226652e9123e873b042dfd40ebd84c77924ffe66.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/test/aws/cdk.out/ApiGatewayTestStack.template.json b/test/aws/cdk.out/ApiGatewayTestStack.template.json new file mode 100644 index 0000000..48b3444 --- /dev/null +++ b/test/aws/cdk.out/ApiGatewayTestStack.template.json @@ -0,0 +1,402 @@ +{ + "Resources": { + "TestApi65B47ECD": { + "Type": "AWS::ApiGateway::RestApi", + "Properties": { + "Description": "aws-sigv4: Mock REST API for testing with IAM authentication", + "Name": "aws-sigv4" + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Resource" + } + }, + "TestApiCloudWatchRole3E85D09F": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs" + ] + ] + } + ] + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain", + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/CloudWatchRole/Resource" + } + }, + "TestApiAccountC79E0025": { + "Type": "AWS::ApiGateway::Account", + "Properties": { + "CloudWatchRoleArn": { + "Fn::GetAtt": [ + "TestApiCloudWatchRole3E85D09F", + "Arn" + ] + } + }, + "DependsOn": [ + "TestApi65B47ECD" + ], + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain", + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Account" + } + }, + "TestApiDeployment8541C0A034285c41b2e2a9ffd37326d5c4863769": { + "Type": "AWS::ApiGateway::Deployment", + "Properties": { + "Description": "aws-sigv4: Mock REST API for testing with IAM authentication", + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "DependsOn": [ + "TestApimockproxyANY87BC953B", + "TestApimockproxyGETF68ED219", + "TestApimockproxyPOST6F4DF186", + "TestApimockproxy2803C5CA", + "TestApimockGET7CA8EEFA", + "TestApimockPOST18559635", + "TestApimock814A72D1" + ], + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Deployment/Resource" + } + }, + "TestApiDeploymentStagetest2648D805": { + "Type": "AWS::ApiGateway::Stage", + "Properties": { + "DeploymentId": { + "Ref": "TestApiDeployment8541C0A034285c41b2e2a9ffd37326d5c4863769" + }, + "RestApiId": { + "Ref": "TestApi65B47ECD" + }, + "StageName": "test" + }, + "DependsOn": [ + "TestApiAccountC79E0025" + ], + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/DeploymentStage.test/Resource" + } + }, + "TestApimock814A72D1": { + "Type": "AWS::ApiGateway::Resource", + "Properties": { + "ParentId": { + "Fn::GetAtt": [ + "TestApi65B47ECD", + "RootResourceId" + ] + }, + "PathPart": "mock", + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/Resource" + } + }, + "TestApimockproxy2803C5CA": { + "Type": "AWS::ApiGateway::Resource", + "Properties": { + "ParentId": { + "Ref": "TestApimock814A72D1" + }, + "PathPart": "{proxy+}", + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/Resource" + } + }, + "TestApimockproxyANY87BC953B": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "ANY", + "Integration": { + "Type": "MOCK" + }, + "ResourceId": { + "Ref": "TestApimockproxy2803C5CA" + }, + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/ANY/Resource" + } + }, + "TestApimockproxyGETF68ED219": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "AWS_IAM", + "HttpMethod": "GET", + "Integration": { + "IntegrationResponses": [ + { + "ResponseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + }, + "StatusCode": "200" + } + ], + "RequestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "Type": "MOCK" + }, + "MethodResponses": [ + { + "ResponseModels": { + "application/json": "Empty" + }, + "StatusCode": "200" + } + ], + "ResourceId": { + "Ref": "TestApimockproxy2803C5CA" + }, + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/GET/Resource" + } + }, + "TestApimockproxyPOST6F4DF186": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "AWS_IAM", + "HttpMethod": "POST", + "Integration": { + "IntegrationResponses": [ + { + "ResponseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + }, + "StatusCode": "200" + } + ], + "RequestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "Type": "MOCK" + }, + "MethodResponses": [ + { + "ResponseModels": { + "application/json": "Empty" + }, + "StatusCode": "200" + } + ], + "ResourceId": { + "Ref": "TestApimockproxy2803C5CA" + }, + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/POST/Resource" + } + }, + "TestApimockGET7CA8EEFA": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "AWS_IAM", + "HttpMethod": "GET", + "Integration": { + "IntegrationResponses": [ + { + "ResponseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + }, + "StatusCode": "200" + } + ], + "RequestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "Type": "MOCK" + }, + "MethodResponses": [ + { + "ResponseModels": { + "application/json": "Empty" + }, + "StatusCode": "200" + } + ], + "ResourceId": { + "Ref": "TestApimock814A72D1" + }, + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/GET/Resource" + } + }, + "TestApimockPOST18559635": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "AWS_IAM", + "HttpMethod": "POST", + "Integration": { + "IntegrationResponses": [ + { + "ResponseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + }, + "StatusCode": "200" + } + ], + "RequestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "Type": "MOCK" + }, + "MethodResponses": [ + { + "ResponseModels": { + "application/json": "Empty" + }, + "StatusCode": "200" + } + ], + "ResourceId": { + "Ref": "TestApimock814A72D1" + }, + "RestApiId": { + "Ref": "TestApi65B47ECD" + } + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/TestApi/Default/mock/POST/Resource" + } + }, + "CDKMetadata": { + "Type": "AWS::CDK::Metadata", + "Properties": { + "Analytics": "v2:deflate64:H4sIAAAAAAAA/1WMyw6CMBBFv4V9GQUWrlG3RgMfYMYyYnm0hE5FQvh3Q2oUV3POzZ0bQ7RLIA5wsKEs6rBRN5hyRlkLHOx1wk6VyDTgCFNGltNOicNdrzCV0jjN4khdY8aWNC/pynLGkpbMQ0bWuF7SHu1PPpueL715jV87ET9MsRQ8zUJhC1NmGv9lGprnv6Gz487xenIW2hQEld084y1ECURBZZUKe6dZtQSZv28BnB8ZDQEAAA==" + }, + "Metadata": { + "aws:cdk:path": "ApiGatewayTestStack/CDKMetadata/Default" + } + } + }, + "Outputs": { + "TestApiEndpoint316CA9C6": { + "Value": { + "Fn::Join": [ + "", + [ + "https://", + { + "Ref": "TestApi65B47ECD" + }, + ".execute-api.us-east-1.", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "TestApiDeploymentStagetest2648D805" + }, + "/" + ] + ] + } + }, + "ApiUrl": { + "Description": "API Gateway URL", + "Value": { + "Fn::Join": [ + "", + [ + "https://", + { + "Ref": "TestApi65B47ECD" + }, + ".execute-api.us-east-1.", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "TestApiDeploymentStagetest2648D805" + }, + "/" + ] + ] + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/test/aws/cdk.out/LambdaTestStack.assets.json b/test/aws/cdk.out/LambdaTestStack.assets.json new file mode 100644 index 0000000..6da3ab6 --- /dev/null +++ b/test/aws/cdk.out/LambdaTestStack.assets.json @@ -0,0 +1,20 @@ +{ + "version": "38.0.1", + "files": { + "a30dfe65d7e4ee160b6c62251a997c0b25392e14e6d7ca585ef67515afc24df9": { + "source": { + "path": "LambdaTestStack.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-us-east-1": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", + "objectKey": "a30dfe65d7e4ee160b6c62251a997c0b25392e14e6d7ca585ef67515afc24df9.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/test/aws/cdk.out/LambdaTestStack.template.json b/test/aws/cdk.out/LambdaTestStack.template.json new file mode 100644 index 0000000..115853a --- /dev/null +++ b/test/aws/cdk.out/LambdaTestStack.template.json @@ -0,0 +1,130 @@ +{ + "Resources": { + "TestFunctionServiceRole6ABD93C7": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + }, + "Metadata": { + "aws:cdk:path": "LambdaTestStack/TestFunction/ServiceRole/Resource" + } + }, + "TestFunction22AD90FC": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async function(event) {\n return {\n statusCode: 200,\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\"foo\":\"bar\"})\n };\n };\n " + }, + "FunctionName": "aws-sigv4-test", + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "TestFunctionServiceRole6ABD93C7", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "TestFunctionServiceRole6ABD93C7" + ], + "Metadata": { + "aws:cdk:path": "LambdaTestStack/TestFunction/Resource" + } + }, + "TestFunctionFunctionUrlF8C7B1A2": { + "Type": "AWS::Lambda::Url", + "Properties": { + "AuthType": "AWS_IAM", + "TargetFunctionArn": { + "Fn::GetAtt": [ + "TestFunction22AD90FC", + "Arn" + ] + } + }, + "Metadata": { + "aws:cdk:path": "LambdaTestStack/TestFunction/FunctionUrl/Resource" + } + }, + "CDKMetadata": { + "Type": "AWS::CDK::Metadata", + "Properties": { + "Analytics": "v2:deflate64:H4sIAAAAAAAA/z3JyQ7CIBSF4WfpHq5CFz6AiVsTTNfmFjChZTAMdkF4d0MdVv/Jdziw0wh8wC1RqVZqzQz1llGuBLd0rxbdrBDqpXiZTfDk/PD//RtTtN2naBsx6KCKYHWX3taI0CmUKHe6lvwseT+/2ogPSsOSDi9+BDYCG5ZkDI3FZ+M0iE/fC17ApaoAAAA=" + }, + "Metadata": { + "aws:cdk:path": "LambdaTestStack/CDKMetadata/Default" + } + } + }, + "Outputs": { + "FunctionUrl": { + "Description": "Lambda Function URL", + "Value": { + "Fn::GetAtt": [ + "TestFunctionFunctionUrlF8C7B1A2", + "FunctionUrl" + ] + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/test/aws/cdk.out/cdk.out b/test/aws/cdk.out/cdk.out new file mode 100644 index 0000000..c6e6125 --- /dev/null +++ b/test/aws/cdk.out/cdk.out @@ -0,0 +1 @@ +{"version":"38.0.1"} \ No newline at end of file diff --git a/test/aws/cdk.out/manifest.json b/test/aws/cdk.out/manifest.json new file mode 100644 index 0000000..be92320 --- /dev/null +++ b/test/aws/cdk.out/manifest.json @@ -0,0 +1,227 @@ +{ + "version": "38.0.1", + "artifacts": { + "ApiGatewayTestStack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "ApiGatewayTestStack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "ApiGatewayTestStack": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/us-east-1", + "properties": { + "templateFile": "ApiGatewayTestStack.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/a3fa5648bcd67c28128e523d226652e9123e873b042dfd40ebd84c77924ffe66.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "ApiGatewayTestStack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "ApiGatewayTestStack.assets" + ], + "metadata": { + "/ApiGatewayTestStack/TestApi/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApi65B47ECD" + } + ], + "/ApiGatewayTestStack/TestApi/CloudWatchRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApiCloudWatchRole3E85D09F" + } + ], + "/ApiGatewayTestStack/TestApi/Account": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApiAccountC79E0025" + } + ], + "/ApiGatewayTestStack/TestApi/Deployment/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApiDeployment8541C0A034285c41b2e2a9ffd37326d5c4863769" + } + ], + "/ApiGatewayTestStack/TestApi/DeploymentStage.test/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApiDeploymentStagetest2648D805" + } + ], + "/ApiGatewayTestStack/TestApi/Endpoint": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApiEndpoint316CA9C6" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimock814A72D1" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimockproxy2803C5CA" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/ANY/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimockproxyANY87BC953B" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/GET/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimockproxyGETF68ED219" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/POST/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimockproxyPOST6F4DF186" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/GET/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimockGET7CA8EEFA" + } + ], + "/ApiGatewayTestStack/TestApi/Default/mock/POST/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestApimockPOST18559635" + } + ], + "/ApiGatewayTestStack/ApiUrl": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiUrl" + } + ], + "/ApiGatewayTestStack/CDKMetadata/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "CDKMetadata" + } + ], + "/ApiGatewayTestStack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/ApiGatewayTestStack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "ApiGatewayTestStack" + }, + "LambdaTestStack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "LambdaTestStack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "LambdaTestStack": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/us-east-1", + "properties": { + "templateFile": "LambdaTestStack.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/a30dfe65d7e4ee160b6c62251a997c0b25392e14e6d7ca585ef67515afc24df9.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "LambdaTestStack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "LambdaTestStack.assets" + ], + "metadata": { + "/LambdaTestStack/TestFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestFunctionServiceRole6ABD93C7" + } + ], + "/LambdaTestStack/TestFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestFunction22AD90FC" + } + ], + "/LambdaTestStack/TestFunction/FunctionUrl/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestFunctionFunctionUrlF8C7B1A2" + } + ], + "/LambdaTestStack/FunctionUrl": [ + { + "type": "aws:cdk:logicalId", + "data": "FunctionUrl" + } + ], + "/LambdaTestStack/CDKMetadata/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "CDKMetadata" + } + ], + "/LambdaTestStack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/LambdaTestStack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "LambdaTestStack" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/test/aws/cdk.out/tree.json b/test/aws/cdk.out/tree.json new file mode 100644 index 0000000..3c4d5d1 --- /dev/null +++ b/test/aws/cdk.out/tree.json @@ -0,0 +1,732 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "ApiGatewayTestStack": { + "id": "ApiGatewayTestStack", + "path": "ApiGatewayTestStack", + "children": { + "TestApi": { + "id": "TestApi", + "path": "ApiGatewayTestStack/TestApi", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::RestApi", + "aws:cdk:cloudformation:props": { + "description": "aws-sigv4: Mock REST API for testing with IAM authentication", + "name": "aws-sigv4" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnRestApi", + "version": "2.173.2" + } + }, + "CloudWatchRole": { + "id": "CloudWatchRole", + "path": "ApiGatewayTestStack/TestApi/CloudWatchRole", + "children": { + "ImportCloudWatchRole": { + "id": "ImportCloudWatchRole", + "path": "ApiGatewayTestStack/TestApi/CloudWatchRole/ImportCloudWatchRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "2.173.2" + } + }, + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/CloudWatchRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "2.173.2" + } + }, + "Account": { + "id": "Account", + "path": "ApiGatewayTestStack/TestApi/Account", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Account", + "aws:cdk:cloudformation:props": { + "cloudWatchRoleArn": { + "Fn::GetAtt": [ + "TestApiCloudWatchRole3E85D09F", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnAccount", + "version": "2.173.2" + } + }, + "Deployment": { + "id": "Deployment", + "path": "ApiGatewayTestStack/TestApi/Deployment", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Deployment/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Deployment", + "aws:cdk:cloudformation:props": { + "description": "aws-sigv4: Mock REST API for testing with IAM authentication", + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnDeployment", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Deployment", + "version": "2.173.2" + } + }, + "DeploymentStage.test": { + "id": "DeploymentStage.test", + "path": "ApiGatewayTestStack/TestApi/DeploymentStage.test", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/DeploymentStage.test/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Stage", + "aws:cdk:cloudformation:props": { + "deploymentId": { + "Ref": "TestApiDeployment8541C0A034285c41b2e2a9ffd37326d5c4863769" + }, + "restApiId": { + "Ref": "TestApi65B47ECD" + }, + "stageName": "test" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnStage", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Stage", + "version": "2.173.2" + } + }, + "Endpoint": { + "id": "Endpoint", + "path": "ApiGatewayTestStack/TestApi/Endpoint", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnOutput", + "version": "2.173.2" + } + }, + "Default": { + "id": "Default", + "path": "ApiGatewayTestStack/TestApi/Default", + "children": { + "mock": { + "id": "mock", + "path": "ApiGatewayTestStack/TestApi/Default/mock", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Resource", + "aws:cdk:cloudformation:props": { + "parentId": { + "Fn::GetAtt": [ + "TestApi65B47ECD", + "RootResourceId" + ] + }, + "pathPart": "mock", + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnResource", + "version": "2.173.2" + } + }, + "{proxy+}": { + "id": "{proxy+}", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Resource", + "aws:cdk:cloudformation:props": { + "parentId": { + "Ref": "TestApimock814A72D1" + }, + "pathPart": "{proxy+}", + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnResource", + "version": "2.173.2" + } + }, + "ANY": { + "id": "ANY", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/ANY", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/ANY/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "NONE", + "httpMethod": "ANY", + "integration": { + "type": "MOCK" + }, + "resourceId": { + "Ref": "TestApimockproxy2803C5CA" + }, + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnMethod", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Method", + "version": "2.173.2" + } + }, + "GET": { + "id": "GET", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/GET", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/GET/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "AWS_IAM", + "httpMethod": "GET", + "integration": { + "type": "MOCK", + "requestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "integrationResponses": [ + { + "statusCode": "200", + "responseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + } + } + ] + }, + "methodResponses": [ + { + "statusCode": "200", + "responseModels": { + "application/json": "Empty" + } + } + ], + "resourceId": { + "Ref": "TestApimockproxy2803C5CA" + }, + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnMethod", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Method", + "version": "2.173.2" + } + }, + "POST": { + "id": "POST", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/POST", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/{proxy+}/POST/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "AWS_IAM", + "httpMethod": "POST", + "integration": { + "type": "MOCK", + "requestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "integrationResponses": [ + { + "statusCode": "200", + "responseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + } + } + ] + }, + "methodResponses": [ + { + "statusCode": "200", + "responseModels": { + "application/json": "Empty" + } + } + ], + "resourceId": { + "Ref": "TestApimockproxy2803C5CA" + }, + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnMethod", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Method", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.ProxyResource", + "version": "2.173.2" + } + }, + "GET": { + "id": "GET", + "path": "ApiGatewayTestStack/TestApi/Default/mock/GET", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/GET/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "AWS_IAM", + "httpMethod": "GET", + "integration": { + "type": "MOCK", + "requestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "integrationResponses": [ + { + "statusCode": "200", + "responseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + } + } + ] + }, + "methodResponses": [ + { + "statusCode": "200", + "responseModels": { + "application/json": "Empty" + } + } + ], + "resourceId": { + "Ref": "TestApimock814A72D1" + }, + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnMethod", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Method", + "version": "2.173.2" + } + }, + "POST": { + "id": "POST", + "path": "ApiGatewayTestStack/TestApi/Default/mock/POST", + "children": { + "Resource": { + "id": "Resource", + "path": "ApiGatewayTestStack/TestApi/Default/mock/POST/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "AWS_IAM", + "httpMethod": "POST", + "integration": { + "type": "MOCK", + "requestTemplates": { + "application/json": "{\"statusCode\": 200}" + }, + "integrationResponses": [ + { + "statusCode": "200", + "responseTemplates": { + "application/json": "{\"foo\":\"bar\"}" + } + } + ] + }, + "methodResponses": [ + { + "statusCode": "200", + "responseModels": { + "application/json": "Empty" + } + } + ], + "resourceId": { + "Ref": "TestApimock814A72D1" + }, + "restApiId": { + "Ref": "TestApi65B47ECD" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.CfnMethod", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Method", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.Resource", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.ResourceBase", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_apigateway.RestApi", + "version": "2.173.2" + } + }, + "ApiUrl": { + "id": "ApiUrl", + "path": "ApiGatewayTestStack/ApiUrl", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnOutput", + "version": "2.173.2" + } + }, + "CDKMetadata": { + "id": "CDKMetadata", + "path": "ApiGatewayTestStack/CDKMetadata", + "children": { + "Default": { + "id": "Default", + "path": "ApiGatewayTestStack/CDKMetadata/Default", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.4.2" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "ApiGatewayTestStack/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "2.173.2" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "ApiGatewayTestStack/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "2.173.2" + } + }, + "LambdaTestStack": { + "id": "LambdaTestStack", + "path": "LambdaTestStack", + "children": { + "TestFunction": { + "id": "TestFunction", + "path": "LambdaTestStack/TestFunction", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "LambdaTestStack/TestFunction/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "LambdaTestStack/TestFunction/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "2.173.2" + } + }, + "Resource": { + "id": "Resource", + "path": "LambdaTestStack/TestFunction/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "2.173.2" + } + }, + "Resource": { + "id": "Resource", + "path": "LambdaTestStack/TestFunction/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "zipFile": "\n exports.handler = async function(event) {\n return {\n statusCode: 200,\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\"foo\":\"bar\"})\n };\n };\n " + }, + "functionName": "aws-sigv4-test", + "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "TestFunctionServiceRole6ABD93C7", + "Arn" + ] + }, + "runtime": "nodejs18.x" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "2.173.2" + } + }, + "FunctionUrl": { + "id": "FunctionUrl", + "path": "LambdaTestStack/TestFunction/FunctionUrl", + "children": { + "Resource": { + "id": "Resource", + "path": "LambdaTestStack/TestFunction/FunctionUrl/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Url", + "aws:cdk:cloudformation:props": { + "authType": "AWS_IAM", + "targetFunctionArn": { + "Fn::GetAtt": [ + "TestFunction22AD90FC", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnUrl", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.FunctionUrl", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "2.173.2" + } + }, + "FunctionUrl": { + "id": "FunctionUrl", + "path": "LambdaTestStack/FunctionUrl", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnOutput", + "version": "2.173.2" + } + }, + "CDKMetadata": { + "id": "CDKMetadata", + "path": "LambdaTestStack/CDKMetadata", + "children": { + "Default": { + "id": "Default", + "path": "LambdaTestStack/CDKMetadata/Default", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.4.2" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "LambdaTestStack/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "2.173.2" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "LambdaTestStack/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "2.173.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "2.173.2" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.4.2" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.App", + "version": "2.173.2" + } + } +} \ No newline at end of file diff --git a/test/aws/lib/api-gateway-test-stack.ts b/test/aws/lib/api-gateway-test-stack.ts new file mode 100644 index 0000000..a5557b1 --- /dev/null +++ b/test/aws/lib/api-gateway-test-stack.ts @@ -0,0 +1,83 @@ +import * as cdk from "aws-cdk-lib"; +import * as apigateway from "aws-cdk-lib/aws-apigateway"; +import type { Construct } from "constructs"; + +export const SERVICE = "execute-api"; +export const REGION = "us-east-1"; +export const STAGE = "test"; +export const API_NAME = "aws-sigv4"; +export const RESPONSE = { foo: "bar" }; +export const RESOURCE = "mock"; + +export interface ApiGatewayTestStackProps extends cdk.StackProps {} + +export class ApiGatewayTestStack extends cdk.Stack { + public readonly api: apigateway.RestApi; + public readonly apiUrl: string; + + constructor(scope: Construct, id: string, props: ApiGatewayTestStackProps) { + super(scope, id, props); + + // Create REST API + this.api = new apigateway.RestApi(this, "TestApi", { + restApiName: API_NAME, + description: "aws-sigv4: Mock REST API for testing with IAM authentication", + deployOptions: { + stageName: STAGE, + }, + }); + + // Create /mock resource + const mockResource = this.api.root.addResource(RESOURCE); + + // Create /mock/{proxy+} resource for handling all sub-paths + const proxyResource = mockResource.addProxy(); + + // Helper to add mock integration + const addMockIntegration = (resource: apigateway.IResource) => { + const integration = new apigateway.MockIntegration({ + integrationResponses: [ + { + statusCode: "200", + responseTemplates: { + "application/json": JSON.stringify(RESPONSE), + }, + }, + ], + requestTemplates: { + "application/json": '{"statusCode": 200}', + }, + }); + + const methodResponse: apigateway.MethodResponse = { + statusCode: "200", + responseModels: { + "application/json": apigateway.Model.EMPTY_MODEL, + }, + }; + + // Add GET method + resource.addMethod("GET", integration, { + methodResponses: [methodResponse], + authorizationType: apigateway.AuthorizationType.IAM, + }); + + // Add POST method + resource.addMethod("POST", integration, { + methodResponses: [methodResponse], + authorizationType: apigateway.AuthorizationType.IAM, + }); + }; + + // Add methods to both /mock and /mock/{proxy+} + addMockIntegration(mockResource); + addMockIntegration(proxyResource); + + // Add stack output for API URL + this.apiUrl = this.api.url; + new cdk.CfnOutput(this, "ApiUrl", { + value: this.api.url, + description: "API Gateway URL", + }); + } +} diff --git a/test/aws/lib/lambda-test-stack.ts b/test/aws/lib/lambda-test-stack.ts new file mode 100644 index 0000000..df6152c --- /dev/null +++ b/test/aws/lib/lambda-test-stack.ts @@ -0,0 +1,49 @@ +import * as cdk from "aws-cdk-lib"; +import * as lambda from "aws-cdk-lib/aws-lambda"; +import type { Construct } from "constructs"; + +export const SERVICE = "lambda"; +export const REGION = "us-east-1"; +export const FUNCTION_NAME = "aws-sigv4-test"; +export const RESPONSE = { foo: "bar" }; + +export interface LambdaTestStackProps extends cdk.StackProps {} + +export class LambdaTestStack extends cdk.Stack { + public readonly lambdaFunction: lambda.Function; + public readonly functionUrl: string; + + constructor(scope: Construct, id: string, props: LambdaTestStackProps) { + super(scope, id, props); + + // Create Lambda function + this.lambdaFunction = new lambda.Function(this, "TestFunction", { + runtime: lambda.Runtime.NODEJS_18_X, + handler: "index.handler", + code: lambda.Code.fromInline(` + exports.handler = async function(event) { + return { + statusCode: 200, + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(${JSON.stringify(RESPONSE)}) + }; + }; + `), + functionName: FUNCTION_NAME, + }); + + // Add function URL with IAM auth + const functionUrl = this.lambdaFunction.addFunctionUrl({ + authType: lambda.FunctionUrlAuthType.AWS_IAM, + }); + + // Store the function URL + this.functionUrl = functionUrl.url; + + // Add stack output for Function URL + new cdk.CfnOutput(this, "FunctionUrl", { + value: functionUrl.url, + description: "Lambda Function URL", + }); + } +} diff --git a/test/aws/package.json b/test/aws/package.json new file mode 100644 index 0000000..c807c34 --- /dev/null +++ b/test/aws/package.json @@ -0,0 +1,20 @@ +{ + "name": "test-aws", + "private": true, + "type": "module", + "scripts": { + "deploy": "cdk deploy --all", + "destroy": "cdk destroy", + "pretest": "pnpm run deploy", + "test": "vitest" + }, + "devDependencies": { + "@aws-sdk/client-api-gateway": "^3.535.0", + "@aws-sdk/client-apigatewayv2": "^3.535.0", + "@aws-sdk/client-lambda": "^3.716.0", + "aws-cdk": "^2.124.0", + "aws-cdk-lib": "^2.124.0", + "constructs": "^10.0.0", + "ts-node": "^10.9.2" + } +} \ No newline at end of file diff --git a/test/aws/tsconfig.json b/test/aws/tsconfig.json new file mode 100644 index 0000000..476392e --- /dev/null +++ b/test/aws/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json", + "compilerOptions": { + "lib": [ + "ES2023", + ], + "outDir": "dist", + "declaration": true, + "allowJs": true, + }, + "include": [ + "**/*.ts", + "vitest.config.ts", + ], +} \ No newline at end of file diff --git a/test/aws-iam/vitest.config.mts b/test/aws/vitest.config.ts similarity index 79% rename from test/aws-iam/vitest.config.mts rename to test/aws/vitest.config.ts index c7cdd0b..0fb3019 100644 --- a/test/aws-iam/vitest.config.mts +++ b/test/aws/vitest.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - name: "e2e/aws-iam", + name: "e2e/aws", }, }); diff --git a/test/module-commonjs/index.test.ts b/test/module-commonjs/index.test.ts deleted file mode 100644 index 571245e..0000000 --- a/test/module-commonjs/index.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import "cross-fetch/polyfill"; -import { expect, test } from "vitest"; -import { createSignedFetcher } from "../../dist/index.cjs"; - -test("should fetch", async () => { - const url = "https://iam.amazonaws.com/?Action=GetUser&Version=2010-05-08"; - - const fetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); - const response = await fetch(url); - - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); -}); diff --git a/test/module-commonjs/package.json b/test/module-commonjs/package.json deleted file mode 100644 index 4d28a26..0000000 --- a/test/module-commonjs/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "commonjs", - "scripts": { - "test": "vitest" - } -} diff --git a/test/module-commonjs/tsconfig.json b/test/module-commonjs/tsconfig.json deleted file mode 100644 index bb2f7f6..0000000 --- a/test/module-commonjs/tsconfig.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/test/module-commonjs/vitest.config.mts b/test/module-commonjs/vitest.config.mts deleted file mode 100644 index c018f9c..0000000 --- a/test/module-commonjs/vitest.config.mts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - name: "e2e/module-commonjs", - }, -}); diff --git a/test/module-esm/index.test.ts b/test/module-esm/index.test.ts deleted file mode 100644 index c5eb911..0000000 --- a/test/module-esm/index.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import "cross-fetch/polyfill"; -import { expect, it } from "vitest"; -import { createSignedFetcher } from "../../dist/index.js"; - -it("should fetch", async () => { - const url = "https://iam.amazonaws.com/?Action=GetUser&Version=2010-05-08"; - - const fetch = createSignedFetcher({ service: "iam", region: "us-east-1" }); - const response = await fetch(url); - - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); -}); diff --git a/test/module-esm/package.json b/test/module-esm/package.json deleted file mode 100644 index e532f86..0000000 --- a/test/module-esm/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "module", - "scripts": { - "test": "vitest" - } -} diff --git a/test/module-esm/tsconfig.json b/test/module-esm/tsconfig.json deleted file mode 100644 index 67b2735..0000000 --- a/test/module-esm/tsconfig.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - "module": "Node16" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/test/module-esm/vitest.config.mts b/test/module-esm/vitest.config.mts deleted file mode 100644 index df676b1..0000000 --- a/test/module-esm/vitest.config.mts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - name: "e2e/module-esm", - }, -}); diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..6475162 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,26 @@ +import GithubActionsReporter from "vitest-github-actions-reporter"; +import { coverageConfigDefaults, defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + name: "unit", + include: ["src/**/*.test.{ts,js}"], + + // https://github.com/sapphi-red/vitest-github-actions-reporter + reporters: process.env.GITHUB_ACTIONS ? ["default", new GithubActionsReporter()] : "default", + + // https://vitest.dev/guide/coverage.html + coverage: { + ...coverageConfigDefaults, + provider: "v8", + // json-summary is required for https://github.com/davelosert/vitest-coverage-report-action + reporter: ["json-summary", "json", "text-summary", "html"], + thresholds: { + lines: 80, + statements: 80, + functions: 80, + branches: 80, + }, + }, + }, +}); diff --git a/vitest.config.unit.ts b/vitest.config.unit.ts deleted file mode 100644 index 1bf2cc6..0000000 --- a/vitest.config.unit.ts +++ /dev/null @@ -1,27 +0,0 @@ -import GithubActionsReporter from "vitest-github-actions-reporter"; -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - name: "unit", - include: ["src/**/*.test.{ts,js}"], - - // https://github.com/sapphi-red/vitest-github-actions-reporter - reporters: process.env.GITHUB_ACTIONS - ? ["default", new GithubActionsReporter()] - : "default", - - // https://vitest.dev/guide/coverage.html - coverage: { - provider: "v8", - // json-summary is required for https://github.com/davelosert/vitest-coverage-report-action - reporter: ["json-summary", "json", "text-summary", "html"], - thresholds: { - lines: 80, - statements: 80, - functions: 80, - branches: 80, - }, - }, - }, -}); diff --git a/vitest.workspace.ts b/vitest.workspace.ts index 842965c..fd07f39 100644 --- a/vitest.workspace.ts +++ b/vitest.workspace.ts @@ -1,3 +1,3 @@ import { defineWorkspace } from "vitest/config"; -export default defineWorkspace(["vitest.config.unit.ts", "test/*"]); +export default defineWorkspace(["vitest.config.ts", "test/*"]); From 9e5e59a5ea2337f1cda7d83af7c3e340438d1b6f Mon Sep 17 00:00:00 2001 From: zirkelc Date: Mon, 23 Dec 2024 16:37:18 +0100 Subject: [PATCH 12/21] readme --- README.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 41f194f..3737574 100644 --- a/README.md +++ b/README.md @@ -53,8 +53,28 @@ const response = await signedFetch('https://s3.eu-west-1.amazonaws.com/my-bucket }); ``` +## API +The `createSignedFetcher(options: SignedFetcherOptions)` function accepts the following options: + +```ts +type SignedFetcherOptions = { + service: string; + region?: string; + credentials?: AwsCredentialIdentity; + fetch?: typeof fetch; +}; +``` + +### Service +The `service` is required and must match the AWS service you are signing requests for. +If it doesn't match, the request will fail with an error like: +> Credential should be scoped to correct service: 'service' + +### Region +The `region` is optional and defaults to `us-east-1` if not provided. Some services like IAM are global and don't require a region. + ### Credentials -Signing requests with AWS Signature V4 requires credentials (access key ID and secret access key). The `createSignedFetcher` function accepts an optional `credentials` option. If not provided, the credentials will be retrieved from the environment by the package [`@aws-sdk/credential-provider-node`](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_provider_node.html). +The `credentials` is optional. If not provided, the credentials will be retrieved from the environment by the package [`@aws-sdk/credential-provider-node`](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_provider_node.html). ```ts import { createSignedFetcher } from 'aws-sigv4-fetch'; @@ -67,7 +87,7 @@ const signedFetch = createSignedFetcher({ service: 's3', region: 'eu-west-1', cr ``` ### Fetch -By default, `createSignedFetcher` uses the `fetch` function from the environment. Native `fetch` is supported in Node.js >= v18. If you are running in an environment where native `fetch` is **not** available, the `fetch` function must be polyfilled or provided as an argument to `createSignedFetcher`. This allows to use the same `fetch` function that is already used in your application. There are several ways to do this: +The `fetch` function is optional. If not provided, the `fetch` function from the environment will be used. Native `fetch` is supported in Node.js >= v18. If you are running in an environment where native `fetch` is **not** available, the `fetch` function must be polyfilled or provided as an argument to `createSignedFetcher`. This allows to use the same `fetch` function that is already used in your application. There are several ways to do this: #### Native `fetch` If native `fetch` is available, you don't have to pass it as argument to `createSignedFetcher`. @@ -125,7 +145,7 @@ const response = await signedFetch('https://mygraphqlapi.appsync-api.eu-west-1.a ``` ### Automatically sign GraphQL Requests with `graphql-request` -If you are using [`graphql-request`](https://www.npmjs.com/package/graphql-request) as GraphQL library, you can easily sign all HTTP requests. The library has `fetch`option to pass a [custom `fetch` method](https://github.com/prisma-labs/graphql-request#using-a-custom-fetch-method): +If you are using [`graphql-request`](https://www.npmjs.com/package/graphql-request) as GraphQL library, you can easily sign all HTTP requests. The library has `fetch` option to pass a [custom `fetch` method](https://github.com/prisma-labs/graphql-request#using-a-custom-fetch-method): ```ts import { createSignedFetcher } from 'aws-sigv4-fetch'; From 8bdd68c3cc839c11de4508bc438d708796a1219f Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 08:49:33 +0100 Subject: [PATCH 13/21] e2e tests --- .github/workflows/ci.yml | 6 +----- src/{__tests__/fixtures.ts => __fixtures__.ts} | 0 src/{__tests__ => }/create-signed-fetcher.test.ts | 13 +++++++++++-- src/{__tests__ => }/get-fetch.test.ts | 2 +- src/{__tests__ => }/parse-request.test.ts | 4 ++-- src/{__tests__ => }/sign-request.test.ts | 13 +++++++++++-- test/aws/{__tests__ => test}/api-gateway.test.ts | 0 test/aws/{__tests__ => test}/iam.test.ts | 0 test/aws/{__tests__ => test}/lambda.test.ts | 0 9 files changed, 26 insertions(+), 12 deletions(-) rename src/{__tests__/fixtures.ts => __fixtures__.ts} (100%) rename src/{__tests__ => }/create-signed-fetcher.test.ts (99%) rename src/{__tests__ => }/get-fetch.test.ts (96%) rename src/{__tests__ => }/parse-request.test.ts (98%) rename src/{__tests__ => }/sign-request.test.ts (98%) rename test/aws/{__tests__ => test}/api-gateway.test.ts (100%) rename test/aws/{__tests__ => test}/iam.test.ts (100%) rename test/aws/{__tests__ => test}/lambda.test.ts (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86aa408..8fa0230 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,7 +54,7 @@ jobs: run: pnpm build - name: Test - run: pnpm test + run: pnpm test:unit - name: Coverage if: ${{ steps.install.conclusion == 'success' }} @@ -73,10 +73,6 @@ jobs: id: install uses: zirkelc/setup-and-install@v1 - - name: Deploy - working-directory: test - run: pnpm run deploy - - name: Test run: pnpm test:e2e diff --git a/src/__tests__/fixtures.ts b/src/__fixtures__.ts similarity index 100% rename from src/__tests__/fixtures.ts rename to src/__fixtures__.ts diff --git a/src/__tests__/create-signed-fetcher.test.ts b/src/create-signed-fetcher.test.ts similarity index 99% rename from src/__tests__/create-signed-fetcher.test.ts rename to src/create-signed-fetcher.test.ts index 6b60380..ab7eaaf 100644 --- a/src/__tests__/create-signed-fetcher.test.ts +++ b/src/create-signed-fetcher.test.ts @@ -1,6 +1,15 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; -import { type SignedFetcherOptions, createSignedFetcher } from "../create-signed-fetcher.js"; -import { url, bodyFixture, credentials, date, getSignedHeaders, headersSigned, region, service } from "./fixtures.js"; +import { + url, + bodyFixture, + credentials, + date, + getSignedHeaders, + headersSigned, + region, + service, +} from "./__fixtures__.js"; +import { type SignedFetcherOptions, createSignedFetcher } from "./create-signed-fetcher.js"; const fetchMock = vi.fn(fetch); let signedFetch: typeof fetch; diff --git a/src/__tests__/get-fetch.test.ts b/src/get-fetch.test.ts similarity index 96% rename from src/__tests__/get-fetch.test.ts rename to src/get-fetch.test.ts index 6c589b2..2f17fdc 100644 --- a/src/__tests__/get-fetch.test.ts +++ b/src/get-fetch.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it, vi } from "vitest"; -import { getFetchFn } from "../get-fetch.js"; +import { getFetchFn } from "./get-fetch.js"; describe("getFetchFn", () => { // Set up a global fetch mock diff --git a/src/__tests__/parse-request.test.ts b/src/parse-request.test.ts similarity index 98% rename from src/__tests__/parse-request.test.ts rename to src/parse-request.test.ts index cb94e97..31e7f76 100644 --- a/src/__tests__/parse-request.test.ts +++ b/src/parse-request.test.ts @@ -1,7 +1,7 @@ import "cross-fetch/polyfill"; import { describe, expect, it } from "vitest"; -import { parseRequest } from "../parse-request.js"; -import { url } from "./fixtures.js"; +import { url } from "./__fixtures__.js"; +import { parseRequest } from "./parse-request.js"; describe("parseRequest", () => { describe("string input", () => { diff --git a/src/__tests__/sign-request.test.ts b/src/sign-request.test.ts similarity index 98% rename from src/__tests__/sign-request.test.ts rename to src/sign-request.test.ts index 2f4412e..da0b883 100644 --- a/src/__tests__/sign-request.test.ts +++ b/src/sign-request.test.ts @@ -1,6 +1,15 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; -import { type SignRequestOptions, signRequest } from "../sign-request.js"; -import { url, bodyFixture, credentials, date, getSignedHeaders, headersSigned, region, service } from "./fixtures.js"; +import { + url, + bodyFixture, + credentials, + date, + getSignedHeaders, + headersSigned, + region, + service, +} from "./__fixtures__.js"; +import { type SignRequestOptions, signRequest } from "./sign-request.js"; declare global { interface RequestInit { diff --git a/test/aws/__tests__/api-gateway.test.ts b/test/aws/test/api-gateway.test.ts similarity index 100% rename from test/aws/__tests__/api-gateway.test.ts rename to test/aws/test/api-gateway.test.ts diff --git a/test/aws/__tests__/iam.test.ts b/test/aws/test/iam.test.ts similarity index 100% rename from test/aws/__tests__/iam.test.ts rename to test/aws/test/iam.test.ts diff --git a/test/aws/__tests__/lambda.test.ts b/test/aws/test/lambda.test.ts similarity index 100% rename from test/aws/__tests__/lambda.test.ts rename to test/aws/test/lambda.test.ts From bda89cc7bf757f8b8ea7289e3544629d5d6b404d Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 08:53:46 +0100 Subject: [PATCH 14/21] fix --- .github/workflows/ci.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fa0230..04ae6be 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,6 +56,23 @@ jobs: - name: Test run: pnpm test:unit + coverage: + name: Coverage + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup and Install + id: install + uses: zirkelc/setup-and-install@v1 + + - name: Build + run: pnpm build + + - name: Test + run: pnpm test:unit + - name: Coverage if: ${{ steps.install.conclusion == 'success' }} uses: davelosert/vitest-coverage-report-action@v2 @@ -73,6 +90,9 @@ jobs: id: install uses: zirkelc/setup-and-install@v1 + - name: Build + run: pnpm build + - name: Test run: pnpm test:e2e From 6de4866315d8f7d43d353f72e82bf55b52e57e5c Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 08:54:48 +0100 Subject: [PATCH 15/21] add --coverage --- .github/workflows/ci.yml | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04ae6be..969a2aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: run: pnpm build - name: Test - run: pnpm test:unit + run: pnpm test:unit --coverage - name: Coverage if: ${{ steps.install.conclusion == 'success' }} diff --git a/package.json b/package.json index 2b8d9b6..a559795 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dist" ], "scripts": { - "test:unit": "vitest --project=unit --coverage", + "test:unit": "vitest --project=unit", "test:e2e": "vitest --project=e2e/*", "build": "tsup && attw --pack .", "dev": "tsup ./src/index.ts --watch", @@ -68,4 +68,4 @@ "vitest": "^2.0.5", "vitest-github-actions-reporter": "^0.11.1" } -} \ No newline at end of file +} From 33be73d52045c2c4d8b1919876b673e4a9cee026 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 09:59:24 +0100 Subject: [PATCH 16/21] tests --- src/create-signed-fetcher.test.ts | 33 +++++++++++++ test/aws/package.json | 3 +- test/aws/test/api-gateway.test.ts | 82 +++++++++++++++++++++++++++++-- test/aws/test/iam.test.ts | 43 ---------------- test/aws/test/lambda.test.ts | 65 ++++++++++++++++++++++-- 5 files changed, 173 insertions(+), 53 deletions(-) diff --git a/src/create-signed-fetcher.test.ts b/src/create-signed-fetcher.test.ts index ab7eaaf..09c5e6b 100644 --- a/src/create-signed-fetcher.test.ts +++ b/src/create-signed-fetcher.test.ts @@ -409,4 +409,37 @@ describe("createSignedFetcher", () => { }); }); }); + + it("should fetch with additional headers", async () => { + await signedFetch(url, { + headers: { + "x-amz-test-header": "test-value", + "x-api-key": "test-api-key", + }, + }); + + expect(fetchMock).toHaveBeenCalled(); + const [request] = fetchMock.mock.calls[0] as [Request]; + + expect(request.url).toEqual(url); + expect(request.method).toEqual("GET"); + expect(request.body).toEqual(null); + expect(request.headers.get("x-amz-test-header")).toEqual("test-value"); + expect(request.headers.get("x-api-key")).toEqual("test-api-key"); + }); + + it("should abort fetch", async () => { + const signedFetch = createSignedFetcher({ ...options, fetch }); + + const controller = new AbortController(); + const signal = controller.signal; + + const response = signedFetch(url, { + signal, + }); + + controller.abort(); + + await expect(response).rejects.toThrowErrorMatchingInlineSnapshot(`[AbortError: This operation was aborted]`); + }); }); diff --git a/test/aws/package.json b/test/aws/package.json index c807c34..abe13c8 100644 --- a/test/aws/package.json +++ b/test/aws/package.json @@ -3,6 +3,7 @@ "private": true, "type": "module", "scripts": { + "postinstall": "pnpm run deploy", "deploy": "cdk deploy --all", "destroy": "cdk destroy", "pretest": "pnpm run deploy", @@ -17,4 +18,4 @@ "constructs": "^10.0.0", "ts-node": "^10.9.2" } -} \ No newline at end of file +} diff --git a/test/aws/test/api-gateway.test.ts b/test/aws/test/api-gateway.test.ts index 60a3019..39e9da0 100644 --- a/test/aws/test/api-gateway.test.ts +++ b/test/aws/test/api-gateway.test.ts @@ -18,12 +18,14 @@ const paths = [`/${RESOURCE}`, `/${RESOURCE}/foo`, `/${RESOURCE}/foo-*`]; describe("APIGateway", () => { describe("GET", () => { describe.each(paths)("Path: %s", async (path) => { + const url = `${apiRootUrl}${path}`; + it("should fetch with string", async () => { // Arrange const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); // Act - const response = await signedFetch(`${apiRootUrl}${path}`, { + const response = await signedFetch(url, { method: "GET", }); @@ -34,11 +36,43 @@ describe("APIGateway", () => { expect(data).toEqual(RESPONSE); }); + it("should fetch with URL", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new URL(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should fetch with Request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new Request(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + it("should throw an error for unsigned fetch", async () => { - const response = await fetch(`${apiRootUrl}/mock`, { + // Arrange + + // Act + const response = await fetch(url, { method: "GET", }); + // Assert expect(response.status).toBe(403); expect(response.statusText).toBe("Forbidden"); }); @@ -47,12 +81,14 @@ describe("APIGateway", () => { describe("POST", () => { describe.each(paths)("Path: %s", async (path) => { + const url = `${apiRootUrl}${path}`; + it("should fetch with string", async () => { // Arrange const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); // Act - const response = await signedFetch(`${apiRootUrl}${path}`, { + const response = await signedFetch(url, { method: "POST", body: JSON.stringify({}), headers: { @@ -67,9 +103,47 @@ describe("APIGateway", () => { expect(data).toEqual(RESPONSE); }); + it("should fetch with URL", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new URL(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should fetch with Request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new Request(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + it("should throw an error for unsigned fetch", async () => { - const response = await fetch(`${apiRootUrl}/mock`, { method: "POST" }); + // Arrange + + // Act + const response = await fetch(url, { + method: "POST", + body: JSON.stringify({}), + headers: { + "Content-Type": "application/json", + }, + }); + // Assert expect(response.status).toBe(403); expect(response.statusText).toBe("Forbidden"); }); diff --git a/test/aws/test/iam.test.ts b/test/aws/test/iam.test.ts index 08ed036..d2462dc 100644 --- a/test/aws/test/iam.test.ts +++ b/test/aws/test/iam.test.ts @@ -167,49 +167,6 @@ describe("IAM", () => { expect(data).toContain(""); }); - it("should fetch with additional headers", async () => { - // Arrange - const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); - - // Act - const response = await signedFetch(url, { - method: "POST", - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - "x-amz-test-header": "test-value", - "x-api-key": "test-api-key", - }, - }); - - // Assert - expect(response.status).toBe(200); - - const data = await response.text(); - expect(data).toContain(""); - }); - - it("should abort request", async () => { - // Arrange - const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); - const controller = new AbortController(); - const signal = controller.signal; - - // Act - const response = signedFetch(url, { - method: "POST", - signal, - body, - headers: { - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", - }, - }); - - controller.abort(); - - await expect(response).rejects.toThrow(); - }); - it("should throw an error for unsigned fetch", async () => { // Arrange diff --git a/test/aws/test/lambda.test.ts b/test/aws/test/lambda.test.ts index 0398894..7a8118f 100644 --- a/test/aws/test/lambda.test.ts +++ b/test/aws/test/lambda.test.ts @@ -15,12 +15,14 @@ const paths = ["", "/foo", "/foo-bar"]; describe("Lambda Function URL", () => { describe("GET", () => { describe.each(paths)("Path: %s", (path) => { + const url = `${functionUrl}${path}`; + it("should fetch with string", async () => { // Arrange const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); // Act - const response = await signedFetch(`${functionUrl}${path}`, { + const response = await signedFetch(url, { method: "GET", }); @@ -30,11 +32,36 @@ describe("Lambda Function URL", () => { expect(data).toEqual(RESPONSE); }); + it("should fetch with URL", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new URL(url)); + + // Assert + expect(response.status).toBe(200); + + const data = await response.json(); + expect(data).toEqual(RESPONSE); + }); + + it("should fetch with Request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new Request(url)); + + // Assert + expect(response.status).toBe(200); + }); + it("should throw an error for unsigned fetch", async () => { // Arrange // Act - const response = await fetch(`${functionUrl}${path}`, { + const response = await fetch(url, { method: "GET", }); @@ -47,12 +74,14 @@ describe("Lambda Function URL", () => { describe("POST", () => { describe.each(paths)("Path: %s", (path) => { + const url = `${functionUrl}${path}`; + it("should fetch with string", async () => { // Arrange const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); // Act - const response = await signedFetch(`${functionUrl}${path}`, { + const response = await signedFetch(url, { method: "POST", body: JSON.stringify({}), headers: { @@ -66,12 +95,38 @@ describe("Lambda Function URL", () => { expect(data).toEqual(RESPONSE); }); + it("should fetch with URL", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new URL(url)); + + // Assert + expect(response.status).toBe(200); + }); + + it("should fetch with Request", async () => { + // Arrange + const signedFetch = createSignedFetcher({ service: SERVICE, region: REGION }); + + // Act + const response = await signedFetch(new Request(url)); + + // Assert + expect(response.status).toBe(200); + }); + it("should throw an error for unsigned fetch", async () => { // Arrange // Act - const response = await fetch(`${functionUrl}${path}`, { - method: "GET", + const response = await fetch(url, { + method: "POST", + body: JSON.stringify({}), + headers: { + "Content-Type": "application/json", + }, }); // Assert From c331cde184e57378e5f039de5fa75bd2d84d7cc2 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 10:07:12 +0100 Subject: [PATCH 17/21] deploy aws stack --- .github/workflows/ci.yml | 4 ++++ test/aws/package.json | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 969a2aa..9b1217c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,6 +93,10 @@ jobs: - name: Build run: pnpm build + - name: Deploy + working-directory: test/aws + run: pnpm deploy + - name: Test run: pnpm test:e2e diff --git a/test/aws/package.json b/test/aws/package.json index abe13c8..4a5d08c 100644 --- a/test/aws/package.json +++ b/test/aws/package.json @@ -3,7 +3,6 @@ "private": true, "type": "module", "scripts": { - "postinstall": "pnpm run deploy", "deploy": "cdk deploy --all", "destroy": "cdk destroy", "pretest": "pnpm run deploy", From 7d982f5036b69f060faab8e50bbad3e098828e7f Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 10:08:25 +0100 Subject: [PATCH 18/21] ci --- .github/workflows/ci.yml | 2 +- biome.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b1217c..e6be985 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,7 +95,7 @@ jobs: - name: Deploy working-directory: test/aws - run: pnpm deploy + run: pnpm run deploy - name: Test run: pnpm test:e2e diff --git a/biome.json b/biome.json index e3552eb..e6daba9 100644 --- a/biome.json +++ b/biome.json @@ -20,7 +20,8 @@ "noForEach": "off" }, "style": { - "noNonNullAssertion": "off" + "noNonNullAssertion": "off", + "noUnusedTemplateLiteral": "off" } } }, From 5e55621f622fc458fcb5f56c647ea244403c2b66 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Sat, 28 Dec 2024 10:31:25 +0100 Subject: [PATCH 19/21] up cdk --- pnpm-lock.yaml | 13 +++++++++++-- test/aws/package.json | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e442f30..e2cbeb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,8 +88,8 @@ importers: specifier: ^3.716.0 version: 3.716.0 aws-cdk: - specifier: ^2.124.0 - version: 2.173.2 + specifier: ^2.173.4 + version: 2.173.4 aws-cdk-lib: specifier: ^2.124.0 version: 2.173.2(constructs@10.4.2) @@ -1531,6 +1531,11 @@ packages: engines: {node: '>= 14.15.0'} hasBin: true + aws-cdk@2.173.4: + resolution: {integrity: sha512-zgs3xU28VEKIwHwJHu0ZHeoEmwLGnHS2jPCMc2MsIMZu+a7CKyE77Tw6LwJkuuB96BQyqr6xJB3SbeWjXmcFhQ==} + engines: {node: '>= 14.15.0'} + hasBin: true + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5341,6 +5346,10 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + aws-cdk@2.173.4: + optionalDependencies: + fsevents: 2.3.2 + balanced-match@1.0.2: {} base64-js@1.5.1: {} diff --git a/test/aws/package.json b/test/aws/package.json index 4a5d08c..5b0d614 100644 --- a/test/aws/package.json +++ b/test/aws/package.json @@ -12,7 +12,7 @@ "@aws-sdk/client-api-gateway": "^3.535.0", "@aws-sdk/client-apigatewayv2": "^3.535.0", "@aws-sdk/client-lambda": "^3.716.0", - "aws-cdk": "^2.124.0", + "aws-cdk": "^2.173.4", "aws-cdk-lib": "^2.124.0", "constructs": "^10.0.0", "ts-node": "^10.9.2" From c64dc5da82cb5dbfb168430b9efcee58d05e1298 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Mon, 30 Dec 2024 08:37:25 +0100 Subject: [PATCH 20/21] coverage --- html/assets/index--EAEh9Ei.js | 52 +++++++++++++++++++++++++++++++++ html/assets/index-C0SwoDYm.css | 1 + html/bg.png | Bin 0 -> 190939 bytes html/favicon.svg | 5 ++++ html/html.meta.json.gz | Bin 0 -> 9320 bytes html/index.html | 31 ++++++++++++++++++++ src/index.ts | 1 + src/parse-request.ts | 26 ++--------------- src/sign-request.test.ts | 29 ++++++++++++++++++ vitest.config.ts | 2 +- 10 files changed, 123 insertions(+), 24 deletions(-) create mode 100644 html/assets/index--EAEh9Ei.js create mode 100644 html/assets/index-C0SwoDYm.css create mode 100644 html/bg.png create mode 100644 html/favicon.svg create mode 100644 html/html.meta.json.gz create mode 100644 html/index.html diff --git a/html/assets/index--EAEh9Ei.js b/html/assets/index--EAEh9Ei.js new file mode 100644 index 0000000..ab3867b --- /dev/null +++ b/html/assets/index--EAEh9Ei.js @@ -0,0 +1,52 @@ +var H_=Object.defineProperty;var q_=(e,t,r)=>t in e?H_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var ls=(e,t,r)=>q_(e,typeof t!="symbol"?t+"":t,r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const f of c.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&o(f)}).observe(document,{childList:!0,subtree:!0});function r(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function o(s){if(s.ep)return;s.ep=!0;const c=r(s);fetch(s.href,c)}})();/** +* @vue/shared v3.4.33 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function oh(e,t){const r=new Set(e.split(","));return o=>r.has(o)}const St={},ds=[],Jn=()=>{},B_=()=>!1,cu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),sh=e=>e.startsWith("onUpdate:"),Gt=Object.assign,lh=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},W_=Object.prototype.hasOwnProperty,ct=(e,t)=>W_.call(e,t),Ie=Array.isArray,hs=e=>ia(e)==="[object Map]",uu=e=>ia(e)==="[object Set]",cv=e=>ia(e)==="[object Date]",Xe=e=>typeof e=="function",$t=e=>typeof e=="string",Dr=e=>typeof e=="symbol",xt=e=>e!==null&&typeof e=="object",P0=e=>(xt(e)||Xe(e))&&Xe(e.then)&&Xe(e.catch),R0=Object.prototype.toString,ia=e=>R0.call(e),U_=e=>ia(e).slice(8,-1),D0=e=>ia(e)==="[object Object]",ah=e=>$t(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_l=oh(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fu=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},V_=/-(\w)/g,nr=fu(e=>e.replace(V_,(t,r)=>r?r.toUpperCase():"")),j_=/\B([A-Z])/g,ui=fu(e=>e.replace(j_,"-$1").toLowerCase()),du=fu(e=>e.charAt(0).toUpperCase()+e.slice(1)),mc=fu(e=>e?`on${du(e)}`:""),zr=(e,t)=>!Object.is(e,t),yc=(e,...t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:r})},cd=e=>{const t=parseFloat(e);return isNaN(t)?e:t},I0=e=>{const t=$t(e)?Number(e):NaN;return isNaN(t)?e:t};let uv;const F0=()=>uv||(uv=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zt(e){if(Ie(e)){const t={};for(let r=0;r{if(r){const o=r.split(K_);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function lt(e){let t="";if($t(e))t=e;else if(Ie(e))for(let r=0;rhu(r,t))}const B0=e=>!!(e&&e.__v_isRef===!0),qe=e=>$t(e)?e:e==null?"":Ie(e)||xt(e)&&(e.toString===R0||!Xe(e.toString))?B0(e)?qe(e.value):JSON.stringify(e,W0,2):String(e),W0=(e,t)=>B0(t)?W0(e,t.value):hs(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[o,s],c)=>(r[If(o,c)+" =>"]=s,r),{})}:uu(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>If(r))}:Dr(t)?If(t):xt(t)&&!Ie(t)&&!D0(t)?String(t):t,If=(e,t="")=>{var r;return Dr(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/** +* @vue/reactivity v3.4.33 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Wn;class tS{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Wn,!t&&Wn&&(this.index=(Wn.scopes||(Wn.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Wn;try{return Wn=this,t()}finally{Wn=r}}}on(){Wn=this}off(){Wn=this.parent}stop(t){if(this._active){let r,o;for(r=0,o=this.effects.length;r=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),to()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ui,r=Co;try{return Ui=!0,Co=this,this._runnings++,fv(this),this.fn()}finally{dv(this),this._runnings--,Co=r,Ui=t}}stop(){this.active&&(fv(this),dv(this),this.onStop&&this.onStop(),this.active=!1)}}function iS(e){return e.value}function fv(e){e._trackId++,e._depsLength=0}function dv(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const r=new Map;return r.cleanup=e,r.computed=t,r},Pc=new WeakMap,To=Symbol(""),dd=Symbol("");function zn(e,t,r){if(Ui&&Co){let o=Pc.get(e);o||Pc.set(e,o=new Map);let s=o.get(r);s||o.set(r,s=X0(()=>o.delete(r))),G0(Co,s)}}function ni(e,t,r,o,s,c){const f=Pc.get(e);if(!f)return;let d=[];if(t==="clear")d=[...f.values()];else if(r==="length"&&Ie(e)){const h=Number(o);f.forEach((g,v)=>{(v==="length"||!Dr(v)&&v>=h)&&d.push(g)})}else switch(r!==void 0&&d.push(f.get(r)),t){case"add":Ie(e)?ah(r)&&d.push(f.get("length")):(d.push(f.get(To)),hs(e)&&d.push(f.get(dd)));break;case"delete":Ie(e)||(d.push(f.get(To)),hs(e)&&d.push(f.get(dd)));break;case"set":hs(e)&&d.push(f.get(To));break}uh();for(const h of d)h&&K0(h,4);fh()}function oS(e,t){const r=Pc.get(e);return r&&r.get(t)}const sS=oh("__proto__,__v_isRef,__isVue"),Y0=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Dr)),hv=lS();function lS(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const o=pt(this);for(let c=0,f=this.length;c{e[t]=function(...r){eo(),uh();const o=pt(this)[t].apply(this,r);return fh(),to(),o}}),e}function aS(e){Dr(e)||(e=String(e));const t=pt(this);return zn(t,"has",e),t.hasOwnProperty(e)}class Z0{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,o){const s=this._isReadonly,c=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return c;if(r==="__v_raw")return o===(s?c?xS:ty:c?ey:Q0).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const f=Ie(t);if(!s){if(f&&ct(hv,r))return Reflect.get(hv,r,o);if(r==="hasOwnProperty")return aS}const d=Reflect.get(t,r,o);return(Dr(r)?Y0.has(r):sS(r))||(s||zn(t,"get",r),c)?d:Ot(d)?f&&ah(r)?d:d.value:xt(d)?s?oa(d):er(d):d}}class J0 extends Z0{constructor(t=!1){super(!1,t)}set(t,r,o,s){let c=t[r];if(!this._isShallow){const h=Lo(c);if(!_s(o)&&!Lo(o)&&(c=pt(c),o=pt(o)),!Ie(t)&&Ot(c)&&!Ot(o))return h?!1:(c.value=o,!0)}const f=Ie(t)&&ah(r)?Number(r)e,pu=e=>Reflect.getPrototypeOf(e);function Za(e,t,r=!1,o=!1){e=e.__v_raw;const s=pt(e),c=pt(t);r||(zr(t,c)&&zn(s,"get",t),zn(s,"get",c));const{has:f}=pu(s),d=o?dh:r?mh:zl;if(f.call(s,t))return d(e.get(t));if(f.call(s,c))return d(e.get(c));e!==s&&e.get(t)}function Ja(e,t=!1){const r=this.__v_raw,o=pt(r),s=pt(e);return t||(zr(e,s)&&zn(o,"has",e),zn(o,"has",s)),e===s?r.has(e):r.has(e)||r.has(s)}function Qa(e,t=!1){return e=e.__v_raw,!t&&zn(pt(e),"iterate",To),Reflect.get(e,"size",e)}function pv(e,t=!1){!t&&!_s(e)&&!Lo(e)&&(e=pt(e));const r=pt(this);return pu(r).has.call(r,e)||(r.add(e),ni(r,"add",e,e)),this}function gv(e,t,r=!1){!r&&!_s(t)&&!Lo(t)&&(t=pt(t));const o=pt(this),{has:s,get:c}=pu(o);let f=s.call(o,e);f||(e=pt(e),f=s.call(o,e));const d=c.call(o,e);return o.set(e,t),f?zr(t,d)&&ni(o,"set",e,t):ni(o,"add",e,t),this}function vv(e){const t=pt(this),{has:r,get:o}=pu(t);let s=r.call(t,e);s||(e=pt(e),s=r.call(t,e)),o&&o.call(t,e);const c=t.delete(e);return s&&ni(t,"delete",e,void 0),c}function mv(){const e=pt(this),t=e.size!==0,r=e.clear();return t&&ni(e,"clear",void 0,void 0),r}function ec(e,t){return function(o,s){const c=this,f=c.__v_raw,d=pt(f),h=t?dh:e?mh:zl;return!e&&zn(d,"iterate",To),f.forEach((g,v)=>o.call(s,h(g),h(v),c))}}function tc(e,t,r){return function(...o){const s=this.__v_raw,c=pt(s),f=hs(c),d=e==="entries"||e===Symbol.iterator&&f,h=e==="keys"&&f,g=s[e](...o),v=r?dh:t?mh:zl;return!t&&zn(c,"iterate",h?dd:To),{next(){const{value:y,done:b}=g.next();return b?{value:y,done:b}:{value:d?[v(y[0]),v(y[1])]:v(y),done:b}},[Symbol.iterator](){return this}}}}function Ei(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hS(){const e={get(c){return Za(this,c)},get size(){return Qa(this)},has:Ja,add:pv,set:gv,delete:vv,clear:mv,forEach:ec(!1,!1)},t={get(c){return Za(this,c,!1,!0)},get size(){return Qa(this)},has:Ja,add(c){return pv.call(this,c,!0)},set(c,f){return gv.call(this,c,f,!0)},delete:vv,clear:mv,forEach:ec(!1,!0)},r={get(c){return Za(this,c,!0)},get size(){return Qa(this,!0)},has(c){return Ja.call(this,c,!0)},add:Ei("add"),set:Ei("set"),delete:Ei("delete"),clear:Ei("clear"),forEach:ec(!0,!1)},o={get(c){return Za(this,c,!0,!0)},get size(){return Qa(this,!0)},has(c){return Ja.call(this,c,!0)},add:Ei("add"),set:Ei("set"),delete:Ei("delete"),clear:Ei("clear"),forEach:ec(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(c=>{e[c]=tc(c,!1,!1),r[c]=tc(c,!0,!1),t[c]=tc(c,!1,!0),o[c]=tc(c,!0,!0)}),[e,r,t,o]}const[pS,gS,vS,mS]=hS();function hh(e,t){const r=t?e?mS:vS:e?gS:pS;return(o,s,c)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?o:Reflect.get(ct(r,s)&&s in o?r:o,s,c)}const yS={get:hh(!1,!1)},bS={get:hh(!1,!0)},wS={get:hh(!0,!1)};const Q0=new WeakMap,ey=new WeakMap,ty=new WeakMap,xS=new WeakMap;function _S(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function SS(e){return e.__v_skip||!Object.isExtensible(e)?0:_S(U_(e))}function er(e){return Lo(e)?e:gh(e,!1,uS,yS,Q0)}function ph(e){return gh(e,!1,dS,bS,ey)}function oa(e){return gh(e,!0,fS,wS,ty)}function gh(e,t,r,o,s){if(!xt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const c=s.get(e);if(c)return c;const f=SS(e);if(f===0)return e;const d=new Proxy(e,f===2?o:r);return s.set(e,d),d}function Sl(e){return Lo(e)?Sl(e.__v_raw):!!(e&&e.__v_isReactive)}function Lo(e){return!!(e&&e.__v_isReadonly)}function _s(e){return!!(e&&e.__v_isShallow)}function ny(e){return e?!!e.__v_raw:!1}function pt(e){const t=e&&e.__v_raw;return t?pt(t):e}function vh(e){return Object.isExtensible(e)&&z0(e,"__v_skip",!0),e}const zl=e=>xt(e)?er(e):e,mh=e=>xt(e)?oa(e):e;class ry{constructor(t,r,o,s){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ch(()=>t(this._value),()=>kl(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=o}get value(){const t=pt(this);return(!t._cacheable||t.effect.dirty)&&zr(t._value,t._value=t.effect.run())&&kl(t,4),yh(t),t.effect._dirtyLevel>=2&&kl(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function kS(e,t,r=!1){let o,s;const c=Xe(e);return c?(o=e,s=Jn):(o=e.get,s=e.set),new ry(o,s,c||!s,r)}function yh(e){var t;Ui&&Co&&(e=pt(e),G0(Co,(t=e.dep)!=null?t:e.dep=X0(()=>e.dep=void 0,e instanceof ry?e:void 0)))}function kl(e,t=4,r,o){e=pt(e);const s=e.dep;s&&K0(s,t)}function Ot(e){return!!(e&&e.__v_isRef===!0)}function Be(e){return iy(e,!1)}function Fr(e){return iy(e,!0)}function iy(e,t){return Ot(e)?e:new CS(e,t)}class CS{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:pt(t),this._value=r?t:zl(t)}get value(){return yh(this),this._value}set value(t){const r=this.__v_isShallow||_s(t)||Lo(t);t=r?t:pt(t),zr(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=r?t:zl(t),kl(this,4))}}function q(e){return Ot(e)?e.value:e}const TS={get:(e,t,r)=>q(Reflect.get(e,t,r)),set:(e,t,r,o)=>{const s=e[t];return Ot(s)&&!Ot(r)?(s.value=r,!0):Reflect.set(e,t,r,o)}};function oy(e){return Sl(e)?e:new Proxy(e,TS)}class ES{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:o}=t(()=>yh(this),()=>kl(this));this._get=r,this._set=o}get value(){return this._get()}set value(t){this._set(t)}}function sy(e){return new ES(e)}function LS(e){const t=Ie(e)?new Array(e.length):{};for(const r in e)t[r]=ly(e,r);return t}class AS{constructor(t,r,o){this._object=t,this._key=r,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return oS(pt(this._object),this._key)}}class MS{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function gu(e,t,r){return Ot(e)?e:Xe(e)?new MS(e):xt(e)&&arguments.length>1?ly(e,t,r):Be(e)}function ly(e,t,r){const o=e[t];return Ot(o)?o:new AS(e,t,r)}/** +* @vue/runtime-core v3.4.33 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Vi(e,t,r,o){try{return o?e(...o):e()}catch(s){sa(s,t,r)}}function tr(e,t,r,o){if(Xe(e)){const s=Vi(e,t,r,o);return s&&P0(s)&&s.catch(c=>{sa(c,t,r)}),s}if(Ie(e)){const s=[];for(let c=0;c>>1,s=un[o],c=Fl(s);cMr&&un.splice(t,1)}function pd(e){Ie(e)?ps.push(...e):(!Pi||!Pi.includes(e,e.allowRecurse?xo+1:xo))&&ps.push(e),cy()}function yv(e,t,r=Il?Mr+1:0){for(;rFl(r)-Fl(o));if(ps.length=0,Pi){Pi.push(...t);return}for(Pi=t,xo=0;xoe.id==null?1/0:e.id,PS=(e,t)=>{const r=Fl(e)-Fl(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function fy(e){hd=!1,Il=!0,un.sort(PS);try{for(Mr=0;Mrst;function st(e,t=Yt,r){if(!t||e._n)return e;const o=(...s)=>{o._d&&Hc(-1);const c=Rc(t);let f;try{f=e(...s)}finally{Rc(c),o._d&&Hc(1)}return f};return o._n=!0,o._c=!0,o._d=!0,o}function _t(e,t){if(Yt===null)return e;const r=ku(Yt),o=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),yy(()=>{e.isUnmounting=!0}),e}const Yn=[Function,Array],hy={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Yn,onEnter:Yn,onAfterEnter:Yn,onEnterCancelled:Yn,onBeforeLeave:Yn,onLeave:Yn,onAfterLeave:Yn,onLeaveCancelled:Yn,onBeforeAppear:Yn,onAppear:Yn,onAfterAppear:Yn,onAppearCancelled:Yn},py=e=>{const t=e.subTree;return t.component?py(t.component):t},DS={name:"BaseTransition",props:hy,setup(e,{slots:t}){const r=ca(),o=RS();return()=>{const s=t.default&&vy(t.default(),!0);if(!s||!s.length)return;let c=s[0];if(s.length>1){for(const b of s)if(b.type!==fn){c=b;break}}const f=pt(e),{mode:d}=f;if(o.isLeaving)return Ff(c);const h=bv(c);if(!h)return Ff(c);let g=gd(h,f,o,r,b=>g=b);Dc(h,g);const v=r.subTree,y=v&&bv(v);if(y&&y.type!==fn&&!Nr(h,y)&&py(r).type!==fn){const b=gd(y,f,o,r);if(Dc(y,b),d==="out-in"&&h.type!==fn)return o.isLeaving=!0,b.afterLeave=()=>{o.isLeaving=!1,r.update.active!==!1&&(r.effect.dirty=!0,r.update())},Ff(c);d==="in-out"&&h.type!==fn&&(b.delayLeave=(x,T,E)=>{const M=gy(o,y);M[String(y.key)]=y,x[Ri]=()=>{T(),x[Ri]=void 0,delete g.delayedLeave},g.delayedLeave=E})}return c}}},zS=DS;function gy(e,t){const{leavingVNodes:r}=e;let o=r.get(t.type);return o||(o=Object.create(null),r.set(t.type,o)),o}function gd(e,t,r,o,s){const{appear:c,mode:f,persisted:d=!1,onBeforeEnter:h,onEnter:g,onAfterEnter:v,onEnterCancelled:y,onBeforeLeave:b,onLeave:x,onAfterLeave:T,onLeaveCancelled:E,onBeforeAppear:M,onAppear:N,onAfterAppear:L,onAppearCancelled:O}=t,A=String(e.key),H=gy(r,e),z=(te,j)=>{te&&tr(te,o,9,j)},J=(te,j)=>{const ne=j[1];z(te,j),Ie(te)?te.every(K=>K.length<=1)&&ne():te.length<=1&&ne()},re={mode:f,persisted:d,beforeEnter(te){let j=h;if(!r.isMounted)if(c)j=M||h;else return;te[Ri]&&te[Ri](!0);const ne=H[A];ne&&Nr(e,ne)&&ne.el[Ri]&&ne.el[Ri](),z(j,[te])},enter(te){let j=g,ne=v,K=y;if(!r.isMounted)if(c)j=N||g,ne=L||v,K=O||y;else return;let V=!1;const I=te[nc]=k=>{V||(V=!0,k?z(K,[te]):z(ne,[te]),re.delayedLeave&&re.delayedLeave(),te[nc]=void 0)};j?J(j,[te,I]):I()},leave(te,j){const ne=String(e.key);if(te[nc]&&te[nc](!0),r.isUnmounting)return j();z(b,[te]);let K=!1;const V=te[Ri]=I=>{K||(K=!0,j(),I?z(E,[te]):z(T,[te]),te[Ri]=void 0,H[ne]===e&&delete H[ne])};H[ne]=e,x?J(x,[te,V]):V()},clone(te){const j=gd(te,t,r,o,s);return s&&s(j),j}};return re}function Ff(e){if(mu(e))return e=Ki(e),e.children=null,e}function bv(e){if(!mu(e))return e;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&Xe(r.default))return r.default()}}function Dc(e,t){e.shapeFlag&6&&e.component?Dc(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function vy(e,t=!1,r){let o=[],s=0;for(let c=0;c1)for(let c=0;c!!e.type.__asyncLoader,mu=e=>e.type.__isKeepAlive;function IS(e,t){my(e,"a",t)}function FS(e,t){my(e,"da",t)}function my(e,t,r=sn){const o=e.__wdc||(e.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(yu(t,o,r),r){let s=r.parent;for(;s&&s.parent;)mu(s.parent.vnode)&&HS(o,t,r,s),s=s.parent}}function HS(e,t,r,o){const s=yu(t,e,o,!0);bu(()=>{lh(o[t],s)},r)}function yu(e,t,r=sn,o=!1){if(r){const s=r[e]||(r[e]=[]),c=t.__weh||(t.__weh=(...f)=>{eo();const d=ua(r),h=tr(t,r,e,f);return d(),to(),h});return o?s.unshift(c):s.push(c),c}}const fi=e=>(t,r=sn)=>{(!Su||e==="sp")&&yu(e,(...o)=>t(...o),r)},qS=fi("bm"),Os=fi("m"),BS=fi("bu"),WS=fi("u"),yy=fi("bum"),bu=fi("um"),US=fi("sp"),VS=fi("rtg"),jS=fi("rtc");function GS(e,t=sn){yu("ec",e,t)}const xh="components",KS="directives";function Ao(e,t){return _h(xh,e,!0,t)||e}const by=Symbol.for("v-ndc");function wv(e){return $t(e)?_h(xh,e,!1)||e:e||by}function Hr(e){return _h(KS,e)}function _h(e,t,r=!0,o=!1){const s=Yt||sn;if(s){const c=s.type;if(e===xh){const d=Wk(c,!1);if(d&&(d===t||d===nr(t)||d===du(nr(t))))return c}const f=xv(s[e]||c[e],t)||xv(s.appContext[e],t);return!f&&o?c:f}}function xv(e,t){return e&&(e[t]||e[nr(t)]||e[du(nr(t))])}function si(e,t,r,o){let s;const c=r;if(Ie(e)||$t(e)){s=new Array(e.length);for(let f=0,d=e.length;ft(f,d,void 0,c));else{const f=Object.keys(e);s=new Array(f.length);for(let d=0,h=f.length;d{const c=o.fn(...s);return c&&(c.key=o.key),c}:o.fn)}return e}function dn(e,t,r={},o,s){if(Yt.isCE||Yt.parent&&Cl(Yt.parent)&&Yt.parent.isCE)return t!=="default"&&(r.name=t),Oe("slot",r,o&&o());let c=e[t];c&&c._c&&(c._d=!1),oe();const f=c&&wy(c(r)),d=ot(ut,{key:(r.key||f&&f.key||`_${t}`)+(!f&&o?"_fb":"")},f||(o?o():[]),f&&e._===1?64:-2);return d.scopeId&&(d.slotScopeIds=[d.scopeId+"-s"]),c&&c._c&&(c._d=!0),d}function wy(e){return e.some(t=>ql(t)?!(t.type===fn||t.type===ut&&!wy(t.children)):!0)?e:null}function YS(e,t){const r={};for(const o in e)r[mc(o)]=e[o];return r}const vd=e=>e?Wy(e)?ku(e):vd(e.parent):null,Tl=Gt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>vd(e.parent),$root:e=>vd(e.root),$emit:e=>e.emit,$options:e=>Sh(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,wh(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>_k.bind(e)}),Hf=(e,t)=>e!==St&&!e.__isScriptSetup&&ct(e,t),ZS={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:o,data:s,props:c,accessCache:f,type:d,appContext:h}=e;let g;if(t[0]!=="$"){const x=f[t];if(x!==void 0)switch(x){case 1:return o[t];case 2:return s[t];case 4:return r[t];case 3:return c[t]}else{if(Hf(o,t))return f[t]=1,o[t];if(s!==St&&ct(s,t))return f[t]=2,s[t];if((g=e.propsOptions[0])&&ct(g,t))return f[t]=3,c[t];if(r!==St&&ct(r,t))return f[t]=4,r[t];md&&(f[t]=0)}}const v=Tl[t];let y,b;if(v)return t==="$attrs"&&zn(e.attrs,"get",""),v(e);if((y=d.__cssModules)&&(y=y[t]))return y;if(r!==St&&ct(r,t))return f[t]=4,r[t];if(b=h.config.globalProperties,ct(b,t))return b[t]},set({_:e},t,r){const{data:o,setupState:s,ctx:c}=e;return Hf(s,t)?(s[t]=r,!0):o!==St&&ct(o,t)?(o[t]=r,!0):ct(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(c[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:o,appContext:s,propsOptions:c}},f){let d;return!!r[f]||e!==St&&ct(e,f)||Hf(t,f)||(d=c[0])&&ct(d,f)||ct(o,f)||ct(Tl,f)||ct(s.config.globalProperties,f)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:ct(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function JS(){return QS().attrs}function QS(){const e=ca();return e.setupContext||(e.setupContext=Vy(e))}function zc(e){return Ie(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}function Ic(e,t){return!e||!t?e||t:Ie(e)&&Ie(t)?e.concat(t):Gt({},zc(e),zc(t))}let md=!0;function ek(e){const t=Sh(e),r=e.proxy,o=e.ctx;md=!1,t.beforeCreate&&_v(t.beforeCreate,e,"bc");const{data:s,computed:c,methods:f,watch:d,provide:h,inject:g,created:v,beforeMount:y,mounted:b,beforeUpdate:x,updated:T,activated:E,deactivated:M,beforeDestroy:N,beforeUnmount:L,destroyed:O,unmounted:A,render:H,renderTracked:z,renderTriggered:J,errorCaptured:re,serverPrefetch:te,expose:j,inheritAttrs:ne,components:K,directives:V,filters:I}=t;if(g&&tk(g,o,null),f)for(const W in f){const ie=f[W];Xe(ie)&&(o[W]=ie.bind(r))}if(s){const W=s.call(r,r);xt(W)&&(e.data=er(W))}if(md=!0,c)for(const W in c){const ie=c[W],ye=Xe(ie)?ie.bind(r,r):Xe(ie.get)?ie.get.bind(r,r):Jn,Ne=!Xe(ie)&&Xe(ie.set)?ie.set.bind(r):Jn,We=Me({get:ye,set:Ne});Object.defineProperty(o,W,{enumerable:!0,configurable:!0,get:()=>We.value,set:je=>We.value=je})}if(d)for(const W in d)xy(d[W],o,r,W);if(h){const W=Xe(h)?h.call(r):h;Reflect.ownKeys(W).forEach(ie=>{bc(ie,W[ie])})}v&&_v(v,e,"c");function B(W,ie){Ie(ie)?ie.forEach(ye=>W(ye.bind(r))):ie&&W(ie.bind(r))}if(B(qS,y),B(Os,b),B(BS,x),B(WS,T),B(IS,E),B(FS,M),B(GS,re),B(jS,z),B(VS,J),B(yy,L),B(bu,A),B(US,te),Ie(j))if(j.length){const W=e.exposed||(e.exposed={});j.forEach(ie=>{Object.defineProperty(W,ie,{get:()=>r[ie],set:ye=>r[ie]=ye})})}else e.exposed||(e.exposed={});H&&e.render===Jn&&(e.render=H),ne!=null&&(e.inheritAttrs=ne),K&&(e.components=K),V&&(e.directives=V)}function tk(e,t,r=Jn){Ie(e)&&(e=yd(e));for(const o in e){const s=e[o];let c;xt(s)?"default"in s?c=ri(s.from||o,s.default,!0):c=ri(s.from||o):c=ri(s),Ot(c)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>c.value,set:f=>c.value=f}):t[o]=c}}function _v(e,t,r){tr(Ie(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,r)}function xy(e,t,r,o){const s=o.includes(".")?Py(r,o):()=>r[o];if($t(e)){const c=t[e];Xe(c)&&Ht(s,c)}else if(Xe(e))Ht(s,e.bind(r));else if(xt(e))if(Ie(e))e.forEach(c=>xy(c,t,r,o));else{const c=Xe(e.handler)?e.handler.bind(r):t[e.handler];Xe(c)&&Ht(s,c,e)}}function Sh(e){const t=e.type,{mixins:r,extends:o}=t,{mixins:s,optionsCache:c,config:{optionMergeStrategies:f}}=e.appContext,d=c.get(t);let h;return d?h=d:!s.length&&!r&&!o?h=t:(h={},s.length&&s.forEach(g=>Fc(h,g,f,!0)),Fc(h,t,f)),xt(t)&&c.set(t,h),h}function Fc(e,t,r,o=!1){const{mixins:s,extends:c}=t;c&&Fc(e,c,r,!0),s&&s.forEach(f=>Fc(e,f,r,!0));for(const f in t)if(!(o&&f==="expose")){const d=nk[f]||r&&r[f];e[f]=d?d(e[f],t[f]):t[f]}return e}const nk={data:Sv,props:kv,emits:kv,methods:yl,computed:yl,beforeCreate:xn,created:xn,beforeMount:xn,mounted:xn,beforeUpdate:xn,updated:xn,beforeDestroy:xn,beforeUnmount:xn,destroyed:xn,unmounted:xn,activated:xn,deactivated:xn,errorCaptured:xn,serverPrefetch:xn,components:yl,directives:yl,watch:ik,provide:Sv,inject:rk};function Sv(e,t){return t?e?function(){return Gt(Xe(e)?e.call(this,this):e,Xe(t)?t.call(this,this):t)}:t:e}function rk(e,t){return yl(yd(e),yd(t))}function yd(e){if(Ie(e)){const t={};for(let r=0;r1)return r&&Xe(t)?t.call(o&&o.proxy):t}}const Sy={},ky=()=>Object.create(Sy),Cy=e=>Object.getPrototypeOf(e)===Sy;function lk(e,t,r,o=!1){const s={},c=ky();e.propsDefaults=Object.create(null),Ty(e,t,s,c);for(const f in e.propsOptions[0])f in s||(s[f]=void 0);r?e.props=o?s:ph(s):e.type.props?e.props=s:e.props=c,e.attrs=c}function ak(e,t,r,o){const{props:s,attrs:c,vnode:{patchFlag:f}}=e,d=pt(s),[h]=e.propsOptions;let g=!1;if((o||f>0)&&!(f&16)){if(f&8){const v=e.vnode.dynamicProps;for(let y=0;y{h=!0;const[b,x]=Ey(y,t,!0);Gt(f,b),x&&d.push(...x)};!r&&t.mixins.length&&t.mixins.forEach(v),e.extends&&v(e.extends),e.mixins&&e.mixins.forEach(v)}if(!c&&!h)return xt(e)&&o.set(e,ds),ds;if(Ie(c))for(let v=0;v-1,x[1]=E<0||T-1||ct(x,"default"))&&d.push(y)}}}const g=[f,d];return xt(e)&&o.set(e,g),g}function Cv(e){return e[0]!=="$"&&!_l(e)}function Tv(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Ev(e,t){return Tv(e)===Tv(t)}function Lv(e,t){return Ie(t)?t.findIndex(r=>Ev(r,e)):Xe(t)&&Ev(t,e)?0:-1}const Ly=e=>e[0]==="_"||e==="$stable",kh=e=>Ie(e)?e.map(mr):[mr(e)],uk=(e,t,r)=>{if(t._n)return t;const o=st((...s)=>kh(t(...s)),r);return o._c=!1,o},Ay=(e,t,r)=>{const o=e._ctx;for(const s in e){if(Ly(s))continue;const c=e[s];if(Xe(c))t[s]=uk(s,c,o);else if(c!=null){const f=kh(c);t[s]=()=>f}}},My=(e,t)=>{const r=kh(t);e.slots.default=()=>r},Ny=(e,t,r)=>{for(const o in t)(r||o!=="_")&&(e[o]=t[o])},fk=(e,t,r)=>{const o=e.slots=ky();if(e.vnode.shapeFlag&32){const s=t._;s?(Ny(o,t,r),r&&z0(o,"_",s,!0)):Ay(t,o)}else t&&My(e,t)},dk=(e,t,r)=>{const{vnode:o,slots:s}=e;let c=!0,f=St;if(o.shapeFlag&32){const d=t._;d?r&&d===1?c=!1:Ny(s,t,r):(c=!t.$stable,Ay(t,s)),f=t}else t&&(My(e,t),f={default:1});if(c)for(const d in s)!Ly(d)&&f[d]==null&&delete s[d]};function wd(e,t,r,o,s=!1){if(Ie(e)){e.forEach((b,x)=>wd(b,t&&(Ie(t)?t[x]:t),r,o,s));return}if(Cl(o)&&!s)return;const c=o.shapeFlag&4?ku(o.component):o.el,f=s?null:c,{i:d,r:h}=e,g=t&&t.r,v=d.refs===St?d.refs={}:d.refs,y=d.setupState;if(g!=null&&g!==h&&($t(g)?(v[g]=null,ct(y,g)&&(y[g]=null)):Ot(g)&&(g.value=null)),Xe(h))Vi(h,d,12,[f,v]);else{const b=$t(h),x=Ot(h);if(b||x){const T=()=>{if(e.f){const E=b?ct(y,h)?y[h]:v[h]:h.value;s?Ie(E)&&lh(E,c):Ie(E)?E.includes(c)||E.push(c):b?(v[h]=[c],ct(y,h)&&(y[h]=v[h])):(h.value=[c],e.k&&(v[e.k]=h.value))}else b?(v[h]=f,ct(y,h)&&(y[h]=f)):x&&(h.value=f,e.k&&(v[e.k]=f))};f?(T.id=-1,Nn(T,r)):T()}}}const hk=Symbol("_vte"),pk=e=>e.__isTeleport,Nn=Pk;function gk(e){return vk(e)}function vk(e,t){const r=F0();r.__VUE__=!0;const{insert:o,remove:s,patchProp:c,createElement:f,createText:d,createComment:h,setText:g,setElementText:v,parentNode:y,nextSibling:b,setScopeId:x=Jn,insertStaticContent:T}=e,E=(P,F,Z,ue=null,le=null,he=null,Se=void 0,fe=null,xe=!!F.dynamicChildren)=>{if(P===F)return;P&&!Nr(P,F)&&(ue=X(P),je(P,le,he,!0),P=null),F.patchFlag===-2&&(xe=!1,F.dynamicChildren=null);const{type:pe,ref:Ae,shapeFlag:ze}=F;switch(pe){case _u:M(P,F,Z,ue);break;case fn:N(P,F,Z,ue);break;case Wf:P==null&&L(F,Z,ue,Se);break;case ut:K(P,F,Z,ue,le,he,Se,fe,xe);break;default:ze&1?H(P,F,Z,ue,le,he,Se,fe,xe):ze&6?V(P,F,Z,ue,le,he,Se,fe,xe):(ze&64||ze&128)&&pe.process(P,F,Z,ue,le,he,Se,fe,xe,$e)}Ae!=null&&le&&wd(Ae,P&&P.ref,he,F||P,!F)},M=(P,F,Z,ue)=>{if(P==null)o(F.el=d(F.children),Z,ue);else{const le=F.el=P.el;F.children!==P.children&&g(le,F.children)}},N=(P,F,Z,ue)=>{P==null?o(F.el=h(F.children||""),Z,ue):F.el=P.el},L=(P,F,Z,ue)=>{[P.el,P.anchor]=T(P.children,F,Z,ue,P.el,P.anchor)},O=({el:P,anchor:F},Z,ue)=>{let le;for(;P&&P!==F;)le=b(P),o(P,Z,ue),P=le;o(F,Z,ue)},A=({el:P,anchor:F})=>{let Z;for(;P&&P!==F;)Z=b(P),s(P),P=Z;s(F)},H=(P,F,Z,ue,le,he,Se,fe,xe)=>{F.type==="svg"?Se="svg":F.type==="math"&&(Se="mathml"),P==null?z(F,Z,ue,le,he,Se,fe,xe):te(P,F,le,he,Se,fe,xe)},z=(P,F,Z,ue,le,he,Se,fe)=>{let xe,pe;const{props:Ae,shapeFlag:ze,transition:Re,dirs:Ue}=P;if(xe=P.el=f(P.type,he,Ae&&Ae.is,Ae),ze&8?v(xe,P.children):ze&16&&re(P.children,xe,null,ue,le,qf(P,he),Se,fe),Ue&&go(P,null,ue,"created"),J(xe,P,P.scopeId,Se,ue),Ae){for(const vt in Ae)vt!=="value"&&!_l(vt)&&c(xe,vt,null,Ae[vt],he,ue);"value"in Ae&&c(xe,"value",null,Ae.value,he),(pe=Ae.onVnodeBeforeMount)&&Ar(pe,ue,P)}Ue&&go(P,null,ue,"beforeMount");const Ge=mk(le,Re);Ge&&Re.beforeEnter(xe),o(xe,F,Z),((pe=Ae&&Ae.onVnodeMounted)||Ge||Ue)&&Nn(()=>{pe&&Ar(pe,ue,P),Ge&&Re.enter(xe),Ue&&go(P,null,ue,"mounted")},le)},J=(P,F,Z,ue,le)=>{if(Z&&x(P,Z),ue)for(let he=0;he{for(let pe=xe;pe{const fe=F.el=P.el;let{patchFlag:xe,dynamicChildren:pe,dirs:Ae}=F;xe|=P.patchFlag&16;const ze=P.props||St,Re=F.props||St;let Ue;if(Z&&vo(Z,!1),(Ue=Re.onVnodeBeforeUpdate)&&Ar(Ue,Z,F,P),Ae&&go(F,P,Z,"beforeUpdate"),Z&&vo(Z,!0),(ze.innerHTML&&Re.innerHTML==null||ze.textContent&&Re.textContent==null)&&v(fe,""),pe?j(P.dynamicChildren,pe,fe,Z,ue,qf(F,le),he):Se||ie(P,F,fe,null,Z,ue,qf(F,le),he,!1),xe>0){if(xe&16)ne(fe,ze,Re,Z,le);else if(xe&2&&ze.class!==Re.class&&c(fe,"class",null,Re.class,le),xe&4&&c(fe,"style",ze.style,Re.style,le),xe&8){const Ge=F.dynamicProps;for(let vt=0;vt{Ue&&Ar(Ue,Z,F,P),Ae&&go(F,P,Z,"updated")},ue)},j=(P,F,Z,ue,le,he,Se)=>{for(let fe=0;fe{if(F!==Z){if(F!==St)for(const he in F)!_l(he)&&!(he in Z)&&c(P,he,F[he],null,le,ue);for(const he in Z){if(_l(he))continue;const Se=Z[he],fe=F[he];Se!==fe&&he!=="value"&&c(P,he,fe,Se,le,ue)}"value"in Z&&c(P,"value",F.value,Z.value,le)}},K=(P,F,Z,ue,le,he,Se,fe,xe)=>{const pe=F.el=P?P.el:d(""),Ae=F.anchor=P?P.anchor:d("");let{patchFlag:ze,dynamicChildren:Re,slotScopeIds:Ue}=F;Ue&&(fe=fe?fe.concat(Ue):Ue),P==null?(o(pe,Z,ue),o(Ae,Z,ue),re(F.children||[],Z,Ae,le,he,Se,fe,xe)):ze>0&&ze&64&&Re&&P.dynamicChildren?(j(P.dynamicChildren,Re,Z,le,he,Se,fe),(F.key!=null||le&&F===le.subTree)&&$y(P,F,!0)):ie(P,F,Z,Ae,le,he,Se,fe,xe)},V=(P,F,Z,ue,le,he,Se,fe,xe)=>{F.slotScopeIds=fe,P==null?F.shapeFlag&512?le.ctx.activate(F,Z,ue,Se,xe):I(F,Z,ue,le,he,Se,xe):k(P,F,xe)},I=(P,F,Z,ue,le,he,Se)=>{const fe=P.component=Fk(P,ue,le);if(mu(P)&&(fe.ctx.renderer=$e),Hk(fe,!1,Se),fe.asyncDep){if(le&&le.registerDep(fe,B,Se),!P.el){const xe=fe.subTree=Oe(fn);N(null,xe,F,Z)}}else B(fe,P,F,Z,le,he,Se)},k=(P,F,Z)=>{const ue=F.component=P.component;if(Ek(P,F,Z))if(ue.asyncDep&&!ue.asyncResolved){W(ue,F,Z);return}else ue.next=F,OS(ue.update),ue.effect.dirty=!0,ue.update();else F.el=P.el,ue.vnode=F},B=(P,F,Z,ue,le,he,Se)=>{const fe=()=>{if(P.isMounted){let{next:Ae,bu:ze,u:Re,parent:Ue,vnode:Ge}=P;{const Jt=Oy(P);if(Jt){Ae&&(Ae.el=Ge.el,W(P,Ae,Se)),Jt.asyncDep.then(()=>{P.isUnmounted||fe()});return}}let vt=Ae,tt;vo(P,!1),Ae?(Ae.el=Ge.el,W(P,Ae,Se)):Ae=Ge,ze&&yc(ze),(tt=Ae.props&&Ae.props.onVnodeBeforeUpdate)&&Ar(tt,Ue,Ae,Ge),vo(P,!0);const nt=Bf(P),It=P.subTree;P.subTree=nt,E(It,nt,y(It.el),X(It),P,le,he),Ae.el=nt.el,vt===null&&Eh(P,nt.el),Re&&Nn(Re,le),(tt=Ae.props&&Ae.props.onVnodeUpdated)&&Nn(()=>Ar(tt,Ue,Ae,Ge),le)}else{let Ae;const{el:ze,props:Re}=F,{bm:Ue,m:Ge,parent:vt}=P,tt=Cl(F);if(vo(P,!1),Ue&&yc(Ue),!tt&&(Ae=Re&&Re.onVnodeBeforeMount)&&Ar(Ae,vt,F),vo(P,!0),ze&&Ye){const nt=()=>{P.subTree=Bf(P),Ye(ze,P.subTree,P,le,null)};tt?F.type.__asyncLoader().then(()=>!P.isUnmounted&&nt()):nt()}else{const nt=P.subTree=Bf(P);E(null,nt,Z,ue,P,le,he),F.el=nt.el}if(Ge&&Nn(Ge,le),!tt&&(Ae=Re&&Re.onVnodeMounted)){const nt=F;Nn(()=>Ar(Ae,vt,nt),le)}(F.shapeFlag&256||vt&&Cl(vt.vnode)&&vt.vnode.shapeFlag&256)&&P.a&&Nn(P.a,le),P.isMounted=!0,F=Z=ue=null}},xe=P.effect=new ch(fe,Jn,()=>wh(pe),P.scope),pe=P.update=()=>{xe.dirty&&xe.run()};pe.i=P,pe.id=P.uid,vo(P,!0),pe()},W=(P,F,Z)=>{F.component=P;const ue=P.vnode.props;P.vnode=F,P.next=null,ak(P,F.props,ue,Z),dk(P,F.children,Z),eo(),yv(P),to()},ie=(P,F,Z,ue,le,he,Se,fe,xe=!1)=>{const pe=P&&P.children,Ae=P?P.shapeFlag:0,ze=F.children,{patchFlag:Re,shapeFlag:Ue}=F;if(Re>0){if(Re&128){Ne(pe,ze,Z,ue,le,he,Se,fe,xe);return}else if(Re&256){ye(pe,ze,Z,ue,le,he,Se,fe,xe);return}}Ue&8?(Ae&16&&Ee(pe,le,he),ze!==pe&&v(Z,ze)):Ae&16?Ue&16?Ne(pe,ze,Z,ue,le,he,Se,fe,xe):Ee(pe,le,he,!0):(Ae&8&&v(Z,""),Ue&16&&re(ze,Z,ue,le,he,Se,fe,xe))},ye=(P,F,Z,ue,le,he,Se,fe,xe)=>{P=P||ds,F=F||ds;const pe=P.length,Ae=F.length,ze=Math.min(pe,Ae);let Re;for(Re=0;ReAe?Ee(P,le,he,!0,!1,ze):re(F,Z,ue,le,he,Se,fe,xe,ze)},Ne=(P,F,Z,ue,le,he,Se,fe,xe)=>{let pe=0;const Ae=F.length;let ze=P.length-1,Re=Ae-1;for(;pe<=ze&&pe<=Re;){const Ue=P[pe],Ge=F[pe]=xe?Di(F[pe]):mr(F[pe]);if(Nr(Ue,Ge))E(Ue,Ge,Z,null,le,he,Se,fe,xe);else break;pe++}for(;pe<=ze&&pe<=Re;){const Ue=P[ze],Ge=F[Re]=xe?Di(F[Re]):mr(F[Re]);if(Nr(Ue,Ge))E(Ue,Ge,Z,null,le,he,Se,fe,xe);else break;ze--,Re--}if(pe>ze){if(pe<=Re){const Ue=Re+1,Ge=UeRe)for(;pe<=ze;)je(P[pe],le,he,!0),pe++;else{const Ue=pe,Ge=pe,vt=new Map;for(pe=Ge;pe<=Re;pe++){const Qt=F[pe]=xe?Di(F[pe]):mr(F[pe]);Qt.key!=null&&vt.set(Qt.key,pe)}let tt,nt=0;const It=Re-Ge+1;let Jt=!1,or=0;const Fn=new Array(It);for(pe=0;pe=It){je(Qt,le,he,!0);continue}let Ve;if(Qt.key!=null)Ve=vt.get(Qt.key);else for(tt=Ge;tt<=Re;tt++)if(Fn[tt-Ge]===0&&Nr(Qt,F[tt])){Ve=tt;break}Ve===void 0?je(Qt,le,he,!0):(Fn[Ve-Ge]=pe+1,Ve>=or?or=Ve:Jt=!0,E(Qt,F[Ve],Z,null,le,he,Se,fe,xe),nt++)}const sr=Jt?yk(Fn):ds;for(tt=sr.length-1,pe=It-1;pe>=0;pe--){const Qt=Ge+pe,Ve=F[Qt],no=Qt+1{const{el:he,type:Se,transition:fe,children:xe,shapeFlag:pe}=P;if(pe&6){We(P.component.subTree,F,Z,ue);return}if(pe&128){P.suspense.move(F,Z,ue);return}if(pe&64){Se.move(P,F,Z,$e);return}if(Se===ut){o(he,F,Z);for(let ze=0;zefe.enter(he),le);else{const{leave:ze,delayLeave:Re,afterLeave:Ue}=fe,Ge=()=>o(he,F,Z),vt=()=>{ze(he,()=>{Ge(),Ue&&Ue()})};Re?Re(he,Ge,vt):vt()}else o(he,F,Z)},je=(P,F,Z,ue=!1,le=!1)=>{const{type:he,props:Se,ref:fe,children:xe,dynamicChildren:pe,shapeFlag:Ae,patchFlag:ze,dirs:Re,cacheIndex:Ue}=P;if(ze===-2&&(le=!1),fe!=null&&wd(fe,null,Z,P,!0),Ue!=null&&(F.renderCache[Ue]=void 0),Ae&256){F.ctx.deactivate(P);return}const Ge=Ae&1&&Re,vt=!Cl(P);let tt;if(vt&&(tt=Se&&Se.onVnodeBeforeUnmount)&&Ar(tt,F,P),Ae&6)Ze(P.component,Z,ue);else{if(Ae&128){P.suspense.unmount(Z,ue);return}Ge&&go(P,null,F,"beforeUnmount"),Ae&64?P.type.remove(P,F,Z,$e,ue):pe&&!pe.hasOnce&&(he!==ut||ze>0&&ze&64)?Ee(pe,F,Z,!1,!0):(he===ut&&ze&384||!le&&Ae&16)&&Ee(xe,F,Z),ue&&it(P)}(vt&&(tt=Se&&Se.onVnodeUnmounted)||Ge)&&Nn(()=>{tt&&Ar(tt,F,P),Ge&&go(P,null,F,"unmounted")},Z)},it=P=>{const{type:F,el:Z,anchor:ue,transition:le}=P;if(F===ut){rt(Z,ue);return}if(F===Wf){A(P);return}const he=()=>{s(Z),le&&!le.persisted&&le.afterLeave&&le.afterLeave()};if(P.shapeFlag&1&&le&&!le.persisted){const{leave:Se,delayLeave:fe}=le,xe=()=>Se(Z,he);fe?fe(P.el,he,xe):xe()}else he()},rt=(P,F)=>{let Z;for(;P!==F;)Z=b(P),s(P),P=Z;s(F)},Ze=(P,F,Z)=>{const{bum:ue,scope:le,update:he,subTree:Se,um:fe,m:xe,a:pe}=P;Av(xe),Av(pe),ue&&yc(ue),le.stop(),he&&(he.active=!1,je(Se,P,F,Z)),fe&&Nn(fe,F),Nn(()=>{P.isUnmounted=!0},F),F&&F.pendingBranch&&!F.isUnmounted&&P.asyncDep&&!P.asyncResolved&&P.suspenseId===F.pendingId&&(F.deps--,F.deps===0&&F.resolve())},Ee=(P,F,Z,ue=!1,le=!1,he=0)=>{for(let Se=he;Se{if(P.shapeFlag&6)return X(P.component.subTree);if(P.shapeFlag&128)return P.suspense.next();const F=b(P.anchor||P.el),Z=F&&F[hk];return Z?b(Z):F};let ae=!1;const de=(P,F,Z)=>{P==null?F._vnode&&je(F._vnode,null,null,!0):E(F._vnode||null,P,F,null,null,null,Z),ae||(ae=!0,yv(),uy(),ae=!1),F._vnode=P},$e={p:E,um:je,m:We,r:it,mt:I,mc:re,pc:ie,pbc:j,n:X,o:e};let Te,Ye;return{render:de,hydrate:Te,createApp:sk(de,Te)}}function qf({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function vo({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function mk(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function $y(e,t,r=!1){const o=e.children,s=t.children;if(Ie(o)&&Ie(s))for(let c=0;c>1,e[r[d]]0&&(t[o]=r[c-1]),r[c]=o)}}for(c=r.length,f=r[c-1];c-- >0;)r[c]=f,f=t[f];return r}function Oy(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Oy(t)}function Av(e){if(e)for(let t=0;tri(bk);function Ch(e,t){return wu(e,null,t)}function xk(e,t){return wu(e,null,{flush:"sync"})}const rc={};function Ht(e,t,r){return wu(e,t,r)}function wu(e,t,{immediate:r,deep:o,flush:s,once:c,onTrack:f,onTrigger:d}=St){if(t&&c){const z=t;t=(...J)=>{z(...J),H()}}const h=sn,g=z=>o===!0?z:Hi(z,o===!1?1:void 0);let v,y=!1,b=!1;if(Ot(e)?(v=()=>e.value,y=_s(e)):Sl(e)?(v=()=>g(e),y=!0):Ie(e)?(b=!0,y=e.some(z=>Sl(z)||_s(z)),v=()=>e.map(z=>{if(Ot(z))return z.value;if(Sl(z))return g(z);if(Xe(z))return Vi(z,h,2)})):Xe(e)?t?v=()=>Vi(e,h,2):v=()=>(x&&x(),tr(e,h,3,[T])):v=Jn,t&&o){const z=v;v=()=>Hi(z())}let x,T=z=>{x=O.onStop=()=>{Vi(z,h,4),x=O.onStop=void 0}},E;if(Su)if(T=Jn,t?r&&tr(t,h,3,[v(),b?[]:void 0,T]):v(),s==="sync"){const z=wk();E=z.__watcherHandles||(z.__watcherHandles=[])}else return Jn;let M=b?new Array(e.length).fill(rc):rc;const N=()=>{if(!(!O.active||!O.dirty))if(t){const z=O.run();(o||y||(b?z.some((J,re)=>zr(J,M[re])):zr(z,M)))&&(x&&x(),tr(t,h,3,[z,M===rc?void 0:b&&M[0]===rc?[]:M,T]),M=z)}else O.run()};N.allowRecurse=!!t;let L;s==="sync"?L=N:s==="post"?L=()=>Nn(N,h&&h.suspense):(N.pre=!0,h&&(N.id=h.uid),L=()=>wh(N));const O=new ch(v,Jn,L),A=U0(),H=()=>{O.stop(),A&&lh(A.effects,O)};return t?r?N():M=O.run():s==="post"?Nn(O.run.bind(O),h&&h.suspense):O.run(),E&&E.push(H),H}function _k(e,t,r){const o=this.proxy,s=$t(e)?e.includes(".")?Py(o,e):()=>o[e]:e.bind(o,o);let c;Xe(t)?c=t:(c=t.handler,r=t);const f=ua(this),d=wu(s,c.bind(o),r);return f(),d}function Py(e,t){const r=t.split(".");return()=>{let o=e;for(let s=0;s{Hi(o,t,r)});else if(D0(e)){for(const o in e)Hi(e[o],t,r);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Hi(e[o],t,r)}return e}function Th(e,t,r=St){const o=ca(),s=nr(t),c=ui(t),f=Ry(e,t),d=sy((h,g)=>{let v,y,b;return xk(()=>{const x=e[t];zr(v,x)&&(v=x,g())}),{get(){return h(),r.get?r.get(v):v},set(x){if(!zr(x,v))return;const T=o.vnode.props;T&&(t in T||s in T||c in T)&&(`onUpdate:${t}`in T||`onUpdate:${s}`in T||`onUpdate:${c}`in T)||(v=x,g());const E=r.set?r.set(x):x;o.emit(`update:${t}`,E),x!==E&&x!==y&&E===b&&g(),y=x,b=E}}});return d[Symbol.iterator]=()=>{let h=0;return{next(){return h<2?{value:h++?f||St:d,done:!1}:{done:!0}}}},d}const Ry=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${nr(t)}Modifiers`]||e[`${ui(t)}Modifiers`];function Sk(e,t,...r){if(e.isUnmounted)return;const o=e.vnode.props||St;let s=r;const c=t.startsWith("update:"),f=c&&Ry(o,t.slice(7));f&&(f.trim&&(s=r.map(v=>$t(v)?v.trim():v)),f.number&&(s=r.map(cd)));let d,h=o[d=mc(t)]||o[d=mc(nr(t))];!h&&c&&(h=o[d=mc(ui(t))]),h&&tr(h,e,6,s);const g=o[d+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[d])return;e.emitted[d]=!0,tr(g,e,6,s)}}function Dy(e,t,r=!1){const o=t.emitsCache,s=o.get(e);if(s!==void 0)return s;const c=e.emits;let f={},d=!1;if(!Xe(e)){const h=g=>{const v=Dy(g,t,!0);v&&(d=!0,Gt(f,v))};!r&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}return!c&&!d?(xt(e)&&o.set(e,null),null):(Ie(c)?c.forEach(h=>f[h]=null):Gt(f,c),xt(e)&&o.set(e,f),f)}function xu(e,t){return!e||!cu(t)?!1:(t=t.slice(2).replace(/Once$/,""),ct(e,t[0].toLowerCase()+t.slice(1))||ct(e,ui(t))||ct(e,t))}function Bf(e){const{type:t,vnode:r,proxy:o,withProxy:s,propsOptions:[c],slots:f,attrs:d,emit:h,render:g,renderCache:v,props:y,data:b,setupState:x,ctx:T,inheritAttrs:E}=e,M=Rc(e);let N,L;try{if(r.shapeFlag&4){const A=s||o,H=A;N=mr(g.call(H,A,v,y,x,b,T)),L=d}else{const A=t;N=mr(A.length>1?A(y,{attrs:d,slots:f,emit:h}):A(y,null)),L=t.props?d:Ck(d)}}catch(A){Ll.length=0,sa(A,e,1),N=Oe(fn)}let O=N;if(L&&E!==!1){const A=Object.keys(L),{shapeFlag:H}=O;A.length&&H&7&&(c&&A.some(sh)&&(L=Tk(L,c)),O=Ki(O,L,!1,!0))}return r.dirs&&(O=Ki(O,null,!1,!0),O.dirs=O.dirs?O.dirs.concat(r.dirs):r.dirs),r.transition&&(O.transition=r.transition),N=O,Rc(M),N}function kk(e,t=!0){let r;for(let o=0;o{let t;for(const r in e)(r==="class"||r==="style"||cu(r))&&((t||(t={}))[r]=e[r]);return t},Tk=(e,t)=>{const r={};for(const o in e)(!sh(o)||!(o.slice(9)in t))&&(r[o]=e[o]);return r};function Ek(e,t,r){const{props:o,children:s,component:c}=e,{props:f,children:d,patchFlag:h}=t,g=c.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&h>=0){if(h&1024)return!0;if(h&16)return o?Mv(o,f,g):!!f;if(h&8){const v=t.dynamicProps;for(let y=0;ye.__isSuspense;let xd=0;const Ak={name:"Suspense",__isSuspense:!0,process(e,t,r,o,s,c,f,d,h,g){if(e==null)Mk(t,r,o,s,c,f,d,h,g);else{if(c&&c.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Nk(e,t,r,o,s,f,d,h,g)}},hydrate:$k,normalize:Ok},zy=Ak;function Hl(e,t){const r=e.props&&e.props[t];Xe(r)&&r()}function Mk(e,t,r,o,s,c,f,d,h){const{p:g,o:{createElement:v}}=h,y=v("div"),b=e.suspense=Iy(e,s,o,t,y,r,c,f,d,h);g(null,b.pendingBranch=e.ssContent,y,null,o,b,c,f),b.deps>0?(Hl(e,"onPending"),Hl(e,"onFallback"),g(null,e.ssFallback,t,r,o,null,c,f),gs(b,e.ssFallback)):b.resolve(!1,!0)}function Nk(e,t,r,o,s,c,f,d,{p:h,um:g,o:{createElement:v}}){const y=t.suspense=e.suspense;y.vnode=t,t.el=e.el;const b=t.ssContent,x=t.ssFallback,{activeBranch:T,pendingBranch:E,isInFallback:M,isHydrating:N}=y;if(E)y.pendingBranch=b,Nr(b,E)?(h(E,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0?y.resolve():M&&(N||(h(T,x,r,o,s,null,c,f,d),gs(y,x)))):(y.pendingId=xd++,N?(y.isHydrating=!1,y.activeBranch=E):g(E,s,y),y.deps=0,y.effects.length=0,y.hiddenContainer=v("div"),M?(h(null,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0?y.resolve():(h(T,x,r,o,s,null,c,f,d),gs(y,x))):T&&Nr(b,T)?(h(T,b,r,o,s,y,c,f,d),y.resolve(!0)):(h(null,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0&&y.resolve()));else if(T&&Nr(b,T))h(T,b,r,o,s,y,c,f,d),gs(y,b);else if(Hl(t,"onPending"),y.pendingBranch=b,b.shapeFlag&512?y.pendingId=b.component.suspenseId:y.pendingId=xd++,h(null,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0)y.resolve();else{const{timeout:L,pendingId:O}=y;L>0?setTimeout(()=>{y.pendingId===O&&y.fallback(x)},L):L===0&&y.fallback(x)}}function Iy(e,t,r,o,s,c,f,d,h,g,v=!1){const{p:y,m:b,um:x,n:T,o:{parentNode:E,remove:M}}=g;let N;const L=Rk(e);L&&t&&t.pendingBranch&&(N=t.pendingId,t.deps++);const O=e.props?I0(e.props.timeout):void 0,A=c,H={vnode:e,parent:t,parentComponent:r,namespace:f,container:o,hiddenContainer:s,deps:0,pendingId:xd++,timeout:typeof O=="number"?O:-1,activeBranch:null,pendingBranch:null,isInFallback:!v,isHydrating:v,isUnmounted:!1,effects:[],resolve(z=!1,J=!1){const{vnode:re,activeBranch:te,pendingBranch:j,pendingId:ne,effects:K,parentComponent:V,container:I}=H;let k=!1;H.isHydrating?H.isHydrating=!1:z||(k=te&&j.transition&&j.transition.mode==="out-in",k&&(te.transition.afterLeave=()=>{ne===H.pendingId&&(b(j,I,c===A?T(te):c,0),pd(K))}),te&&(E(te.el)!==H.hiddenContainer&&(c=T(te)),x(te,V,H,!0)),k||b(j,I,c,0)),gs(H,j),H.pendingBranch=null,H.isInFallback=!1;let B=H.parent,W=!1;for(;B;){if(B.pendingBranch){B.effects.push(...K),W=!0;break}B=B.parent}!W&&!k&&pd(K),H.effects=[],L&&t&&t.pendingBranch&&N===t.pendingId&&(t.deps--,t.deps===0&&!J&&t.resolve()),Hl(re,"onResolve")},fallback(z){if(!H.pendingBranch)return;const{vnode:J,activeBranch:re,parentComponent:te,container:j,namespace:ne}=H;Hl(J,"onFallback");const K=T(re),V=()=>{H.isInFallback&&(y(null,z,j,K,te,null,ne,d,h),gs(H,z))},I=z.transition&&z.transition.mode==="out-in";I&&(re.transition.afterLeave=V),H.isInFallback=!0,x(re,te,null,!0),I||V()},move(z,J,re){H.activeBranch&&b(H.activeBranch,z,J,re),H.container=z},next(){return H.activeBranch&&T(H.activeBranch)},registerDep(z,J,re){const te=!!H.pendingBranch;te&&H.deps++;const j=z.vnode.el;z.asyncDep.catch(ne=>{sa(ne,z,0)}).then(ne=>{if(z.isUnmounted||H.isUnmounted||H.pendingId!==z.suspenseId)return;z.asyncResolved=!0;const{vnode:K}=z;Sd(z,ne,!1),j&&(K.el=j);const V=!j&&z.subTree.el;J(z,K,E(j||z.subTree.el),j?null:T(z.subTree),H,f,re),V&&M(V),Eh(z,K.el),te&&--H.deps===0&&H.resolve()})},unmount(z,J){H.isUnmounted=!0,H.activeBranch&&x(H.activeBranch,r,z,J),H.pendingBranch&&x(H.pendingBranch,r,z,J)}};return H}function $k(e,t,r,o,s,c,f,d,h){const g=t.suspense=Iy(t,o,r,e.parentNode,document.createElement("div"),null,s,c,f,d,!0),v=h(e,g.pendingBranch=t.ssContent,r,g,c,f);return g.deps===0&&g.resolve(!1,!0),v}function Ok(e){const{shapeFlag:t,children:r}=e,o=t&32;e.ssContent=Nv(o?r.default:r),e.ssFallback=o?Nv(r.fallback):Oe(fn)}function Nv(e){let t;if(Xe(e)){const r=Ss&&e._c;r&&(e._d=!1,oe()),e=e(),r&&(e._d=!0,t=Rn,Fy())}return Ie(e)&&(e=kk(e)),e=mr(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function Pk(e,t){t&&t.pendingBranch?Ie(e)?t.effects.push(...e):t.effects.push(e):pd(e)}function gs(e,t){e.activeBranch=t;const{vnode:r,parentComponent:o}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;r.el=s,o&&o.subTree===r&&(o.vnode.el=s,Eh(o,s))}function Rk(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ut=Symbol.for("v-fgt"),_u=Symbol.for("v-txt"),fn=Symbol.for("v-cmt"),Wf=Symbol.for("v-stc"),Ll=[];let Rn=null;function oe(e=!1){Ll.push(Rn=e?null:[])}function Fy(){Ll.pop(),Rn=Ll[Ll.length-1]||null}let Ss=1;function Hc(e){Ss+=e,e<0&&Rn&&(Rn.hasOnce=!0)}function Hy(e){return e.dynamicChildren=Ss>0?Rn||ds:null,Fy(),Ss>0&&Rn&&Rn.push(e),e}function me(e,t,r,o,s,c){return Hy(Y(e,t,r,o,s,c,!0))}function ot(e,t,r,o,s){return Hy(Oe(e,t,r,o,s,!0))}function ql(e){return e?e.__v_isVNode===!0:!1}function Nr(e,t){return e.type===t.type&&e.key===t.key}const qy=({key:e})=>e??null,wc=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?$t(e)||Ot(e)||Xe(e)?{i:Yt,r:e,k:t,f:!!r}:e:null);function Y(e,t=null,r=null,o=0,s=null,c=e===ut?0:1,f=!1,d=!1){const h={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qy(t),ref:t&&wc(t),scopeId:vu,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:c,patchFlag:o,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Yt};return d?(Lh(h,r),c&128&&e.normalize(h)):r&&(h.shapeFlag|=$t(r)?8:16),Ss>0&&!f&&Rn&&(h.patchFlag>0||c&6)&&h.patchFlag!==32&&Rn.push(h),h}const Oe=Dk;function Dk(e,t=null,r=null,o=0,s=null,c=!1){if((!e||e===by)&&(e=fn),ql(e)){const d=Ki(e,t,!0);return r&&Lh(d,r),Ss>0&&!c&&Rn&&(d.shapeFlag&6?Rn[Rn.indexOf(e)]=d:Rn.push(d)),d.patchFlag=-2,d}if(Uk(e)&&(e=e.__vccOpts),t){t=By(t);let{class:d,style:h}=t;d&&!$t(d)&&(t.class=lt(d)),xt(h)&&(ny(h)&&!Ie(h)&&(h=Gt({},h)),t.style=Zt(h))}const f=$t(e)?1:Lk(e)?128:pk(e)?64:xt(e)?4:Xe(e)?2:0;return Y(e,t,r,o,s,f,c,!0)}function By(e){return e?ny(e)||Cy(e)?Gt({},e):e:null}function Ki(e,t,r=!1,o=!1){const{props:s,ref:c,patchFlag:f,children:d,transition:h}=e,g=t?ii(s||{},t):s,v={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&qy(g),ref:t&&t.ref?r&&c?Ie(c)?c.concat(wc(t)):[c,wc(t)]:wc(t):c,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:d,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ut?f===-1?16:f|16:f,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:h,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ki(e.ssContent),ssFallback:e.ssFallback&&Ki(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return h&&o&&Dc(v,h.clone(v)),v}function gt(e=" ",t=0){return Oe(_u,null,e,t)}function et(e="",t=!1){return t?(oe(),ot(fn,null,e)):Oe(fn,null,e)}function mr(e){return e==null||typeof e=="boolean"?Oe(fn):Ie(e)?Oe(ut,null,e.slice()):typeof e=="object"?Di(e):Oe(_u,null,String(e))}function Di(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ki(e)}function Lh(e,t){let r=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(Ie(t))r=16;else if(typeof t=="object")if(o&65){const s=t.default;s&&(s._c&&(s._d=!1),Lh(e,s()),s._c&&(s._d=!0));return}else{r=32;const s=t._;!s&&!Cy(t)?t._ctx=Yt:s===3&&Yt&&(Yt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Xe(t)?(t={default:t,_ctx:Yt},r=32):(t=String(t),o&64?(r=16,t=[gt(t)]):r=8);e.children=t,e.shapeFlag|=r}function ii(...e){const t={};for(let r=0;rsn||Yt;let qc,_d;{const e=F0(),t=(r,o)=>{let s;return(s=e[r])||(s=e[r]=[]),s.push(o),c=>{s.length>1?s.forEach(f=>f(c)):s[0](c)}};qc=t("__VUE_INSTANCE_SETTERS__",r=>sn=r),_d=t("__VUE_SSR_SETTERS__",r=>Su=r)}const ua=e=>{const t=sn;return qc(e),e.scope.on(),()=>{e.scope.off(),qc(t)}},$v=()=>{sn&&sn.scope.off(),qc(null)};function Wy(e){return e.vnode.shapeFlag&4}let Su=!1;function Hk(e,t=!1,r=!1){t&&_d(t);const{props:o,children:s}=e.vnode,c=Wy(e);lk(e,o,c,t),fk(e,s,r);const f=c?qk(e,t):void 0;return t&&_d(!1),f}function qk(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ZS);const{setup:o}=r;if(o){const s=e.setupContext=o.length>1?Vy(e):null,c=ua(e);eo();const f=Vi(o,e,0,[e.props,s]);if(to(),c(),P0(f)){if(f.then($v,$v),t)return f.then(d=>{Sd(e,d,t)}).catch(d=>{sa(d,e,0)});e.asyncDep=f}else Sd(e,f,t)}else Uy(e,t)}function Sd(e,t,r){Xe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xt(t)&&(e.setupState=oy(t)),Uy(e,r)}let Ov;function Uy(e,t,r){const o=e.type;if(!e.render){if(!t&&Ov&&!o.render){const s=o.template||Sh(e).template;if(s){const{isCustomElement:c,compilerOptions:f}=e.appContext.config,{delimiters:d,compilerOptions:h}=o,g=Gt(Gt({isCustomElement:c,delimiters:d},f),h);o.render=Ov(s,g)}}e.render=o.render||Jn}{const s=ua(e);eo();try{ek(e)}finally{to(),s()}}}const Bk={get(e,t){return zn(e,"get",""),e[t]}};function Vy(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,Bk),slots:e.slots,emit:e.emit,expose:t}}function ku(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(oy(vh(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Tl)return Tl[r](e)},has(t,r){return r in t||r in Tl}})):e.proxy}function Wk(e,t=!0){return Xe(e)?e.displayName||e.name:e.name||t&&e.__name}function Uk(e){return Xe(e)&&"__vccOpts"in e}const Me=(e,t)=>kS(e,t,Su);function fa(e,t,r){const o=arguments.length;return o===2?xt(t)&&!Ie(t)?ql(t)?Oe(e,null,[t]):Oe(e,t):Oe(e,null,t):(o>3?r=Array.prototype.slice.call(arguments,2):o===3&&ql(r)&&(r=[r]),Oe(e,t,r))}const Vk="3.4.33";/** +* @vue/runtime-dom v3.4.33 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const jk="http://www.w3.org/2000/svg",Gk="http://www.w3.org/1998/Math/MathML",Qr=typeof document<"u"?document:null,Pv=Qr&&Qr.createElement("template"),Kk={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,o)=>{const s=t==="svg"?Qr.createElementNS(jk,e):t==="mathml"?Qr.createElementNS(Gk,e):r?Qr.createElement(e,{is:r}):Qr.createElement(e);return e==="select"&&o&&o.multiple!=null&&s.setAttribute("multiple",o.multiple),s},createText:e=>Qr.createTextNode(e),createComment:e=>Qr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,o,s,c){const f=r?r.previousSibling:t.lastChild;if(s&&(s===c||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),r),!(s===c||!(s=s.nextSibling)););else{Pv.innerHTML=o==="svg"?`${e}`:o==="mathml"?`${e}`:e;const d=Pv.content;if(o==="svg"||o==="mathml"){const h=d.firstChild;for(;h.firstChild;)d.appendChild(h.firstChild);d.removeChild(h)}t.insertBefore(d,r)}return[f?f.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},Li="transition",dl="animation",Bl=Symbol("_vtc"),Ah=(e,{slots:t})=>fa(zS,Xk(e),t);Ah.displayName="Transition";const jy={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ah.props=Gt({},hy,jy);const mo=(e,t=[])=>{Ie(e)?e.forEach(r=>r(...t)):e&&e(...t)},Rv=e=>e?Ie(e)?e.some(t=>t.length>1):e.length>1:!1;function Xk(e){const t={};for(const K in e)K in jy||(t[K]=e[K]);if(e.css===!1)return t;const{name:r="v",type:o,duration:s,enterFromClass:c=`${r}-enter-from`,enterActiveClass:f=`${r}-enter-active`,enterToClass:d=`${r}-enter-to`,appearFromClass:h=c,appearActiveClass:g=f,appearToClass:v=d,leaveFromClass:y=`${r}-leave-from`,leaveActiveClass:b=`${r}-leave-active`,leaveToClass:x=`${r}-leave-to`}=e,T=Yk(s),E=T&&T[0],M=T&&T[1],{onBeforeEnter:N,onEnter:L,onEnterCancelled:O,onLeave:A,onLeaveCancelled:H,onBeforeAppear:z=N,onAppear:J=L,onAppearCancelled:re=O}=t,te=(K,V,I)=>{yo(K,V?v:d),yo(K,V?g:f),I&&I()},j=(K,V)=>{K._isLeaving=!1,yo(K,y),yo(K,x),yo(K,b),V&&V()},ne=K=>(V,I)=>{const k=K?J:L,B=()=>te(V,K,I);mo(k,[V,B]),Dv(()=>{yo(V,K?h:c),Ai(V,K?v:d),Rv(k)||zv(V,o,E,B)})};return Gt(t,{onBeforeEnter(K){mo(N,[K]),Ai(K,c),Ai(K,f)},onBeforeAppear(K){mo(z,[K]),Ai(K,h),Ai(K,g)},onEnter:ne(!1),onAppear:ne(!0),onLeave(K,V){K._isLeaving=!0;const I=()=>j(K,V);Ai(K,y),Ai(K,b),Qk(),Dv(()=>{K._isLeaving&&(yo(K,y),Ai(K,x),Rv(A)||zv(K,o,M,I))}),mo(A,[K,I])},onEnterCancelled(K){te(K,!1),mo(O,[K])},onAppearCancelled(K){te(K,!0),mo(re,[K])},onLeaveCancelled(K){j(K),mo(H,[K])}})}function Yk(e){if(e==null)return null;if(xt(e))return[Uf(e.enter),Uf(e.leave)];{const t=Uf(e);return[t,t]}}function Uf(e){return I0(e)}function Ai(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[Bl]||(e[Bl]=new Set)).add(t)}function yo(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const r=e[Bl];r&&(r.delete(t),r.size||(e[Bl]=void 0))}function Dv(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Zk=0;function zv(e,t,r,o){const s=e._endId=++Zk,c=()=>{s===e._endId&&o()};if(r)return setTimeout(c,r);const{type:f,timeout:d,propCount:h}=Jk(e,t);if(!f)return o();const g=f+"end";let v=0;const y=()=>{e.removeEventListener(g,b),c()},b=x=>{x.target===e&&++v>=h&&y()};setTimeout(()=>{v(r[T]||"").split(", "),s=o(`${Li}Delay`),c=o(`${Li}Duration`),f=Iv(s,c),d=o(`${dl}Delay`),h=o(`${dl}Duration`),g=Iv(d,h);let v=null,y=0,b=0;t===Li?f>0&&(v=Li,y=f,b=c.length):t===dl?g>0&&(v=dl,y=g,b=h.length):(y=Math.max(f,g),v=y>0?f>g?Li:dl:null,b=v?v===Li?c.length:h.length:0);const x=v===Li&&/\b(transform|all)(,|$)/.test(o(`${Li}Property`).toString());return{type:v,timeout:y,propCount:b,hasTransform:x}}function Iv(e,t){for(;e.lengthFv(r)+Fv(e[o])))}function Fv(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Qk(){return document.body.offsetHeight}function eC(e,t,r){const o=e[Bl];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const Bc=Symbol("_vod"),Gy=Symbol("_vsh"),bl={beforeMount(e,{value:t},{transition:r}){e[Bc]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):hl(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:o}){!t!=!r&&(o?t?(o.beforeEnter(e),hl(e,!0),o.enter(e)):o.leave(e,()=>{hl(e,!1)}):hl(e,t))},beforeUnmount(e,{value:t}){hl(e,t)}};function hl(e,t){e.style.display=t?e[Bc]:"none",e[Gy]=!t}const tC=Symbol(""),nC=/(^|;)\s*display\s*:/;function rC(e,t,r){const o=e.style,s=$t(r);let c=!1;if(r&&!s){if(t)if($t(t))for(const f of t.split(";")){const d=f.slice(0,f.indexOf(":")).trim();r[d]==null&&xc(o,d,"")}else for(const f in t)r[f]==null&&xc(o,f,"");for(const f in r)f==="display"&&(c=!0),xc(o,f,r[f])}else if(s){if(t!==r){const f=o[tC];f&&(r+=";"+f),o.cssText=r,c=nC.test(r)}}else t&&e.removeAttribute("style");Bc in e&&(e[Bc]=c?o.display:"",e[Gy]&&(o.display="none"))}const Hv=/\s*!important$/;function xc(e,t,r){if(Ie(r))r.forEach(o=>xc(e,t,o));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const o=iC(e,t);Hv.test(r)?e.setProperty(ui(o),r.replace(Hv,""),"important"):e[o]=r}}const qv=["Webkit","Moz","ms"],Vf={};function iC(e,t){const r=Vf[t];if(r)return r;let o=nr(t);if(o!=="filter"&&o in e)return Vf[t]=o;o=du(o);for(let s=0;sjf||(cC.then(()=>jf=0),jf=Date.now());function fC(e,t){const r=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=r.attached)return;tr(dC(o,r.value),t,5,[o])};return r.value=e,r.attached=uC(),r}function dC(e,t){if(Ie(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(o=>s=>!s._stopped&&o&&o(s))}else return t}const jv=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,hC=(e,t,r,o,s,c)=>{const f=s==="svg";t==="class"?eC(e,o,f):t==="style"?rC(e,r,o):cu(t)?sh(t)||lC(e,t,r,o,c):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):pC(e,t,o,f))?(oC(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Wv(e,t,o,f,c,t!=="value")):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),Wv(e,t,o,f))};function pC(e,t,r,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&jv(t)&&Xe(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return jv(t)&&$t(r)?!1:t in e}const Wc=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Ie(t)?r=>yc(t,r):t};function gC(e){e.target.composing=!0}function Gv(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const vs=Symbol("_assign"),vC={created(e,{modifiers:{lazy:t,trim:r,number:o}},s){e[vs]=Wc(s);const c=o||s.props&&s.props.type==="number";_o(e,t?"change":"input",f=>{if(f.target.composing)return;let d=e.value;r&&(d=d.trim()),c&&(d=cd(d)),e[vs](d)}),r&&_o(e,"change",()=>{e.value=e.value.trim()}),t||(_o(e,"compositionstart",gC),_o(e,"compositionend",Gv),_o(e,"change",Gv))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:o,trim:s,number:c}},f){if(e[vs]=Wc(f),e.composing)return;const d=(c||e.type==="number")&&!/^0\d/.test(e.value)?cd(e.value):e.value,h=t??"";d!==h&&(document.activeElement===e&&e.type!=="range"&&(o&&t===r||s&&e.value.trim()===h)||(e.value=h))}},mC={deep:!0,created(e,t,r){e[vs]=Wc(r),_o(e,"change",()=>{const o=e._modelValue,s=yC(e),c=e.checked,f=e[vs];if(Ie(o)){const d=q0(o,s),h=d!==-1;if(c&&!h)f(o.concat(s));else if(!c&&h){const g=[...o];g.splice(d,1),f(g)}}else if(uu(o)){const d=new Set(o);c?d.add(s):d.delete(s),f(d)}else f(Ky(e,c))})},mounted:Kv,beforeUpdate(e,t,r){e[vs]=Wc(r),Kv(e,t,r)}};function Kv(e,{value:t,oldValue:r},o){e._modelValue=t,Ie(t)?e.checked=q0(t,o.props.value)>-1:uu(t)?e.checked=t.has(o.props.value):t!==r&&(e.checked=hu(t,Ky(e,!0)))}function yC(e){return"_value"in e?e._value:e.value}function Ky(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const bC=["ctrl","shift","alt","meta"],wC={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>bC.some(r=>e[`${r}Key`]&&!t.includes(r))},_c=(e,t)=>{const r=e._withMods||(e._withMods={}),o=t.join(".");return r[o]||(r[o]=(s,...c)=>{for(let f=0;f{const r=e._withKeys||(e._withKeys={}),o=t.join(".");return r[o]||(r[o]=s=>{if(!("key"in s))return;const c=ui(s.key);if(t.some(f=>f===c||xC[f]===c))return e(s)})},_C=Gt({patchProp:hC},Kk);let Xv;function SC(){return Xv||(Xv=gk(_C))}const Xy=(...e)=>{const t=SC().createApp(...e),{mount:r}=t;return t.mount=o=>{const s=CC(o);if(!s)return;const c=t._component;!Xe(c)&&!c.render&&!c.template&&(c.template=s.innerHTML),s.innerHTML="";const f=r(s,!1,kC(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),f},t};function kC(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function CC(e){return $t(e)?document.querySelector(e):e}const di=(e,t)=>{const r=e.__vccOpts||e;for(const[o,s]of t)r[o]=s;return r},TC={};function EC(e,t){const r=Ao("RouterView");return oe(),ot(r)}const LC=di(TC,[["render",EC]]);/*! + * vue-router v4.4.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const as=typeof document<"u";function AC(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const bt=Object.assign;function Gf(e,t){const r={};for(const o in t){const s=t[o];r[o]=xr(s)?s.map(e):e(s)}return r}const Al=()=>{},xr=Array.isArray,Yy=/#/g,MC=/&/g,NC=/\//g,$C=/=/g,OC=/\?/g,Zy=/\+/g,PC=/%5B/g,RC=/%5D/g,Jy=/%5E/g,DC=/%60/g,Qy=/%7B/g,zC=/%7C/g,eb=/%7D/g,IC=/%20/g;function Mh(e){return encodeURI(""+e).replace(zC,"|").replace(PC,"[").replace(RC,"]")}function FC(e){return Mh(e).replace(Qy,"{").replace(eb,"}").replace(Jy,"^")}function Cd(e){return Mh(e).replace(Zy,"%2B").replace(IC,"+").replace(Yy,"%23").replace(MC,"%26").replace(DC,"`").replace(Qy,"{").replace(eb,"}").replace(Jy,"^")}function HC(e){return Cd(e).replace($C,"%3D")}function qC(e){return Mh(e).replace(Yy,"%23").replace(OC,"%3F")}function BC(e){return e==null?"":qC(e).replace(NC,"%2F")}function Wl(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const WC=/\/$/,UC=e=>e.replace(WC,"");function Kf(e,t,r="/"){let o,s={},c="",f="";const d=t.indexOf("#");let h=t.indexOf("?");return d=0&&(h=-1),h>-1&&(o=t.slice(0,h),c=t.slice(h+1,d>-1?d:t.length),s=e(c)),d>-1&&(o=o||t.slice(0,d),f=t.slice(d,t.length)),o=KC(o??t,r),{fullPath:o+(c&&"?")+c+f,path:o,query:s,hash:Wl(f)}}function VC(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function Yv(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function jC(e,t,r){const o=t.matched.length-1,s=r.matched.length-1;return o>-1&&o===s&&ks(t.matched[o],r.matched[s])&&tb(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function ks(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function tb(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!GC(e[r],t[r]))return!1;return!0}function GC(e,t){return xr(e)?Zv(e,t):xr(t)?Zv(t,e):e===t}function Zv(e,t){return xr(t)?e.length===t.length&&e.every((r,o)=>r===t[o]):e.length===1&&e[0]===t}function KC(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),o=e.split("/"),s=o[o.length-1];(s===".."||s===".")&&o.push("");let c=r.length-1,f,d;for(f=0;f1&&c--;else break;return r.slice(0,c).join("/")+"/"+o.slice(f).join("/")}const Mi={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Ul;(function(e){e.pop="pop",e.push="push"})(Ul||(Ul={}));var Ml;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ml||(Ml={}));function XC(e){if(!e)if(as){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),UC(e)}const YC=/^[^#]+#/;function ZC(e,t){return e.replace(YC,"#")+t}function JC(e,t){const r=document.documentElement.getBoundingClientRect(),o=e.getBoundingClientRect();return{behavior:t.behavior,left:o.left-r.left-(t.left||0),top:o.top-r.top-(t.top||0)}}const Cu=()=>({left:window.scrollX,top:window.scrollY});function QC(e){let t;if("el"in e){const r=e.el,o=typeof r=="string"&&r.startsWith("#"),s=typeof r=="string"?o?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!s)return;t=JC(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Jv(e,t){return(history.state?history.state.position-t:-1)+e}const Td=new Map;function eT(e,t){Td.set(e,t)}function tT(e){const t=Td.get(e);return Td.delete(e),t}let nT=()=>location.protocol+"//"+location.host;function nb(e,t){const{pathname:r,search:o,hash:s}=t,c=e.indexOf("#");if(c>-1){let d=s.includes(e.slice(c))?e.slice(c).length:1,h=s.slice(d);return h[0]!=="/"&&(h="/"+h),Yv(h,"")}return Yv(r,e)+o+s}function rT(e,t,r,o){let s=[],c=[],f=null;const d=({state:b})=>{const x=nb(e,location),T=r.value,E=t.value;let M=0;if(b){if(r.value=x,t.value=b,f&&f===T){f=null;return}M=E?b.position-E.position:0}else o(x);s.forEach(N=>{N(r.value,T,{delta:M,type:Ul.pop,direction:M?M>0?Ml.forward:Ml.back:Ml.unknown})})};function h(){f=r.value}function g(b){s.push(b);const x=()=>{const T=s.indexOf(b);T>-1&&s.splice(T,1)};return c.push(x),x}function v(){const{history:b}=window;b.state&&b.replaceState(bt({},b.state,{scroll:Cu()}),"")}function y(){for(const b of c)b();c=[],window.removeEventListener("popstate",d),window.removeEventListener("beforeunload",v)}return window.addEventListener("popstate",d),window.addEventListener("beforeunload",v,{passive:!0}),{pauseListeners:h,listen:g,destroy:y}}function Qv(e,t,r,o=!1,s=!1){return{back:e,current:t,forward:r,replaced:o,position:window.history.length,scroll:s?Cu():null}}function iT(e){const{history:t,location:r}=window,o={value:nb(e,r)},s={value:t.state};s.value||c(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function c(h,g,v){const y=e.indexOf("#"),b=y>-1?(r.host&&document.querySelector("base")?e:e.slice(y))+h:nT()+e+h;try{t[v?"replaceState":"pushState"](g,"",b),s.value=g}catch(x){console.error(x),r[v?"replace":"assign"](b)}}function f(h,g){const v=bt({},t.state,Qv(s.value.back,h,s.value.forward,!0),g,{position:s.value.position});c(h,v,!0),o.value=h}function d(h,g){const v=bt({},s.value,t.state,{forward:h,scroll:Cu()});c(v.current,v,!0);const y=bt({},Qv(o.value,h,null),{position:v.position+1},g);c(h,y,!1),o.value=h}return{location:o,state:s,push:d,replace:f}}function oT(e){e=XC(e);const t=iT(e),r=rT(e,t.state,t.location,t.replace);function o(c,f=!0){f||r.pauseListeners(),history.go(c)}const s=bt({location:"",base:e,go:o,createHref:ZC.bind(null,e)},t,r);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function sT(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),oT(e)}function lT(e){return typeof e=="string"||e&&typeof e=="object"}function rb(e){return typeof e=="string"||typeof e=="symbol"}const ib=Symbol("");var em;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(em||(em={}));function Cs(e,t){return bt(new Error,{type:e,[ib]:!0},t)}function Yr(e,t){return e instanceof Error&&ib in e&&(t==null||!!(e.type&t))}const tm="[^/]+?",aT={sensitive:!1,strict:!1,start:!0,end:!0},cT=/[.+*?^${}()[\]/\\]/g;function uT(e,t){const r=bt({},aT,t),o=[];let s=r.start?"^":"";const c=[];for(const g of e){const v=g.length?[]:[90];r.strict&&!g.length&&(s+="/");for(let y=0;yt.length?t.length===1&&t[0]===80?1:-1:0}function ob(e,t){let r=0;const o=e.score,s=t.score;for(;r0&&t[t.length-1]<0}const dT={type:0,value:""},hT=/[a-zA-Z0-9_]/;function pT(e){if(!e)return[[]];if(e==="/")return[[dT]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(x){throw new Error(`ERR (${r})/"${g}": ${x}`)}let r=0,o=r;const s=[];let c;function f(){c&&s.push(c),c=[]}let d=0,h,g="",v="";function y(){g&&(r===0?c.push({type:0,value:g}):r===1||r===2||r===3?(c.length>1&&(h==="*"||h==="+")&&t(`A repeatable param (${g}) must be alone in its segment. eg: '/:ids+.`),c.push({type:1,value:g,regexp:v,repeatable:h==="*"||h==="+",optional:h==="*"||h==="?"})):t("Invalid state to consume buffer"),g="")}function b(){g+=h}for(;d{f(O)}:Al}function f(y){if(rb(y)){const b=o.get(y);b&&(o.delete(y),r.splice(r.indexOf(b),1),b.children.forEach(f),b.alias.forEach(f))}else{const b=r.indexOf(y);b>-1&&(r.splice(b,1),y.record.name&&o.delete(y.record.name),y.children.forEach(f),y.alias.forEach(f))}}function d(){return r}function h(y){const b=wT(y,r);r.splice(b,0,y),y.record.name&&!im(y)&&o.set(y.record.name,y)}function g(y,b){let x,T={},E,M;if("name"in y&&y.name){if(x=o.get(y.name),!x)throw Cs(1,{location:y});M=x.record.name,T=bt(rm(b.params,x.keys.filter(O=>!O.optional).concat(x.parent?x.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),y.params&&rm(y.params,x.keys.map(O=>O.name))),E=x.stringify(T)}else if(y.path!=null)E=y.path,x=r.find(O=>O.re.test(E)),x&&(T=x.parse(E),M=x.record.name);else{if(x=b.name?o.get(b.name):r.find(O=>O.re.test(b.path)),!x)throw Cs(1,{location:y,currentLocation:b});M=x.record.name,T=bt({},b.params,y.params),E=x.stringify(T)}const N=[];let L=x;for(;L;)N.unshift(L.record),L=L.parent;return{name:M,path:E,params:T,matched:N,meta:bT(N)}}e.forEach(y=>c(y));function v(){r.length=0,o.clear()}return{addRoute:c,resolve:g,removeRoute:f,clearRoutes:v,getRoutes:d,getRecordMatcher:s}}function rm(e,t){const r={};for(const o of t)o in e&&(r[o]=e[o]);return r}function mT(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:yT(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function yT(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const o in e.components)t[o]=typeof r=="object"?r[o]:r;return t}function im(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function bT(e){return e.reduce((t,r)=>bt(t,r.meta),{})}function om(e,t){const r={};for(const o in e)r[o]=o in t?t[o]:e[o];return r}function wT(e,t){let r=0,o=t.length;for(;r!==o;){const c=r+o>>1;ob(e,t[c])<0?o=c:r=c+1}const s=xT(e);return s&&(o=t.lastIndexOf(s,o-1)),o}function xT(e){let t=e;for(;t=t.parent;)if(sb(t)&&ob(e,t)===0)return t}function sb({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function _T(e){const t={};if(e===""||e==="?")return t;const o=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sc&&Cd(c)):[o&&Cd(o)]).forEach(c=>{c!==void 0&&(t+=(t.length?"&":"")+r,c!=null&&(t+="="+c))})}return t}function ST(e){const t={};for(const r in e){const o=e[r];o!==void 0&&(t[r]=xr(o)?o.map(s=>s==null?null:""+s):o==null?o:""+o)}return t}const kT=Symbol(""),lm=Symbol(""),Nh=Symbol(""),lb=Symbol(""),Ed=Symbol("");function pl(){let e=[];function t(o){return e.push(o),()=>{const s=e.indexOf(o);s>-1&&e.splice(s,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function zi(e,t,r,o,s,c=f=>f()){const f=o&&(o.enterCallbacks[s]=o.enterCallbacks[s]||[]);return()=>new Promise((d,h)=>{const g=b=>{b===!1?h(Cs(4,{from:r,to:t})):b instanceof Error?h(b):lT(b)?h(Cs(2,{from:t,to:b})):(f&&o.enterCallbacks[s]===f&&typeof b=="function"&&f.push(b),d())},v=c(()=>e.call(o&&o.instances[s],t,r,g));let y=Promise.resolve(v);e.length<3&&(y=y.then(g)),y.catch(b=>h(b))})}function Xf(e,t,r,o,s=c=>c()){const c=[];for(const f of e)for(const d in f.components){let h=f.components[d];if(!(t!=="beforeRouteEnter"&&!f.instances[d]))if(CT(h)){const v=(h.__vccOpts||h)[t];v&&c.push(zi(v,r,o,f,d,s))}else{let g=h();c.push(()=>g.then(v=>{if(!v)return Promise.reject(new Error(`Couldn't resolve component "${d}" at "${f.path}"`));const y=AC(v)?v.default:v;f.components[d]=y;const x=(y.__vccOpts||y)[t];return x&&zi(x,r,o,f,d,s)()}))}}return c}function CT(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function am(e){const t=ri(Nh),r=ri(lb),o=Me(()=>{const h=q(e.to);return t.resolve(h)}),s=Me(()=>{const{matched:h}=o.value,{length:g}=h,v=h[g-1],y=r.matched;if(!v||!y.length)return-1;const b=y.findIndex(ks.bind(null,v));if(b>-1)return b;const x=cm(h[g-2]);return g>1&&cm(v)===x&&y[y.length-1].path!==x?y.findIndex(ks.bind(null,h[g-2])):b}),c=Me(()=>s.value>-1&&AT(r.params,o.value.params)),f=Me(()=>s.value>-1&&s.value===r.matched.length-1&&tb(r.params,o.value.params));function d(h={}){return LT(h)?t[q(e.replace)?"replace":"push"](q(e.to)).catch(Al):Promise.resolve()}return{route:o,href:Me(()=>o.value.href),isActive:c,isExactActive:f,navigate:d}}const TT=ft({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:am,setup(e,{slots:t}){const r=er(am(e)),{options:o}=ri(Nh),s=Me(()=>({[um(e.activeClass,o.linkActiveClass,"router-link-active")]:r.isActive,[um(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const c=t.default&&t.default(r);return e.custom?c:fa("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:s.value},c)}}}),ET=TT;function LT(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function AT(e,t){for(const r in t){const o=t[r],s=e[r];if(typeof o=="string"){if(o!==s)return!1}else if(!xr(s)||s.length!==o.length||o.some((c,f)=>c!==s[f]))return!1}return!0}function cm(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const um=(e,t,r)=>e??t??r,MT=ft({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const o=ri(Ed),s=Me(()=>e.route||o.value),c=ri(lm,0),f=Me(()=>{let g=q(c);const{matched:v}=s.value;let y;for(;(y=v[g])&&!y.components;)g++;return g}),d=Me(()=>s.value.matched[f.value]);bc(lm,Me(()=>f.value+1)),bc(kT,d),bc(Ed,s);const h=Be();return Ht(()=>[h.value,d.value,e.name],([g,v,y],[b,x,T])=>{v&&(v.instances[y]=g,x&&x!==v&&g&&g===b&&(v.leaveGuards.size||(v.leaveGuards=x.leaveGuards),v.updateGuards.size||(v.updateGuards=x.updateGuards))),g&&v&&(!x||!ks(v,x)||!b)&&(v.enterCallbacks[y]||[]).forEach(E=>E(g))},{flush:"post"}),()=>{const g=s.value,v=e.name,y=d.value,b=y&&y.components[v];if(!b)return fm(r.default,{Component:b,route:g});const x=y.props[v],T=x?x===!0?g.params:typeof x=="function"?x(g):x:null,M=fa(b,bt({},T,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(y.instances[v]=null)},ref:h}));return fm(r.default,{Component:M,route:g})||M}}});function fm(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const NT=MT;function $T(e){const t=vT(e.routes,e),r=e.parseQuery||_T,o=e.stringifyQuery||sm,s=e.history,c=pl(),f=pl(),d=pl(),h=Fr(Mi);let g=Mi;as&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const v=Gf.bind(null,X=>""+X),y=Gf.bind(null,BC),b=Gf.bind(null,Wl);function x(X,ae){let de,$e;return rb(X)?(de=t.getRecordMatcher(X),$e=ae):$e=X,t.addRoute($e,de)}function T(X){const ae=t.getRecordMatcher(X);ae&&t.removeRoute(ae)}function E(){return t.getRoutes().map(X=>X.record)}function M(X){return!!t.getRecordMatcher(X)}function N(X,ae){if(ae=bt({},ae||h.value),typeof X=="string"){const F=Kf(r,X,ae.path),Z=t.resolve({path:F.path},ae),ue=s.createHref(F.fullPath);return bt(F,Z,{params:b(Z.params),hash:Wl(F.hash),redirectedFrom:void 0,href:ue})}let de;if(X.path!=null)de=bt({},X,{path:Kf(r,X.path,ae.path).path});else{const F=bt({},X.params);for(const Z in F)F[Z]==null&&delete F[Z];de=bt({},X,{params:y(F)}),ae.params=y(ae.params)}const $e=t.resolve(de,ae),Te=X.hash||"";$e.params=v(b($e.params));const Ye=VC(o,bt({},X,{hash:FC(Te),path:$e.path})),P=s.createHref(Ye);return bt({fullPath:Ye,hash:Te,query:o===sm?ST(X.query):X.query||{}},$e,{redirectedFrom:void 0,href:P})}function L(X){return typeof X=="string"?Kf(r,X,h.value.path):bt({},X)}function O(X,ae){if(g!==X)return Cs(8,{from:ae,to:X})}function A(X){return J(X)}function H(X){return A(bt(L(X),{replace:!0}))}function z(X){const ae=X.matched[X.matched.length-1];if(ae&&ae.redirect){const{redirect:de}=ae;let $e=typeof de=="function"?de(X):de;return typeof $e=="string"&&($e=$e.includes("?")||$e.includes("#")?$e=L($e):{path:$e},$e.params={}),bt({query:X.query,hash:X.hash,params:$e.path!=null?{}:X.params},$e)}}function J(X,ae){const de=g=N(X),$e=h.value,Te=X.state,Ye=X.force,P=X.replace===!0,F=z(de);if(F)return J(bt(L(F),{state:typeof F=="object"?bt({},Te,F.state):Te,force:Ye,replace:P}),ae||de);const Z=de;Z.redirectedFrom=ae;let ue;return!Ye&&jC(o,$e,de)&&(ue=Cs(16,{to:Z,from:$e}),We($e,$e,!0,!1)),(ue?Promise.resolve(ue):j(Z,$e)).catch(le=>Yr(le)?Yr(le,2)?le:Ne(le):ie(le,Z,$e)).then(le=>{if(le){if(Yr(le,2))return J(bt({replace:P},L(le.to),{state:typeof le.to=="object"?bt({},Te,le.to.state):Te,force:Ye}),ae||Z)}else le=K(Z,$e,!0,P,Te);return ne(Z,$e,le),le})}function re(X,ae){const de=O(X,ae);return de?Promise.reject(de):Promise.resolve()}function te(X){const ae=rt.values().next().value;return ae&&typeof ae.runWithContext=="function"?ae.runWithContext(X):X()}function j(X,ae){let de;const[$e,Te,Ye]=OT(X,ae);de=Xf($e.reverse(),"beforeRouteLeave",X,ae);for(const F of $e)F.leaveGuards.forEach(Z=>{de.push(zi(Z,X,ae))});const P=re.bind(null,X,ae);return de.push(P),Ee(de).then(()=>{de=[];for(const F of c.list())de.push(zi(F,X,ae));return de.push(P),Ee(de)}).then(()=>{de=Xf(Te,"beforeRouteUpdate",X,ae);for(const F of Te)F.updateGuards.forEach(Z=>{de.push(zi(Z,X,ae))});return de.push(P),Ee(de)}).then(()=>{de=[];for(const F of Ye)if(F.beforeEnter)if(xr(F.beforeEnter))for(const Z of F.beforeEnter)de.push(zi(Z,X,ae));else de.push(zi(F.beforeEnter,X,ae));return de.push(P),Ee(de)}).then(()=>(X.matched.forEach(F=>F.enterCallbacks={}),de=Xf(Ye,"beforeRouteEnter",X,ae,te),de.push(P),Ee(de))).then(()=>{de=[];for(const F of f.list())de.push(zi(F,X,ae));return de.push(P),Ee(de)}).catch(F=>Yr(F,8)?F:Promise.reject(F))}function ne(X,ae,de){d.list().forEach($e=>te(()=>$e(X,ae,de)))}function K(X,ae,de,$e,Te){const Ye=O(X,ae);if(Ye)return Ye;const P=ae===Mi,F=as?history.state:{};de&&($e||P?s.replace(X.fullPath,bt({scroll:P&&F&&F.scroll},Te)):s.push(X.fullPath,Te)),h.value=X,We(X,ae,de,P),Ne()}let V;function I(){V||(V=s.listen((X,ae,de)=>{if(!Ze.listening)return;const $e=N(X),Te=z($e);if(Te){J(bt(Te,{replace:!0}),$e).catch(Al);return}g=$e;const Ye=h.value;as&&eT(Jv(Ye.fullPath,de.delta),Cu()),j($e,Ye).catch(P=>Yr(P,12)?P:Yr(P,2)?(J(P.to,$e).then(F=>{Yr(F,20)&&!de.delta&&de.type===Ul.pop&&s.go(-1,!1)}).catch(Al),Promise.reject()):(de.delta&&s.go(-de.delta,!1),ie(P,$e,Ye))).then(P=>{P=P||K($e,Ye,!1),P&&(de.delta&&!Yr(P,8)?s.go(-de.delta,!1):de.type===Ul.pop&&Yr(P,20)&&s.go(-1,!1)),ne($e,Ye,P)}).catch(Al)}))}let k=pl(),B=pl(),W;function ie(X,ae,de){Ne(X);const $e=B.list();return $e.length?$e.forEach(Te=>Te(X,ae,de)):console.error(X),Promise.reject(X)}function ye(){return W&&h.value!==Mi?Promise.resolve():new Promise((X,ae)=>{k.add([X,ae])})}function Ne(X){return W||(W=!X,I(),k.list().forEach(([ae,de])=>X?de(X):ae()),k.reset()),X}function We(X,ae,de,$e){const{scrollBehavior:Te}=e;if(!as||!Te)return Promise.resolve();const Ye=!de&&tT(Jv(X.fullPath,0))||($e||!de)&&history.state&&history.state.scroll||null;return ln().then(()=>Te(X,ae,Ye)).then(P=>P&&QC(P)).catch(P=>ie(P,X,ae))}const je=X=>s.go(X);let it;const rt=new Set,Ze={currentRoute:h,listening:!0,addRoute:x,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:E,resolve:N,options:e,push:A,replace:H,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:c.add,beforeResolve:f.add,afterEach:d.add,onError:B.add,isReady:ye,install(X){const ae=this;X.component("RouterLink",ET),X.component("RouterView",NT),X.config.globalProperties.$router=ae,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>q(h)}),as&&!it&&h.value===Mi&&(it=!0,A(s.location).catch(Te=>{}));const de={};for(const Te in Mi)Object.defineProperty(de,Te,{get:()=>h.value[Te],enumerable:!0});X.provide(Nh,ae),X.provide(lb,ph(de)),X.provide(Ed,h);const $e=X.unmount;rt.add(X),X.unmount=function(){rt.delete(X),rt.size<1&&(g=Mi,V&&V(),V=null,h.value=Mi,it=!1,W=!1),$e()}}};function Ee(X){return X.reduce((ae,de)=>ae.then(()=>te(de)),Promise.resolve())}return Ze}function OT(e,t){const r=[],o=[],s=[],c=Math.max(t.matched.length,e.matched.length);for(let f=0;fks(g,d))?o.push(d):r.push(d));const h=e.matched[f];h&&(t.matched.find(g=>ks(g,h))||s.push(h))}return[r,o,s]}const PT=["top","right","bottom","left"],dm=["start","end"],hm=PT.reduce((e,t)=>e.concat(t,t+"-"+dm[0],t+"-"+dm[1]),[]),Vl=Math.min,wo=Math.max,RT={left:"right",right:"left",bottom:"top",top:"bottom"},DT={start:"end",end:"start"};function Ld(e,t,r){return wo(e,Vl(t,r))}function Oo(e,t){return typeof e=="function"?e(t):e}function Ir(e){return e.split("-")[0]}function br(e){return e.split("-")[1]}function ab(e){return e==="x"?"y":"x"}function $h(e){return e==="y"?"height":"width"}function da(e){return["top","bottom"].includes(Ir(e))?"y":"x"}function Oh(e){return ab(da(e))}function cb(e,t,r){r===void 0&&(r=!1);const o=br(e),s=Oh(e),c=$h(s);let f=s==="x"?o===(r?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[c]>t.floating[c]&&(f=Vc(f)),[f,Vc(f)]}function zT(e){const t=Vc(e);return[Uc(e),t,Uc(t)]}function Uc(e){return e.replace(/start|end/g,t=>DT[t])}function IT(e,t,r){const o=["left","right"],s=["right","left"],c=["top","bottom"],f=["bottom","top"];switch(e){case"top":case"bottom":return r?t?s:o:t?o:s;case"left":case"right":return t?c:f;default:return[]}}function FT(e,t,r,o){const s=br(e);let c=IT(Ir(e),r==="start",o);return s&&(c=c.map(f=>f+"-"+s),t&&(c=c.concat(c.map(Uc)))),c}function Vc(e){return e.replace(/left|right|bottom|top/g,t=>RT[t])}function HT(e){return{top:0,right:0,bottom:0,left:0,...e}}function ub(e){return typeof e!="number"?HT(e):{top:e,right:e,bottom:e,left:e}}function Nl(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function pm(e,t,r){let{reference:o,floating:s}=e;const c=da(t),f=Oh(t),d=$h(f),h=Ir(t),g=c==="y",v=o.x+o.width/2-s.width/2,y=o.y+o.height/2-s.height/2,b=o[d]/2-s[d]/2;let x;switch(h){case"top":x={x:v,y:o.y-s.height};break;case"bottom":x={x:v,y:o.y+o.height};break;case"right":x={x:o.x+o.width,y};break;case"left":x={x:o.x-s.width,y};break;default:x={x:o.x,y:o.y}}switch(br(t)){case"start":x[f]-=b*(r&&g?-1:1);break;case"end":x[f]+=b*(r&&g?-1:1);break}return x}const qT=async(e,t,r)=>{const{placement:o="bottom",strategy:s="absolute",middleware:c=[],platform:f}=r,d=c.filter(Boolean),h=await(f.isRTL==null?void 0:f.isRTL(t));let g=await f.getElementRects({reference:e,floating:t,strategy:s}),{x:v,y}=pm(g,o,h),b=o,x={},T=0;for(let E=0;E({name:"arrow",options:e,async fn(t){const{x:r,y:o,placement:s,rects:c,platform:f,elements:d,middlewareData:h}=t,{element:g,padding:v=0}=Oo(e,t)||{};if(g==null)return{};const y=ub(v),b={x:r,y:o},x=Oh(s),T=$h(x),E=await f.getDimensions(g),M=x==="y",N=M?"top":"left",L=M?"bottom":"right",O=M?"clientHeight":"clientWidth",A=c.reference[T]+c.reference[x]-b[x]-c.floating[T],H=b[x]-c.reference[x],z=await(f.getOffsetParent==null?void 0:f.getOffsetParent(g));let J=z?z[O]:0;(!J||!await(f.isElement==null?void 0:f.isElement(z)))&&(J=d.floating[O]||c.floating[T]);const re=A/2-H/2,te=J/2-E[T]/2-1,j=Vl(y[N],te),ne=Vl(y[L],te),K=j,V=J-E[T]-ne,I=J/2-E[T]/2+re,k=Ld(K,I,V),B=!h.arrow&&br(s)!=null&&I!==k&&c.reference[T]/2-(Ibr(s)===e),...r.filter(s=>br(s)!==e)]:r.filter(s=>Ir(s)===s)).filter(s=>e?br(s)===e||(t?Uc(s)!==s:!1):!0)}const UT=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var r,o,s;const{rects:c,middlewareData:f,placement:d,platform:h,elements:g}=t,{crossAxis:v=!1,alignment:y,allowedPlacements:b=hm,autoAlignment:x=!0,...T}=Oo(e,t),E=y!==void 0||b===hm?WT(y||null,x,b):b,M=await Tu(t,T),N=((r=f.autoPlacement)==null?void 0:r.index)||0,L=E[N];if(L==null)return{};const O=cb(L,c,await(h.isRTL==null?void 0:h.isRTL(g.floating)));if(d!==L)return{reset:{placement:E[0]}};const A=[M[Ir(L)],M[O[0]],M[O[1]]],H=[...((o=f.autoPlacement)==null?void 0:o.overflows)||[],{placement:L,overflows:A}],z=E[N+1];if(z)return{data:{index:N+1,overflows:H},reset:{placement:z}};const J=H.map(j=>{const ne=br(j.placement);return[j.placement,ne&&v?j.overflows.slice(0,2).reduce((K,V)=>K+V,0):j.overflows[0],j.overflows]}).sort((j,ne)=>j[1]-ne[1]),te=((s=J.filter(j=>j[2].slice(0,br(j[0])?2:3).every(ne=>ne<=0))[0])==null?void 0:s[0])||J[0][0];return te!==d?{data:{index:N+1,overflows:H},reset:{placement:te}}:{}}}},VT=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r,o;const{placement:s,middlewareData:c,rects:f,initialPlacement:d,platform:h,elements:g}=t,{mainAxis:v=!0,crossAxis:y=!0,fallbackPlacements:b,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:T="none",flipAlignment:E=!0,...M}=Oo(e,t);if((r=c.arrow)!=null&&r.alignmentOffset)return{};const N=Ir(s),L=Ir(d)===d,O=await(h.isRTL==null?void 0:h.isRTL(g.floating)),A=b||(L||!E?[Vc(d)]:zT(d));!b&&T!=="none"&&A.push(...FT(d,E,T,O));const H=[d,...A],z=await Tu(t,M),J=[];let re=((o=c.flip)==null?void 0:o.overflows)||[];if(v&&J.push(z[N]),y){const K=cb(s,f,O);J.push(z[K[0]],z[K[1]])}if(re=[...re,{placement:s,overflows:J}],!J.every(K=>K<=0)){var te,j;const K=(((te=c.flip)==null?void 0:te.index)||0)+1,V=H[K];if(V)return{data:{index:K,overflows:re},reset:{placement:V}};let I=(j=re.filter(k=>k.overflows[0]<=0).sort((k,B)=>k.overflows[1]-B.overflows[1])[0])==null?void 0:j.placement;if(!I)switch(x){case"bestFit":{var ne;const k=(ne=re.map(B=>[B.placement,B.overflows.filter(W=>W>0).reduce((W,ie)=>W+ie,0)]).sort((B,W)=>B[1]-W[1])[0])==null?void 0:ne[0];k&&(I=k);break}case"initialPlacement":I=d;break}if(s!==I)return{reset:{placement:I}}}return{}}}};async function jT(e,t){const{placement:r,platform:o,elements:s}=e,c=await(o.isRTL==null?void 0:o.isRTL(s.floating)),f=Ir(r),d=br(r),h=da(r)==="y",g=["left","top"].includes(f)?-1:1,v=c&&h?-1:1,y=Oo(t,e);let{mainAxis:b,crossAxis:x,alignmentAxis:T}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...y};return d&&typeof T=="number"&&(x=d==="end"?T*-1:T),h?{x:x*v,y:b*g}:{x:b*g,y:x*v}}const GT=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,o;const{x:s,y:c,placement:f,middlewareData:d}=t,h=await jT(t,e);return f===((r=d.offset)==null?void 0:r.placement)&&(o=d.arrow)!=null&&o.alignmentOffset?{}:{x:s+h.x,y:c+h.y,data:{...h,placement:f}}}}},KT=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:o,placement:s}=t,{mainAxis:c=!0,crossAxis:f=!1,limiter:d={fn:M=>{let{x:N,y:L}=M;return{x:N,y:L}}},...h}=Oo(e,t),g={x:r,y:o},v=await Tu(t,h),y=da(Ir(s)),b=ab(y);let x=g[b],T=g[y];if(c){const M=b==="y"?"top":"left",N=b==="y"?"bottom":"right",L=x+v[M],O=x-v[N];x=Ld(L,x,O)}if(f){const M=y==="y"?"top":"left",N=y==="y"?"bottom":"right",L=T+v[M],O=T-v[N];T=Ld(L,T,O)}const E=d.fn({...t,[b]:x,[y]:T});return{...E,data:{x:E.x-r,y:E.y-o}}}}},XT=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:o,platform:s,elements:c}=t,{apply:f=()=>{},...d}=Oo(e,t),h=await Tu(t,d),g=Ir(r),v=br(r),y=da(r)==="y",{width:b,height:x}=o.floating;let T,E;g==="top"||g==="bottom"?(T=g,E=v===(await(s.isRTL==null?void 0:s.isRTL(c.floating))?"start":"end")?"left":"right"):(E=g,T=v==="end"?"top":"bottom");const M=x-h[T],N=b-h[E],L=!t.middlewareData.shift;let O=M,A=N;if(y){const z=b-h.left-h.right;A=v||L?Vl(N,z):z}else{const z=x-h.top-h.bottom;O=v||L?Vl(M,z):z}if(L&&!v){const z=wo(h.left,0),J=wo(h.right,0),re=wo(h.top,0),te=wo(h.bottom,0);y?A=b-2*(z!==0||J!==0?z+J:wo(h.left,h.right)):O=x-2*(re!==0||te!==0?re+te:wo(h.top,h.bottom))}await f({...t,availableWidth:A,availableHeight:O});const H=await s.getDimensions(c.floating);return b!==H.width||x!==H.height?{reset:{rects:!0}}:{}}}};function Qn(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function $r(e){return Qn(e).getComputedStyle(e)}const gm=Math.min,$l=Math.max,jc=Math.round;function fb(e){const t=$r(e);let r=parseFloat(t.width),o=parseFloat(t.height);const s=e.offsetWidth,c=e.offsetHeight,f=jc(r)!==s||jc(o)!==c;return f&&(r=s,o=c),{width:r,height:o,fallback:f}}function Xi(e){return hb(e)?(e.nodeName||"").toLowerCase():""}let ic;function db(){if(ic)return ic;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(ic=e.brands.map(t=>t.brand+"/"+t.version).join(" "),ic):navigator.userAgent}function Or(e){return e instanceof Qn(e).HTMLElement}function ji(e){return e instanceof Qn(e).Element}function hb(e){return e instanceof Qn(e).Node}function vm(e){return typeof ShadowRoot>"u"?!1:e instanceof Qn(e).ShadowRoot||e instanceof ShadowRoot}function Eu(e){const{overflow:t,overflowX:r,overflowY:o,display:s}=$r(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+r)&&!["inline","contents"].includes(s)}function YT(e){return["table","td","th"].includes(Xi(e))}function Ad(e){const t=/firefox/i.test(db()),r=$r(e),o=r.backdropFilter||r.WebkitBackdropFilter;return r.transform!=="none"||r.perspective!=="none"||!!o&&o!=="none"||t&&r.willChange==="filter"||t&&!!r.filter&&r.filter!=="none"||["transform","perspective"].some(s=>r.willChange.includes(s))||["paint","layout","strict","content"].some(s=>{const c=r.contain;return c!=null&&c.includes(s)})}function pb(){return!/^((?!chrome|android).)*safari/i.test(db())}function Ph(e){return["html","body","#document"].includes(Xi(e))}function gb(e){return ji(e)?e:e.contextElement}const vb={x:1,y:1};function ms(e){const t=gb(e);if(!Or(t))return vb;const r=t.getBoundingClientRect(),{width:o,height:s,fallback:c}=fb(t);let f=(c?jc(r.width):r.width)/o,d=(c?jc(r.height):r.height)/s;return f&&Number.isFinite(f)||(f=1),d&&Number.isFinite(d)||(d=1),{x:f,y:d}}function jl(e,t,r,o){var s,c;t===void 0&&(t=!1),r===void 0&&(r=!1);const f=e.getBoundingClientRect(),d=gb(e);let h=vb;t&&(o?ji(o)&&(h=ms(o)):h=ms(e));const g=d?Qn(d):window,v=!pb()&&r;let y=(f.left+(v&&((s=g.visualViewport)==null?void 0:s.offsetLeft)||0))/h.x,b=(f.top+(v&&((c=g.visualViewport)==null?void 0:c.offsetTop)||0))/h.y,x=f.width/h.x,T=f.height/h.y;if(d){const E=Qn(d),M=o&&ji(o)?Qn(o):o;let N=E.frameElement;for(;N&&o&&M!==E;){const L=ms(N),O=N.getBoundingClientRect(),A=getComputedStyle(N);O.x+=(N.clientLeft+parseFloat(A.paddingLeft))*L.x,O.y+=(N.clientTop+parseFloat(A.paddingTop))*L.y,y*=L.x,b*=L.y,x*=L.x,T*=L.y,y+=O.x,b+=O.y,N=Qn(N).frameElement}}return{width:x,height:T,top:b,right:y+x,bottom:b+T,left:y,x:y,y:b}}function Gi(e){return((hb(e)?e.ownerDocument:e.document)||window.document).documentElement}function Lu(e){return ji(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function mb(e){return jl(Gi(e)).left+Lu(e).scrollLeft}function Gl(e){if(Xi(e)==="html")return e;const t=e.assignedSlot||e.parentNode||vm(e)&&e.host||Gi(e);return vm(t)?t.host:t}function yb(e){const t=Gl(e);return Ph(t)?t.ownerDocument.body:Or(t)&&Eu(t)?t:yb(t)}function Gc(e,t){var r;t===void 0&&(t=[]);const o=yb(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),c=Qn(o);return s?t.concat(c,c.visualViewport||[],Eu(o)?o:[]):t.concat(o,Gc(o))}function mm(e,t,r){return t==="viewport"?Nl(function(o,s){const c=Qn(o),f=Gi(o),d=c.visualViewport;let h=f.clientWidth,g=f.clientHeight,v=0,y=0;if(d){h=d.width,g=d.height;const b=pb();(b||!b&&s==="fixed")&&(v=d.offsetLeft,y=d.offsetTop)}return{width:h,height:g,x:v,y}}(e,r)):ji(t)?Nl(function(o,s){const c=jl(o,!0,s==="fixed"),f=c.top+o.clientTop,d=c.left+o.clientLeft,h=Or(o)?ms(o):{x:1,y:1};return{width:o.clientWidth*h.x,height:o.clientHeight*h.y,x:d*h.x,y:f*h.y}}(t,r)):Nl(function(o){const s=Gi(o),c=Lu(o),f=o.ownerDocument.body,d=$l(s.scrollWidth,s.clientWidth,f.scrollWidth,f.clientWidth),h=$l(s.scrollHeight,s.clientHeight,f.scrollHeight,f.clientHeight);let g=-c.scrollLeft+mb(o);const v=-c.scrollTop;return $r(f).direction==="rtl"&&(g+=$l(s.clientWidth,f.clientWidth)-d),{width:d,height:h,x:g,y:v}}(Gi(e)))}function ym(e){return Or(e)&&$r(e).position!=="fixed"?e.offsetParent:null}function bm(e){const t=Qn(e);let r=ym(e);for(;r&&YT(r)&&$r(r).position==="static";)r=ym(r);return r&&(Xi(r)==="html"||Xi(r)==="body"&&$r(r).position==="static"&&!Ad(r))?t:r||function(o){let s=Gl(o);for(;Or(s)&&!Ph(s);){if(Ad(s))return s;s=Gl(s)}return null}(e)||t}function ZT(e,t,r){const o=Or(t),s=Gi(t),c=jl(e,!0,r==="fixed",t);let f={scrollLeft:0,scrollTop:0};const d={x:0,y:0};if(o||!o&&r!=="fixed")if((Xi(t)!=="body"||Eu(s))&&(f=Lu(t)),Or(t)){const h=jl(t,!0);d.x=h.x+t.clientLeft,d.y=h.y+t.clientTop}else s&&(d.x=mb(s));return{x:c.left+f.scrollLeft-d.x,y:c.top+f.scrollTop-d.y,width:c.width,height:c.height}}const JT={getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:o,strategy:s}=e;const c=r==="clippingAncestors"?function(g,v){const y=v.get(g);if(y)return y;let b=Gc(g).filter(M=>ji(M)&&Xi(M)!=="body"),x=null;const T=$r(g).position==="fixed";let E=T?Gl(g):g;for(;ji(E)&&!Ph(E);){const M=$r(E),N=Ad(E);(T?N||x:N||M.position!=="static"||!x||!["absolute","fixed"].includes(x.position))?x=M:b=b.filter(L=>L!==E),E=Gl(E)}return v.set(g,b),b}(t,this._c):[].concat(r),f=[...c,o],d=f[0],h=f.reduce((g,v)=>{const y=mm(t,v,s);return g.top=$l(y.top,g.top),g.right=gm(y.right,g.right),g.bottom=gm(y.bottom,g.bottom),g.left=$l(y.left,g.left),g},mm(t,d,s));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:r,strategy:o}=e;const s=Or(r),c=Gi(r);if(r===c)return t;let f={scrollLeft:0,scrollTop:0},d={x:1,y:1};const h={x:0,y:0};if((s||!s&&o!=="fixed")&&((Xi(r)!=="body"||Eu(c))&&(f=Lu(r)),Or(r))){const g=jl(r);d=ms(r),h.x=g.x+r.clientLeft,h.y=g.y+r.clientTop}return{width:t.width*d.x,height:t.height*d.y,x:t.x*d.x-f.scrollLeft*d.x+h.x,y:t.y*d.y-f.scrollTop*d.y+h.y}},isElement:ji,getDimensions:function(e){return Or(e)?fb(e):e.getBoundingClientRect()},getOffsetParent:bm,getDocumentElement:Gi,getScale:ms,async getElementRects(e){let{reference:t,floating:r,strategy:o}=e;const s=this.getOffsetParent||bm,c=this.getDimensions;return{reference:ZT(t,await s(r),o),floating:{x:0,y:0,...await c(r)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>$r(e).direction==="rtl"},QT=(e,t,r)=>{const o=new Map,s={platform:JT,...r},c={...s.platform,_c:o};return qT(e,t,{...s,platform:c})};function bb(e,t){for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(typeof t[r]=="object"&&e[r]?bb(e[r],t[r]):e[r]=t[r])}const wr={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover"],delay:{show:0,hide:400}}}};function Kl(e,t){let r=wr.themes[e]||{},o;do o=r[t],typeof o>"u"?r.$extend?r=wr.themes[r.$extend]||{}:(r=null,o=wr[t]):r=null;while(r);return o}function eE(e){const t=[e];let r=wr.themes[e]||{};do r.$extend&&!r.$resetCss?(t.push(r.$extend),r=wr.themes[r.$extend]||{}):r=null;while(r);return t.map(o=>`v-popper--theme-${o}`)}function wm(e){const t=[e];let r=wr.themes[e]||{};do r.$extend?(t.push(r.$extend),r=wr.themes[r.$extend]||{}):r=null;while(r);return t}let Ts=!1;if(typeof window<"u"){Ts=!1;try{const e=Object.defineProperty({},"passive",{get(){Ts=!0}});window.addEventListener("test",null,e)}catch{}}let wb=!1;typeof window<"u"&&typeof navigator<"u"&&(wb=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const xb=["auto","top","bottom","left","right"].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),xm={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart",pointer:"pointerdown"},_m={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend",pointer:"pointerup"};function Sm(e,t){const r=e.indexOf(t);r!==-1&&e.splice(r,1)}function Yf(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}const Un=[];let bo=null;const km={};function Cm(e){let t=km[e];return t||(t=km[e]=[]),t}let Md=function(){};typeof window<"u"&&(Md=window.Element);function at(e){return function(t){return Kl(t.theme,e)}}const Zf="__floating-vue__popper",_b=()=>ft({name:"VPopper",provide(){return{[Zf]:{parentPopper:this}}},inject:{[Zf]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:at("disabled")},positioningDisabled:{type:Boolean,default:at("positioningDisabled")},placement:{type:String,default:at("placement"),validator:e=>xb.includes(e)},delay:{type:[String,Number,Object],default:at("delay")},distance:{type:[Number,String],default:at("distance")},skidding:{type:[Number,String],default:at("skidding")},triggers:{type:Array,default:at("triggers")},showTriggers:{type:[Array,Function],default:at("showTriggers")},hideTriggers:{type:[Array,Function],default:at("hideTriggers")},popperTriggers:{type:Array,default:at("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:at("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:at("popperHideTriggers")},container:{type:[String,Object,Md,Boolean],default:at("container")},boundary:{type:[String,Md],default:at("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:at("strategy")},autoHide:{type:[Boolean,Function],default:at("autoHide")},handleResize:{type:Boolean,default:at("handleResize")},instantMove:{type:Boolean,default:at("instantMove")},eagerMount:{type:Boolean,default:at("eagerMount")},popperClass:{type:[String,Array,Object],default:at("popperClass")},computeTransformOrigin:{type:Boolean,default:at("computeTransformOrigin")},autoMinSize:{type:Boolean,default:at("autoMinSize")},autoSize:{type:[Boolean,String],default:at("autoSize")},autoMaxSize:{type:Boolean,default:at("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:at("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:at("preventOverflow")},overflowPadding:{type:[Number,String],default:at("overflowPadding")},arrowPadding:{type:[Number,String],default:at("arrowPadding")},arrowOverflow:{type:Boolean,default:at("arrowOverflow")},flip:{type:Boolean,default:at("flip")},shift:{type:Boolean,default:at("shift")},shiftCrossAxis:{type:Boolean,default:at("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:at("noAutoFocus")},disposeTimeout:{type:Number,default:at("disposeTimeout")}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join("_")}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide=="function"?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){var e;return(e=this[Zf])==null?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return((e=this.popperTriggers)==null?void 0:e.includes("hover"))||((t=this.popperShowTriggers)==null?void 0:t.includes("hover"))}},watch:{shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:"$_refreshListeners",deep:!0},positioningDisabled:"$_refreshListeners",...["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce((e,t)=>(e[t]="$_computePosition",e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:r=!1}={}){var o,s;(o=this.parentPopper)!=null&&o.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(r||!this.disabled)&&(((s=this.parentPopper)==null?void 0:s.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1}={}){var r;if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}((r=this.parentPopper)==null?void 0:r.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){var e;this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=((e=this.referenceNode)==null?void 0:e.call(this))??this.$el,this.$_targetNodes=this.targetNodes().filter(t=>t.nodeType===t.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;const e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(GT({mainAxis:this.distance,crossAxis:this.skidding}));const t=this.placement.startsWith("auto");if(t?e.middleware.push(UT({alignment:this.placement.split("-")[1]??""})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(KT({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(VT({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(BT({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:"arrowOverflow",fn:({placement:o,rects:s,middlewareData:c})=>{let f;const{centerOffset:d}=c.arrow;return o.startsWith("top")||o.startsWith("bottom")?f=Math.abs(d)>s.reference.width/2:f=Math.abs(d)>s.reference.height/2,{data:{overflow:f}}}}),this.autoMinSize||this.autoSize){const o=this.autoSize?this.autoSize:this.autoMinSize?"min":null;e.middleware.push({name:"autoSize",fn:({rects:s,placement:c,middlewareData:f})=>{var d;if((d=f.autoSize)!=null&&d.skip)return{};let h,g;return c.startsWith("top")||c.startsWith("bottom")?h=s.reference.width:g=s.reference.height,this.$_innerNode.style[o==="min"?"minWidth":o==="max"?"maxWidth":"width"]=h!=null?`${h}px`:null,this.$_innerNode.style[o==="min"?"minHeight":o==="max"?"maxHeight":"height"]=g!=null?`${g}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(XT({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:o,availableHeight:s})=>{this.$_innerNode.style.maxWidth=o!=null?`${o}px`:null,this.$_innerNode.style.maxHeight=s!=null?`${s}px`:null}})));const r=await QT(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:r.x,y:r.y,placement:r.placement,strategy:r.strategy,arrow:{...r.middlewareData.arrow,...r.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),bo&&this.instantMove&&bo.instantMove&&bo!==this.parentPopper){bo.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(bo=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await Yf(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...Gc(this.$_referenceNode),...Gc(this.$_popperNode)],"scroll",()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const t=this.$_referenceNode.getBoundingClientRect(),r=this.$_popperNode.querySelector(".v-popper__wrapper"),o=r.parentNode.getBoundingClientRect(),s=t.x+t.width/2-(o.left+r.offsetLeft),c=t.y+t.height/2-(o.top+r.offsetTop);this.result.transformOrigin=`${s}px ${c}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let r=0;r0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,Sm(Un,this),Un.length===0&&document.body.classList.remove("v-popper--some-open");for(const r of wm(this.theme)){const o=Cm(r);Sm(o,this),o.length===0&&document.body.classList.remove(`v-popper--some-open--${r}`)}bo===this&&(bo=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await Yf(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e=="string"?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=r=>{this.isShown&&!this.$_hideInProgress||(r.usedByTooltip=!0,!this.$_preventShow&&this.show({event:r}))};this.$_registerTriggerListeners(this.$_targetNodes,xm,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],xm,this.popperTriggers,this.popperShowTriggers,e);const t=r=>{r.usedByTooltip||this.hide({event:r})};this.$_registerTriggerListeners(this.$_targetNodes,_m,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],_m,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,r){this.$_events.push({targetNodes:e,eventType:t,handler:r}),e.forEach(o=>o.addEventListener(t,r,Ts?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,r,o,s){let c=r;o!=null&&(c=typeof o=="function"?o(c):o),c.forEach(f=>{const d=t[f];d&&this.$_registerEventListeners(e,d,s)})},$_removeEventListeners(e){const t=[];this.$_events.forEach(r=>{const{targetNodes:o,eventType:s,handler:c}=r;!e||e===s?o.forEach(f=>f.removeEventListener(s,c)):t.push(r)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const r of this.$_targetNodes){const o=r.getAttribute(e);o&&(r.removeAttribute(e),r.setAttribute(t,o))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const r in e){const o=e[r];o==null?t.removeAttribute(r):t.setAttribute(r,o)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$_referenceNode.getBoundingClientRect();if(Ol>=e.left&&Ol<=e.right&&Pl>=e.top&&Pl<=e.bottom){const t=this.$_popperNode.getBoundingClientRect(),r=Ol-$i,o=Pl-Oi,s=t.left+t.width/2-$i+(t.top+t.height/2)-Oi+t.width+t.height,c=$i+r*s,f=Oi+o*s;return oc($i,Oi,c,f,t.left,t.top,t.left,t.bottom)||oc($i,Oi,c,f,t.left,t.top,t.right,t.top)||oc($i,Oi,c,f,t.right,t.top,t.right,t.bottom)||oc($i,Oi,c,f,t.left,t.bottom,t.right,t.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<"u"&&typeof window<"u"){if(wb){const e=Ts?{passive:!0,capture:!0}:!0;document.addEventListener("touchstart",t=>Tm(t,!0),e),document.addEventListener("touchend",t=>Em(t,!0),e)}else window.addEventListener("mousedown",e=>Tm(e,!1),!0),window.addEventListener("click",e=>Em(e,!1),!0);window.addEventListener("resize",nE)}function Tm(e,t){if(wr.autoHideOnMousedown)Sb(e,t);else for(let r=0;r=0;o--){const s=Un[o];try{const c=s.containsGlobalTarget=s.mouseDownContains||s.popperNode().contains(e.target);s.pendingHide=!1,requestAnimationFrame(()=>{if(s.pendingHide=!1,!r[s.randomId]&&Lm(s,c,e)){if(s.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&c){let d=s.parentPopper;for(;d;)r[d.randomId]=!0,d=d.parentPopper;return}let f=s.parentPopper;for(;f&&Lm(f,f.containsGlobalTarget,e);)f.$_handleGlobalClose(e,t),f=f.parentPopper}})}catch{}}}function Lm(e,t,r){return r.closeAllPopover||r.closePopover&&t||tE(e,r)&&!t}function tE(e,t){if(typeof e.autoHide=="function"){const r=e.autoHide(t);return e.lastAutoHide=r,r}return e.autoHide}function nE(){for(let e=0;e{$i=Ol,Oi=Pl,Ol=e.clientX,Pl=e.clientY},Ts?{passive:!0}:void 0);function oc(e,t,r,o,s,c,f,d){const h=((f-s)*(t-c)-(d-c)*(e-s))/((d-c)*(r-e)-(f-s)*(o-t)),g=((r-e)*(t-c)-(o-t)*(e-s))/((d-c)*(r-e)-(f-s)*(o-t));return h>=0&&h<=1&&g>=0&&g<=1}const rE={extends:_b()},Au=(e,t)=>{const r=e.__vccOpts||e;for(const[o,s]of t)r[o]=s;return r};function iE(e,t,r,o,s,c){return oe(),me("div",{ref:"reference",class:lt(["v-popper",{"v-popper--shown":e.slotData.isShown}])},[dn(e.$slots,"default",Z_(By(e.slotData)))],2)}const oE=Au(rE,[["render",iE]]);function sE(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var r=e.indexOf("Trident/");if(r>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var s=e.indexOf("Edge/");return s>0?parseInt(e.substring(s+5,e.indexOf(".",s)),10):-1}let Sc;function Nd(){Nd.init||(Nd.init=!0,Sc=sE()!==-1)}var Mu={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Nd(),ln(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",Sc&&this.$el.appendChild(e),e.data="about:blank",Sc||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Sc&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const lE=dy();la("data-v-b329ee4c");const aE={class:"resize-observer",tabindex:"-1"};aa();const cE=lE((e,t,r,o,s,c)=>(oe(),ot("div",aE)));Mu.render=cE;Mu.__scopeId="data-v-b329ee4c";Mu.__file="src/components/ResizeObserver.vue";const kb=(e="theme")=>({computed:{themeClass(){return eE(this[e])}}}),uE=ft({name:"VPopperContent",components:{ResizeObserver:Mu},mixins:[kb()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:["hide","resize"],methods:{toPx(e){return e!=null&&!isNaN(e)?`${e}px`:null}}}),fE=["id","aria-hidden","tabindex","data-popper-placement"],dE={ref:"inner",class:"v-popper__inner"},hE=Y("div",{class:"v-popper__arrow-outer"},null,-1),pE=Y("div",{class:"v-popper__arrow-inner"},null,-1),gE=[hE,pE];function vE(e,t,r,o,s,c){const f=Ao("ResizeObserver");return oe(),me("div",{id:e.popperId,ref:"popover",class:lt(["v-popper__popper",[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}]]),style:Zt(e.result?{position:e.result.strategy,transform:`translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`}:void 0),"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0,onKeyup:t[2]||(t[2]=kd(d=>e.autoHide&&e.$emit("hide"),["esc"]))},[Y("div",{class:"v-popper__backdrop",onClick:t[0]||(t[0]=d=>e.autoHide&&e.$emit("hide"))}),Y("div",{class:"v-popper__wrapper",style:Zt(e.result?{transformOrigin:e.result.transformOrigin}:void 0)},[Y("div",dE,[e.mounted?(oe(),me(ut,{key:0},[Y("div",null,[dn(e.$slots,"default")]),e.handleResize?(oe(),ot(f,{key:0,onNotify:t[1]||(t[1]=d=>e.$emit("resize",d))})):et("",!0)],64)):et("",!0)],512),Y("div",{ref:"arrow",class:"v-popper__arrow-container",style:Zt(e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0)},gE,4)],4)],46,fE)}const Cb=Au(uE,[["render",vE]]),Tb={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}};let $d=function(){};typeof window<"u"&&($d=window.Element);const mE=ft({name:"VPopperWrapper",components:{Popper:oE,PopperContent:Cb},mixins:[Tb,kb("finalTheme")],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,$d,Boolean],default:void 0},boundary:{type:[String,$d],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}}});function yE(e,t,r,o,s,c){const f=Ao("PopperContent"),d=Ao("Popper");return oe(),ot(d,ii({ref:"popper"},e.$props,{theme:e.finalTheme,"target-nodes":e.getTargetNodes,"popper-node":()=>e.$refs.popperContent.$el,class:[e.themeClass],onShow:t[0]||(t[0]=()=>e.$emit("show")),onHide:t[1]||(t[1]=()=>e.$emit("hide")),"onUpdate:shown":t[2]||(t[2]=h=>e.$emit("update:shown",h)),onApplyShow:t[3]||(t[3]=()=>e.$emit("apply-show")),onApplyHide:t[4]||(t[4]=()=>e.$emit("apply-hide")),onCloseGroup:t[5]||(t[5]=()=>e.$emit("close-group")),onCloseDirective:t[6]||(t[6]=()=>e.$emit("close-directive")),onAutoHide:t[7]||(t[7]=()=>e.$emit("auto-hide")),onResize:t[8]||(t[8]=()=>e.$emit("resize"))}),{default:st(({popperId:h,isShown:g,shouldMountContent:v,skipTransition:y,autoHide:b,show:x,hide:T,handleResize:E,onResize:M,classes:N,result:L})=>[dn(e.$slots,"default",{shown:g,show:x,hide:T}),Oe(f,{ref:"popperContent","popper-id":h,theme:e.finalTheme,shown:g,mounted:v,"skip-transition":y,"auto-hide":b,"handle-resize":E,classes:N,result:L,onHide:T,onResize:M},{default:st(()=>[dn(e.$slots,"popper",{shown:g,hide:T})]),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:3},16,["theme","target-nodes","popper-node","class"])}const Rh=Au(mE,[["render",yE]]),bE={...Rh,name:"VDropdown",vPopperTheme:"dropdown"},wE={...Rh,name:"VMenu",vPopperTheme:"menu"},Eb={...Rh,name:"VTooltip",vPopperTheme:"tooltip"},xE=ft({name:"VTooltipDirective",components:{Popper:_b(),PopperContent:Cb},mixins:[Tb],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:e=>Kl(e.theme,"html")},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>Kl(e.theme,"loadingContent")},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content=="function"},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content=="function"&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;const t=++this.$_fetchId,r=this.content(this);r.then?r.then(o=>this.onResult(t,o)):this.onResult(t,r)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}}),_E=["innerHTML"],SE=["textContent"];function kE(e,t,r,o,s,c){const f=Ao("PopperContent"),d=Ao("Popper");return oe(),ot(d,ii({ref:"popper"},e.$attrs,{theme:e.theme,"target-nodes":e.targetNodes,"popper-node":()=>e.$refs.popperContent.$el,onApplyShow:e.onShow,onApplyHide:e.onHide}),{default:st(({popperId:h,isShown:g,shouldMountContent:v,skipTransition:y,autoHide:b,hide:x,handleResize:T,onResize:E,classes:M,result:N})=>[Oe(f,{ref:"popperContent",class:lt({"v-popper--tooltip-loading":e.loading}),"popper-id":h,theme:e.theme,shown:g,mounted:v,"skip-transition":y,"auto-hide":b,"handle-resize":T,classes:M,result:N,onHide:x,onResize:E},{default:st(()=>[e.html?(oe(),me("div",{key:0,innerHTML:e.finalContent},null,8,_E)):(oe(),me("div",{key:1,textContent:qe(e.finalContent)},null,8,SE))]),_:2},1032,["class","popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:1},16,["theme","target-nodes","popper-node","onApplyShow","onApplyHide"])}const CE=Au(xE,[["render",kE]]),Lb="v-popper--has-tooltip";function TE(e,t){let r=e.placement;if(!r&&t)for(const o of xb)t[o]&&(r=o);return r||(r=Kl(e.theme||"tooltip","placement")),r}function Ab(e,t,r){let o;const s=typeof t;return s==="string"?o={content:t}:t&&s==="object"?o=t:o={content:!1},o.placement=TE(o,r),o.targetNodes=()=>[e],o.referenceNode=()=>e,o}let Jf,Xl,EE=0;function LE(){if(Jf)return;Xl=Be([]),Jf=Xy({name:"VTooltipDirectiveApp",setup(){return{directives:Xl}},render(){return this.directives.map(t=>fa(CE,{...t.options,shown:t.shown||t.options.shown,key:t.id}))},devtools:{hide:!0}});const e=document.createElement("div");document.body.appendChild(e),Jf.mount(e)}function Mb(e,t,r){LE();const o=Be(Ab(e,t,r)),s=Be(!1),c={id:EE++,options:o,shown:s};return Xl.value.push(c),e.classList&&e.classList.add(Lb),e.$_popper={options:o,item:c,show(){s.value=!0},hide(){s.value=!1}}}function Dh(e){if(e.$_popper){const t=Xl.value.indexOf(e.$_popper.item);t!==-1&&Xl.value.splice(t,1),delete e.$_popper,delete e.$_popperOldShown,delete e.$_popperMountTarget}e.classList&&e.classList.remove(Lb)}function Mm(e,{value:t,modifiers:r}){const o=Ab(e,t,r);if(!o.content||Kl(o.theme||"tooltip","disabled"))Dh(e);else{let s;e.$_popper?(s=e.$_popper,s.options.value=o):s=Mb(e,t,r),typeof t.shown<"u"&&t.shown!==e.$_popperOldShown&&(e.$_popperOldShown=t.shown,t.shown?s.show():s.hide())}}const Nb={beforeMount:Mm,updated:Mm,beforeUnmount(e){Dh(e)}};function Nm(e){e.addEventListener("mousedown",Kc),e.addEventListener("click",Kc),e.addEventListener("touchstart",$b,Ts?{passive:!0}:!1)}function $m(e){e.removeEventListener("mousedown",Kc),e.removeEventListener("click",Kc),e.removeEventListener("touchstart",$b),e.removeEventListener("touchend",Ob),e.removeEventListener("touchcancel",Pb)}function Kc(e){const t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function $b(e){if(e.changedTouches.length===1){const t=e.currentTarget;t.$_vclosepopover_touch=!0;const r=e.changedTouches[0];t.$_vclosepopover_touchPoint=r,t.addEventListener("touchend",Ob),t.addEventListener("touchcancel",Pb)}}function Ob(e){const t=e.currentTarget;if(t.$_vclosepopover_touch=!1,e.changedTouches.length===1){const r=e.changedTouches[0],o=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(r.screenY-o.screenY)<20&&Math.abs(r.screenX-o.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Pb(e){const t=e.currentTarget;t.$_vclosepopover_touch=!1}const AE={beforeMount(e,{value:t,modifiers:r}){e.$_closePopoverModifiers=r,(typeof t>"u"||t)&&Nm(e)},updated(e,{value:t,oldValue:r,modifiers:o}){e.$_closePopoverModifiers=o,t!==r&&(typeof t>"u"||t?Nm(e):$m(e))},beforeUnmount(e){$m(e)}},ME=Nb,Rb=Eb;function NE(e,t={}){e.$_vTooltipInstalled||(e.$_vTooltipInstalled=!0,bb(wr,t),e.directive("tooltip",Nb),e.directive("close-popper",AE),e.component("VTooltip",Eb),e.component("VDropdown",bE),e.component("VMenu",wE))}const Db={version:"5.2.2",install:NE,options:wr},$E=6e4;function zb(e){return e}const OE=zb,{clearTimeout:PE,setTimeout:RE}=globalThis,DE=Math.random.bind(Math);function zE(e,t){const{post:r,on:o,eventNames:s=[],serialize:c=zb,deserialize:f=OE,resolver:d,timeout:h=$E}=t,g=new Map;let v;const y=new Proxy({},{get(b,x){if(x==="$functions")return e;if(x==="then"&&!s.includes("then")&&!("then"in e))return;const T=(...M)=>{r(c({m:x,a:M,t:"q"}))};if(s.includes(x))return T.asEvent=T,T;const E=async(...M)=>(await v,new Promise((N,L)=>{var H;const O=FE();let A;h>=0&&(A=RE(()=>{var z;try{throw(z=t.onTimeoutError)==null||z.call(t,x,M),new Error(`[birpc] timeout on calling "${x}"`)}catch(J){L(J)}g.delete(O)},h),typeof A=="object"&&(A=(H=A.unref)==null?void 0:H.call(A))),g.set(O,{resolve:N,reject:L,timeoutId:A}),r(c({m:x,a:M,i:O,t:"q"}))}));return E.asEvent=T,E}});return v=o(async(b,...x)=>{const T=f(b);if(T.t==="q"){const{m:E,a:M}=T;let N,L;const O=d?d(E,e[E]):e[E];if(!O)L=new Error(`[birpc] function "${E}" not found`);else try{N=await O.apply(y,M)}catch(A){L=A}T.i&&(L&&t.onError&&t.onError(L,E,M),r(c({t:"s",i:T.i,r:N,e:L}),...x))}else{const{i:E,r:M,e:N}=T,L=g.get(E);L&&(PE(L.timeoutId),N?L.reject(N):L.resolve(M)),g.delete(E)}}),y}const IE="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function FE(e=21){let t="",r=e;for(;r--;)t+=IE[DE()*64|0];return t}const{parse:HE,stringify:qE}=JSON,{keys:BE}=Object,Yl=String,Ib="string",Om={},Xc="object",Fb=(e,t)=>t,WE=e=>e instanceof Yl?Yl(e):e,UE=(e,t)=>typeof t===Ib?new Yl(t):t,Hb=(e,t,r,o)=>{const s=[];for(let c=BE(r),{length:f}=c,d=0;d{const o=Yl(t.push(r)-1);return e.set(r,o),o},Od=(e,t)=>{const r=HE(e,UE).map(WE),o=r[0],s=t||Fb,c=typeof o===Xc&&o?Hb(r,new Set,o,s):o;return s.call({"":c},"",c)},VE=(e,t,r)=>{const o=t&&typeof t===Xc?(v,y)=>v===""||-1t.toUpperCase())}const KE=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,Rm=/^\/([A-Za-z]:)?$/;function XE(){return typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replace(/\\/g,"/"):"/"}const Dm=function(...e){e=e.map(o=>GE(o));let t="",r=!1;for(let o=e.length-1;o>=-1&&!r;o--){const s=o>=0?e[o]:XE();!s||s.length===0||(t=`${s}/${t}`,r=zm(s))}return t=YE(t,!r),r&&!zm(t)?`/${t}`:t.length>0?t:"."};function YE(e,t){let r="",o=0,s=-1,c=0,f=null;for(let d=0;d<=e.length;++d){if(d2){const h=r.lastIndexOf("/");h===-1?(r="",o=0):(r=r.slice(0,h),o=r.length-1-r.lastIndexOf("/")),s=d,c=0;continue}else if(r.length>0){r="",o=0,s=d,c=0;continue}}t&&(r+=r.length>0?"/..":"..",o=2)}else r.length>0?r+=`/${e.slice(s+1,d)}`:r=e.slice(s+1,d),o=d-s-1;s=d,c=0}else f==="."&&c!==-1?++c:c=-1}return r}const zm=function(e){return KE.test(e)},ZE=function(e,t){const r=Dm(e).replace(Rm,"$1").split("/"),o=Dm(t).replace(Rm,"$1").split("/");if(o[0][1]===":"&&r[0][1]===":"&&r[0]!==o[0])return o.join("/");const s=[...r];for(const c of s){if(o[0]!==c)break;r.shift(),o.shift()}return[...r.map(()=>".."),...o].join("/")};function JE(e){let t=0;if(e.length===0)return`${t}`;for(let r=0;rEs(t)?[t]:[t,...Ih(t.tasks)])}function QE(e){const t=[e.name];let r=e;for(;r!=null&&r.suite;)r=r.suite,r!=null&&r.name&&t.unshift(r.name);return r!==e.file&&t.unshift(e.file.name),t}class Ub{constructor(){ls(this,"filesMap",new Map);ls(this,"pathsSet",new Set);ls(this,"idMap",new Map)}getPaths(){return Array.from(this.pathsSet)}getFiles(t){return t?t.map(r=>this.filesMap.get(r)).flat().filter(r=>r&&!r.local):Array.from(this.filesMap.values()).flat().filter(r=>!r.local)}getFilepaths(){return Array.from(this.filesMap.keys())}getFailedFilepaths(){return this.getFiles().filter(t=>{var r;return((r=t.result)==null?void 0:r.state)==="fail"}).map(t=>t.filepath)}collectPaths(t=[]){t.forEach(r=>{this.pathsSet.add(r)})}collectFiles(t=[]){t.forEach(r=>{const o=this.filesMap.get(r.filepath)||[],s=o.filter(f=>f.projectName!==r.projectName),c=o.find(f=>f.projectName===r.projectName);c&&(r.logs=c.logs),s.push(r),this.filesMap.set(r.filepath,s),this.updateId(r)})}clearFiles(t,r=[]){const o=t;r.forEach(s=>{const c=this.filesMap.get(s),f=Bb(s,o.config.root,o.config.name||"");if(f.local=!0,this.idMap.set(f.id,f),!c){this.filesMap.set(s,[f]);return}const d=c.filter(h=>h.projectName!==o.config.name);d.length?this.filesMap.set(s,[...d,f]):this.filesMap.set(s,[f])})}updateId(t){this.idMap.get(t.id)!==t&&(this.idMap.set(t.id,t),t.type==="suite"&&t.tasks.forEach(r=>{this.updateId(r)}))}updateTasks(t){for(const[r,o,s]of t){const c=this.idMap.get(r);c&&(c.result=o,c.meta=s,(o==null?void 0:o.state)==="skip"&&(c.mode="skip"))}}updateUserLog(t){const r=t.taskId&&this.idMap.get(t.taskId);r&&(r.logs||(r.logs=[]),r.logs.push(t))}}function Fh(e){return Wb(e).some(t=>{var r,o;return(o=(r=t.result)==null?void 0:r.errors)==null?void 0:o.some(s=>typeof(s==null?void 0:s.message)=="string"&&s.message.match(/Snapshot .* mismatched/))})}function eL(e,t={}){const{handlers:r={},autoReconnect:o=!0,reconnectInterval:s=2e3,reconnectTries:c=10,connectTimeout:f=6e4,reactive:d=L=>L,WebSocketConstructor:h=globalThis.WebSocket}=t;let g=c;const v=d({ws:new h(e),state:new Ub,waitForConnection:N,reconnect:E},"state");v.state.filesMap=d(v.state.filesMap,"filesMap"),v.state.idMap=d(v.state.idMap,"idMap");let y;const b={onSpecsCollected(L){var O;L==null||L.forEach(([A,H])=>{v.state.clearFiles({config:A},[H])}),(O=r.onSpecsCollected)==null||O.call(r,L)},onPathsCollected(L){var O;v.state.collectPaths(L),(O=r.onPathsCollected)==null||O.call(r,L)},onCollected(L){var O;v.state.collectFiles(L),(O=r.onCollected)==null||O.call(r,L)},onTaskUpdate(L){var O;v.state.updateTasks(L),(O=r.onTaskUpdate)==null||O.call(r,L)},onUserConsoleLog(L){var O;v.state.updateUserLog(L),(O=r.onUserConsoleLog)==null||O.call(r,L)},onFinished(L,O){var A;(A=r.onFinished)==null||A.call(r,L,O)},onFinishedReportCoverage(){var L;(L=r.onFinishedReportCoverage)==null||L.call(r)}},x={post:L=>v.ws.send(L),on:L=>y=L,serialize:L=>VE(L,(O,A)=>A instanceof Error?{name:A.name,message:A.message,stack:A.stack}:A),deserialize:Od,onTimeoutError(L){throw new Error(`[vitest-ws-client]: Timeout calling "${L}"`)}};v.rpc=zE(b,x);let T;function E(L=!1){L&&(g=c),v.ws=new h(e),M()}function M(){T=new Promise((L,O)=>{var H,z;const A=(z=(H=setTimeout(()=>{O(new Error(`Cannot connect to the server in ${f/1e3} seconds`))},f))==null?void 0:H.unref)==null?void 0:z.call(H);v.ws.OPEN===v.ws.readyState&&L(),v.ws.addEventListener("open",()=>{g=c,L(),clearTimeout(A)})}),v.ws.addEventListener("message",L=>{y(L.data)}),v.ws.addEventListener("close",()=>{g-=1,o&&g>0&&setTimeout(E,s)})}M();function N(){return T}return v}const tL=location.port,nL=[location.hostname,tL].filter(Boolean).join(":"),rL=`${location.protocol==="https:"?"wss:":"ws:"}//${nL}/__vitest_api__`,Pr=!!window.METADATA_PATH;var Mo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Vb(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var jb={},oi={};const iL="Á",oL="á",sL="Ă",lL="ă",aL="∾",cL="∿",uL="∾̳",fL="Â",dL="â",hL="´",pL="А",gL="а",vL="Æ",mL="æ",yL="⁡",bL="𝔄",wL="𝔞",xL="À",_L="à",SL="ℵ",kL="ℵ",CL="Α",TL="α",EL="Ā",LL="ā",AL="⨿",ML="&",NL="&",$L="⩕",OL="⩓",PL="∧",RL="⩜",DL="⩘",zL="⩚",IL="∠",FL="⦤",HL="∠",qL="⦨",BL="⦩",WL="⦪",UL="⦫",VL="⦬",jL="⦭",GL="⦮",KL="⦯",XL="∡",YL="∟",ZL="⊾",JL="⦝",QL="∢",eA="Å",tA="⍼",nA="Ą",rA="ą",iA="𝔸",oA="𝕒",sA="⩯",lA="≈",aA="⩰",cA="≊",uA="≋",fA="'",dA="⁡",hA="≈",pA="≊",gA="Å",vA="å",mA="𝒜",yA="𝒶",bA="≔",wA="*",xA="≈",_A="≍",SA="Ã",kA="ã",CA="Ä",TA="ä",EA="∳",LA="⨑",AA="≌",MA="϶",NA="‵",$A="∽",OA="⋍",PA="∖",RA="⫧",DA="⊽",zA="⌅",IA="⌆",FA="⌅",HA="⎵",qA="⎶",BA="≌",WA="Б",UA="б",VA="„",jA="∵",GA="∵",KA="∵",XA="⦰",YA="϶",ZA="ℬ",JA="ℬ",QA="Β",eM="β",tM="ℶ",nM="≬",rM="𝔅",iM="𝔟",oM="⋂",sM="◯",lM="⋃",aM="⨀",cM="⨁",uM="⨂",fM="⨆",dM="★",hM="▽",pM="△",gM="⨄",vM="⋁",mM="⋀",yM="⤍",bM="⧫",wM="▪",xM="▴",_M="▾",SM="◂",kM="▸",CM="␣",TM="▒",EM="░",LM="▓",AM="█",MM="=⃥",NM="≡⃥",$M="⫭",OM="⌐",PM="𝔹",RM="𝕓",DM="⊥",zM="⊥",IM="⋈",FM="⧉",HM="┐",qM="╕",BM="╖",WM="╗",UM="┌",VM="╒",jM="╓",GM="╔",KM="─",XM="═",YM="┬",ZM="╤",JM="╥",QM="╦",eN="┴",tN="╧",nN="╨",rN="╩",iN="⊟",oN="⊞",sN="⊠",lN="┘",aN="╛",cN="╜",uN="╝",fN="└",dN="╘",hN="╙",pN="╚",gN="│",vN="║",mN="┼",yN="╪",bN="╫",wN="╬",xN="┤",_N="╡",SN="╢",kN="╣",CN="├",TN="╞",EN="╟",LN="╠",AN="‵",MN="˘",NN="˘",$N="¦",ON="𝒷",PN="ℬ",RN="⁏",DN="∽",zN="⋍",IN="⧅",FN="\\",HN="⟈",qN="•",BN="•",WN="≎",UN="⪮",VN="≏",jN="≎",GN="≏",KN="Ć",XN="ć",YN="⩄",ZN="⩉",JN="⩋",QN="∩",e$="⋒",t$="⩇",n$="⩀",r$="ⅅ",i$="∩︀",o$="⁁",s$="ˇ",l$="ℭ",a$="⩍",c$="Č",u$="č",f$="Ç",d$="ç",h$="Ĉ",p$="ĉ",g$="∰",v$="⩌",m$="⩐",y$="Ċ",b$="ċ",w$="¸",x$="¸",_$="⦲",S$="¢",k$="·",C$="·",T$="𝔠",E$="ℭ",L$="Ч",A$="ч",M$="✓",N$="✓",$$="Χ",O$="χ",P$="ˆ",R$="≗",D$="↺",z$="↻",I$="⊛",F$="⊚",H$="⊝",q$="⊙",B$="®",W$="Ⓢ",U$="⊖",V$="⊕",j$="⊗",G$="○",K$="⧃",X$="≗",Y$="⨐",Z$="⫯",J$="⧂",Q$="∲",eO="”",tO="’",nO="♣",rO="♣",iO=":",oO="∷",sO="⩴",lO="≔",aO="≔",cO=",",uO="@",fO="∁",dO="∘",hO="∁",pO="ℂ",gO="≅",vO="⩭",mO="≡",yO="∮",bO="∯",wO="∮",xO="𝕔",_O="ℂ",SO="∐",kO="∐",CO="©",TO="©",EO="℗",LO="∳",AO="↵",MO="✗",NO="⨯",$O="𝒞",OO="𝒸",PO="⫏",RO="⫑",DO="⫐",zO="⫒",IO="⋯",FO="⤸",HO="⤵",qO="⋞",BO="⋟",WO="↶",UO="⤽",VO="⩈",jO="⩆",GO="≍",KO="∪",XO="⋓",YO="⩊",ZO="⊍",JO="⩅",QO="∪︀",eP="↷",tP="⤼",nP="⋞",rP="⋟",iP="⋎",oP="⋏",sP="¤",lP="↶",aP="↷",cP="⋎",uP="⋏",fP="∲",dP="∱",hP="⌭",pP="†",gP="‡",vP="ℸ",mP="↓",yP="↡",bP="⇓",wP="‐",xP="⫤",_P="⊣",SP="⤏",kP="˝",CP="Ď",TP="ď",EP="Д",LP="д",AP="‡",MP="⇊",NP="ⅅ",$P="ⅆ",OP="⤑",PP="⩷",RP="°",DP="∇",zP="Δ",IP="δ",FP="⦱",HP="⥿",qP="𝔇",BP="𝔡",WP="⥥",UP="⇃",VP="⇂",jP="´",GP="˙",KP="˝",XP="`",YP="˜",ZP="⋄",JP="⋄",QP="⋄",eR="♦",tR="♦",nR="¨",rR="ⅆ",iR="ϝ",oR="⋲",sR="÷",lR="÷",aR="⋇",cR="⋇",uR="Ђ",fR="ђ",dR="⌞",hR="⌍",pR="$",gR="𝔻",vR="𝕕",mR="¨",yR="˙",bR="⃜",wR="≐",xR="≑",_R="≐",SR="∸",kR="∔",CR="⊡",TR="⌆",ER="∯",LR="¨",AR="⇓",MR="⇐",NR="⇔",$R="⫤",OR="⟸",PR="⟺",RR="⟹",DR="⇒",zR="⊨",IR="⇑",FR="⇕",HR="∥",qR="⤓",BR="↓",WR="↓",UR="⇓",VR="⇵",jR="̑",GR="⇊",KR="⇃",XR="⇂",YR="⥐",ZR="⥞",JR="⥖",QR="↽",eD="⥟",tD="⥗",nD="⇁",rD="↧",iD="⊤",oD="⤐",sD="⌟",lD="⌌",aD="𝒟",cD="𝒹",uD="Ѕ",fD="ѕ",dD="⧶",hD="Đ",pD="đ",gD="⋱",vD="▿",mD="▾",yD="⇵",bD="⥯",wD="⦦",xD="Џ",_D="џ",SD="⟿",kD="É",CD="é",TD="⩮",ED="Ě",LD="ě",AD="Ê",MD="ê",ND="≖",$D="≕",OD="Э",PD="э",RD="⩷",DD="Ė",zD="ė",ID="≑",FD="ⅇ",HD="≒",qD="𝔈",BD="𝔢",WD="⪚",UD="È",VD="è",jD="⪖",GD="⪘",KD="⪙",XD="∈",YD="⏧",ZD="ℓ",JD="⪕",QD="⪗",e2="Ē",t2="ē",n2="∅",r2="∅",i2="◻",o2="∅",s2="▫",l2=" ",a2=" ",c2=" ",u2="Ŋ",f2="ŋ",d2=" ",h2="Ę",p2="ę",g2="𝔼",v2="𝕖",m2="⋕",y2="⧣",b2="⩱",w2="ε",x2="Ε",_2="ε",S2="ϵ",k2="≖",C2="≕",T2="≂",E2="⪖",L2="⪕",A2="⩵",M2="=",N2="≂",$2="≟",O2="⇌",P2="≡",R2="⩸",D2="⧥",z2="⥱",I2="≓",F2="ℯ",H2="ℰ",q2="≐",B2="⩳",W2="≂",U2="Η",V2="η",j2="Ð",G2="ð",K2="Ë",X2="ë",Y2="€",Z2="!",J2="∃",Q2="∃",ez="ℰ",tz="ⅇ",nz="ⅇ",rz="≒",iz="Ф",oz="ф",sz="♀",lz="ffi",az="ff",cz="ffl",uz="𝔉",fz="𝔣",dz="fi",hz="◼",pz="▪",gz="fj",vz="♭",mz="fl",yz="▱",bz="ƒ",wz="𝔽",xz="𝕗",_z="∀",Sz="∀",kz="⋔",Cz="⫙",Tz="ℱ",Ez="⨍",Lz="½",Az="⅓",Mz="¼",Nz="⅕",$z="⅙",Oz="⅛",Pz="⅔",Rz="⅖",Dz="¾",zz="⅗",Iz="⅜",Fz="⅘",Hz="⅚",qz="⅝",Bz="⅞",Wz="⁄",Uz="⌢",Vz="𝒻",jz="ℱ",Gz="ǵ",Kz="Γ",Xz="γ",Yz="Ϝ",Zz="ϝ",Jz="⪆",Qz="Ğ",eI="ğ",tI="Ģ",nI="Ĝ",rI="ĝ",iI="Г",oI="г",sI="Ġ",lI="ġ",aI="≥",cI="≧",uI="⪌",fI="⋛",dI="≥",hI="≧",pI="⩾",gI="⪩",vI="⩾",mI="⪀",yI="⪂",bI="⪄",wI="⋛︀",xI="⪔",_I="𝔊",SI="𝔤",kI="≫",CI="⋙",TI="⋙",EI="ℷ",LI="Ѓ",AI="ѓ",MI="⪥",NI="≷",$I="⪒",OI="⪤",PI="⪊",RI="⪊",DI="⪈",zI="≩",II="⪈",FI="≩",HI="⋧",qI="𝔾",BI="𝕘",WI="`",UI="≥",VI="⋛",jI="≧",GI="⪢",KI="≷",XI="⩾",YI="≳",ZI="𝒢",JI="ℊ",QI="≳",eF="⪎",tF="⪐",nF="⪧",rF="⩺",iF=">",oF=">",sF="≫",lF="⋗",aF="⦕",cF="⩼",uF="⪆",fF="⥸",dF="⋗",hF="⋛",pF="⪌",gF="≷",vF="≳",mF="≩︀",yF="≩︀",bF="ˇ",wF=" ",xF="½",_F="ℋ",SF="Ъ",kF="ъ",CF="⥈",TF="↔",EF="⇔",LF="↭",AF="^",MF="ℏ",NF="Ĥ",$F="ĥ",OF="♥",PF="♥",RF="…",DF="⊹",zF="𝔥",IF="ℌ",FF="ℋ",HF="⤥",qF="⤦",BF="⇿",WF="∻",UF="↩",VF="↪",jF="𝕙",GF="ℍ",KF="―",XF="─",YF="𝒽",ZF="ℋ",JF="ℏ",QF="Ħ",eH="ħ",tH="≎",nH="≏",rH="⁃",iH="‐",oH="Í",sH="í",lH="⁣",aH="Î",cH="î",uH="И",fH="и",dH="İ",hH="Е",pH="е",gH="¡",vH="⇔",mH="𝔦",yH="ℑ",bH="Ì",wH="ì",xH="ⅈ",_H="⨌",SH="∭",kH="⧜",CH="℩",TH="IJ",EH="ij",LH="Ī",AH="ī",MH="ℑ",NH="ⅈ",$H="ℐ",OH="ℑ",PH="ı",RH="ℑ",DH="⊷",zH="Ƶ",IH="⇒",FH="℅",HH="∞",qH="⧝",BH="ı",WH="⊺",UH="∫",VH="∬",jH="ℤ",GH="∫",KH="⊺",XH="⋂",YH="⨗",ZH="⨼",JH="⁣",QH="⁢",eq="Ё",tq="ё",nq="Į",rq="į",iq="𝕀",oq="𝕚",sq="Ι",lq="ι",aq="⨼",cq="¿",uq="𝒾",fq="ℐ",dq="∈",hq="⋵",pq="⋹",gq="⋴",vq="⋳",mq="∈",yq="⁢",bq="Ĩ",wq="ĩ",xq="І",_q="і",Sq="Ï",kq="ï",Cq="Ĵ",Tq="ĵ",Eq="Й",Lq="й",Aq="𝔍",Mq="𝔧",Nq="ȷ",$q="𝕁",Oq="𝕛",Pq="𝒥",Rq="𝒿",Dq="Ј",zq="ј",Iq="Є",Fq="є",Hq="Κ",qq="κ",Bq="ϰ",Wq="Ķ",Uq="ķ",Vq="К",jq="к",Gq="𝔎",Kq="𝔨",Xq="ĸ",Yq="Х",Zq="х",Jq="Ќ",Qq="ќ",eB="𝕂",tB="𝕜",nB="𝒦",rB="𝓀",iB="⇚",oB="Ĺ",sB="ĺ",lB="⦴",aB="ℒ",cB="Λ",uB="λ",fB="⟨",dB="⟪",hB="⦑",pB="⟨",gB="⪅",vB="ℒ",mB="«",yB="⇤",bB="⤟",wB="←",xB="↞",_B="⇐",SB="⤝",kB="↩",CB="↫",TB="⤹",EB="⥳",LB="↢",AB="⤙",MB="⤛",NB="⪫",$B="⪭",OB="⪭︀",PB="⤌",RB="⤎",DB="❲",zB="{",IB="[",FB="⦋",HB="⦏",qB="⦍",BB="Ľ",WB="ľ",UB="Ļ",VB="ļ",jB="⌈",GB="{",KB="Л",XB="л",YB="⤶",ZB="“",JB="„",QB="⥧",e3="⥋",t3="↲",n3="≤",r3="≦",i3="⟨",o3="⇤",s3="←",l3="←",a3="⇐",c3="⇆",u3="↢",f3="⌈",d3="⟦",h3="⥡",p3="⥙",g3="⇃",v3="⌊",m3="↽",y3="↼",b3="⇇",w3="↔",x3="↔",_3="⇔",S3="⇆",k3="⇋",C3="↭",T3="⥎",E3="↤",L3="⊣",A3="⥚",M3="⋋",N3="⧏",$3="⊲",O3="⊴",P3="⥑",R3="⥠",D3="⥘",z3="↿",I3="⥒",F3="↼",H3="⪋",q3="⋚",B3="≤",W3="≦",U3="⩽",V3="⪨",j3="⩽",G3="⩿",K3="⪁",X3="⪃",Y3="⋚︀",Z3="⪓",J3="⪅",Q3="⋖",e5="⋚",t5="⪋",n5="⋚",r5="≦",i5="≶",o5="≶",s5="⪡",l5="≲",a5="⩽",c5="≲",u5="⥼",f5="⌊",d5="𝔏",h5="𝔩",p5="≶",g5="⪑",v5="⥢",m5="↽",y5="↼",b5="⥪",w5="▄",x5="Љ",_5="љ",S5="⇇",k5="≪",C5="⋘",T5="⌞",E5="⇚",L5="⥫",A5="◺",M5="Ŀ",N5="ŀ",$5="⎰",O5="⎰",P5="⪉",R5="⪉",D5="⪇",z5="≨",I5="⪇",F5="≨",H5="⋦",q5="⟬",B5="⇽",W5="⟦",U5="⟵",V5="⟵",j5="⟸",G5="⟷",K5="⟷",X5="⟺",Y5="⟼",Z5="⟶",J5="⟶",Q5="⟹",e8="↫",t8="↬",n8="⦅",r8="𝕃",i8="𝕝",o8="⨭",s8="⨴",l8="∗",a8="_",c8="↙",u8="↘",f8="◊",d8="◊",h8="⧫",p8="(",g8="⦓",v8="⇆",m8="⌟",y8="⇋",b8="⥭",w8="‎",x8="⊿",_8="‹",S8="𝓁",k8="ℒ",C8="↰",T8="↰",E8="≲",L8="⪍",A8="⪏",M8="[",N8="‘",$8="‚",O8="Ł",P8="ł",R8="⪦",D8="⩹",z8="<",I8="<",F8="≪",H8="⋖",q8="⋋",B8="⋉",W8="⥶",U8="⩻",V8="◃",j8="⊴",G8="◂",K8="⦖",X8="⥊",Y8="⥦",Z8="≨︀",J8="≨︀",Q8="¯",eW="♂",tW="✠",nW="✠",rW="↦",iW="↦",oW="↧",sW="↤",lW="↥",aW="▮",cW="⨩",uW="М",fW="м",dW="—",hW="∺",pW="∡",gW=" ",vW="ℳ",mW="𝔐",yW="𝔪",bW="℧",wW="µ",xW="*",_W="⫰",SW="∣",kW="·",CW="⊟",TW="−",EW="∸",LW="⨪",AW="∓",MW="⫛",NW="…",$W="∓",OW="⊧",PW="𝕄",RW="𝕞",DW="∓",zW="𝓂",IW="ℳ",FW="∾",HW="Μ",qW="μ",BW="⊸",WW="⊸",UW="∇",VW="Ń",jW="ń",GW="∠⃒",KW="≉",XW="⩰̸",YW="≋̸",ZW="ʼn",JW="≉",QW="♮",e4="ℕ",t4="♮",n4=" ",r4="≎̸",i4="≏̸",o4="⩃",s4="Ň",l4="ň",a4="Ņ",c4="ņ",u4="≇",f4="⩭̸",d4="⩂",h4="Н",p4="н",g4="–",v4="⤤",m4="↗",y4="⇗",b4="↗",w4="≠",x4="≐̸",_4="​",S4="​",k4="​",C4="​",T4="≢",E4="⤨",L4="≂̸",A4="≫",M4="≪",N4=` +`,$4="∄",O4="∄",P4="𝔑",R4="𝔫",D4="≧̸",z4="≱",I4="≱",F4="≧̸",H4="⩾̸",q4="⩾̸",B4="⋙̸",W4="≵",U4="≫⃒",V4="≯",j4="≯",G4="≫̸",K4="↮",X4="⇎",Y4="⫲",Z4="∋",J4="⋼",Q4="⋺",eU="∋",tU="Њ",nU="њ",rU="↚",iU="⇍",oU="‥",sU="≦̸",lU="≰",aU="↚",cU="⇍",uU="↮",fU="⇎",dU="≰",hU="≦̸",pU="⩽̸",gU="⩽̸",vU="≮",mU="⋘̸",yU="≴",bU="≪⃒",wU="≮",xU="⋪",_U="⋬",SU="≪̸",kU="∤",CU="⁠",TU=" ",EU="𝕟",LU="ℕ",AU="⫬",MU="¬",NU="≢",$U="≭",OU="∦",PU="∉",RU="≠",DU="≂̸",zU="∄",IU="≯",FU="≱",HU="≧̸",qU="≫̸",BU="≹",WU="⩾̸",UU="≵",VU="≎̸",jU="≏̸",GU="∉",KU="⋵̸",XU="⋹̸",YU="∉",ZU="⋷",JU="⋶",QU="⧏̸",e6="⋪",t6="⋬",n6="≮",r6="≰",i6="≸",o6="≪̸",s6="⩽̸",l6="≴",a6="⪢̸",c6="⪡̸",u6="∌",f6="∌",d6="⋾",h6="⋽",p6="⊀",g6="⪯̸",v6="⋠",m6="∌",y6="⧐̸",b6="⋫",w6="⋭",x6="⊏̸",_6="⋢",S6="⊐̸",k6="⋣",C6="⊂⃒",T6="⊈",E6="⊁",L6="⪰̸",A6="⋡",M6="≿̸",N6="⊃⃒",$6="⊉",O6="≁",P6="≄",R6="≇",D6="≉",z6="∤",I6="∦",F6="∦",H6="⫽⃥",q6="∂̸",B6="⨔",W6="⊀",U6="⋠",V6="⊀",j6="⪯̸",G6="⪯̸",K6="⤳̸",X6="↛",Y6="⇏",Z6="↝̸",J6="↛",Q6="⇏",eV="⋫",tV="⋭",nV="⊁",rV="⋡",iV="⪰̸",oV="𝒩",sV="𝓃",lV="∤",aV="∦",cV="≁",uV="≄",fV="≄",dV="∤",hV="∦",pV="⋢",gV="⋣",vV="⊄",mV="⫅̸",yV="⊈",bV="⊂⃒",wV="⊈",xV="⫅̸",_V="⊁",SV="⪰̸",kV="⊅",CV="⫆̸",TV="⊉",EV="⊃⃒",LV="⊉",AV="⫆̸",MV="≹",NV="Ñ",$V="ñ",OV="≸",PV="⋪",RV="⋬",DV="⋫",zV="⋭",IV="Ν",FV="ν",HV="#",qV="№",BV=" ",WV="≍⃒",UV="⊬",VV="⊭",jV="⊮",GV="⊯",KV="≥⃒",XV=">⃒",YV="⤄",ZV="⧞",JV="⤂",QV="≤⃒",ej="<⃒",tj="⊴⃒",nj="⤃",rj="⊵⃒",ij="∼⃒",oj="⤣",sj="↖",lj="⇖",aj="↖",cj="⤧",uj="Ó",fj="ó",dj="⊛",hj="Ô",pj="ô",gj="⊚",vj="О",mj="о",yj="⊝",bj="Ő",wj="ő",xj="⨸",_j="⊙",Sj="⦼",kj="Œ",Cj="œ",Tj="⦿",Ej="𝔒",Lj="𝔬",Aj="˛",Mj="Ò",Nj="ò",$j="⧁",Oj="⦵",Pj="Ω",Rj="∮",Dj="↺",zj="⦾",Ij="⦻",Fj="‾",Hj="⧀",qj="Ō",Bj="ō",Wj="Ω",Uj="ω",Vj="Ο",jj="ο",Gj="⦶",Kj="⊖",Xj="𝕆",Yj="𝕠",Zj="⦷",Jj="“",Qj="‘",eG="⦹",tG="⊕",nG="↻",rG="⩔",iG="∨",oG="⩝",sG="ℴ",lG="ℴ",aG="ª",cG="º",uG="⊶",fG="⩖",dG="⩗",hG="⩛",pG="Ⓢ",gG="𝒪",vG="ℴ",mG="Ø",yG="ø",bG="⊘",wG="Õ",xG="õ",_G="⨶",SG="⨷",kG="⊗",CG="Ö",TG="ö",EG="⌽",LG="‾",AG="⏞",MG="⎴",NG="⏜",$G="¶",OG="∥",PG="∥",RG="⫳",DG="⫽",zG="∂",IG="∂",FG="П",HG="п",qG="%",BG=".",WG="‰",UG="⊥",VG="‱",jG="𝔓",GG="𝔭",KG="Φ",XG="φ",YG="ϕ",ZG="ℳ",JG="☎",QG="Π",e9="π",t9="⋔",n9="ϖ",r9="ℏ",i9="ℎ",o9="ℏ",s9="⨣",l9="⊞",a9="⨢",c9="+",u9="∔",f9="⨥",d9="⩲",h9="±",p9="±",g9="⨦",v9="⨧",m9="±",y9="ℌ",b9="⨕",w9="𝕡",x9="ℙ",_9="£",S9="⪷",k9="⪻",C9="≺",T9="≼",E9="⪷",L9="≺",A9="≼",M9="≺",N9="⪯",$9="≼",O9="≾",P9="⪯",R9="⪹",D9="⪵",z9="⋨",I9="⪯",F9="⪳",H9="≾",q9="′",B9="″",W9="ℙ",U9="⪹",V9="⪵",j9="⋨",G9="∏",K9="∏",X9="⌮",Y9="⌒",Z9="⌓",J9="∝",Q9="∝",e7="∷",t7="∝",n7="≾",r7="⊰",i7="𝒫",o7="𝓅",s7="Ψ",l7="ψ",a7=" ",c7="𝔔",u7="𝔮",f7="⨌",d7="𝕢",h7="ℚ",p7="⁗",g7="𝒬",v7="𝓆",m7="ℍ",y7="⨖",b7="?",w7="≟",x7='"',_7='"',S7="⇛",k7="∽̱",C7="Ŕ",T7="ŕ",E7="√",L7="⦳",A7="⟩",M7="⟫",N7="⦒",$7="⦥",O7="⟩",P7="»",R7="⥵",D7="⇥",z7="⤠",I7="⤳",F7="→",H7="↠",q7="⇒",B7="⤞",W7="↪",U7="↬",V7="⥅",j7="⥴",G7="⤖",K7="↣",X7="↝",Y7="⤚",Z7="⤜",J7="∶",Q7="ℚ",eK="⤍",tK="⤏",nK="⤐",rK="❳",iK="}",oK="]",sK="⦌",lK="⦎",aK="⦐",cK="Ř",uK="ř",fK="Ŗ",dK="ŗ",hK="⌉",pK="}",gK="Р",vK="р",mK="⤷",yK="⥩",bK="”",wK="”",xK="↳",_K="ℜ",SK="ℛ",kK="ℜ",CK="ℝ",TK="ℜ",EK="▭",LK="®",AK="®",MK="∋",NK="⇋",$K="⥯",OK="⥽",PK="⌋",RK="𝔯",DK="ℜ",zK="⥤",IK="⇁",FK="⇀",HK="⥬",qK="Ρ",BK="ρ",WK="ϱ",UK="⟩",VK="⇥",jK="→",GK="→",KK="⇒",XK="⇄",YK="↣",ZK="⌉",JK="⟧",QK="⥝",eX="⥕",tX="⇂",nX="⌋",rX="⇁",iX="⇀",oX="⇄",sX="⇌",lX="⇉",aX="↝",cX="↦",uX="⊢",fX="⥛",dX="⋌",hX="⧐",pX="⊳",gX="⊵",vX="⥏",mX="⥜",yX="⥔",bX="↾",wX="⥓",xX="⇀",_X="˚",SX="≓",kX="⇄",CX="⇌",TX="‏",EX="⎱",LX="⎱",AX="⫮",MX="⟭",NX="⇾",$X="⟧",OX="⦆",PX="𝕣",RX="ℝ",DX="⨮",zX="⨵",IX="⥰",FX=")",HX="⦔",qX="⨒",BX="⇉",WX="⇛",UX="›",VX="𝓇",jX="ℛ",GX="↱",KX="↱",XX="]",YX="’",ZX="’",JX="⋌",QX="⋊",eY="▹",tY="⊵",nY="▸",rY="⧎",iY="⧴",oY="⥨",sY="℞",lY="Ś",aY="ś",cY="‚",uY="⪸",fY="Š",dY="š",hY="⪼",pY="≻",gY="≽",vY="⪰",mY="⪴",yY="Ş",bY="ş",wY="Ŝ",xY="ŝ",_Y="⪺",SY="⪶",kY="⋩",CY="⨓",TY="≿",EY="С",LY="с",AY="⊡",MY="⋅",NY="⩦",$Y="⤥",OY="↘",PY="⇘",RY="↘",DY="§",zY=";",IY="⤩",FY="∖",HY="∖",qY="✶",BY="𝔖",WY="𝔰",UY="⌢",VY="♯",jY="Щ",GY="щ",KY="Ш",XY="ш",YY="↓",ZY="←",JY="∣",QY="∥",eZ="→",tZ="↑",nZ="­",rZ="Σ",iZ="σ",oZ="ς",sZ="ς",lZ="∼",aZ="⩪",cZ="≃",uZ="≃",fZ="⪞",dZ="⪠",hZ="⪝",pZ="⪟",gZ="≆",vZ="⨤",mZ="⥲",yZ="←",bZ="∘",wZ="∖",xZ="⨳",_Z="⧤",SZ="∣",kZ="⌣",CZ="⪪",TZ="⪬",EZ="⪬︀",LZ="Ь",AZ="ь",MZ="⌿",NZ="⧄",$Z="/",OZ="𝕊",PZ="𝕤",RZ="♠",DZ="♠",zZ="∥",IZ="⊓",FZ="⊓︀",HZ="⊔",qZ="⊔︀",BZ="√",WZ="⊏",UZ="⊑",VZ="⊏",jZ="⊑",GZ="⊐",KZ="⊒",XZ="⊐",YZ="⊒",ZZ="□",JZ="□",QZ="⊓",eJ="⊏",tJ="⊑",nJ="⊐",rJ="⊒",iJ="⊔",oJ="▪",sJ="□",lJ="▪",aJ="→",cJ="𝒮",uJ="𝓈",fJ="∖",dJ="⌣",hJ="⋆",pJ="⋆",gJ="☆",vJ="★",mJ="ϵ",yJ="ϕ",bJ="¯",wJ="⊂",xJ="⋐",_J="⪽",SJ="⫅",kJ="⊆",CJ="⫃",TJ="⫁",EJ="⫋",LJ="⊊",AJ="⪿",MJ="⥹",NJ="⊂",$J="⋐",OJ="⊆",PJ="⫅",RJ="⊆",DJ="⊊",zJ="⫋",IJ="⫇",FJ="⫕",HJ="⫓",qJ="⪸",BJ="≻",WJ="≽",UJ="≻",VJ="⪰",jJ="≽",GJ="≿",KJ="⪰",XJ="⪺",YJ="⪶",ZJ="⋩",JJ="≿",QJ="∋",eQ="∑",tQ="∑",nQ="♪",rQ="¹",iQ="²",oQ="³",sQ="⊃",lQ="⋑",aQ="⪾",cQ="⫘",uQ="⫆",fQ="⊇",dQ="⫄",hQ="⊃",pQ="⊇",gQ="⟉",vQ="⫗",mQ="⥻",yQ="⫂",bQ="⫌",wQ="⊋",xQ="⫀",_Q="⊃",SQ="⋑",kQ="⊇",CQ="⫆",TQ="⊋",EQ="⫌",LQ="⫈",AQ="⫔",MQ="⫖",NQ="⤦",$Q="↙",OQ="⇙",PQ="↙",RQ="⤪",DQ="ß",zQ=" ",IQ="⌖",FQ="Τ",HQ="τ",qQ="⎴",BQ="Ť",WQ="ť",UQ="Ţ",VQ="ţ",jQ="Т",GQ="т",KQ="⃛",XQ="⌕",YQ="𝔗",ZQ="𝔱",JQ="∴",QQ="∴",eee="∴",tee="Θ",nee="θ",ree="ϑ",iee="ϑ",oee="≈",see="∼",lee="  ",aee=" ",cee=" ",uee="≈",fee="∼",dee="Þ",hee="þ",pee="˜",gee="∼",vee="≃",mee="≅",yee="≈",bee="⨱",wee="⊠",xee="×",_ee="⨰",See="∭",kee="⤨",Cee="⌶",Tee="⫱",Eee="⊤",Lee="𝕋",Aee="𝕥",Mee="⫚",Nee="⤩",$ee="‴",Oee="™",Pee="™",Ree="▵",Dee="▿",zee="◃",Iee="⊴",Fee="≜",Hee="▹",qee="⊵",Bee="◬",Wee="≜",Uee="⨺",Vee="⃛",jee="⨹",Gee="⧍",Kee="⨻",Xee="⏢",Yee="𝒯",Zee="𝓉",Jee="Ц",Qee="ц",ete="Ћ",tte="ћ",nte="Ŧ",rte="ŧ",ite="≬",ote="↞",ste="↠",lte="Ú",ate="ú",cte="↑",ute="↟",fte="⇑",dte="⥉",hte="Ў",pte="ў",gte="Ŭ",vte="ŭ",mte="Û",yte="û",bte="У",wte="у",xte="⇅",_te="Ű",Ste="ű",kte="⥮",Cte="⥾",Tte="𝔘",Ete="𝔲",Lte="Ù",Ate="ù",Mte="⥣",Nte="↿",$te="↾",Ote="▀",Pte="⌜",Rte="⌜",Dte="⌏",zte="◸",Ite="Ū",Fte="ū",Hte="¨",qte="_",Bte="⏟",Wte="⎵",Ute="⏝",Vte="⋃",jte="⊎",Gte="Ų",Kte="ų",Xte="𝕌",Yte="𝕦",Zte="⤒",Jte="↑",Qte="↑",ene="⇑",tne="⇅",nne="↕",rne="↕",ine="⇕",one="⥮",sne="↿",lne="↾",ane="⊎",cne="↖",une="↗",fne="υ",dne="ϒ",hne="ϒ",pne="Υ",gne="υ",vne="↥",mne="⊥",yne="⇈",bne="⌝",wne="⌝",xne="⌎",_ne="Ů",Sne="ů",kne="◹",Cne="𝒰",Tne="𝓊",Ene="⋰",Lne="Ũ",Ane="ũ",Mne="▵",Nne="▴",$ne="⇈",One="Ü",Pne="ü",Rne="⦧",Dne="⦜",zne="ϵ",Ine="ϰ",Fne="∅",Hne="ϕ",qne="ϖ",Bne="∝",Wne="↕",Une="⇕",Vne="ϱ",jne="ς",Gne="⊊︀",Kne="⫋︀",Xne="⊋︀",Yne="⫌︀",Zne="ϑ",Jne="⊲",Qne="⊳",ere="⫨",tre="⫫",nre="⫩",rre="В",ire="в",ore="⊢",sre="⊨",lre="⊩",are="⊫",cre="⫦",ure="⊻",fre="∨",dre="⋁",hre="≚",pre="⋮",gre="|",vre="‖",mre="|",yre="‖",bre="∣",wre="|",xre="❘",_re="≀",Sre=" ",kre="𝔙",Cre="𝔳",Tre="⊲",Ere="⊂⃒",Lre="⊃⃒",Are="𝕍",Mre="𝕧",Nre="∝",$re="⊳",Ore="𝒱",Pre="𝓋",Rre="⫋︀",Dre="⊊︀",zre="⫌︀",Ire="⊋︀",Fre="⊪",Hre="⦚",qre="Ŵ",Bre="ŵ",Wre="⩟",Ure="∧",Vre="⋀",jre="≙",Gre="℘",Kre="𝔚",Xre="𝔴",Yre="𝕎",Zre="𝕨",Jre="℘",Qre="≀",eie="≀",tie="𝒲",nie="𝓌",rie="⋂",iie="◯",oie="⋃",sie="▽",lie="𝔛",aie="𝔵",cie="⟷",uie="⟺",fie="Ξ",die="ξ",hie="⟵",pie="⟸",gie="⟼",vie="⋻",mie="⨀",yie="𝕏",bie="𝕩",wie="⨁",xie="⨂",_ie="⟶",Sie="⟹",kie="𝒳",Cie="𝓍",Tie="⨆",Eie="⨄",Lie="△",Aie="⋁",Mie="⋀",Nie="Ý",$ie="ý",Oie="Я",Pie="я",Rie="Ŷ",Die="ŷ",zie="Ы",Iie="ы",Fie="¥",Hie="𝔜",qie="𝔶",Bie="Ї",Wie="ї",Uie="𝕐",Vie="𝕪",jie="𝒴",Gie="𝓎",Kie="Ю",Xie="ю",Yie="ÿ",Zie="Ÿ",Jie="Ź",Qie="ź",eoe="Ž",toe="ž",noe="З",roe="з",ioe="Ż",ooe="ż",soe="ℨ",loe="​",aoe="Ζ",coe="ζ",uoe="𝔷",foe="ℨ",doe="Ж",hoe="ж",poe="⇝",goe="𝕫",voe="ℤ",moe="𝒵",yoe="𝓏",boe="‍",woe="‌",Gb={Aacute:iL,aacute:oL,Abreve:sL,abreve:lL,ac:aL,acd:cL,acE:uL,Acirc:fL,acirc:dL,acute:hL,Acy:pL,acy:gL,AElig:vL,aelig:mL,af:yL,Afr:bL,afr:wL,Agrave:xL,agrave:_L,alefsym:SL,aleph:kL,Alpha:CL,alpha:TL,Amacr:EL,amacr:LL,amalg:AL,amp:ML,AMP:NL,andand:$L,And:OL,and:PL,andd:RL,andslope:DL,andv:zL,ang:IL,ange:FL,angle:HL,angmsdaa:qL,angmsdab:BL,angmsdac:WL,angmsdad:UL,angmsdae:VL,angmsdaf:jL,angmsdag:GL,angmsdah:KL,angmsd:XL,angrt:YL,angrtvb:ZL,angrtvbd:JL,angsph:QL,angst:eA,angzarr:tA,Aogon:nA,aogon:rA,Aopf:iA,aopf:oA,apacir:sA,ap:lA,apE:aA,ape:cA,apid:uA,apos:fA,ApplyFunction:dA,approx:hA,approxeq:pA,Aring:gA,aring:vA,Ascr:mA,ascr:yA,Assign:bA,ast:wA,asymp:xA,asympeq:_A,Atilde:SA,atilde:kA,Auml:CA,auml:TA,awconint:EA,awint:LA,backcong:AA,backepsilon:MA,backprime:NA,backsim:$A,backsimeq:OA,Backslash:PA,Barv:RA,barvee:DA,barwed:zA,Barwed:IA,barwedge:FA,bbrk:HA,bbrktbrk:qA,bcong:BA,Bcy:WA,bcy:UA,bdquo:VA,becaus:jA,because:GA,Because:KA,bemptyv:XA,bepsi:YA,bernou:ZA,Bernoullis:JA,Beta:QA,beta:eM,beth:tM,between:nM,Bfr:rM,bfr:iM,bigcap:oM,bigcirc:sM,bigcup:lM,bigodot:aM,bigoplus:cM,bigotimes:uM,bigsqcup:fM,bigstar:dM,bigtriangledown:hM,bigtriangleup:pM,biguplus:gM,bigvee:vM,bigwedge:mM,bkarow:yM,blacklozenge:bM,blacksquare:wM,blacktriangle:xM,blacktriangledown:_M,blacktriangleleft:SM,blacktriangleright:kM,blank:CM,blk12:TM,blk14:EM,blk34:LM,block:AM,bne:MM,bnequiv:NM,bNot:$M,bnot:OM,Bopf:PM,bopf:RM,bot:DM,bottom:zM,bowtie:IM,boxbox:FM,boxdl:HM,boxdL:qM,boxDl:BM,boxDL:WM,boxdr:UM,boxdR:VM,boxDr:jM,boxDR:GM,boxh:KM,boxH:XM,boxhd:YM,boxHd:ZM,boxhD:JM,boxHD:QM,boxhu:eN,boxHu:tN,boxhU:nN,boxHU:rN,boxminus:iN,boxplus:oN,boxtimes:sN,boxul:lN,boxuL:aN,boxUl:cN,boxUL:uN,boxur:fN,boxuR:dN,boxUr:hN,boxUR:pN,boxv:gN,boxV:vN,boxvh:mN,boxvH:yN,boxVh:bN,boxVH:wN,boxvl:xN,boxvL:_N,boxVl:SN,boxVL:kN,boxvr:CN,boxvR:TN,boxVr:EN,boxVR:LN,bprime:AN,breve:MN,Breve:NN,brvbar:$N,bscr:ON,Bscr:PN,bsemi:RN,bsim:DN,bsime:zN,bsolb:IN,bsol:FN,bsolhsub:HN,bull:qN,bullet:BN,bump:WN,bumpE:UN,bumpe:VN,Bumpeq:jN,bumpeq:GN,Cacute:KN,cacute:XN,capand:YN,capbrcup:ZN,capcap:JN,cap:QN,Cap:e$,capcup:t$,capdot:n$,CapitalDifferentialD:r$,caps:i$,caret:o$,caron:s$,Cayleys:l$,ccaps:a$,Ccaron:c$,ccaron:u$,Ccedil:f$,ccedil:d$,Ccirc:h$,ccirc:p$,Cconint:g$,ccups:v$,ccupssm:m$,Cdot:y$,cdot:b$,cedil:w$,Cedilla:x$,cemptyv:_$,cent:S$,centerdot:k$,CenterDot:C$,cfr:T$,Cfr:E$,CHcy:L$,chcy:A$,check:M$,checkmark:N$,Chi:$$,chi:O$,circ:P$,circeq:R$,circlearrowleft:D$,circlearrowright:z$,circledast:I$,circledcirc:F$,circleddash:H$,CircleDot:q$,circledR:B$,circledS:W$,CircleMinus:U$,CirclePlus:V$,CircleTimes:j$,cir:G$,cirE:K$,cire:X$,cirfnint:Y$,cirmid:Z$,cirscir:J$,ClockwiseContourIntegral:Q$,CloseCurlyDoubleQuote:eO,CloseCurlyQuote:tO,clubs:nO,clubsuit:rO,colon:iO,Colon:oO,Colone:sO,colone:lO,coloneq:aO,comma:cO,commat:uO,comp:fO,compfn:dO,complement:hO,complexes:pO,cong:gO,congdot:vO,Congruent:mO,conint:yO,Conint:bO,ContourIntegral:wO,copf:xO,Copf:_O,coprod:SO,Coproduct:kO,copy:CO,COPY:TO,copysr:EO,CounterClockwiseContourIntegral:LO,crarr:AO,cross:MO,Cross:NO,Cscr:$O,cscr:OO,csub:PO,csube:RO,csup:DO,csupe:zO,ctdot:IO,cudarrl:FO,cudarrr:HO,cuepr:qO,cuesc:BO,cularr:WO,cularrp:UO,cupbrcap:VO,cupcap:jO,CupCap:GO,cup:KO,Cup:XO,cupcup:YO,cupdot:ZO,cupor:JO,cups:QO,curarr:eP,curarrm:tP,curlyeqprec:nP,curlyeqsucc:rP,curlyvee:iP,curlywedge:oP,curren:sP,curvearrowleft:lP,curvearrowright:aP,cuvee:cP,cuwed:uP,cwconint:fP,cwint:dP,cylcty:hP,dagger:pP,Dagger:gP,daleth:vP,darr:mP,Darr:yP,dArr:bP,dash:wP,Dashv:xP,dashv:_P,dbkarow:SP,dblac:kP,Dcaron:CP,dcaron:TP,Dcy:EP,dcy:LP,ddagger:AP,ddarr:MP,DD:NP,dd:$P,DDotrahd:OP,ddotseq:PP,deg:RP,Del:DP,Delta:zP,delta:IP,demptyv:FP,dfisht:HP,Dfr:qP,dfr:BP,dHar:WP,dharl:UP,dharr:VP,DiacriticalAcute:jP,DiacriticalDot:GP,DiacriticalDoubleAcute:KP,DiacriticalGrave:XP,DiacriticalTilde:YP,diam:ZP,diamond:JP,Diamond:QP,diamondsuit:eR,diams:tR,die:nR,DifferentialD:rR,digamma:iR,disin:oR,div:sR,divide:lR,divideontimes:aR,divonx:cR,DJcy:uR,djcy:fR,dlcorn:dR,dlcrop:hR,dollar:pR,Dopf:gR,dopf:vR,Dot:mR,dot:yR,DotDot:bR,doteq:wR,doteqdot:xR,DotEqual:_R,dotminus:SR,dotplus:kR,dotsquare:CR,doublebarwedge:TR,DoubleContourIntegral:ER,DoubleDot:LR,DoubleDownArrow:AR,DoubleLeftArrow:MR,DoubleLeftRightArrow:NR,DoubleLeftTee:$R,DoubleLongLeftArrow:OR,DoubleLongLeftRightArrow:PR,DoubleLongRightArrow:RR,DoubleRightArrow:DR,DoubleRightTee:zR,DoubleUpArrow:IR,DoubleUpDownArrow:FR,DoubleVerticalBar:HR,DownArrowBar:qR,downarrow:BR,DownArrow:WR,Downarrow:UR,DownArrowUpArrow:VR,DownBreve:jR,downdownarrows:GR,downharpoonleft:KR,downharpoonright:XR,DownLeftRightVector:YR,DownLeftTeeVector:ZR,DownLeftVectorBar:JR,DownLeftVector:QR,DownRightTeeVector:eD,DownRightVectorBar:tD,DownRightVector:nD,DownTeeArrow:rD,DownTee:iD,drbkarow:oD,drcorn:sD,drcrop:lD,Dscr:aD,dscr:cD,DScy:uD,dscy:fD,dsol:dD,Dstrok:hD,dstrok:pD,dtdot:gD,dtri:vD,dtrif:mD,duarr:yD,duhar:bD,dwangle:wD,DZcy:xD,dzcy:_D,dzigrarr:SD,Eacute:kD,eacute:CD,easter:TD,Ecaron:ED,ecaron:LD,Ecirc:AD,ecirc:MD,ecir:ND,ecolon:$D,Ecy:OD,ecy:PD,eDDot:RD,Edot:DD,edot:zD,eDot:ID,ee:FD,efDot:HD,Efr:qD,efr:BD,eg:WD,Egrave:UD,egrave:VD,egs:jD,egsdot:GD,el:KD,Element:XD,elinters:YD,ell:ZD,els:JD,elsdot:QD,Emacr:e2,emacr:t2,empty:n2,emptyset:r2,EmptySmallSquare:i2,emptyv:o2,EmptyVerySmallSquare:s2,emsp13:l2,emsp14:a2,emsp:c2,ENG:u2,eng:f2,ensp:d2,Eogon:h2,eogon:p2,Eopf:g2,eopf:v2,epar:m2,eparsl:y2,eplus:b2,epsi:w2,Epsilon:x2,epsilon:_2,epsiv:S2,eqcirc:k2,eqcolon:C2,eqsim:T2,eqslantgtr:E2,eqslantless:L2,Equal:A2,equals:M2,EqualTilde:N2,equest:$2,Equilibrium:O2,equiv:P2,equivDD:R2,eqvparsl:D2,erarr:z2,erDot:I2,escr:F2,Escr:H2,esdot:q2,Esim:B2,esim:W2,Eta:U2,eta:V2,ETH:j2,eth:G2,Euml:K2,euml:X2,euro:Y2,excl:Z2,exist:J2,Exists:Q2,expectation:ez,exponentiale:tz,ExponentialE:nz,fallingdotseq:rz,Fcy:iz,fcy:oz,female:sz,ffilig:lz,fflig:az,ffllig:cz,Ffr:uz,ffr:fz,filig:dz,FilledSmallSquare:hz,FilledVerySmallSquare:pz,fjlig:gz,flat:vz,fllig:mz,fltns:yz,fnof:bz,Fopf:wz,fopf:xz,forall:_z,ForAll:Sz,fork:kz,forkv:Cz,Fouriertrf:Tz,fpartint:Ez,frac12:Lz,frac13:Az,frac14:Mz,frac15:Nz,frac16:$z,frac18:Oz,frac23:Pz,frac25:Rz,frac34:Dz,frac35:zz,frac38:Iz,frac45:Fz,frac56:Hz,frac58:qz,frac78:Bz,frasl:Wz,frown:Uz,fscr:Vz,Fscr:jz,gacute:Gz,Gamma:Kz,gamma:Xz,Gammad:Yz,gammad:Zz,gap:Jz,Gbreve:Qz,gbreve:eI,Gcedil:tI,Gcirc:nI,gcirc:rI,Gcy:iI,gcy:oI,Gdot:sI,gdot:lI,ge:aI,gE:cI,gEl:uI,gel:fI,geq:dI,geqq:hI,geqslant:pI,gescc:gI,ges:vI,gesdot:mI,gesdoto:yI,gesdotol:bI,gesl:wI,gesles:xI,Gfr:_I,gfr:SI,gg:kI,Gg:CI,ggg:TI,gimel:EI,GJcy:LI,gjcy:AI,gla:MI,gl:NI,glE:$I,glj:OI,gnap:PI,gnapprox:RI,gne:DI,gnE:zI,gneq:II,gneqq:FI,gnsim:HI,Gopf:qI,gopf:BI,grave:WI,GreaterEqual:UI,GreaterEqualLess:VI,GreaterFullEqual:jI,GreaterGreater:GI,GreaterLess:KI,GreaterSlantEqual:XI,GreaterTilde:YI,Gscr:ZI,gscr:JI,gsim:QI,gsime:eF,gsiml:tF,gtcc:nF,gtcir:rF,gt:iF,GT:oF,Gt:sF,gtdot:lF,gtlPar:aF,gtquest:cF,gtrapprox:uF,gtrarr:fF,gtrdot:dF,gtreqless:hF,gtreqqless:pF,gtrless:gF,gtrsim:vF,gvertneqq:mF,gvnE:yF,Hacek:bF,hairsp:wF,half:xF,hamilt:_F,HARDcy:SF,hardcy:kF,harrcir:CF,harr:TF,hArr:EF,harrw:LF,Hat:AF,hbar:MF,Hcirc:NF,hcirc:$F,hearts:OF,heartsuit:PF,hellip:RF,hercon:DF,hfr:zF,Hfr:IF,HilbertSpace:FF,hksearow:HF,hkswarow:qF,hoarr:BF,homtht:WF,hookleftarrow:UF,hookrightarrow:VF,hopf:jF,Hopf:GF,horbar:KF,HorizontalLine:XF,hscr:YF,Hscr:ZF,hslash:JF,Hstrok:QF,hstrok:eH,HumpDownHump:tH,HumpEqual:nH,hybull:rH,hyphen:iH,Iacute:oH,iacute:sH,ic:lH,Icirc:aH,icirc:cH,Icy:uH,icy:fH,Idot:dH,IEcy:hH,iecy:pH,iexcl:gH,iff:vH,ifr:mH,Ifr:yH,Igrave:bH,igrave:wH,ii:xH,iiiint:_H,iiint:SH,iinfin:kH,iiota:CH,IJlig:TH,ijlig:EH,Imacr:LH,imacr:AH,image:MH,ImaginaryI:NH,imagline:$H,imagpart:OH,imath:PH,Im:RH,imof:DH,imped:zH,Implies:IH,incare:FH,in:"∈",infin:HH,infintie:qH,inodot:BH,intcal:WH,int:UH,Int:VH,integers:jH,Integral:GH,intercal:KH,Intersection:XH,intlarhk:YH,intprod:ZH,InvisibleComma:JH,InvisibleTimes:QH,IOcy:eq,iocy:tq,Iogon:nq,iogon:rq,Iopf:iq,iopf:oq,Iota:sq,iota:lq,iprod:aq,iquest:cq,iscr:uq,Iscr:fq,isin:dq,isindot:hq,isinE:pq,isins:gq,isinsv:vq,isinv:mq,it:yq,Itilde:bq,itilde:wq,Iukcy:xq,iukcy:_q,Iuml:Sq,iuml:kq,Jcirc:Cq,jcirc:Tq,Jcy:Eq,jcy:Lq,Jfr:Aq,jfr:Mq,jmath:Nq,Jopf:$q,jopf:Oq,Jscr:Pq,jscr:Rq,Jsercy:Dq,jsercy:zq,Jukcy:Iq,jukcy:Fq,Kappa:Hq,kappa:qq,kappav:Bq,Kcedil:Wq,kcedil:Uq,Kcy:Vq,kcy:jq,Kfr:Gq,kfr:Kq,kgreen:Xq,KHcy:Yq,khcy:Zq,KJcy:Jq,kjcy:Qq,Kopf:eB,kopf:tB,Kscr:nB,kscr:rB,lAarr:iB,Lacute:oB,lacute:sB,laemptyv:lB,lagran:aB,Lambda:cB,lambda:uB,lang:fB,Lang:dB,langd:hB,langle:pB,lap:gB,Laplacetrf:vB,laquo:mB,larrb:yB,larrbfs:bB,larr:wB,Larr:xB,lArr:_B,larrfs:SB,larrhk:kB,larrlp:CB,larrpl:TB,larrsim:EB,larrtl:LB,latail:AB,lAtail:MB,lat:NB,late:$B,lates:OB,lbarr:PB,lBarr:RB,lbbrk:DB,lbrace:zB,lbrack:IB,lbrke:FB,lbrksld:HB,lbrkslu:qB,Lcaron:BB,lcaron:WB,Lcedil:UB,lcedil:VB,lceil:jB,lcub:GB,Lcy:KB,lcy:XB,ldca:YB,ldquo:ZB,ldquor:JB,ldrdhar:QB,ldrushar:e3,ldsh:t3,le:n3,lE:r3,LeftAngleBracket:i3,LeftArrowBar:o3,leftarrow:s3,LeftArrow:l3,Leftarrow:a3,LeftArrowRightArrow:c3,leftarrowtail:u3,LeftCeiling:f3,LeftDoubleBracket:d3,LeftDownTeeVector:h3,LeftDownVectorBar:p3,LeftDownVector:g3,LeftFloor:v3,leftharpoondown:m3,leftharpoonup:y3,leftleftarrows:b3,leftrightarrow:w3,LeftRightArrow:x3,Leftrightarrow:_3,leftrightarrows:S3,leftrightharpoons:k3,leftrightsquigarrow:C3,LeftRightVector:T3,LeftTeeArrow:E3,LeftTee:L3,LeftTeeVector:A3,leftthreetimes:M3,LeftTriangleBar:N3,LeftTriangle:$3,LeftTriangleEqual:O3,LeftUpDownVector:P3,LeftUpTeeVector:R3,LeftUpVectorBar:D3,LeftUpVector:z3,LeftVectorBar:I3,LeftVector:F3,lEg:H3,leg:q3,leq:B3,leqq:W3,leqslant:U3,lescc:V3,les:j3,lesdot:G3,lesdoto:K3,lesdotor:X3,lesg:Y3,lesges:Z3,lessapprox:J3,lessdot:Q3,lesseqgtr:e5,lesseqqgtr:t5,LessEqualGreater:n5,LessFullEqual:r5,LessGreater:i5,lessgtr:o5,LessLess:s5,lesssim:l5,LessSlantEqual:a5,LessTilde:c5,lfisht:u5,lfloor:f5,Lfr:d5,lfr:h5,lg:p5,lgE:g5,lHar:v5,lhard:m5,lharu:y5,lharul:b5,lhblk:w5,LJcy:x5,ljcy:_5,llarr:S5,ll:k5,Ll:C5,llcorner:T5,Lleftarrow:E5,llhard:L5,lltri:A5,Lmidot:M5,lmidot:N5,lmoustache:$5,lmoust:O5,lnap:P5,lnapprox:R5,lne:D5,lnE:z5,lneq:I5,lneqq:F5,lnsim:H5,loang:q5,loarr:B5,lobrk:W5,longleftarrow:U5,LongLeftArrow:V5,Longleftarrow:j5,longleftrightarrow:G5,LongLeftRightArrow:K5,Longleftrightarrow:X5,longmapsto:Y5,longrightarrow:Z5,LongRightArrow:J5,Longrightarrow:Q5,looparrowleft:e8,looparrowright:t8,lopar:n8,Lopf:r8,lopf:i8,loplus:o8,lotimes:s8,lowast:l8,lowbar:a8,LowerLeftArrow:c8,LowerRightArrow:u8,loz:f8,lozenge:d8,lozf:h8,lpar:p8,lparlt:g8,lrarr:v8,lrcorner:m8,lrhar:y8,lrhard:b8,lrm:w8,lrtri:x8,lsaquo:_8,lscr:S8,Lscr:k8,lsh:C8,Lsh:T8,lsim:E8,lsime:L8,lsimg:A8,lsqb:M8,lsquo:N8,lsquor:$8,Lstrok:O8,lstrok:P8,ltcc:R8,ltcir:D8,lt:z8,LT:I8,Lt:F8,ltdot:H8,lthree:q8,ltimes:B8,ltlarr:W8,ltquest:U8,ltri:V8,ltrie:j8,ltrif:G8,ltrPar:K8,lurdshar:X8,luruhar:Y8,lvertneqq:Z8,lvnE:J8,macr:Q8,male:eW,malt:tW,maltese:nW,Map:"⤅",map:rW,mapsto:iW,mapstodown:oW,mapstoleft:sW,mapstoup:lW,marker:aW,mcomma:cW,Mcy:uW,mcy:fW,mdash:dW,mDDot:hW,measuredangle:pW,MediumSpace:gW,Mellintrf:vW,Mfr:mW,mfr:yW,mho:bW,micro:wW,midast:xW,midcir:_W,mid:SW,middot:kW,minusb:CW,minus:TW,minusd:EW,minusdu:LW,MinusPlus:AW,mlcp:MW,mldr:NW,mnplus:$W,models:OW,Mopf:PW,mopf:RW,mp:DW,mscr:zW,Mscr:IW,mstpos:FW,Mu:HW,mu:qW,multimap:BW,mumap:WW,nabla:UW,Nacute:VW,nacute:jW,nang:GW,nap:KW,napE:XW,napid:YW,napos:ZW,napprox:JW,natural:QW,naturals:e4,natur:t4,nbsp:n4,nbump:r4,nbumpe:i4,ncap:o4,Ncaron:s4,ncaron:l4,Ncedil:a4,ncedil:c4,ncong:u4,ncongdot:f4,ncup:d4,Ncy:h4,ncy:p4,ndash:g4,nearhk:v4,nearr:m4,neArr:y4,nearrow:b4,ne:w4,nedot:x4,NegativeMediumSpace:_4,NegativeThickSpace:S4,NegativeThinSpace:k4,NegativeVeryThinSpace:C4,nequiv:T4,nesear:E4,nesim:L4,NestedGreaterGreater:A4,NestedLessLess:M4,NewLine:N4,nexist:$4,nexists:O4,Nfr:P4,nfr:R4,ngE:D4,nge:z4,ngeq:I4,ngeqq:F4,ngeqslant:H4,nges:q4,nGg:B4,ngsim:W4,nGt:U4,ngt:V4,ngtr:j4,nGtv:G4,nharr:K4,nhArr:X4,nhpar:Y4,ni:Z4,nis:J4,nisd:Q4,niv:eU,NJcy:tU,njcy:nU,nlarr:rU,nlArr:iU,nldr:oU,nlE:sU,nle:lU,nleftarrow:aU,nLeftarrow:cU,nleftrightarrow:uU,nLeftrightarrow:fU,nleq:dU,nleqq:hU,nleqslant:pU,nles:gU,nless:vU,nLl:mU,nlsim:yU,nLt:bU,nlt:wU,nltri:xU,nltrie:_U,nLtv:SU,nmid:kU,NoBreak:CU,NonBreakingSpace:TU,nopf:EU,Nopf:LU,Not:AU,not:MU,NotCongruent:NU,NotCupCap:$U,NotDoubleVerticalBar:OU,NotElement:PU,NotEqual:RU,NotEqualTilde:DU,NotExists:zU,NotGreater:IU,NotGreaterEqual:FU,NotGreaterFullEqual:HU,NotGreaterGreater:qU,NotGreaterLess:BU,NotGreaterSlantEqual:WU,NotGreaterTilde:UU,NotHumpDownHump:VU,NotHumpEqual:jU,notin:GU,notindot:KU,notinE:XU,notinva:YU,notinvb:ZU,notinvc:JU,NotLeftTriangleBar:QU,NotLeftTriangle:e6,NotLeftTriangleEqual:t6,NotLess:n6,NotLessEqual:r6,NotLessGreater:i6,NotLessLess:o6,NotLessSlantEqual:s6,NotLessTilde:l6,NotNestedGreaterGreater:a6,NotNestedLessLess:c6,notni:u6,notniva:f6,notnivb:d6,notnivc:h6,NotPrecedes:p6,NotPrecedesEqual:g6,NotPrecedesSlantEqual:v6,NotReverseElement:m6,NotRightTriangleBar:y6,NotRightTriangle:b6,NotRightTriangleEqual:w6,NotSquareSubset:x6,NotSquareSubsetEqual:_6,NotSquareSuperset:S6,NotSquareSupersetEqual:k6,NotSubset:C6,NotSubsetEqual:T6,NotSucceeds:E6,NotSucceedsEqual:L6,NotSucceedsSlantEqual:A6,NotSucceedsTilde:M6,NotSuperset:N6,NotSupersetEqual:$6,NotTilde:O6,NotTildeEqual:P6,NotTildeFullEqual:R6,NotTildeTilde:D6,NotVerticalBar:z6,nparallel:I6,npar:F6,nparsl:H6,npart:q6,npolint:B6,npr:W6,nprcue:U6,nprec:V6,npreceq:j6,npre:G6,nrarrc:K6,nrarr:X6,nrArr:Y6,nrarrw:Z6,nrightarrow:J6,nRightarrow:Q6,nrtri:eV,nrtrie:tV,nsc:nV,nsccue:rV,nsce:iV,Nscr:oV,nscr:sV,nshortmid:lV,nshortparallel:aV,nsim:cV,nsime:uV,nsimeq:fV,nsmid:dV,nspar:hV,nsqsube:pV,nsqsupe:gV,nsub:vV,nsubE:mV,nsube:yV,nsubset:bV,nsubseteq:wV,nsubseteqq:xV,nsucc:_V,nsucceq:SV,nsup:kV,nsupE:CV,nsupe:TV,nsupset:EV,nsupseteq:LV,nsupseteqq:AV,ntgl:MV,Ntilde:NV,ntilde:$V,ntlg:OV,ntriangleleft:PV,ntrianglelefteq:RV,ntriangleright:DV,ntrianglerighteq:zV,Nu:IV,nu:FV,num:HV,numero:qV,numsp:BV,nvap:WV,nvdash:UV,nvDash:VV,nVdash:jV,nVDash:GV,nvge:KV,nvgt:XV,nvHarr:YV,nvinfin:ZV,nvlArr:JV,nvle:QV,nvlt:ej,nvltrie:tj,nvrArr:nj,nvrtrie:rj,nvsim:ij,nwarhk:oj,nwarr:sj,nwArr:lj,nwarrow:aj,nwnear:cj,Oacute:uj,oacute:fj,oast:dj,Ocirc:hj,ocirc:pj,ocir:gj,Ocy:vj,ocy:mj,odash:yj,Odblac:bj,odblac:wj,odiv:xj,odot:_j,odsold:Sj,OElig:kj,oelig:Cj,ofcir:Tj,Ofr:Ej,ofr:Lj,ogon:Aj,Ograve:Mj,ograve:Nj,ogt:$j,ohbar:Oj,ohm:Pj,oint:Rj,olarr:Dj,olcir:zj,olcross:Ij,oline:Fj,olt:Hj,Omacr:qj,omacr:Bj,Omega:Wj,omega:Uj,Omicron:Vj,omicron:jj,omid:Gj,ominus:Kj,Oopf:Xj,oopf:Yj,opar:Zj,OpenCurlyDoubleQuote:Jj,OpenCurlyQuote:Qj,operp:eG,oplus:tG,orarr:nG,Or:rG,or:iG,ord:oG,order:sG,orderof:lG,ordf:aG,ordm:cG,origof:uG,oror:fG,orslope:dG,orv:hG,oS:pG,Oscr:gG,oscr:vG,Oslash:mG,oslash:yG,osol:bG,Otilde:wG,otilde:xG,otimesas:_G,Otimes:SG,otimes:kG,Ouml:CG,ouml:TG,ovbar:EG,OverBar:LG,OverBrace:AG,OverBracket:MG,OverParenthesis:NG,para:$G,parallel:OG,par:PG,parsim:RG,parsl:DG,part:zG,PartialD:IG,Pcy:FG,pcy:HG,percnt:qG,period:BG,permil:WG,perp:UG,pertenk:VG,Pfr:jG,pfr:GG,Phi:KG,phi:XG,phiv:YG,phmmat:ZG,phone:JG,Pi:QG,pi:e9,pitchfork:t9,piv:n9,planck:r9,planckh:i9,plankv:o9,plusacir:s9,plusb:l9,pluscir:a9,plus:c9,plusdo:u9,plusdu:f9,pluse:d9,PlusMinus:h9,plusmn:p9,plussim:g9,plustwo:v9,pm:m9,Poincareplane:y9,pointint:b9,popf:w9,Popf:x9,pound:_9,prap:S9,Pr:k9,pr:C9,prcue:T9,precapprox:E9,prec:L9,preccurlyeq:A9,Precedes:M9,PrecedesEqual:N9,PrecedesSlantEqual:$9,PrecedesTilde:O9,preceq:P9,precnapprox:R9,precneqq:D9,precnsim:z9,pre:I9,prE:F9,precsim:H9,prime:q9,Prime:B9,primes:W9,prnap:U9,prnE:V9,prnsim:j9,prod:G9,Product:K9,profalar:X9,profline:Y9,profsurf:Z9,prop:J9,Proportional:Q9,Proportion:e7,propto:t7,prsim:n7,prurel:r7,Pscr:i7,pscr:o7,Psi:s7,psi:l7,puncsp:a7,Qfr:c7,qfr:u7,qint:f7,qopf:d7,Qopf:h7,qprime:p7,Qscr:g7,qscr:v7,quaternions:m7,quatint:y7,quest:b7,questeq:w7,quot:x7,QUOT:_7,rAarr:S7,race:k7,Racute:C7,racute:T7,radic:E7,raemptyv:L7,rang:A7,Rang:M7,rangd:N7,range:$7,rangle:O7,raquo:P7,rarrap:R7,rarrb:D7,rarrbfs:z7,rarrc:I7,rarr:F7,Rarr:H7,rArr:q7,rarrfs:B7,rarrhk:W7,rarrlp:U7,rarrpl:V7,rarrsim:j7,Rarrtl:G7,rarrtl:K7,rarrw:X7,ratail:Y7,rAtail:Z7,ratio:J7,rationals:Q7,rbarr:eK,rBarr:tK,RBarr:nK,rbbrk:rK,rbrace:iK,rbrack:oK,rbrke:sK,rbrksld:lK,rbrkslu:aK,Rcaron:cK,rcaron:uK,Rcedil:fK,rcedil:dK,rceil:hK,rcub:pK,Rcy:gK,rcy:vK,rdca:mK,rdldhar:yK,rdquo:bK,rdquor:wK,rdsh:xK,real:_K,realine:SK,realpart:kK,reals:CK,Re:TK,rect:EK,reg:LK,REG:AK,ReverseElement:MK,ReverseEquilibrium:NK,ReverseUpEquilibrium:$K,rfisht:OK,rfloor:PK,rfr:RK,Rfr:DK,rHar:zK,rhard:IK,rharu:FK,rharul:HK,Rho:qK,rho:BK,rhov:WK,RightAngleBracket:UK,RightArrowBar:VK,rightarrow:jK,RightArrow:GK,Rightarrow:KK,RightArrowLeftArrow:XK,rightarrowtail:YK,RightCeiling:ZK,RightDoubleBracket:JK,RightDownTeeVector:QK,RightDownVectorBar:eX,RightDownVector:tX,RightFloor:nX,rightharpoondown:rX,rightharpoonup:iX,rightleftarrows:oX,rightleftharpoons:sX,rightrightarrows:lX,rightsquigarrow:aX,RightTeeArrow:cX,RightTee:uX,RightTeeVector:fX,rightthreetimes:dX,RightTriangleBar:hX,RightTriangle:pX,RightTriangleEqual:gX,RightUpDownVector:vX,RightUpTeeVector:mX,RightUpVectorBar:yX,RightUpVector:bX,RightVectorBar:wX,RightVector:xX,ring:_X,risingdotseq:SX,rlarr:kX,rlhar:CX,rlm:TX,rmoustache:EX,rmoust:LX,rnmid:AX,roang:MX,roarr:NX,robrk:$X,ropar:OX,ropf:PX,Ropf:RX,roplus:DX,rotimes:zX,RoundImplies:IX,rpar:FX,rpargt:HX,rppolint:qX,rrarr:BX,Rrightarrow:WX,rsaquo:UX,rscr:VX,Rscr:jX,rsh:GX,Rsh:KX,rsqb:XX,rsquo:YX,rsquor:ZX,rthree:JX,rtimes:QX,rtri:eY,rtrie:tY,rtrif:nY,rtriltri:rY,RuleDelayed:iY,ruluhar:oY,rx:sY,Sacute:lY,sacute:aY,sbquo:cY,scap:uY,Scaron:fY,scaron:dY,Sc:hY,sc:pY,sccue:gY,sce:vY,scE:mY,Scedil:yY,scedil:bY,Scirc:wY,scirc:xY,scnap:_Y,scnE:SY,scnsim:kY,scpolint:CY,scsim:TY,Scy:EY,scy:LY,sdotb:AY,sdot:MY,sdote:NY,searhk:$Y,searr:OY,seArr:PY,searrow:RY,sect:DY,semi:zY,seswar:IY,setminus:FY,setmn:HY,sext:qY,Sfr:BY,sfr:WY,sfrown:UY,sharp:VY,SHCHcy:jY,shchcy:GY,SHcy:KY,shcy:XY,ShortDownArrow:YY,ShortLeftArrow:ZY,shortmid:JY,shortparallel:QY,ShortRightArrow:eZ,ShortUpArrow:tZ,shy:nZ,Sigma:rZ,sigma:iZ,sigmaf:oZ,sigmav:sZ,sim:lZ,simdot:aZ,sime:cZ,simeq:uZ,simg:fZ,simgE:dZ,siml:hZ,simlE:pZ,simne:gZ,simplus:vZ,simrarr:mZ,slarr:yZ,SmallCircle:bZ,smallsetminus:wZ,smashp:xZ,smeparsl:_Z,smid:SZ,smile:kZ,smt:CZ,smte:TZ,smtes:EZ,SOFTcy:LZ,softcy:AZ,solbar:MZ,solb:NZ,sol:$Z,Sopf:OZ,sopf:PZ,spades:RZ,spadesuit:DZ,spar:zZ,sqcap:IZ,sqcaps:FZ,sqcup:HZ,sqcups:qZ,Sqrt:BZ,sqsub:WZ,sqsube:UZ,sqsubset:VZ,sqsubseteq:jZ,sqsup:GZ,sqsupe:KZ,sqsupset:XZ,sqsupseteq:YZ,square:ZZ,Square:JZ,SquareIntersection:QZ,SquareSubset:eJ,SquareSubsetEqual:tJ,SquareSuperset:nJ,SquareSupersetEqual:rJ,SquareUnion:iJ,squarf:oJ,squ:sJ,squf:lJ,srarr:aJ,Sscr:cJ,sscr:uJ,ssetmn:fJ,ssmile:dJ,sstarf:hJ,Star:pJ,star:gJ,starf:vJ,straightepsilon:mJ,straightphi:yJ,strns:bJ,sub:wJ,Sub:xJ,subdot:_J,subE:SJ,sube:kJ,subedot:CJ,submult:TJ,subnE:EJ,subne:LJ,subplus:AJ,subrarr:MJ,subset:NJ,Subset:$J,subseteq:OJ,subseteqq:PJ,SubsetEqual:RJ,subsetneq:DJ,subsetneqq:zJ,subsim:IJ,subsub:FJ,subsup:HJ,succapprox:qJ,succ:BJ,succcurlyeq:WJ,Succeeds:UJ,SucceedsEqual:VJ,SucceedsSlantEqual:jJ,SucceedsTilde:GJ,succeq:KJ,succnapprox:XJ,succneqq:YJ,succnsim:ZJ,succsim:JJ,SuchThat:QJ,sum:eQ,Sum:tQ,sung:nQ,sup1:rQ,sup2:iQ,sup3:oQ,sup:sQ,Sup:lQ,supdot:aQ,supdsub:cQ,supE:uQ,supe:fQ,supedot:dQ,Superset:hQ,SupersetEqual:pQ,suphsol:gQ,suphsub:vQ,suplarr:mQ,supmult:yQ,supnE:bQ,supne:wQ,supplus:xQ,supset:_Q,Supset:SQ,supseteq:kQ,supseteqq:CQ,supsetneq:TQ,supsetneqq:EQ,supsim:LQ,supsub:AQ,supsup:MQ,swarhk:NQ,swarr:$Q,swArr:OQ,swarrow:PQ,swnwar:RQ,szlig:DQ,Tab:zQ,target:IQ,Tau:FQ,tau:HQ,tbrk:qQ,Tcaron:BQ,tcaron:WQ,Tcedil:UQ,tcedil:VQ,Tcy:jQ,tcy:GQ,tdot:KQ,telrec:XQ,Tfr:YQ,tfr:ZQ,there4:JQ,therefore:QQ,Therefore:eee,Theta:tee,theta:nee,thetasym:ree,thetav:iee,thickapprox:oee,thicksim:see,ThickSpace:lee,ThinSpace:aee,thinsp:cee,thkap:uee,thksim:fee,THORN:dee,thorn:hee,tilde:pee,Tilde:gee,TildeEqual:vee,TildeFullEqual:mee,TildeTilde:yee,timesbar:bee,timesb:wee,times:xee,timesd:_ee,tint:See,toea:kee,topbot:Cee,topcir:Tee,top:Eee,Topf:Lee,topf:Aee,topfork:Mee,tosa:Nee,tprime:$ee,trade:Oee,TRADE:Pee,triangle:Ree,triangledown:Dee,triangleleft:zee,trianglelefteq:Iee,triangleq:Fee,triangleright:Hee,trianglerighteq:qee,tridot:Bee,trie:Wee,triminus:Uee,TripleDot:Vee,triplus:jee,trisb:Gee,tritime:Kee,trpezium:Xee,Tscr:Yee,tscr:Zee,TScy:Jee,tscy:Qee,TSHcy:ete,tshcy:tte,Tstrok:nte,tstrok:rte,twixt:ite,twoheadleftarrow:ote,twoheadrightarrow:ste,Uacute:lte,uacute:ate,uarr:cte,Uarr:ute,uArr:fte,Uarrocir:dte,Ubrcy:hte,ubrcy:pte,Ubreve:gte,ubreve:vte,Ucirc:mte,ucirc:yte,Ucy:bte,ucy:wte,udarr:xte,Udblac:_te,udblac:Ste,udhar:kte,ufisht:Cte,Ufr:Tte,ufr:Ete,Ugrave:Lte,ugrave:Ate,uHar:Mte,uharl:Nte,uharr:$te,uhblk:Ote,ulcorn:Pte,ulcorner:Rte,ulcrop:Dte,ultri:zte,Umacr:Ite,umacr:Fte,uml:Hte,UnderBar:qte,UnderBrace:Bte,UnderBracket:Wte,UnderParenthesis:Ute,Union:Vte,UnionPlus:jte,Uogon:Gte,uogon:Kte,Uopf:Xte,uopf:Yte,UpArrowBar:Zte,uparrow:Jte,UpArrow:Qte,Uparrow:ene,UpArrowDownArrow:tne,updownarrow:nne,UpDownArrow:rne,Updownarrow:ine,UpEquilibrium:one,upharpoonleft:sne,upharpoonright:lne,uplus:ane,UpperLeftArrow:cne,UpperRightArrow:une,upsi:fne,Upsi:dne,upsih:hne,Upsilon:pne,upsilon:gne,UpTeeArrow:vne,UpTee:mne,upuparrows:yne,urcorn:bne,urcorner:wne,urcrop:xne,Uring:_ne,uring:Sne,urtri:kne,Uscr:Cne,uscr:Tne,utdot:Ene,Utilde:Lne,utilde:Ane,utri:Mne,utrif:Nne,uuarr:$ne,Uuml:One,uuml:Pne,uwangle:Rne,vangrt:Dne,varepsilon:zne,varkappa:Ine,varnothing:Fne,varphi:Hne,varpi:qne,varpropto:Bne,varr:Wne,vArr:Une,varrho:Vne,varsigma:jne,varsubsetneq:Gne,varsubsetneqq:Kne,varsupsetneq:Xne,varsupsetneqq:Yne,vartheta:Zne,vartriangleleft:Jne,vartriangleright:Qne,vBar:ere,Vbar:tre,vBarv:nre,Vcy:rre,vcy:ire,vdash:ore,vDash:sre,Vdash:lre,VDash:are,Vdashl:cre,veebar:ure,vee:fre,Vee:dre,veeeq:hre,vellip:pre,verbar:gre,Verbar:vre,vert:mre,Vert:yre,VerticalBar:bre,VerticalLine:wre,VerticalSeparator:xre,VerticalTilde:_re,VeryThinSpace:Sre,Vfr:kre,vfr:Cre,vltri:Tre,vnsub:Ere,vnsup:Lre,Vopf:Are,vopf:Mre,vprop:Nre,vrtri:$re,Vscr:Ore,vscr:Pre,vsubnE:Rre,vsubne:Dre,vsupnE:zre,vsupne:Ire,Vvdash:Fre,vzigzag:Hre,Wcirc:qre,wcirc:Bre,wedbar:Wre,wedge:Ure,Wedge:Vre,wedgeq:jre,weierp:Gre,Wfr:Kre,wfr:Xre,Wopf:Yre,wopf:Zre,wp:Jre,wr:Qre,wreath:eie,Wscr:tie,wscr:nie,xcap:rie,xcirc:iie,xcup:oie,xdtri:sie,Xfr:lie,xfr:aie,xharr:cie,xhArr:uie,Xi:fie,xi:die,xlarr:hie,xlArr:pie,xmap:gie,xnis:vie,xodot:mie,Xopf:yie,xopf:bie,xoplus:wie,xotime:xie,xrarr:_ie,xrArr:Sie,Xscr:kie,xscr:Cie,xsqcup:Tie,xuplus:Eie,xutri:Lie,xvee:Aie,xwedge:Mie,Yacute:Nie,yacute:$ie,YAcy:Oie,yacy:Pie,Ycirc:Rie,ycirc:Die,Ycy:zie,ycy:Iie,yen:Fie,Yfr:Hie,yfr:qie,YIcy:Bie,yicy:Wie,Yopf:Uie,yopf:Vie,Yscr:jie,yscr:Gie,YUcy:Kie,yucy:Xie,yuml:Yie,Yuml:Zie,Zacute:Jie,zacute:Qie,Zcaron:eoe,zcaron:toe,Zcy:noe,zcy:roe,Zdot:ioe,zdot:ooe,zeetrf:soe,ZeroWidthSpace:loe,Zeta:aoe,zeta:coe,zfr:uoe,Zfr:foe,ZHcy:doe,zhcy:hoe,zigrarr:poe,zopf:goe,Zopf:voe,Zscr:moe,zscr:yoe,zwj:boe,zwnj:woe},xoe="Á",_oe="á",Soe="Â",koe="â",Coe="´",Toe="Æ",Eoe="æ",Loe="À",Aoe="à",Moe="&",Noe="&",$oe="Å",Ooe="å",Poe="Ã",Roe="ã",Doe="Ä",zoe="ä",Ioe="¦",Foe="Ç",Hoe="ç",qoe="¸",Boe="¢",Woe="©",Uoe="©",Voe="¤",joe="°",Goe="÷",Koe="É",Xoe="é",Yoe="Ê",Zoe="ê",Joe="È",Qoe="è",ese="Ð",tse="ð",nse="Ë",rse="ë",ise="½",ose="¼",sse="¾",lse=">",ase=">",cse="Í",use="í",fse="Î",dse="î",hse="¡",pse="Ì",gse="ì",vse="¿",mse="Ï",yse="ï",bse="«",wse="<",xse="<",_se="¯",Sse="µ",kse="·",Cse=" ",Tse="¬",Ese="Ñ",Lse="ñ",Ase="Ó",Mse="ó",Nse="Ô",$se="ô",Ose="Ò",Pse="ò",Rse="ª",Dse="º",zse="Ø",Ise="ø",Fse="Õ",Hse="õ",qse="Ö",Bse="ö",Wse="¶",Use="±",Vse="£",jse='"',Gse='"',Kse="»",Xse="®",Yse="®",Zse="§",Jse="­",Qse="¹",ele="²",tle="³",nle="ß",rle="Þ",ile="þ",ole="×",sle="Ú",lle="ú",ale="Û",cle="û",ule="Ù",fle="ù",dle="¨",hle="Ü",ple="ü",gle="Ý",vle="ý",mle="¥",yle="ÿ",ble={Aacute:xoe,aacute:_oe,Acirc:Soe,acirc:koe,acute:Coe,AElig:Toe,aelig:Eoe,Agrave:Loe,agrave:Aoe,amp:Moe,AMP:Noe,Aring:$oe,aring:Ooe,Atilde:Poe,atilde:Roe,Auml:Doe,auml:zoe,brvbar:Ioe,Ccedil:Foe,ccedil:Hoe,cedil:qoe,cent:Boe,copy:Woe,COPY:Uoe,curren:Voe,deg:joe,divide:Goe,Eacute:Koe,eacute:Xoe,Ecirc:Yoe,ecirc:Zoe,Egrave:Joe,egrave:Qoe,ETH:ese,eth:tse,Euml:nse,euml:rse,frac12:ise,frac14:ose,frac34:sse,gt:lse,GT:ase,Iacute:cse,iacute:use,Icirc:fse,icirc:dse,iexcl:hse,Igrave:pse,igrave:gse,iquest:vse,Iuml:mse,iuml:yse,laquo:bse,lt:wse,LT:xse,macr:_se,micro:Sse,middot:kse,nbsp:Cse,not:Tse,Ntilde:Ese,ntilde:Lse,Oacute:Ase,oacute:Mse,Ocirc:Nse,ocirc:$se,Ograve:Ose,ograve:Pse,ordf:Rse,ordm:Dse,Oslash:zse,oslash:Ise,Otilde:Fse,otilde:Hse,Ouml:qse,ouml:Bse,para:Wse,plusmn:Use,pound:Vse,quot:jse,QUOT:Gse,raquo:Kse,reg:Xse,REG:Yse,sect:Zse,shy:Jse,sup1:Qse,sup2:ele,sup3:tle,szlig:nle,THORN:rle,thorn:ile,times:ole,Uacute:sle,uacute:lle,Ucirc:ale,ucirc:cle,Ugrave:ule,ugrave:fle,uml:dle,Uuml:hle,uuml:ple,Yacute:gle,yacute:vle,yen:mle,yuml:yle},wle="&",xle="'",_le=">",Sle="<",kle='"',Kb={amp:wle,apos:xle,gt:_le,lt:Sle,quot:kle};var Hh={};const Cle={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var Tle=Mo&&Mo.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hh,"__esModule",{value:!0});var Im=Tle(Cle),Ele=String.fromCodePoint||function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function Lle(e){return e>=55296&&e<=57343||e>1114111?"�":(e in Im.default&&(e=Im.default[e]),Ele(e))}Hh.default=Lle;var Nu=Mo&&Mo.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(oi,"__esModule",{value:!0});oi.decodeHTML=oi.decodeHTMLStrict=oi.decodeXML=void 0;var Pd=Nu(Gb),Ale=Nu(ble),Mle=Nu(Kb),Fm=Nu(Hh),Nle=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;oi.decodeXML=Xb(Mle.default);oi.decodeHTMLStrict=Xb(Pd.default);function Xb(e){var t=Yb(e);return function(r){return String(r).replace(Nle,t)}}var Hm=function(e,t){return e1?Rle(e):e.charCodeAt(0)).toString(16).toUpperCase()+";"}function Dle(e,t){return function(r){return r.replace(t,function(o){return e[o]}).replace(nw,$u)}}var rw=new RegExp(Qb.source+"|"+nw.source,"g");function zle(e){return e.replace(rw,$u)}Vn.escape=zle;function Ile(e){return e.replace(Qb,$u)}Vn.escapeUTF8=Ile;function iw(e){return function(t){return t.replace(rw,function(r){return e[r]||$u(r)})}}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXMLStrict=e.decodeHTML5Strict=e.decodeHTML4Strict=e.decodeHTML5=e.decodeHTML4=e.decodeHTMLStrict=e.decodeHTML=e.decodeXML=e.encodeHTML5=e.encodeHTML4=e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=e.encode=e.decodeStrict=e.decode=void 0;var t=oi,r=Vn;function o(h,g){return(!g||g<=0?t.decodeXML:t.decodeHTML)(h)}e.decode=o;function s(h,g){return(!g||g<=0?t.decodeXML:t.decodeHTMLStrict)(h)}e.decodeStrict=s;function c(h,g){return(!g||g<=0?r.encodeXML:r.encodeHTML)(h)}e.encode=c;var f=Vn;Object.defineProperty(e,"encodeXML",{enumerable:!0,get:function(){return f.encodeXML}}),Object.defineProperty(e,"encodeHTML",{enumerable:!0,get:function(){return f.encodeHTML}}),Object.defineProperty(e,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return f.encodeNonAsciiHTML}}),Object.defineProperty(e,"escape",{enumerable:!0,get:function(){return f.escape}}),Object.defineProperty(e,"escapeUTF8",{enumerable:!0,get:function(){return f.escapeUTF8}}),Object.defineProperty(e,"encodeHTML4",{enumerable:!0,get:function(){return f.encodeHTML}}),Object.defineProperty(e,"encodeHTML5",{enumerable:!0,get:function(){return f.encodeHTML}});var d=oi;Object.defineProperty(e,"decodeXML",{enumerable:!0,get:function(){return d.decodeXML}}),Object.defineProperty(e,"decodeHTML",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(e,"decodeHTMLStrict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML4",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(e,"decodeHTML5",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(e,"decodeHTML4Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML5Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(e,"decodeXMLStrict",{enumerable:!0,get:function(){return d.decodeXML}})})(jb);function Fle(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Hle(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(g){throw g},f:s}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,f=!1,d;return{s:function(){r=r.call(e)},n:function(){var g=r.next();return c=g.done,g},e:function(g){f=!0,d=g},f:function(){try{!c&&r.return!=null&&r.return()}finally{if(f)throw d}}}}function Ble(e,t){if(e){if(typeof e=="string")return qm(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return qm(e,t)}}function qm(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r0?e*40+55:0,f=t>0?t*40+55:0,d=r>0?r*40+55:0;o[s]=jle([c,f,d])}function sw(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t}function jle(e){var t=[],r=ow(e),o;try{for(r.s();!(o=r.n()).done;){var s=o.value;t.push(sw(s))}}catch(c){r.e(c)}finally{r.f()}return"#"+t.join("")}function Wm(e,t,r,o){var s;return t==="text"?s=Yle(r,o):t==="display"?s=Kle(e,r,o):t==="xterm256Foreground"?s=Cc(e,o.colors[r]):t==="xterm256Background"?s=Tc(e,o.colors[r]):t==="rgb"&&(s=Gle(e,r)),s}function Gle(e,t){t=t.substring(2).slice(0,-1);var r=+t.substr(0,2),o=t.substring(5).split(";"),s=o.map(function(c){return("0"+Number(c).toString(16)).substr(-2)}).join("");return kc(e,(r===38?"color:#":"background-color:#")+s)}function Kle(e,t,r){t=parseInt(t,10);var o={"-1":function(){return"
"},0:function(){return e.length&&lw(e)},1:function(){return qi(e,"b")},3:function(){return qi(e,"i")},4:function(){return qi(e,"u")},8:function(){return kc(e,"display:none")},9:function(){return qi(e,"strike")},22:function(){return kc(e,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return Vm(e,"i")},24:function(){return Vm(e,"u")},39:function(){return Cc(e,r.fg)},49:function(){return Tc(e,r.bg)},53:function(){return kc(e,"text-decoration:overline")}},s;return o[t]?s=o[t]():4"}).join("")}function sc(e,t){for(var r=[],o=e;o<=t;o++)r.push(o);return r}function Xle(e){return function(t){return(e===null||t.category!==e)&&e!=="all"}}function Um(e){e=parseInt(e,10);var t=null;return e===0?t="all":e===1?t="bold":2")}function kc(e,t){return qi(e,"span",t)}function Cc(e,t){return qi(e,"span","color:"+t)}function Tc(e,t){return qi(e,"span","background-color:"+t)}function Vm(e,t){var r;if(e.slice(-1)[0]===t&&(r=e.pop()),r)return""}function Zle(e,t,r){var o=!1,s=3;function c(){return""}function f(H,z){return r("xterm256Foreground",z),""}function d(H,z){return r("xterm256Background",z),""}function h(H){return t.newline?r("display",-1):r("text",H),""}function g(H,z){o=!0,z.trim().length===0&&(z="0"),z=z.trimRight(";").split(";");var J=ow(z),re;try{for(J.s();!(re=J.n()).done;){var te=re.value;r("display",te)}}catch(j){J.e(j)}finally{J.f()}return""}function v(H){return r("text",H),""}function y(H){return r("rgb",H),""}var b=[{pattern:/^\x08+/,sub:c},{pattern:/^\x1b\[[012]?K/,sub:c},{pattern:/^\x1b\[\(B/,sub:c},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:y},{pattern:/^\x1b\[38;5;(\d+)m/,sub:f},{pattern:/^\x1b\[48;5;(\d+)m/,sub:d},{pattern:/^\n/,sub:h},{pattern:/^\r+\n/,sub:h},{pattern:/^\r/,sub:h},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:g},{pattern:/^\x1b\[\d?J/,sub:c},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:c},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:c},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:v}];function x(H,z){z>s&&o||(o=!1,e=e.replace(H.pattern,H.sub))}var T=[],E=e,M=E.length;e:for(;M>0;){for(var N=0,L=0,O=b.length;Lt.toUpperCase())}const iae=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;function oae(){return typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replace(/\\/g,"/"):"/"}const sae=function(...e){e=e.map(o=>rae(o));let t="",r=!1;for(let o=e.length-1;o>=-1&&!r;o--){const s=o>=0?e[o]:oae();!s||s.length===0||(t=`${s}/${t}`,r=jm(s))}return t=lae(t,!r),r&&!jm(t)?`/${t}`:t.length>0?t:"."};function lae(e,t){let r="",o=0,s=-1,c=0,f=null;for(let d=0;d<=e.length;++d){if(d2){const h=r.lastIndexOf("/");h===-1?(r="",o=0):(r=r.slice(0,h),o=r.length-1-r.lastIndexOf("/")),s=d,c=0;continue}else if(r.length>0){r="",o=0,s=d,c=0;continue}}t&&(r+=r.length>0?"/..":"..",o=2)}else r.length>0?r+=`/${e.slice(s+1,d)}`:r=e.slice(s+1,d),o=d-s-1;s=d,c=0}else f==="."&&c!==-1?++c:c=-1}return r}const jm=function(e){return iae.test(e)},aae=44,Gm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cae=new Uint8Array(64),aw=new Uint8Array(128);for(let e=0;e>>=1,d&&(s=-2147483648|-s),r[o]+=s,t}function Km(e,t,r){return t>=r?!1:e.charCodeAt(t)!==aae}function dae(e){e.sort(hae)}function hae(e,t){return e[0]-t[0]}const pae=/^[\w+.-]+:\/\//,gae=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,vae=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;var zt;(function(e){e[e.Empty=1]="Empty",e[e.Hash=2]="Hash",e[e.Query=3]="Query",e[e.RelativePath=4]="RelativePath",e[e.AbsolutePath=5]="AbsolutePath",e[e.SchemeRelative=6]="SchemeRelative",e[e.Absolute=7]="Absolute"})(zt||(zt={}));function mae(e){return pae.test(e)}function yae(e){return e.startsWith("//")}function cw(e){return e.startsWith("/")}function bae(e){return e.startsWith("file:")}function Xm(e){return/^[.?#]/.test(e)}function lc(e){const t=gae.exec(e);return uw(t[1],t[2]||"",t[3],t[4]||"",t[5]||"/",t[6]||"",t[7]||"")}function wae(e){const t=vae.exec(e),r=t[2];return uw("file:","",t[1]||"","",cw(r)?r:"/"+r,t[3]||"",t[4]||"")}function uw(e,t,r,o,s,c,f){return{scheme:e,user:t,host:r,port:o,path:s,query:c,hash:f,type:zt.Absolute}}function Ym(e){if(yae(e)){const r=lc("http:"+e);return r.scheme="",r.type=zt.SchemeRelative,r}if(cw(e)){const r=lc("http://foo.com"+e);return r.scheme="",r.host="",r.type=zt.AbsolutePath,r}if(bae(e))return wae(e);if(mae(e))return lc(e);const t=lc("http://foo.com/"+e);return t.scheme="",t.host="",t.type=e?e.startsWith("?")?zt.Query:e.startsWith("#")?zt.Hash:zt.RelativePath:zt.Empty,t}function xae(e){if(e.endsWith("/.."))return e;const t=e.lastIndexOf("/");return e.slice(0,t+1)}function _ae(e,t){fw(t,t.type),e.path==="/"?e.path=t.path:e.path=xae(t.path)+e.path}function fw(e,t){const r=t<=zt.RelativePath,o=e.path.split("/");let s=1,c=0,f=!1;for(let h=1;ho&&(o=f)}fw(r,o);const s=r.query+r.hash;switch(o){case zt.Hash:case zt.Query:return s;case zt.RelativePath:{const c=r.path.slice(1);return c?Xm(t||e)&&!Xm(c)?"./"+c+s:c+s:s||"."}case zt.AbsolutePath:return r.path+s;default:return r.scheme+"//"+r.user+r.host+r.port+r.path+s}}function Zm(e,t){return t&&!t.endsWith("/")&&(t+="/"),Sae(e,t)}function kae(e){if(!e)return"";const t=e.lastIndexOf("/");return e.slice(0,t+1)}const Yi=0,Cae=1,Tae=2,Eae=3,Lae=4;function Aae(e,t){const r=Jm(e,0);if(r===e.length)return e;t||(e=e.slice());for(let o=r;o>1),c=e[s][Yi]-t;if(c===0)return Yc=!0,s;c<0?r=s+1:o=s-1}return Yc=!1,r-1}function Pae(e,t,r){for(let o=r+1;o=0&&e[o][Yi]===t;r=o--);return r}function Dae(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function zae(e,t,r,o){const{lastKey:s,lastNeedle:c,lastIndex:f}=r;let d=0,h=e.length-1;if(o===s){if(t===c)return Yc=f!==-1&&e[f][Yi]===t,f;t>=c?d=f===-1?0:f:h=f}return r.lastKey=o,r.lastNeedle=t,r.lastIndex=Oae(e,t,d,h)}const Iae="`line` must be greater than 0 (lines start at line 1)",Fae="`column` must be greater than or equal to 0 (columns start at column 0)",Qm=-1,Hae=1;class qae{constructor(t,r){const o=typeof t=="string";if(!o&&t._decodedMemo)return t;const s=o?JSON.parse(t):t,{version:c,file:f,names:d,sourceRoot:h,sources:g,sourcesContent:v}=s;this.version=c,this.file=f,this.names=d||[],this.sourceRoot=h,this.sources=g,this.sourcesContent=v,this.ignoreList=s.ignoreList||s.x_google_ignoreList||void 0;const y=Zm(h||"",kae(r));this.resolvedSources=g.map(x=>Zm(x||"",y));const{mappings:b}=s;typeof b=="string"?(this._encoded=b,this._decoded=void 0):(this._encoded=void 0,this._decoded=Aae(b,o)),this._decodedMemo=Dae(),this._bySources=void 0,this._bySourceMemos=void 0}}function Bae(e){var t;return(t=e)._decoded||(t._decoded=uae(e._encoded))}function Wae(e,t){let{line:r,column:o,bias:s}=t;if(r--,r<0)throw new Error(Iae);if(o<0)throw new Error(Fae);const c=Bae(e);if(r>=c.length)return ac(null,null,null,null);const f=c[r],d=Uae(f,e._decodedMemo,r,o,s||Hae);if(d===-1)return ac(null,null,null,null);const h=f[d];if(h.length===1)return ac(null,null,null,null);const{names:g,resolvedSources:v}=e;return ac(v[h[Cae]],h[Tae]+1,h[Eae],h.length===5?g[h[Lae]]:null)}function ac(e,t,r,o){return{source:e,line:t,column:r,name:o}}function Uae(e,t,r,o,s){let c=zae(e,o,t,r);return Yc?c=(s===Qm?Pae:Rae)(e,o,c):s===Qm&&c++,c===-1||c===e.length?-1:c}const dw=/^\s*at .*(?:\S:\d+|\(native\))/m,Vae=/^(?:eval@)?(?:\[native code\])?$/,jae=["node:internal",/\/packages\/\w+\/dist\//,/\/@vitest\/\w+\/dist\//,"/vitest/dist/","/vitest/src/","/vite-node/dist/","/vite-node/src/","/node_modules/chai/","/node_modules/tinypool/","/node_modules/tinyspy/","/deps/chunk-","/deps/@vitest","/deps/loupe","/deps/chai",/node:\w+/,/__vitest_test__/,/__vitest_browser__/,/\/deps\/vitest_/];function hw(e){if(!e.includes(":"))return[e];const r=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/^\(|\)$/g,""));if(!r)return[e];let o=r[1];if(o.startsWith("async ")&&(o=o.slice(6)),(o.startsWith("http:")||o.startsWith("https:"))&&(o=new URL(o).pathname),o.startsWith("/@fs/")){const s=/^\/@fs\/[a-zA-Z]:\//.test(o);o=o.slice(s?5:4)}return[o,r[2]||void 0,r[3]||void 0]}function Gae(e){let t=e.trim();if(Vae.test(t)||(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),!t.includes("@")&&!t.includes(":")))return null;const r=/((.*".+"[^@]*)?[^@]*)(@)/,o=t.match(r),s=o&&o[1]?o[1]:void 0,[c,f,d]=hw(t.replace(r,""));return!c||!f||!d?null:{file:c,method:s||"",line:Number.parseInt(f),column:Number.parseInt(d)}}function Kae(e){let t=e.trim();if(!dw.test(t))return null;t.includes("(eval ")&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));let r=t.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,"");const o=r.match(/ (\(.+\)$)/);r=o?r.replace(o[0],""):r;const[s,c,f]=hw(o?o[1]:r);let d=o&&r||"",h=s&&["eval",""].includes(s)?void 0:s;return!h||!c||!f?null:(d.startsWith("async ")&&(d=d.slice(6)),h.startsWith("file://")&&(h=h.slice(7)),h=sae(h),d&&(d=d.replace(/__vite_ssr_import_\d+__\./g,"")),{method:d,file:h,line:Number.parseInt(c),column:Number.parseInt(f)})}function Xae(e,t={}){const{ignoreStackEntries:r=jae}=t;let o=dw.test(e)?Zae(e):Yae(e);return r.length&&(o=o.filter(s=>!r.some(c=>s.file.match(c)))),o.map(s=>{var c;t.getFileName&&(s.file=t.getFileName(s.file));const f=(c=t.getSourceMap)==null?void 0:c.call(t,s.file);if(!f||typeof f!="object"||!f.version)return s;const d=new qae(f),{line:h,column:g}=Wae(d,s);return h!=null&&g!=null?{...s,line:h,column:g}:s})}function Yae(e){return e.split(` +`).map(t=>Gae(t)).filter(qb)}function Zae(e){return e.split(` +`).map(t=>Kae(t)).filter(qb)}function Jae(e,t){return t&&e.endsWith(t)}async function pw(e,t,r){const o=encodeURI(`${e}:${t}:${r}`);await fetch(`/__open-in-editor?file=${o}`)}function Bh(e){return new tae({fg:e?"#FFF":"#000",bg:e?"#000":"#FFF"})}function Qae(e){return e===null||typeof e!="function"&&typeof e!="object"}function gw(e){let t=e;if(Qae(e)&&(t={message:String(t).split(/\n/g)[0],stack:String(t),name:""}),!e){const r=new Error("unknown error");t={message:r.message,stack:r.stack,name:""}}return t.stacks=Xae(t.stack||t.stackStr||"",{ignoreStackEntries:[]}),t}function Ou(e){return U0()?(rS(e),!0):!1}function li(e){return typeof e=="function"?e():q(e)}const ece=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const tce=Object.prototype.toString,nce=e=>tce.call(e)==="[object Object]",Zl=()=>{};function vw(e,t){function r(...o){return new Promise((s,c)=>{Promise.resolve(e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})).then(s).catch(c)})}return r}const mw=e=>e();function yw(e,t={}){let r,o,s=Zl;const c=d=>{clearTimeout(d),s(),s=Zl};return d=>{const h=li(e),g=li(t.maxWait);return r&&c(r),h<=0||g!==void 0&&g<=0?(o&&(c(o),o=null),Promise.resolve(d())):new Promise((v,y)=>{s=t.rejectOnCancel?y:v,g&&!o&&(o=setTimeout(()=>{r&&c(r),o=null,v(d())},g)),r=setTimeout(()=>{o&&c(o),o=null,v(d())},h)})}}function rce(e=mw){const t=Be(!0);function r(){t.value=!1}function o(){t.value=!0}const s=(...c)=>{t.value&&e(...c)};return{isActive:oa(t),pause:r,resume:o,eventFilter:s}}function ice(e){return ca()}function oce(...e){if(e.length!==1)return gu(...e);const t=e[0];return typeof t=="function"?oa(sy(()=>({get:t,set:Zl}))):Be(t)}function e0(e,t=200,r={}){return vw(yw(t,r),e)}function bw(e,t,r={}){const{eventFilter:o=mw,...s}=r;return Ht(e,vw(o,t),s)}function ww(e,t,r={}){const{eventFilter:o,...s}=r,{eventFilter:c,pause:f,resume:d,isActive:h}=rce(o);return{stop:bw(e,t,{...s,eventFilter:c}),pause:f,resume:d,isActive:h}}function Wh(e,t=!0,r){ice()?Os(e,r):t?e():ln(e)}function sce(e=!1,t={}){const{truthyValue:r=!0,falsyValue:o=!1}=t,s=Ot(e),c=Be(e);function f(d){if(arguments.length)return c.value=d,c.value;{const h=li(r);return c.value=c.value===h?li(o):h,c.value}}return s?f:[c,f]}function xw(e,t,r={}){const{debounce:o=0,maxWait:s=void 0,...c}=r;return bw(e,t,{...c,eventFilter:yw(o,{maxWait:s})})}function lce(e,t,r){const o=Ht(e,(...s)=>(ln(()=>o()),t(...s)),r);return o}function ace(e,t,r){let o;Ot(r)?o={evaluating:r}:o={};const{lazy:s=!1,evaluating:c=void 0,shallow:f=!0,onError:d=Zl}=o,h=Be(!s),g=f?Fr(t):Be(t);let v=0;return Ch(async y=>{if(!h.value)return;v++;const b=v;let x=!1;c&&Promise.resolve().then(()=>{c.value=!0});try{const T=await e(E=>{y(()=>{c&&(c.value=!1),x||E()})});b===v&&(g.value=T)}catch(T){d(T)}finally{c&&b===v&&(c.value=!1),x=!0}}),s?Me(()=>(h.value=!0,g.value)):g}function Zc(e){var t;const r=li(e);return(t=r==null?void 0:r.$el)!=null?t:r}const rr=ece?window:void 0;function Ls(...e){let t,r,o,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([r,o,s]=e,t=rr):[t,r,o,s]=e,!t)return Zl;Array.isArray(r)||(r=[r]),Array.isArray(o)||(o=[o]);const c=[],f=()=>{c.forEach(v=>v()),c.length=0},d=(v,y,b,x)=>(v.addEventListener(y,b,x),()=>v.removeEventListener(y,b,x)),h=Ht(()=>[Zc(t),li(s)],([v,y])=>{if(f(),!v)return;const b=nce(y)?{...y}:y;c.push(...r.flatMap(x=>o.map(T=>d(v,x,T,b))))},{immediate:!0,flush:"post"}),g=()=>{h(),f()};return Ou(g),g}function cce(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function _w(...e){let t,r,o={};e.length===3?(t=e[0],r=e[1],o=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,r=e[0],o=e[1]):(t=e[0],r=e[1]):(t=!0,r=e[0]);const{target:s=rr,eventName:c="keydown",passive:f=!1,dedupe:d=!1}=o,h=cce(t);return Ls(s,c,v=>{v.repeat&&li(d)||h(v)&&r(v)},f)}function uce(){const e=Be(!1),t=ca();return t&&Os(()=>{e.value=!0},t),e}function Sw(e){const t=uce();return Me(()=>(t.value,!!e()))}function fce(e,t={}){const{immediate:r=!0,fpsLimit:o=void 0,window:s=rr}=t,c=Be(!1),f=o?1e3/o:null;let d=0,h=null;function g(b){if(!c.value||!s)return;d||(d=b);const x=b-d;if(f&&xr&&"matchMedia"in r&&typeof r.matchMedia=="function");let s;const c=Be(!1),f=g=>{c.value=g.matches},d=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",f):s.removeListener(f))},h=Ch(()=>{o.value&&(d(),s=r.matchMedia(li(e)),"addEventListener"in s?s.addEventListener("change",f):s.addListener(f),c.value=s.matches)});return Ou(()=>{h(),d(),s=void 0}),c}const cc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},uc="__vueuse_ssr_handlers__",dce=hce();function hce(){return uc in cc||(cc[uc]=cc[uc]||{}),cc[uc]}function Cw(e,t){return dce[e]||t}function pce(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const gce={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},t0="vueuse-storage";function Tw(e,t,r,o={}){var s;const{flush:c="pre",deep:f=!0,listenToStorageChanges:d=!0,writeDefaults:h=!0,mergeDefaults:g=!1,shallow:v,window:y=rr,eventFilter:b,onError:x=j=>{console.error(j)},initOnMounted:T}=o,E=(v?Fr:Be)(typeof t=="function"?t():t);if(!r)try{r=Cw("getDefaultStorage",()=>{var j;return(j=rr)==null?void 0:j.localStorage})()}catch(j){x(j)}if(!r)return E;const M=li(t),N=pce(M),L=(s=o.serializer)!=null?s:gce[N],{pause:O,resume:A}=ww(E,()=>z(E.value),{flush:c,deep:f,eventFilter:b});y&&d&&Wh(()=>{Ls(y,"storage",re),Ls(y,t0,te),T&&re()}),T||re();function H(j,ne){y&&y.dispatchEvent(new CustomEvent(t0,{detail:{key:e,oldValue:j,newValue:ne,storageArea:r}}))}function z(j){try{const ne=r.getItem(e);if(j==null)H(ne,null),r.removeItem(e);else{const K=L.write(j);ne!==K&&(r.setItem(e,K),H(ne,K))}}catch(ne){x(ne)}}function J(j){const ne=j?j.newValue:r.getItem(e);if(ne==null)return h&&M!=null&&r.setItem(e,L.write(M)),M;if(!j&&g){const K=L.read(ne);return typeof g=="function"?g(K,M):N==="object"&&!Array.isArray(K)?{...M,...K}:K}else return typeof ne!="string"?ne:L.read(ne)}function re(j){if(!(j&&j.storageArea!==r)){if(j&&j.key==null){E.value=M;return}if(!(j&&j.key!==e)){O();try{(j==null?void 0:j.newValue)!==L.write(E.value)&&(E.value=J(j))}catch(ne){x(ne)}finally{j?ln(A):A()}}}}function te(j){re(j.detail)}return E}function Ew(e){return kw("(prefers-color-scheme: dark)",e)}function vce(e={}){const{selector:t="html",attribute:r="class",initialValue:o="auto",window:s=rr,storage:c,storageKey:f="vueuse-color-scheme",listenToStorageChanges:d=!0,storageRef:h,emitAuto:g,disableTransition:v=!0}=e,y={auto:"",light:"light",dark:"dark",...e.modes||{}},b=Ew({window:s}),x=Me(()=>b.value?"dark":"light"),T=h||(f==null?oce(o):Tw(f,o,c,{window:s,listenToStorageChanges:d})),E=Me(()=>T.value==="auto"?x.value:T.value),M=Cw("updateHTMLAttrs",(A,H,z)=>{const J=typeof A=="string"?s==null?void 0:s.document.querySelector(A):Zc(A);if(!J)return;let re;if(v&&(re=s.document.createElement("style"),re.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(re)),H==="class"){const te=z.split(/\s/g);Object.values(y).flatMap(j=>(j||"").split(/\s/g)).filter(Boolean).forEach(j=>{te.includes(j)?J.classList.add(j):J.classList.remove(j)})}else J.setAttribute(H,z);v&&(s.getComputedStyle(re).opacity,document.head.removeChild(re))});function N(A){var H;M(t,r,(H=y[A])!=null?H:A)}function L(A){e.onChanged?e.onChanged(A,N):N(A)}Ht(E,L,{flush:"post",immediate:!0}),Wh(()=>L(E.value));const O=Me({get(){return g?T.value:E.value},set(A){T.value=A}});try{return Object.assign(O,{store:T,system:x,state:E})}catch{return O}}function mce(e={}){const{valueDark:t="dark",valueLight:r="",window:o=rr}=e,s=vce({...e,onChanged:(d,h)=>{var g;e.onChanged?(g=e.onChanged)==null||g.call(e,d==="dark",h,d):h(d)},modes:{dark:t,light:r}}),c=Me(()=>s.system?s.system.value:Ew({window:o}).value?"dark":"light");return Me({get(){return s.value==="dark"},set(d){const h=d?"dark":"light";c.value===h?s.value="auto":s.value=h}})}function Lw(e,t,r={}){const{window:o=rr,...s}=r;let c;const f=Sw(()=>o&&"ResizeObserver"in o),d=()=>{c&&(c.disconnect(),c=void 0)},h=Me(()=>Array.isArray(e)?e.map(y=>Zc(y)):[Zc(e)]),g=Ht(h,y=>{if(d(),f.value&&o){c=new ResizeObserver(t);for(const b of y)b&&c.observe(b,s)}},{immediate:!0,flush:"post"}),v=()=>{d(),g()};return Ou(v),{isSupported:f,stop:v}}function Pu(e,t,r={}){const{window:o=rr}=r;return Tw(e,t,o==null?void 0:o.localStorage,r)}function yce(e="history",t={}){const{initialValue:r={},removeNullishValues:o=!0,removeFalsyValues:s=!1,write:c=!0,window:f=rr}=t;if(!f)return er(r);const d=er({});function h(){if(e==="history")return f.location.search||"";if(e==="hash"){const N=f.location.hash||"",L=N.indexOf("?");return L>0?N.slice(L):""}else return(f.location.hash||"").replace(/^#/,"")}function g(N){const L=N.toString();if(e==="history")return`${L?`?${L}`:""}${f.location.hash||""}`;if(e==="hash-params")return`${f.location.search||""}${L?`#${L}`:""}`;const O=f.location.hash||"#",A=O.indexOf("?");return A>0?`${O.slice(0,A)}${L?`?${L}`:""}`:`${O}${L?`?${L}`:""}`}function v(){return new URLSearchParams(h())}function y(N){const L=new Set(Object.keys(d));for(const O of N.keys()){const A=N.getAll(O);d[O]=A.length>1?A:N.get(O)||"",L.delete(O)}Array.from(L).forEach(O=>delete d[O])}const{pause:b,resume:x}=ww(d,()=>{const N=new URLSearchParams("");Object.keys(d).forEach(L=>{const O=d[L];Array.isArray(O)?O.forEach(A=>N.append(L,A)):o&&O==null||s&&!O?N.delete(L):N.set(L,O)}),T(N)},{deep:!0});function T(N,L){b(),L&&y(N),f.history.replaceState(f.history.state,f.document.title,f.location.pathname+g(N)),x()}function E(){c&&T(v(),!0)}Ls(f,"popstate",E,!1),e!=="history"&&Ls(f,"hashchange",E,!1);const M=v();return M.keys().next().value?y(M):Object.assign(d,r),d}function bce(e={}){const{window:t=rr,initialWidth:r=Number.POSITIVE_INFINITY,initialHeight:o=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:c=!0}=e,f=Be(r),d=Be(o),h=()=>{t&&(c?(f.value=t.innerWidth,d.value=t.innerHeight):(f.value=t.document.documentElement.clientWidth,d.value=t.document.documentElement.clientHeight))};if(h(),Wh(h),Ls("resize",h,{passive:!0}),s){const g=kw("(orientation: portrait)");Ht(g,()=>h())}return{width:f,height:d}}const Uh=yce("hash",{initialValue:{file:"",view:null,line:null}}),Zi=gu(Uh,"file"),Bn=gu(Uh,"view"),Rd=gu(Uh,"line");var jn=Uint8Array,cs=Uint16Array,wce=Int32Array,Aw=new jn([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Mw=new jn([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),xce=new jn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Nw=function(e,t){for(var r=new cs(31),o=0;o<31;++o)r[o]=t+=1<>1|(Ct&21845)<<1;Ni=(Ni&52428)>>2|(Ni&13107)<<2,Ni=(Ni&61680)>>4|(Ni&3855)<<4,Dd[Ct]=((Ni&65280)>>8|(Ni&255)<<8)>>1}var Rl=function(e,t,r){for(var o=e.length,s=0,c=new cs(t);s>h]=g}else for(d=new cs(o),s=0;s>15-e[s]);return d},ha=new jn(288);for(var Ct=0;Ct<144;++Ct)ha[Ct]=8;for(var Ct=144;Ct<256;++Ct)ha[Ct]=9;for(var Ct=256;Ct<280;++Ct)ha[Ct]=7;for(var Ct=280;Ct<288;++Ct)ha[Ct]=8;var Pw=new jn(32);for(var Ct=0;Ct<32;++Ct)Pw[Ct]=5;var Cce=Rl(ha,9,1),Tce=Rl(Pw,5,1),Qf=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},vr=function(e,t,r){var o=t/8|0;return(e[o]|e[o+1]<<8)>>(t&7)&r},ed=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(t&7)},Ece=function(e){return(e+7)/8|0},Rw=function(e,t,r){return(t==null||t<0)&&(t=0),(r==null||r>e.length)&&(r=e.length),new jn(e.subarray(t,r))},Lce=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],$n=function(e,t,r){var o=new Error(t||Lce[e]);if(o.code=e,Error.captureStackTrace&&Error.captureStackTrace(o,$n),!r)throw o;return o},Vh=function(e,t,r,o){var s=e.length,c=0;if(!s||t.f&&!t.l)return r||new jn(0);var f=!r,d=f||t.i!=2,h=t.i;f&&(r=new jn(s*3));var g=function(Te){var Ye=r.length;if(Te>Ye){var P=new jn(Math.max(Ye*2,Te));P.set(r),r=P}},v=t.f||0,y=t.p||0,b=t.b||0,x=t.l,T=t.d,E=t.m,M=t.n,N=s*8;do{if(!x){v=vr(e,y,1);var L=vr(e,y+1,3);if(y+=3,L)if(L==1)x=Cce,T=Tce,E=9,M=5;else if(L==2){var z=vr(e,y,31)+257,J=vr(e,y+10,15)+4,re=z+vr(e,y+5,31)+1;y+=14;for(var te=new jn(re),j=new jn(19),ne=0;ne>4;if(O<16)te[ne++]=O;else{var B=0,W=0;for(O==16?(W=3+vr(e,y,3),y+=2,B=te[ne-1]):O==17?(W=3+vr(e,y,7),y+=3):O==18&&(W=11+vr(e,y,127),y+=7);W--;)te[ne++]=B}}var ie=te.subarray(0,z),ye=te.subarray(z);E=Qf(ie),M=Qf(ye),x=Rl(ie,E,1),T=Rl(ye,M,1)}else $n(1);else{var O=Ece(y)+4,A=e[O-4]|e[O-3]<<8,H=O+A;if(H>s){h&&$n(0);break}d&&g(b+A),r.set(e.subarray(O,H),b),t.b=b+=A,t.p=y=H*8,t.f=v;continue}if(y>N){h&&$n(0);break}}d&&g(b+131072);for(var Ne=(1<>4;if(y+=B&15,y>N){h&&$n(0);break}if(B||$n(2),it<256)r[b++]=it;else if(it==256){je=y,x=null;break}else{var rt=it-254;if(it>264){var ne=it-257,Ze=Aw[ne];rt=vr(e,y,(1<>4;Ee||$n(3),y+=Ee&15;var ye=kce[X];if(X>3){var Ze=Mw[X];ye+=ed(e,y)&(1<N){h&&$n(0);break}d&&g(b+131072);var ae=b+rt;if(b>3&1)+(t>>4&1);o>0;o-=!e[r++]);return r+(t&2)},Nce=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},$ce=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&$n(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&$n(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function Oce(e,t){return Vh(e,{i:2},t,t)}function Pce(e,t){var r=Mce(e);return r+8>e.length&&$n(6,"invalid gzip data"),Vh(e.subarray(r,-8),{i:2},new jn(Nce(e)),t)}function Rce(e,t){return Vh(e.subarray($ce(e,t),-4),{i:2},t,t)}function Dce(e,t){return e[0]==31&&e[1]==139&&e[2]==8?Pce(e,t):(e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31?Oce(e,t):Rce(e,t)}var zd=typeof TextDecoder<"u"&&new TextDecoder,zce=0;try{zd.decode(Ace,{stream:!0}),zce=1}catch{}var Ice=function(e){for(var t="",r=0;;){var o=e[r++],s=(o>127)+(o>223)+(o>239);if(r+s>e.length)return{s:t,r:Rw(e,r-1)};s?s==3?(o=((o&15)<<18|(e[r++]&63)<<12|(e[r++]&63)<<6|e[r++]&63)-65536,t+=String.fromCharCode(55296|o>>10,56320|o&1023)):s&1?t+=String.fromCharCode((o&31)<<6|e[r++]&63):t+=String.fromCharCode((o&15)<<12|(e[r++]&63)<<6|e[r++]&63):t+=String.fromCharCode(o)}};function Fce(e,t){var r;if(zd)return zd.decode(e);var o=Ice(e),s=o.s,r=o.r;return r.length&&$n(8),s}const td=()=>{},wn=()=>Promise.resolve();function Hce(){const e=er({state:new Ub,waitForConnection:f,reconnect:s,ws:new EventTarget});e.state.filesMap=er(e.state.filesMap),e.state.idMap=er(e.state.idMap);let t;const r={getFiles:()=>t.files,getPaths:()=>t.paths,getConfig:()=>t.config,getModuleGraph:async(d,h)=>{var g;return(g=t.moduleGraph[d])==null?void 0:g[h]},getUnhandledErrors:()=>t.unhandledErrors,getTransformResult:wn,onDone:td,onTaskUpdate:td,writeFile:wn,rerun:wn,updateSnapshot:wn,resolveSnapshotPath:wn,snapshotSaved:wn,onAfterSuiteRun:wn,onCancel:wn,getCountOfFailedTests:()=>0,sendLog:wn,resolveSnapshotRawPath:wn,readSnapshotFile:wn,saveSnapshotFile:wn,readTestFile:async d=>t.sources[d],removeSnapshotFile:wn,onUnhandledError:td,saveTestFile:wn,getProvidedContext:()=>({}),getTestFiles:wn};e.rpc=r;let o;function s(){c()}async function c(){var v;const d=await fetch(window.METADATA_PATH),h=((v=d.headers.get("content-type"))==null?void 0:v.toLowerCase())||"";if(h.includes("application/gzip")||h.includes("application/x-gzip")){const y=new Uint8Array(await d.arrayBuffer()),b=Fce(Dce(y));t=Od(b)}else t=Od(await d.text());const g=new Event("open");e.ws.dispatchEvent(g)}c();function f(){return o}return e}const Jc=Be("idle"),qce=Me(()=>Jc.value==="idle"),Ii=Be([]),Id=Fr([]),In=Fr([]),_r=Pu("vitest-ui_task-tree-opened",[],{shallow:!0}),Qc=Me(()=>new Set(_r.value)),on=Pu("vitest-ui_task-tree-filter",{expandAll:void 0,failed:!1,success:!1,skipped:!1,onlyTests:!1,search:""}),On=Be(on.value.search),Bce={"&":"&","<":"<",">":">",'"':""","'":"'"};function Dw(e){return e.replace(/[&<>"']/g,t=>Bce[t])}const Wce=Me(()=>{const e=On.value.toLowerCase();return e.length?new RegExp(`(${Dw(e)})`,"gi"):null}),zw=Me(()=>On.value.trim()!==""),Qe=er({failed:on.value.failed,success:on.value.success,skipped:on.value.skipped,onlyTests:on.value.onlyTests}),Fd=Me(()=>!!(Qe.failed||Qe.success||Qe.skipped)),Ru=Fr([]),As=Be(!1),n0=Me(()=>{const e=on.value.expandAll;return _r.value.length>0?e!==!0:e!==!1}),Uce=Me(()=>{const e=zw.value,t=Fd.value,r=Qe.onlyTests,o=Ce.summary.filesFailed,s=Ce.summary.filesSuccess,c=Ce.summary.filesSkipped,f=Ce.summary.filesRunning,d=Ru.value;return Ce.collectTestsTotal(e||t,r,d,{failed:o,success:s,skipped:c,running:f})});function Du(e){return Object.hasOwnProperty.call(e,"tasks")}function Vce(e,t){return typeof e!="string"||typeof t!="string"?!1:e.toLowerCase().includes(t.toLowerCase())}function Iw(e){if(!e)return"";const t=e.split("").reduce((o,s,c)=>o+s.charCodeAt(0)+c,0),r=["blue","yellow","cyan","green","magenta"];return r[t%r.length]}function jce(e){return e.type==="test"||e.type==="custom"}function Gce(e){return e.mode==="run"&&(e.type==="test"||e.type==="custom")}function kn(e){return e.type==="file"}function Kce(e){return e.type==="suite"}function ai(e){return e.type==="file"||e.type==="suite"}function Xce(e=Ce.root.tasks){return e.sort((t,r)=>`${t.filepath}:${t.projectName}`.localeCompare(`${r.filepath}:${r.projectName}`))}function Jl(e,t=!1){var o,s,c,f;let r=Ce.nodes.get(e.id);if(r?(r.state=(o=e.result)==null?void 0:o.state,r.mode=e.mode,r.duration=(s=e.result)==null?void 0:s.duration,r.collectDuration=e.collectDuration,r.setupDuration=e.setupDuration,r.environmentLoad=e.environmentLoad,r.prepareDuration=e.prepareDuration):(r={id:e.id,parentId:"root",name:e.name,mode:e.mode,expandable:!0,expanded:Qc.value.size>0&&Qc.value.has(e.id),type:"file",children:new Set,tasks:[],indent:0,duration:(c=e.result)==null?void 0:c.duration,filepath:e.filepath,projectName:e.projectName||"",projectNameColor:Iw(e.projectName),collectDuration:e.collectDuration,setupDuration:e.setupDuration,environmentLoad:e.environmentLoad,prepareDuration:e.prepareDuration,state:(f=e.result)==null?void 0:f.state},Ce.nodes.set(e.id,r),Ce.root.tasks.push(r)),t)for(let d=0;d0),[r,o]}function Yce(e){const t=Ce.nodes.get(e);if(!t)return;const r=yt.state.idMap.get(e);!r||!Es(r)||pa(t.parentId,r,!1)}function pa(e,t,r){var c,f,d,h,g,v;const o=Ce.nodes.get(e);let s;if(o&&(s=Ce.nodes.get(t.id),s?(o.children.has(t.id)||(o.tasks.push(s),o.children.add(t.id)),s.mode=t.mode,s.duration=(c=t.result)==null?void 0:c.duration,s.state=(f=t.result)==null?void 0:f.state,Kce(s)&&(s.typecheck=!!t.meta&&"typecheck"in t.meta)):(Es(t)?s={id:t.id,fileId:t.file.id,parentId:e,name:t.name,mode:t.mode,type:t.type,expandable:!1,expanded:!1,indent:o.indent+1,duration:(d=t.result)==null?void 0:d.duration,state:(h=t.result)==null?void 0:h.state}:s={id:t.id,fileId:t.file.id,parentId:e,name:t.name,mode:t.mode,typecheck:!!t.meta&&"typecheck"in t.meta,type:"suite",expandable:!0,expanded:Qc.value.size>0&&Qc.value.has(t.id),children:new Set,tasks:[],indent:o.indent+1,duration:(g=t.result)==null?void 0:g.duration,state:(v=t.result)==null?void 0:v.state},Ce.nodes.set(t.id,s),o.tasks.push(s),o.children.add(t.id)),s&&r&&Du(t)))for(let y=0;yir(o.id))}function*Hw(e,t){for(const r of Xce())yield*qw(r,e,t)}function*qw(e,t,r){const o=new Set,s=new Map,c=[];let f;if(r.onlyTests)for(const[y,b]of Hd(e,o,x=>r0(x,t,r)))c.push([y,b]);else{for(const[y,b]of Hd(e,o,x=>r0(x,t,r)))ai(b)?(s.set(b.id,y),kn(b)?(y&&(f=b.id),c.push([y,b])):c.push([y||s.get(b.parentId)===!0,b])):c.push([y||s.get(b.parentId)===!0,b]);!f&&!kn(e)&&"fileId"in e&&(f=e.fileId)}const d=new Set,h=[...Qce(c,r.onlyTests,o,d,f)].reverse(),g=Ce.nodes,v=new Set(h.filter(y=>{var b;return kn(y)||ai(y)&&((b=g.get(y.parentId))==null?void 0:b.expanded)}).map(y=>y.id));yield*h.filter(y=>{var b;return kn(y)||v.has(y.parentId)&&((b=g.get(y.parentId))==null?void 0:b.expanded)})}function Jce(e,t,r,o,s){if(o){if(kn(t))return s.has(t.id)?t:void 0;if(r.has(t.id)){const c=Ce.nodes.get(t.parentId);return c&&kn(c)&&s.add(c.id),t}}else if(e||r.has(t.id)||s.has(t.id)){const c=Ce.nodes.get(t.parentId);return c&&kn(c)&&s.add(c.id),t}}function*Qce(e,t,r,o,s){for(let c=e.length-1;c>=0;c--){const[f,d]=e[c],h=ai(d);if(!t&&s&&r.has(s)&&"fileId"in d&&d.fileId===s){h&&r.add(d.id);let g=Ce.nodes.get(d.parentId);for(;g;)r.add(g.id),kn(g)&&o.add(g.id),g=Ce.nodes.get(g.parentId);yield d;continue}if(h){const g=Jce(f,d,r,t,o);g&&(yield g)}else if(f){const g=Ce.nodes.get(d.parentId);g&&kn(g)&&o.add(g.id),yield d}}}function eue(e,t){var r,o;return(t.success||t.failed)&&"result"in e&&(t.success&&((r=e.result)==null?void 0:r.state)==="pass"||t.failed&&((o=e.result)==null?void 0:o.state)==="fail")?!0:t.skipped&&"mode"in e?e.mode==="skip"||e.mode==="todo":!1}function Bw(e,t,r){if(t.length===0||Vce(e.name,t))if(r.success||r.failed||r.skipped){if(eue(e,r))return!0}else return!0;return!1}function*Hd(e,t,r){const o=r(e);if(o)if(jce(e)){let s=Ce.nodes.get(e.parentId);for(;s;)t.add(s.id),s=Ce.nodes.get(s.parentId)}else if(kn(e))t.add(e.id);else{t.add(e.id);let s=Ce.nodes.get(e.parentId);for(;s;)t.add(s.id),s=Ce.nodes.get(s.parentId)}if(yield[o,e],ai(e))for(let s=0;sir(o.id))}function rue(e,t){if(e.size)for(const r of In.value)e.has(r.id)&&(r.expanded=!0);else t&&Gh(In.value.filter(kn),!0)}function Gh(e,t){for(const r of e)ai(r)&&(r.expanded=!0,Gh(r.tasks,!1));t&&(on.value.expandAll=!1,_r.value=[])}function*iue(e,t){const r=e.id,o=new Set(Array.from(t).map(s=>s.id));for(const s of In.value)s.id===r?(s.expanded=!0,o.has(s.id)||(yield e),yield*t):o.has(s.id)||(yield s)}function oue(e,t,r,o){e.map(s=>[`${s.filepath}:${s.projectName||""}`,s]).sort(([s],[c])=>s.localeCompare(c)).map(([,s])=>Jl(s,t)),Id.value=[...Ce.root.tasks],jh(r.trim(),{failed:o.failed,success:o.success,skipped:o.skipped,onlyTests:o.onlyTests})}function sue(e){queueMicrotask(()=>{const t=Ce.pendingTasks,r=yt.state.idMap;for(const o of e)if(o[1]){const c=r.get(o[0]);if(c){let f=t.get(c.file.id);f||(f=new Set,t.set(c.file.id,f)),f.add(c.id)}}})}function i0(e,t,r,o,s){e&&due(r);const c=!e;queueMicrotask(()=>{t?cue(c):uue(c)}),queueMicrotask(()=>{hue(r)}),queueMicrotask(()=>{t&&(r.failedSnapshot=Id.value&&Fh(Id.value.map(f=>ir(f.id))),r.failedSnapshotEnabled=!0)}),queueMicrotask(()=>{fue(o,s,t)})}function*lue(){yield*In.value.filter(Gce)}function aue(){const e=yt.state.idMap;let t;for(const r of lue())t=e.get(r.parentId),t&&Du(t)&&t.mode==="todo"&&(t=e.get(r.id),t&&(t.mode="todo"))}function cue(e){const t=yt.state.getFiles(),r=Ce.nodes,o=t.filter(c=>!r.has(c.id));for(let c=0;c!r.has(d)).map(d=>ir(d)).filter(Boolean);let s;for(let d=0;dc.get(y)).filter(Boolean)))}}function fue(e,t,r=!1){const o=on.value.expandAll,s=o!==!0,c=new Set(_r.value),f=c.size>0&&o===!1||s;queueMicrotask(()=>{o0(e,t,r)}),As.value||queueMicrotask(()=>{(In.value.length||r)&&(As.value=!0)}),f&&(queueMicrotask(()=>{rue(c,r),s&&(on.value.expandAll=!1)}),queueMicrotask(()=>{o0(e,t,r)}))}function o0(e,t,r){jh(e,t),r&&aue()}function eu(e){let t;for(let r=0;rt.has(y.id)).map(y=>[y.id,y])),o=Array.from(r.values()).map(y=>[y.id,ir(y.id)]),s={files:r.size,time:"",filesFailed:0,filesSuccess:0,filesIgnore:0,filesRunning:0,filesSkipped:0,filesTodo:0,filesSnapshotFailed:0,testsFailed:0,testsSuccess:0,testsIgnore:0,testsSkipped:0,testsTodo:0,totalTests:0,failedSnapshot:!1,failedSnapshotEnabled:!1};let c=0;for(const[y,b]of o){if(!b)continue;const x=r.get(y);x&&(x.mode=b.mode,x.setupDuration=b.setupDuration,x.prepareDuration=b.prepareDuration,x.environmentLoad=b.environmentLoad,x.collectDuration=b.collectDuration,x.duration=(f=b.result)==null?void 0:f.duration,x.state=(d=b.result)==null?void 0:d.state),c+=Math.max(0,b.collectDuration||0),c+=Math.max(0,b.setupDuration||0),c+=Math.max(0,((h=b.result)==null?void 0:h.duration)||0),c+=Math.max(0,b.environmentLoad||0),c+=Math.max(0,b.prepareDuration||0),s.time=c>1e3?`${(c/1e3).toFixed(2)}s`:`${Math.round(c)}ms`,((g=b.result)==null?void 0:g.state)==="fail"?s.filesFailed++:((v=b.result)==null?void 0:v.state)==="pass"?s.filesSuccess++:b.mode==="skip"?(s.filesIgnore++,s.filesSkipped++):b.mode==="todo"?(s.filesIgnore++,s.filesTodo++):s.filesRunning++;const{failed:T,success:E,skipped:M,total:N,ignored:L,todo:O}=Ww(b);s.totalTests+=N,s.testsFailed+=T,s.testsSuccess+=E,s.testsSkipped+=M,s.testsTodo+=O,s.testsIgnore+=L}e.files=s.files,e.time=s.time,e.filesFailed=s.filesFailed,e.filesSuccess=s.filesSuccess,e.filesIgnore=s.filesIgnore,e.filesRunning=s.filesRunning,e.filesSkipped=s.filesSkipped,e.filesTodo=s.filesTodo,e.testsFailed=s.testsFailed,e.testsSuccess=s.testsSuccess,e.testsFailed=s.testsFailed,e.testsTodo=s.testsTodo,e.testsIgnore=s.testsIgnore,e.testsSkipped=s.testsSkipped,e.totalTests=s.totalTests}function Ww(e,t="",r){var s,c;const o={failed:0,success:0,skipped:0,running:0,total:0,ignored:0,todo:0};for(const f of Uw(e))(!r||Zce(f,t,r))&&(o.total++,((s=f.result)==null?void 0:s.state)==="fail"?o.failed++:((c=f.result)==null?void 0:c.state)==="pass"?o.success++:f.mode==="skip"?(o.ignored++,o.skipped++):f.mode==="todo"&&(o.ignored++,o.todo++));return o.running=o.total-o.failed-o.success-o.ignored,o}function pue(e,t,r,o,s,c){var f,d;if(t)return r.map(h=>Ww(h,s,c)).reduce((h,{failed:g,success:v,ignored:y,running:b})=>(h.failed+=g,h.success+=v,h.skipped+=y,h.running+=b,h),{failed:0,success:0,skipped:0,running:0});if(e){const h={failed:0,success:0,skipped:0,running:0},g=!c.success&&!c.failed,v=c.failed||g,y=c.success||g;for(const b of r)((f=b.result)==null?void 0:f.state)==="fail"?h.failed+=v?1:0:((d=b.result)==null?void 0:d.state)==="pass"?h.success+=y?1:0:b.mode==="skip"||b.mode==="todo"||h.running++;return h}return o}function*Uw(e){const t=zh(e);let r;for(let o=0;othis.endRun(),this.resumeEndTimeout),this.collect(!0,!1)}resumeRun(t){sue(t),this.onTaskUpdateCalled||(clearTimeout(this.resumeEndRunId),this.onTaskUpdateCalled=!0,this.collect(!0,!1,!1),this.rafCollector.resume())}endRun(){this.rafCollector.pause(),this.onTaskUpdateCalled=!1,this.collect(!1,!0)}runCollect(){this.collect(!1,!1)}collect(t,r,o=!0){o?queueMicrotask(()=>{i0(t,r,this.summary,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})}):i0(t,r,this.summary,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})}collectTestsTotal(t,r,o,s){return pue(t,r,o,s,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})}collapseNode(t){queueMicrotask(()=>{gue(t)})}expandNode(t){queueMicrotask(()=>{tue(t,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})})}collapseAllNodes(){queueMicrotask(()=>{vue()})}expandAllNodes(){queueMicrotask(()=>{nue(On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})})}filterNodes(){queueMicrotask(()=>{jh(On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})})}}const Ce=new yue,yt=function(){return Pr?Hce():eL(rL,{reactive:(t,r)=>r==="state"?er(t):Fr(t),handlers:{onTaskUpdate(t){Ce.resumeRun(t),Jc.value="running"},onFinished(t,r){Ce.endRun(),Jc.value="idle",Ii.value=(r||[]).map(gw)},onFinishedReportCoverage(){const t=document.querySelector("iframe#vitest-ui-coverage");t instanceof HTMLIFrameElement&&t.contentWindow&&t.contentWindow.location.reload()}}})}(),zu=Fr({}),So=Be("CONNECTING"),Xt=Me(()=>{const e=Zi.value;return e?ir(e):void 0}),jw=Me(()=>Ih(Xt.value).map(e=>(e==null?void 0:e.logs)||[]).flat()||[]);function ir(e){const t=yt.state.idMap.get(e);return t||void 0}const bue=Me(()=>So.value==="OPEN"),nd=Me(()=>So.value==="CONNECTING");Me(()=>So.value==="CLOSED");function wue(){return Kh(yt.state.getFiles())}function xue(e){const t=Ce.nodes;e.forEach(r=>{delete r.result,Ih(r).forEach(s=>{if(delete s.result,t.has(s.id)){const c=t.get(s.id);c&&(c.state=void 0,c.duration=void 0)}});const o=t.get(r.id);o&&(o.state=void 0,o.duration=void 0,kn(o)&&(o.collectDuration=void 0))})}function Kh(e){return xue(e),Ce.startRun(),yt.rpc.rerun(e.map(t=>t.filepath))}const No=window.__vitest_browser_runner__;Ht(()=>yt.ws,e=>{So.value=Pr?"OPEN":"CONNECTING",e.addEventListener("open",async()=>{So.value="OPEN",yt.state.filesMap.clear();const[t,r,o]=await Promise.all([yt.rpc.getFiles(),yt.rpc.getConfig(),yt.rpc.getUnhandledErrors()]);if(r.standalone){const c=(await yt.rpc.getTestFiles()).map(([{name:f,root:d},h])=>Bb(h,d,f));yt.state.collectFiles(c)}else Ce.loadFiles(t),yt.state.collectFiles(t),Ce.startRun();Ii.value=(o||[]).map(gw),zu.value=r}),e.addEventListener("close",()=>{setTimeout(()=>{So.value==="CONNECTING"&&(So.value="CLOSED")},1e3)})},{immediate:!0});const _ue={"text-2xl":""},Sue={"text-lg":"",op50:""},kue=ft({__name:"ConnectionOverlay",setup(e){return(t,r)=>q(bue)?et("",!0):(oe(),me("div",{key:0,fixed:"","inset-0":"",p2:"","z-10":"","select-none":"",text:"center sm",bg:"overlay","backdrop-blur-sm":"","backdrop-saturate-0":"",onClick:r[0]||(r[0]=(...o)=>q(yt).reconnect&&q(yt).reconnect(...o))},[Y("div",{"h-full":"",flex:"~ col gap-2","items-center":"","justify-center":"",class:lt(q(nd)?"animate-pulse":"")},[Y("div",{text:"5xl",class:lt(q(nd)?"i-carbon:renew animate-spin animate-reverse":"i-carbon-wifi-off")},null,2),Y("div",_ue,qe(q(nd)?"Connecting...":"Disconnected"),1),Y("div",Sue," Check your terminal or start a new server with `"+qe(q(No)?`vitest --browser=${q(No).config.browser.name}`:"vitest --ui")+"` ",1)],2)]))}}),Cue=["aria-label","opacity","disabled","hover"],hi=ft({__name:"IconButton",props:{icon:{},title:{},disabled:{type:Boolean},active:{type:Boolean}},setup(e){return(t,r)=>(oe(),me("button",{"aria-label":t.title,role:"button",opacity:t.disabled?10:70,rounded:"",disabled:t.disabled,hover:t.disabled||t.active?"":"bg-active op100",class:lt(["w-1.4em h-1.4em flex",[{"bg-gray-500:35 op100":t.active}]])},[dn(t.$slots,"default",{},()=>[Y("span",{class:lt(t.icon),ma:"",block:""},null,2)])],10,Cue))}}),Jr=Be("full"),Bd=Be();function rd(e){const t=document.querySelector("#tester-ui");t&&(t.style.pointerEvents=e?"none":"")}const Ms=Be(),ys=Be(!0),Ji=Be(!1),tu=Be(!0),us=Me(()=>{var e;return(e=zu.value)==null?void 0:e.coverage}),Wd=Me(()=>{var e;return(e=us.value)==null?void 0:e.enabled}),fs=Me(()=>Wd.value&&!!us.value.htmlReporter),Ec=Pu("vitest-ui_splitpanes-detailSizes",[33,67],{initOnMounted:!0}),s0=Me(()=>{var e;if(fs.value){const t=us.value.reportsDirectory.lastIndexOf("/"),r=(e=us.value.htmlReporter)==null?void 0:e.subdir;return r?`/${us.value.reportsDirectory.slice(t+1)}/${r}/index.html`:`/${us.value.reportsDirectory.slice(t+1)}/index.html`}});Ht(Jc,e=>{tu.value=e==="running"},{immediate:!0});function Tue(){const e=Zi.value;if(e&&e.length>0){const t=ir(e);t?(Ms.value=t,ys.value=!1,Ji.value=!1):lce(()=>yt.state.getFiles(),()=>{Ms.value=ir(e),ys.value=!1,Ji.value=!1})}return ys}function nu(e){ys.value=e,Ji.value=!1,e&&(Ms.value=void 0,Zi.value="")}function Gw(e,t=null){Zi.value=e.file.id,Rd.value=null,t!=null&&(ln(()=>{Rd.value=t}),Bn.value="editor"),Ms.value=ir(e.file.id),nu(!1)}function Eue(){Ji.value=!0,ys.value=!1,Ms.value=void 0,Zi.value=""}const Lue={setCurrentFileId(e){Zi.value=e,Ms.value=ir(e),nu(!1)},async setIframeViewport(e,t){Jr.value="custom",Bd.value=[e,t],await Kw(e,t)}};window.__vitest_ui_api__=Lue;function Aue(){const e=Xh(),r=document.querySelector("#details-splitpanes").clientWidth,o=e.clientWidth,s=Math.min(o/r*100,95),c=100-s;Ec.value=[s,c]}function Xh(){return document.querySelector("#tester-ui iframe[data-vitest]")}async function Kw(e,t){const r=Xh();r.style.width=typeof e=="string"?e:`${e}px`,r.style.height=typeof t=="string"?t:`${t}px`,await new Promise(o=>requestAnimationFrame(o)),Aue()}const Mue={h:"full",flex:"~ col"},Nue=Y("div",{p:"3","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},[Y("div",{class:"i-carbon-content-delivery-network"}),Y("span",{"pl-1":"","font-bold":"","text-sm":"","flex-auto":"","ws-nowrap":"","overflow-hidden":"",truncate:""},"Browser UI")],-1),$ue={p:"l3 y2 r2",flex:"~ gap-2","items-center":"","bg-header":"",border:"b-2 base"},Oue=Y("div",{"flex-auto":"",class:"scrolls"},[Y("div",{id:"tester-ui",class:"flex h-full justify-center items-center font-light op70",style:{overflow:"auto",width:"100%",height:"100%"}}," Select a test to run ")],-1),Pue=ft({__name:"BrowserIframe",setup(e){const t={"small-mobile":["320px","568px"],"large-mobile":["414px","896px"],tablet:["834px","1112px"],full:["100%","100%"],custom:null};async function r(o){if(Jr.value===o?Jr.value=Bd.value?"custom":"full":Jr.value=o,!Xh()){console.warn("Iframe not found");return}const[c,f]=t[Jr.value]||Bd.value||t.full;await Kw(c,f)}return(o,s)=>{const c=hi,f=Hr("tooltip");return oe(),me("div",Mue,[Nue,Y("div",$ue,[_t(Oe(c,{title:"Flexible",icon:"i-carbon:fit-to-screen",active:q(Jr)==="full",onClick:s[0]||(s[0]=d=>r("full"))},null,8,["active"]),[[f,"Flexible",void 0,{bottom:!0}]]),_t(Oe(c,{title:"Small mobile",icon:"i-carbon:mobile",active:q(Jr)==="small-mobile",onClick:s[1]||(s[1]=d=>r("small-mobile"))},null,8,["active"]),[[f,"Small mobile",void 0,{bottom:!0}]]),_t(Oe(c,{title:"Large mobile",icon:"i-carbon:mobile-add",active:q(Jr)==="large-mobile",onClick:s[2]||(s[2]=d=>r("large-mobile"))},null,8,["active"]),[[f,"Large mobile",void 0,{bottom:!0}]]),_t(Oe(c,{title:"Tablet",icon:"i-carbon:tablet",active:q(Jr)==="tablet",onClick:s[3]||(s[3]=d=>r("tablet"))},null,8,["active"]),[[f,"Tablet",void 0,{bottom:!0}]])]),Oue])}}}),Xw=ft({__name:"Modal",props:Ic({direction:{default:"bottom"}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Th(e,"modelValue"),r=Me(()=>{switch(e.direction){case"bottom":return"bottom-0 left-0 right-0 border-t";case"top":return"top-0 left-0 right-0 border-b";case"left":return"bottom-0 left-0 top-0 border-r";case"right":return"bottom-0 top-0 right-0 border-l";default:return""}}),o=Me(()=>{switch(e.direction){case"bottom":return"translateY(100%)";case"top":return"translateY(-100%)";case"left":return"translateX(-100%)";case"right":return"translateX(100%)";default:return""}}),s=()=>t.value=!1;return(c,f)=>(oe(),me("div",{class:lt(["fixed inset-0 z-40",t.value?"":"pointer-events-none"])},[Y("div",{class:lt(["bg-base inset-0 absolute transition-opacity duration-500 ease-out",t.value?"opacity-50":"opacity-0"]),onClick:s},null,2),Y("div",{class:lt(["bg-base border-base absolute transition-all duration-200 ease-out scrolls",[q(r)]]),style:Zt(t.value?{}:{transform:q(o)})},[dn(c.$slots,"default")],6)],2))}}),Rue=e=>(la("data-v-93900314"),e=e(),aa(),e),Due={"w-350":"","max-w-screen":"","h-full":"",flex:"","flex-col":""},zue={"p-4":"",relative:"",border:"base b"},Iue=Rue(()=>Y("p",null,"Screenshot error",-1)),Fue={op50:"","font-mono":"","text-sm":""},Hue={op50:"","font-mono":"","text-sm":""},que={class:"scrolls",grid:"~ cols-1 rows-[min-content]","p-4":""},Bue=["src","alt"],Wue={key:1},Uue=ft({__name:"ScreenshotError",props:{file:{},name:{},url:{}},emits:["close"],setup(e,{emit:t}){const r=t;return _w("Escape",()=>{r("close")}),(o,s)=>{const c=hi;return oe(),me("div",Due,[Y("div",zue,[Iue,Y("p",Fue,qe(o.file),1),Y("p",Hue,qe(o.name),1),Oe(c,{icon:"i-carbon:close",title:"Close",absolute:"","top-5px":"","right-5px":"","text-2xl":"",onClick:s[0]||(s[0]=f=>r("close"))})]),Y("div",que,[o.url?(oe(),me("img",{key:0,src:o.url,alt:`Screenshot error for '${o.name}' test in file '${o.file}'`,border:"base t r b l dotted red-500"},null,8,Bue)):(oe(),me("div",Wue," Something was wrong, the image cannot be resolved. "))])])}}}),Vue=di(Uue,[["__scopeId","data-v-93900314"]]);function Dl(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const ga=mce(),jue=sce(ga),Gue={class:"scrolls scrolls-rounded task-error"},Kue=["onClickPassive"],Xue=["innerHTML"],Yue=ft({__name:"ViewReportError",props:{root:{},filename:{},error:{}},setup(e){const t=e;function r(f){return f.startsWith(t.root)?f.slice(t.root.length):f}const o=Me(()=>Bh(ga.value)),s=Me(()=>{var f;return!!((f=t.error)!=null&&f.diff)}),c=Me(()=>t.error.diff?o.value.toHtml(Dl(t.error.diff)):void 0);return(f,d)=>{const h=Hr("tooltip");return oe(),me("div",Gue,[Y("pre",null,[Y("b",null,qe(f.error.name||f.error.nameStr),1),gt(": "+qe(f.error.message),1)]),(oe(!0),me(ut,null,si(f.error.stacks,(g,v)=>(oe(),me("div",{key:v,class:"op80 flex gap-x-2 items-center","data-testid":"stack"},[Y("pre",null," - "+qe(r(g.file))+":"+qe(g.line)+":"+qe(g.column),1),q(Jae)(g.file,f.filename)?_t((oe(),me("div",{key:0,class:"i-carbon-launch c-red-600 dark:c-red-400 hover:cursor-pointer min-w-1em min-h-1em",tabindex:"0","aria-label":"Open in Editor",onClickPassive:y=>q(pw)(g.file,g.line,g.column)},null,40,Kue)),[[h,"Open in Editor",void 0,{bottom:!0}]]):et("",!0)]))),128)),q(s)?(oe(),me("pre",{key:0,"data-testid":"diff",innerHTML:q(c)},null,8,Xue)):et("",!0)])}}}),Zue=di(Yue,[["__scopeId","data-v-9dd6eaea"]]),Jue={"h-full":"",class:"scrolls"},Que={flex:"~ gap-2 items-center"},efe={key:0,class:"scrolls scrolls-rounded task-error","data-testid":"task-error"},tfe=["innerHTML"],nfe={key:1,bg:"green-500/10",text:"green-500 sm",p:"x4 y2","m-2":"",rounded:""},rfe=ft({__name:"ViewReport",props:{file:{}},setup(e){const t=e;function r(b,x){var T;return((T=b.result)==null?void 0:T.state)!=="fail"?[]:b.type==="test"||b.type==="custom"?[{...b,level:x}]:[{...b,level:x},...b.tasks.flatMap(E=>r(E,x+1))]}function o(b,x){var M,N,L;let T="";(M=x.message)!=null&&M.includes("\x1B")&&(T=`${x.nameStr||x.name}: ${b.toHtml(Dl(x.message))}`);const E=(N=x.stackStr)==null?void 0:N.includes("\x1B");return(E||(L=x.stack)!=null&&L.includes("\x1B"))&&(T.length>0?T+=b.toHtml(Dl(E?x.stackStr:x.stack)):T=`${x.nameStr||x.name}: ${x.message}${b.toHtml(Dl(E?x.stackStr:x.stack))}`),T.length>0?T:null}function s(b,x){const T=Bh(b);return x.map(E=>{var L;const M=E.result;if(!M)return E;const N=(L=M.errors)==null?void 0:L.map(O=>o(T,O)).filter(O=>O!=null).join("

");return N!=null&&N.length&&(M.htmlError=N),E})}const c=Me(()=>{var M,N;const b=t.file,x=((M=b==null?void 0:b.tasks)==null?void 0:M.flatMap(L=>r(L,0)))??[],T=b==null?void 0:b.result;if((N=T==null?void 0:T.errors)==null?void 0:N[0]){const L={id:b.id,file:b,name:b.name,level:0,type:"suite",mode:"run",meta:{},tasks:[],result:T};x.unshift(L)}return x.length>0?s(ga.value,x):x});function f(b){var T;const x=(T=b.meta)==null?void 0:T.failScreenshotPath;x&&fetch(`/__open-in-editor?file=${encodeURIComponent(x)}`)}const d=Be(!1),h=Be(Date.now()),g=Be(),v=Me(()=>{var T;const b=(T=g.value)==null?void 0:T.meta.failScreenshotPath,x=h.value;return b?`/__screenshot-error?file=${encodeURIComponent(b)}&t=${x}`:void 0});function y(b){g.value=b,h.value=Date.now(),d.value=!0}return(b,x)=>{const T=hi,E=Zue,M=Vue,N=Xw,L=Hr("tooltip");return oe(),me("div",Jue,[q(c).length?(oe(!0),me(ut,{key:0},si(q(c),O=>{var A,H,z,J;return oe(),me("div",{key:O.id},[Y("div",{bg:"red-500/10",text:"red-500 sm",p:"x3 y2","m-2":"",rounded:"",style:Zt({"margin-left":`${(A=O.result)!=null&&A.htmlError?.5:2*O.level+.5}rem`})},[Y("div",Que,[Y("span",null,qe(O.name),1),q(No)&&((H=O.meta)!=null&&H.failScreenshotPath)?(oe(),me(ut,{key:0},[_t(Oe(T,{class:"!op-100",icon:"i-carbon:image",title:"View screenshot error",onClick:re=>y(O)},null,8,["onClick"]),[[L,"View screenshot error",void 0,{bottom:!0}]]),_t(Oe(T,{class:"!op-100",icon:"i-carbon:image-reference",title:"Open screenshot error in editor",onClick:re=>f(O)},null,8,["onClick"]),[[L,"Open screenshot error in editor",void 0,{bottom:!0}]])],64)):et("",!0)]),(z=O.result)!=null&&z.htmlError?(oe(),me("div",efe,[Y("pre",{innerHTML:O.result.htmlError},null,8,tfe)])):(J=O.result)!=null&&J.errors?(oe(!0),me(ut,{key:1},si(O.result.errors,(re,te)=>{var j;return oe(),ot(E,{key:te,error:re,filename:(j=b.file)==null?void 0:j.name,root:q(zu).root},null,8,["error","filename","root"])}),128)):et("",!0)],4)])}),128)):(oe(),me("div",nfe," All tests passed in this file ")),q(No)?(oe(),ot(N,{key:2,modelValue:q(d),"onUpdate:modelValue":x[1]||(x[1]=O=>Ot(d)?d.value=O:null),direction:"right"},{default:st(()=>[q(g)?(oe(),ot(zy,{key:0},{default:st(()=>[Oe(M,{file:q(g).file.filepath,name:q(g).name,url:q(v),onClose:x[0]||(x[0]=O=>d.value=!1)},null,8,["file","name","url"])]),_:1})):et("",!0)]),_:1},8,["modelValue"])):et("",!0)])}}}),ife=di(rfe,[["__scopeId","data-v-8f3dbcaa"]]),ofe={border:"b base","p-4":""},sfe=["innerHTML"],lfe=ft({__name:"ViewConsoleOutputEntry",props:{taskName:{},type:{},time:{},content:{}},setup(e){function t(r){return new Date(r).toLocaleTimeString()}return(r,o)=>(oe(),me("div",ofe,[Y("div",{"text-xs":"","mb-1":"",class:lt(r.type==="stderr"?"text-red-600 dark:text-red-300":"op30")},qe(t(r.time))+" | "+qe(r.taskName)+" | "+qe(r.type),3),Y("pre",{"data-type":"html",innerHTML:r.content},null,8,sfe)]))}}),afe={key:0,"h-full":"",class:"scrolls",flex:"","flex-col":"","data-testid":"logs"},cfe={key:1,p6:""},ufe=Y("pre",{inline:""},"console.log(foo)",-1),ffe=ft({__name:"ViewConsoleOutput",setup(e){const t=Me(()=>{const o=jw.value;if(o){const s=Bh(ga.value);return o.map(({taskId:c,type:f,time:d,content:h})=>({taskId:c,type:f,time:d,content:s.toHtml(Dl(h))}))}});function r(o){const s=o&&yt.state.idMap.get(o);return s&&"filepath"in s?s.name:(s?QE(s).slice(1).join(" > "):"-")||"-"}return(o,s)=>{var f;const c=lfe;return(f=q(t))!=null&&f.length?(oe(),me("div",afe,[(oe(!0),me(ut,null,si(q(t),({taskId:d,type:h,time:g,content:v})=>(oe(),me("div",{key:d,"font-mono":""},[Oe(c,{"task-name":r(d),type:h,time:g,content:v},null,8,["task-name","type","time","content"])]))),128))])):(oe(),me("p",cfe,[gt(" Log something in your test and it would print here. (e.g. "),ufe,gt(") ")]))}}});var Yw={exports:{}};(function(e,t){(function(r,o){e.exports=o()})(Mo,function(){var r=navigator.userAgent,o=navigator.platform,s=/gecko\/\d/i.test(r),c=/MSIE \d/.test(r),f=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(r),d=/Edge\/(\d+)/.exec(r),h=c||f||d,g=h&&(c?document.documentMode||6:+(d||f)[1]),v=!d&&/WebKit\//.test(r),y=v&&/Qt\/\d+\.\d+/.test(r),b=!d&&/Chrome\/(\d+)/.exec(r),x=b&&+b[1],T=/Opera\//.test(r),E=/Apple Computer/.test(navigator.vendor),M=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(r),N=/PhantomJS/.test(r),L=E&&(/Mobile\/\w+/.test(r)||navigator.maxTouchPoints>2),O=/Android/.test(r),A=L||O||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(r),H=L||/Mac/.test(o),z=/\bCrOS\b/.test(r),J=/win/i.test(o),re=T&&r.match(/Version\/(\d*\.\d*)/);re&&(re=Number(re[1])),re&&re>=15&&(T=!1,v=!0);var te=H&&(y||T&&(re==null||re<12.11)),j=s||h&&g>=9;function ne(n){return new RegExp("(^|\\s)"+n+"(?:$|\\s)\\s*")}var K=function(n,i){var a=n.className,l=ne(i).exec(a);if(l){var u=a.slice(l.index+l[0].length);n.className=a.slice(0,l.index)+(u?l[1]+u:"")}};function V(n){for(var i=n.childNodes.length;i>0;--i)n.removeChild(n.firstChild);return n}function I(n,i){return V(n).appendChild(i)}function k(n,i,a,l){var u=document.createElement(n);if(a&&(u.className=a),l&&(u.style.cssText=l),typeof i=="string")u.appendChild(document.createTextNode(i));else if(i)for(var p=0;p=i)return m+(i-p);m+=w-p,m+=a-m%a,p=w+1}}var $e=function(){this.id=null,this.f=null,this.time=0,this.handler=X(this.onTimeout,this)};$e.prototype.onTimeout=function(n){n.id=0,n.time<=+new Date?n.f():setTimeout(n.handler,n.time-+new Date)},$e.prototype.set=function(n,i){this.f=i;var a=+new Date+n;(!this.id||a=i)return l+Math.min(m,i-u);if(u+=p-l,u+=a-u%a,l=p+1,u>=i)return l}}var he=[""];function Se(n){for(;he.length<=n;)he.push(fe(he)+" ");return he[n]}function fe(n){return n[n.length-1]}function xe(n,i){for(var a=[],l=0;l"€"&&(n.toUpperCase()!=n.toLowerCase()||Re.test(n))}function Ge(n,i){return i?i.source.indexOf("\\w")>-1&&Ue(n)?!0:i.test(n):Ue(n)}function vt(n){for(var i in n)if(n.hasOwnProperty(i)&&n[i])return!1;return!0}var tt=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function nt(n){return n.charCodeAt(0)>=768&&tt.test(n)}function It(n,i,a){for(;(a<0?i>0:ia?-1:1;;){if(i==a)return i;var u=(i+a)/2,p=l<0?Math.ceil(u):Math.floor(u);if(p==i)return n(p)?i:a;n(p)?a=p:i=p+l}}function or(n,i,a,l){if(!n)return l(i,a,"ltr",0);for(var u=!1,p=0;pi||i==a&&m.to==i)&&(l(Math.max(m.from,i),Math.min(m.to,a),m.level==1?"rtl":"ltr",p),u=!0)}u||l(i,a,"ltr")}var Fn=null;function sr(n,i,a){var l;Fn=null;for(var u=0;ui)return u;p.to==i&&(p.from!=p.to&&a=="before"?l=u:Fn=u),p.from==i&&(p.from!=p.to&&a!="before"?l=u:Fn=u)}return l??Fn}var Qt=function(){var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",i="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function a(S){return S<=247?n.charAt(S):1424<=S&&S<=1524?"R":1536<=S&&S<=1785?i.charAt(S-1536):1774<=S&&S<=2220?"r":8192<=S&&S<=8203?"w":S==8204?"b":"L"}var l=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,u=/[stwN]/,p=/[LRr]/,m=/[Lb1n]/,w=/[1n]/;function _(S,$,D){this.level=S,this.from=$,this.to=D}return function(S,$){var D=$=="ltr"?"L":"R";if(S.length==0||$=="ltr"&&!l.test(S))return!1;for(var G=S.length,U=[],ee=0;ee-1&&(l[i]=u.slice(0,p).concat(u.slice(p+1)))}}}function Et(n,i){var a=Br(n,i);if(a.length)for(var l=Array.prototype.slice.call(arguments,2),u=0;u0}function lr(n){n.prototype.on=function(i,a){Fe(this,i,a)},n.prototype.off=function(i,a){en(this,i,a)}}function tn(n){n.preventDefault?n.preventDefault():n.returnValue=!1}function Po(n){n.stopPropagation?n.stopPropagation():n.cancelBubble=!0}function hn(n){return n.defaultPrevented!=null?n.defaultPrevented:n.returnValue==!1}function pi(n){tn(n),Po(n)}function Rs(n){return n.target||n.srcElement}function ar(n){var i=n.which;return i==null&&(n.button&1?i=1:n.button&2?i=3:n.button&4&&(i=2)),H&&n.ctrlKey&&i==1&&(i=3),i}var Bu=function(){if(h&&g<9)return!1;var n=k("div");return"draggable"in n||"dragDrop"in n}(),Ro;function ba(n){if(Ro==null){var i=k("span","​");I(n,k("span",[i,document.createTextNode("x")])),n.firstChild.offsetHeight!=0&&(Ro=i.offsetWidth<=1&&i.offsetHeight>2&&!(h&&g<8))}var a=Ro?k("span","​"):k("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return a.setAttribute("cm-text",""),a}var Ds;function gi(n){if(Ds!=null)return Ds;var i=I(n,document.createTextNode("AخA")),a=W(i,0,1).getBoundingClientRect(),l=W(i,1,2).getBoundingClientRect();return V(n),!a||a.left==a.right?!1:Ds=l.right-a.right<3}var Xn=` + +b`.split(/\n/).length!=3?function(n){for(var i=0,a=[],l=n.length;i<=l;){var u=n.indexOf(` +`,i);u==-1&&(u=n.length);var p=n.slice(i,n.charAt(u-1)=="\r"?u-1:u),m=p.indexOf("\r");m!=-1?(a.push(p.slice(0,m)),i+=m+1):(a.push(p),i=u+1)}return a}:function(n){return n.split(/\r\n?|\n/)},vi=window.getSelection?function(n){try{return n.selectionStart!=n.selectionEnd}catch{return!1}}:function(n){var i;try{i=n.ownerDocument.selection.createRange()}catch{}return!i||i.parentElement()!=n?!1:i.compareEndPoints("StartToEnd",i)!=0},wa=function(){var n=k("div");return"oncopy"in n?!0:(n.setAttribute("oncopy","return;"),typeof n.oncopy=="function")}(),cr=null;function Wu(n){if(cr!=null)return cr;var i=I(n,k("span","x")),a=i.getBoundingClientRect(),l=W(i,0,1).getBoundingClientRect();return cr=Math.abs(a.left-l.left)>1}var Do={},ur={};function fr(n,i){arguments.length>2&&(i.dependencies=Array.prototype.slice.call(arguments,2)),Do[n]=i}function ro(n,i){ur[n]=i}function zo(n){if(typeof n=="string"&&ur.hasOwnProperty(n))n=ur[n];else if(n&&typeof n.name=="string"&&ur.hasOwnProperty(n.name)){var i=ur[n.name];typeof i=="string"&&(i={name:i}),n=ze(i,n),n.name=i.name}else{if(typeof n=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(n))return zo("application/xml");if(typeof n=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(n))return zo("application/json")}return typeof n=="string"?{name:n}:n||{name:"null"}}function Io(n,i){i=zo(i);var a=Do[i.name];if(!a)return Io(n,"text/plain");var l=a(n,i);if(mi.hasOwnProperty(i.name)){var u=mi[i.name];for(var p in u)u.hasOwnProperty(p)&&(l.hasOwnProperty(p)&&(l["_"+p]=l[p]),l[p]=u[p])}if(l.name=i.name,i.helperType&&(l.helperType=i.helperType),i.modeProps)for(var m in i.modeProps)l[m]=i.modeProps[m];return l}var mi={};function Fo(n,i){var a=mi.hasOwnProperty(n)?mi[n]:mi[n]={};ae(i,a)}function kr(n,i){if(i===!0)return i;if(n.copyState)return n.copyState(i);var a={};for(var l in i){var u=i[l];u instanceof Array&&(u=u.concat([])),a[l]=u}return a}function zs(n,i){for(var a;n.innerMode&&(a=n.innerMode(i),!(!a||a.mode==n));)i=a.state,n=a.mode;return a||{mode:n,state:i}}function Ho(n,i,a){return n.startState?n.startState(i,a):!0}var At=function(n,i,a){this.pos=this.start=0,this.string=n,this.tabSize=i||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=a};At.prototype.eol=function(){return this.pos>=this.string.length},At.prototype.sol=function(){return this.pos==this.lineStart},At.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},At.prototype.next=function(){if(this.posi},At.prototype.eatSpace=function(){for(var n=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>n},At.prototype.skipToEnd=function(){this.pos=this.string.length},At.prototype.skipTo=function(n){var i=this.string.indexOf(n,this.pos);if(i>-1)return this.pos=i,!0},At.prototype.backUp=function(n){this.pos-=n},At.prototype.column=function(){return this.lastColumnPos0?null:(p&&i!==!1&&(this.pos+=p[0].length),p)}},At.prototype.current=function(){return this.string.slice(this.start,this.pos)},At.prototype.hideFirstChars=function(n,i){this.lineStart+=n;try{return i()}finally{this.lineStart-=n}},At.prototype.lookAhead=function(n){var i=this.lineOracle;return i&&i.lookAhead(n)},At.prototype.baseToken=function(){var n=this.lineOracle;return n&&n.baseToken(this.pos)};function Pe(n,i){if(i-=n.first,i<0||i>=n.size)throw new Error("There is no line "+(i+n.first)+" in the document.");for(var a=n;!a.lines;)for(var l=0;;++l){var u=a.children[l],p=u.chunkSize();if(i=n.first&&ia?Q(a,Pe(n,a).text.length):q1(i,Pe(n,i.line).text.length)}function q1(n,i){var a=n.ch;return a==null||a>i?Q(n.line,i):a<0?Q(n.line,0):n}function fp(n,i){for(var a=[],l=0;lthis.maxLookAhead&&(this.maxLookAhead=n),i},Cr.prototype.baseToken=function(n){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=n;)this.baseTokenPos+=2;var i=this.baseTokens[this.baseTokenPos+1];return{type:i&&i.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-n}},Cr.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Cr.fromSaved=function(n,i,a){return i instanceof xa?new Cr(n,kr(n.mode,i.state),a,i.lookAhead):new Cr(n,kr(n.mode,i),a)},Cr.prototype.save=function(n){var i=n!==!1?kr(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new xa(i,this.maxLookAhead):i};function dp(n,i,a,l){var u=[n.state.modeGen],p={};yp(n,i.text,n.doc.mode,a,function(S,$){return u.push(S,$)},p,l);for(var m=a.state,w=function(S){a.baseTokens=u;var $=n.state.overlays[S],D=1,G=0;a.state=!0,yp(n,i.text,$.mode,a,function(U,ee){for(var ce=D;GU&&u.splice(D,1,U,u[D+1],ve),D+=2,G=Math.min(U,ve)}if(ee)if($.opaque)u.splice(ce,D-ce,U,"overlay "+ee),D=ce+2;else for(;cen.options.maxHighlightLength&&kr(n.doc.mode,l.state),p=dp(n,i,l);u&&(l.state=u),i.stateAfter=l.save(!u),i.styles=p.styles,p.classes?i.styleClasses=p.classes:i.styleClasses&&(i.styleClasses=null),a===n.doc.highlightFrontier&&(n.doc.modeFrontier=Math.max(n.doc.modeFrontier,++n.doc.highlightFrontier))}return i.styles}function Fs(n,i,a){var l=n.doc,u=n.display;if(!l.mode.startState)return new Cr(l,!0,i);var p=B1(n,i,a),m=p>l.first&&Pe(l,p-1).stateAfter,w=m?Cr.fromSaved(l,m,p):new Cr(l,Ho(l.mode),p);return l.iter(p,i,function(_){Uu(n,_.text,w);var S=w.line;_.stateAfter=S==i-1||S%5==0||S>=u.viewFrom&&Si.start)return p}throw new Error("Mode "+n.name+" failed to advance stream.")}var gp=function(n,i,a){this.start=n.start,this.end=n.pos,this.string=n.current(),this.type=i||null,this.state=a};function vp(n,i,a,l){var u=n.doc,p=u.mode,m;i=Ke(u,i);var w=Pe(u,i.line),_=Fs(n,i.line,a),S=new At(w.text,n.options.tabSize,_),$;for(l&&($=[]);(l||S.posn.options.maxHighlightLength?(w=!1,m&&Uu(n,i,l,$.pos),$.pos=i.length,D=null):D=mp(Vu(a,$,l.state,G),p),G){var U=G[0].name;U&&(D="m-"+(D?U+" "+D:U))}if(!w||S!=D){for(;_<$.start;)_=Math.min($.start,_+5e3),u(_,S);S=D}$.start=$.pos}for(;_<$.pos;){var ee=Math.min($.pos,_+5e3);u(ee,S),_=ee}}function B1(n,i,a){for(var l,u,p=n.doc,m=a?-1:i-(n.doc.mode.innerMode?1e3:100),w=i;w>m;--w){if(w<=p.first)return p.first;var _=Pe(p,w-1),S=_.stateAfter;if(S&&(!a||w+(S instanceof xa?S.lookAhead:0)<=p.modeFrontier))return w;var $=de(_.text,null,n.options.tabSize);(u==null||l>$)&&(u=w-1,l=$)}return u}function W1(n,i){if(n.modeFrontier=Math.min(n.modeFrontier,i),!(n.highlightFrontiera;l--){var u=Pe(n,l).stateAfter;if(u&&(!(u instanceof xa)||l+u.lookAhead=i:p.to>i);(l||(l=[])).push(new _a(m,p.from,_?null:p.to))}}return l}function X1(n,i,a){var l;if(n)for(var u=0;u=i:p.to>i);if(w||p.from==i&&m.type=="bookmark"&&(!a||p.marker.insertLeft)){var _=p.from==null||(m.inclusiveLeft?p.from<=i:p.from0&&w)for(var Le=0;Le0)){var $=[_,1],D=_e(S.from,w.from),G=_e(S.to,w.to);(D<0||!m.inclusiveLeft&&!D)&&$.push({from:S.from,to:w.from}),(G>0||!m.inclusiveRight&&!G)&&$.push({from:w.to,to:S.to}),u.splice.apply(u,$),_+=$.length-3}}return u}function xp(n){var i=n.markedSpans;if(i){for(var a=0;ai)&&(!l||Gu(l,p.marker)<0)&&(l=p.marker)}return l}function Cp(n,i,a,l,u){var p=Pe(n,i),m=Ur&&p.markedSpans;if(m)for(var w=0;w=0&&D<=0||$<=0&&D>=0)&&($<=0&&(_.marker.inclusiveRight&&u.inclusiveLeft?_e(S.to,a)>=0:_e(S.to,a)>0)||$>=0&&(_.marker.inclusiveRight&&u.inclusiveLeft?_e(S.from,l)<=0:_e(S.from,l)<0)))return!0}}}function dr(n){for(var i;i=kp(n);)n=i.find(-1,!0).line;return n}function J1(n){for(var i;i=Ca(n);)n=i.find(1,!0).line;return n}function Q1(n){for(var i,a;i=Ca(n);)n=i.find(1,!0).line,(a||(a=[])).push(n);return a}function Ku(n,i){var a=Pe(n,i),l=dr(a);return a==l?i:C(l)}function Tp(n,i){if(i>n.lastLine())return i;var a=Pe(n,i),l;if(!yi(n,a))return i;for(;l=Ca(a);)a=l.find(1,!0).line;return C(a)+1}function yi(n,i){var a=Ur&&i.markedSpans;if(a){for(var l=void 0,u=0;ui.maxLineLength&&(i.maxLineLength=u,i.maxLine=l)})}var Bo=function(n,i,a){this.text=n,_p(this,i),this.height=a?a(this):1};Bo.prototype.lineNo=function(){return C(this)},lr(Bo);function ex(n,i,a,l){n.text=i,n.stateAfter&&(n.stateAfter=null),n.styles&&(n.styles=null),n.order!=null&&(n.order=null),xp(n),_p(n,a);var u=l?l(n):1;u!=n.height&&Hn(n,u)}function tx(n){n.parent=null,xp(n)}var nx={},rx={};function Ep(n,i){if(!n||/^\s*$/.test(n))return null;var a=i.addModeClass?rx:nx;return a[n]||(a[n]=n.replace(/\S+/g,"cm-$&"))}function Lp(n,i){var a=B("span",null,null,v?"padding-right: .1px":null),l={pre:B("pre",[a],"CodeMirror-line"),content:a,col:0,pos:0,cm:n,trailingSpace:!1,splitSpaces:n.getOption("lineWrapping")};i.measure={};for(var u=0;u<=(i.rest?i.rest.length:0);u++){var p=u?i.rest[u-1]:i.line,m=void 0;l.pos=0,l.addToken=ox,gi(n.display.measure)&&(m=Ve(p,n.doc.direction))&&(l.addToken=lx(l.addToken,m)),l.map=[];var w=i!=n.display.externalMeasured&&C(p);ax(p,l,hp(n,p,w)),p.styleClasses&&(p.styleClasses.bgClass&&(l.bgClass=We(p.styleClasses.bgClass,l.bgClass||"")),p.styleClasses.textClass&&(l.textClass=We(p.styleClasses.textClass,l.textClass||""))),l.map.length==0&&l.map.push(0,0,l.content.appendChild(ba(n.display.measure))),u==0?(i.measure.map=l.map,i.measure.cache={}):((i.measure.maps||(i.measure.maps=[])).push(l.map),(i.measure.caches||(i.measure.caches=[])).push({}))}if(v){var _=l.content.lastChild;(/\bcm-tab\b/.test(_.className)||_.querySelector&&_.querySelector(".cm-tab"))&&(l.content.className="cm-tab-wrap-hack")}return Et(n,"renderLine",n,i.line,l.pre),l.pre.className&&(l.textClass=We(l.pre.className,l.textClass||"")),l}function ix(n){var i=k("span","•","cm-invalidchar");return i.title="\\u"+n.charCodeAt(0).toString(16),i.setAttribute("aria-label",i.title),i}function ox(n,i,a,l,u,p,m){if(i){var w=n.splitSpaces?sx(i,n.trailingSpace):i,_=n.cm.state.specialChars,S=!1,$;if(!_.test(i))n.col+=i.length,$=document.createTextNode(w),n.map.push(n.pos,n.pos+i.length,$),h&&g<9&&(S=!0),n.pos+=i.length;else{$=document.createDocumentFragment();for(var D=0;;){_.lastIndex=D;var G=_.exec(i),U=G?G.index-D:i.length-D;if(U){var ee=document.createTextNode(w.slice(D,D+U));h&&g<9?$.appendChild(k("span",[ee])):$.appendChild(ee),n.map.push(n.pos,n.pos+U,ee),n.col+=U,n.pos+=U}if(!G)break;D+=U+1;var ce=void 0;if(G[0]==" "){var ve=n.cm.options.tabSize,be=ve-n.col%ve;ce=$.appendChild(k("span",Se(be),"cm-tab")),ce.setAttribute("role","presentation"),ce.setAttribute("cm-text"," "),n.col+=be}else G[0]=="\r"||G[0]==` +`?(ce=$.appendChild(k("span",G[0]=="\r"?"␍":"␤","cm-invalidchar")),ce.setAttribute("cm-text",G[0]),n.col+=1):(ce=n.cm.options.specialCharPlaceholder(G[0]),ce.setAttribute("cm-text",G[0]),h&&g<9?$.appendChild(k("span",[ce])):$.appendChild(ce),n.col+=1);n.map.push(n.pos,n.pos+1,ce),n.pos++}}if(n.trailingSpace=w.charCodeAt(i.length-1)==32,a||l||u||S||p||m){var ke=a||"";l&&(ke+=l),u&&(ke+=u);var we=k("span",[$],ke,p);if(m)for(var Le in m)m.hasOwnProperty(Le)&&Le!="style"&&Le!="class"&&we.setAttribute(Le,m[Le]);return n.content.appendChild(we)}n.content.appendChild($)}}function sx(n,i){if(n.length>1&&!/ /.test(n))return n;for(var a=i,l="",u=0;uS&&D.from<=S));G++);if(D.to>=$)return n(a,l,u,p,m,w,_);n(a,l.slice(0,D.to-S),u,p,null,w,_),p=null,l=l.slice(D.to-S),S=D.to}}}function Ap(n,i,a,l){var u=!l&&a.widgetNode;u&&n.map.push(n.pos,n.pos+i,u),!l&&n.cm.display.input.needsContentAttribute&&(u||(u=n.content.appendChild(document.createElement("span"))),u.setAttribute("cm-marker",a.id)),u&&(n.cm.display.input.setUneditable(u),n.content.appendChild(u)),n.pos+=i,n.trailingSpace=!1}function ax(n,i,a){var l=n.markedSpans,u=n.text,p=0;if(!l){for(var m=1;m_||Je.collapsed&&De.to==_&&De.from==_)){if(De.to!=null&&De.to!=_&&U>De.to&&(U=De.to,ce=""),Je.className&&(ee+=" "+Je.className),Je.css&&(G=(G?G+";":"")+Je.css),Je.startStyle&&De.from==_&&(ve+=" "+Je.startStyle),Je.endStyle&&De.to==U&&(Le||(Le=[])).push(Je.endStyle,De.to),Je.title&&((ke||(ke={})).title=Je.title),Je.attributes)for(var wt in Je.attributes)(ke||(ke={}))[wt]=Je.attributes[wt];Je.collapsed&&(!be||Gu(be.marker,Je)<0)&&(be=De)}else De.from>_&&U>De.from&&(U=De.from)}if(Le)for(var Vt=0;Vt=w)break;for(var Mn=Math.min(w,U);;){if($){var mn=_+$.length;if(!be){var Pt=mn>Mn?$.slice(0,Mn-_):$;i.addToken(i,Pt,D?D+ee:ee,ve,_+Pt.length==U?ce:"",G,ke)}if(mn>=Mn){$=$.slice(Mn-_),_=Mn;break}_=mn,ve=""}$=u.slice(p,p=a[S++]),D=Ep(a[S++],i.cm.options)}}}function Mp(n,i,a){this.line=i,this.rest=Q1(i),this.size=this.rest?C(fe(this.rest))-a+1:1,this.node=this.text=null,this.hidden=yi(n,i)}function Ea(n,i,a){for(var l=[],u,p=i;p2&&p.push((_.bottom+S.top)/2-a.top)}}p.push(a.bottom-a.top)}}function zp(n,i,a){if(n.line==i)return{map:n.measure.map,cache:n.measure.cache};if(n.rest){for(var l=0;la)return{map:n.measure.maps[u],cache:n.measure.caches[u],before:!0}}}function bx(n,i){i=dr(i);var a=C(i),l=n.display.externalMeasured=new Mp(n.doc,i,a);l.lineN=a;var u=l.built=Lp(n,l);return l.text=u.pre,I(n.display.lineMeasure,u.pre),l}function Ip(n,i,a,l){return Er(n,Uo(n,i),a,l)}function ef(n,i){if(i>=n.display.viewFrom&&i=a.lineN&&ii)&&(p=_-w,u=p-1,i>=_&&(m="right")),u!=null){if(l=n[S+2],w==_&&a==(l.insertLeft?"left":"right")&&(m=a),a=="left"&&u==0)for(;S&&n[S-2]==n[S-3]&&n[S-1].insertLeft;)l=n[(S-=3)+2],m="left";if(a=="right"&&u==_-w)for(;S=0&&(a=n[u]).left==a.right;u--);return a}function xx(n,i,a,l){var u=Hp(i.map,a,l),p=u.node,m=u.start,w=u.end,_=u.collapse,S;if(p.nodeType==3){for(var $=0;$<4;$++){for(;m&&nt(i.line.text.charAt(u.coverStart+m));)--m;for(;u.coverStart+w0&&(_=l="right");var D;n.options.lineWrapping&&(D=p.getClientRects()).length>1?S=D[l=="right"?D.length-1:0]:S=p.getBoundingClientRect()}if(h&&g<9&&!m&&(!S||!S.left&&!S.right)){var G=p.parentNode.getClientRects()[0];G?S={left:G.left,right:G.left+jo(n.display),top:G.top,bottom:G.bottom}:S=Fp}for(var U=S.top-i.rect.top,ee=S.bottom-i.rect.top,ce=(U+ee)/2,ve=i.view.measure.heights,be=0;be=l.text.length?(_=l.text.length,S="before"):_<=0&&(_=0,S="after"),!w)return m(S=="before"?_-1:_,S=="before");function $(ee,ce,ve){var be=w[ce],ke=be.level==1;return m(ve?ee-1:ee,ke!=ve)}var D=sr(w,_,S),G=Fn,U=$(_,D,S=="before");return G!=null&&(U.other=$(_,G,S!="before")),U}function jp(n,i){var a=0;i=Ke(n.doc,i),n.options.lineWrapping||(a=jo(n.display)*i.ch);var l=Pe(n.doc,i.line),u=Vr(l)+La(n.display);return{left:a,right:a,top:u,bottom:u+l.height}}function nf(n,i,a,l,u){var p=Q(n,i,a);return p.xRel=u,l&&(p.outside=l),p}function rf(n,i,a){var l=n.doc;if(a+=n.display.viewOffset,a<0)return nf(l.first,0,null,-1,-1);var u=R(l,a),p=l.first+l.size-1;if(u>p)return nf(l.first+l.size-1,Pe(l,p).text.length,null,1,1);i<0&&(i=0);for(var m=Pe(l,u);;){var w=Sx(n,m,u,i,a),_=Z1(m,w.ch+(w.xRel>0||w.outside>0?1:0));if(!_)return w;var S=_.find(1);if(S.line==u)return S;m=Pe(l,u=S.line)}}function Gp(n,i,a,l){l-=tf(i);var u=i.text.length,p=Jt(function(m){return Er(n,a,m-1).bottom<=l},u,0);return u=Jt(function(m){return Er(n,a,m).top>l},p,u),{begin:p,end:u}}function Kp(n,i,a,l){a||(a=Uo(n,i));var u=Aa(n,i,Er(n,a,l),"line").top;return Gp(n,i,a,u)}function of(n,i,a,l){return n.bottom<=a?!1:n.top>a?!0:(l?n.left:n.right)>i}function Sx(n,i,a,l,u){u-=Vr(i);var p=Uo(n,i),m=tf(i),w=0,_=i.text.length,S=!0,$=Ve(i,n.doc.direction);if($){var D=(n.options.lineWrapping?Cx:kx)(n,i,a,p,$,l,u);S=D.level!=1,w=S?D.from:D.to-1,_=S?D.to:D.from-1}var G=null,U=null,ee=Jt(function(He){var De=Er(n,p,He);return De.top+=m,De.bottom+=m,of(De,l,u,!1)?(De.top<=u&&De.left<=l&&(G=He,U=De),!0):!1},w,_),ce,ve,be=!1;if(U){var ke=l-U.left=Le.bottom?1:0}return ee=It(i.text,ee,1),nf(a,ee,ve,be,l-ce)}function kx(n,i,a,l,u,p,m){var w=Jt(function(D){var G=u[D],U=G.level!=1;return of(hr(n,Q(a,U?G.to:G.from,U?"before":"after"),"line",i,l),p,m,!0)},0,u.length-1),_=u[w];if(w>0){var S=_.level!=1,$=hr(n,Q(a,S?_.from:_.to,S?"after":"before"),"line",i,l);of($,p,m,!0)&&$.top>m&&(_=u[w-1])}return _}function Cx(n,i,a,l,u,p,m){var w=Gp(n,i,l,m),_=w.begin,S=w.end;/\s/.test(i.text.charAt(S-1))&&S--;for(var $=null,D=null,G=0;G=S||U.to<=_)){var ee=U.level!=1,ce=Er(n,l,ee?Math.min(S,U.to)-1:Math.max(_,U.from)).right,ve=ceve)&&($=U,D=ve)}}return $||($=u[u.length-1]),$.from<_&&($={from:_,to:$.to,level:$.level}),$.to>S&&($={from:$.from,to:S,level:$.level}),$}var oo;function Vo(n){if(n.cachedTextHeight!=null)return n.cachedTextHeight;if(oo==null){oo=k("pre",null,"CodeMirror-line-like");for(var i=0;i<49;++i)oo.appendChild(document.createTextNode("x")),oo.appendChild(k("br"));oo.appendChild(document.createTextNode("x"))}I(n.measure,oo);var a=oo.offsetHeight/50;return a>3&&(n.cachedTextHeight=a),V(n.measure),a||1}function jo(n){if(n.cachedCharWidth!=null)return n.cachedCharWidth;var i=k("span","xxxxxxxxxx"),a=k("pre",[i],"CodeMirror-line-like");I(n.measure,a);var l=i.getBoundingClientRect(),u=(l.right-l.left)/10;return u>2&&(n.cachedCharWidth=u),u||10}function sf(n){for(var i=n.display,a={},l={},u=i.gutters.clientLeft,p=i.gutters.firstChild,m=0;p;p=p.nextSibling,++m){var w=n.display.gutterSpecs[m].className;a[w]=p.offsetLeft+p.clientLeft+u,l[w]=p.clientWidth}return{fixedPos:lf(i),gutterTotalWidth:i.gutters.offsetWidth,gutterLeft:a,gutterWidth:l,wrapperWidth:i.wrapper.clientWidth}}function lf(n){return n.scroller.getBoundingClientRect().left-n.sizer.getBoundingClientRect().left}function Xp(n){var i=Vo(n.display),a=n.options.lineWrapping,l=a&&Math.max(5,n.display.scroller.clientWidth/jo(n.display)-3);return function(u){if(yi(n.doc,u))return 0;var p=0;if(u.widgets)for(var m=0;m0&&(S=Pe(n.doc,_.line).text).length==_.ch){var $=de(S,S.length,n.options.tabSize)-S.length;_=Q(_.line,Math.max(0,Math.round((p-Dp(n.display).left)/jo(n.display))-$))}return _}function lo(n,i){if(i>=n.display.viewTo||(i-=n.display.viewFrom,i<0))return null;for(var a=n.display.view,l=0;li)&&(u.updateLineNumbers=i),n.curOp.viewChanged=!0,i>=u.viewTo)Ur&&Ku(n.doc,i)u.viewFrom?wi(n):(u.viewFrom+=l,u.viewTo+=l);else if(i<=u.viewFrom&&a>=u.viewTo)wi(n);else if(i<=u.viewFrom){var p=Na(n,a,a+l,1);p?(u.view=u.view.slice(p.index),u.viewFrom=p.lineN,u.viewTo+=l):wi(n)}else if(a>=u.viewTo){var m=Na(n,i,i,-1);m?(u.view=u.view.slice(0,m.index),u.viewTo=m.lineN):wi(n)}else{var w=Na(n,i,i,-1),_=Na(n,a,a+l,1);w&&_?(u.view=u.view.slice(0,w.index).concat(Ea(n,w.lineN,_.lineN)).concat(u.view.slice(_.index)),u.viewTo+=l):wi(n)}var S=u.externalMeasured;S&&(a=u.lineN&&i=l.viewTo)){var p=l.view[lo(n,i)];if(p.node!=null){var m=p.changes||(p.changes=[]);Te(m,a)==-1&&m.push(a)}}}function wi(n){n.display.viewFrom=n.display.viewTo=n.doc.first,n.display.view=[],n.display.viewOffset=0}function Na(n,i,a,l){var u=lo(n,i),p,m=n.display.view;if(!Ur||a==n.doc.first+n.doc.size)return{index:u,lineN:a};for(var w=n.display.viewFrom,_=0;_0){if(u==m.length-1)return null;p=w+m[u].size-i,u++}else p=w-i;i+=p,a+=p}for(;Ku(n.doc,a)!=a;){if(u==(l<0?0:m.length-1))return null;a+=l*m[u-(l<0?1:0)].size,u+=l}return{index:u,lineN:a}}function Tx(n,i,a){var l=n.display,u=l.view;u.length==0||i>=l.viewTo||a<=l.viewFrom?(l.view=Ea(n,i,a),l.viewFrom=i):(l.viewFrom>i?l.view=Ea(n,i,l.viewFrom).concat(l.view):l.viewFroma&&(l.view=l.view.slice(0,lo(n,a)))),l.viewTo=a}function Yp(n){for(var i=n.display.view,a=0,l=0;l=n.display.viewTo||_.to().line0?m:n.defaultCharWidth())+"px"}if(l.other){var w=a.appendChild(k("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));w.style.display="",w.style.left=l.other.left+"px",w.style.top=l.other.top+"px",w.style.height=(l.other.bottom-l.other.top)*.85+"px"}}function $a(n,i){return n.top-i.top||n.left-i.left}function Ex(n,i,a){var l=n.display,u=n.doc,p=document.createDocumentFragment(),m=Dp(n.display),w=m.left,_=Math.max(l.sizerWidth,io(n)-l.sizer.offsetLeft)-m.right,S=u.direction=="ltr";function $(we,Le,He,De){Le<0&&(Le=0),Le=Math.round(Le),De=Math.round(De),p.appendChild(k("div",null,"CodeMirror-selected","position: absolute; left: "+we+`px; + top: `+Le+"px; width: "+(He??_-we)+`px; + height: `+(De-Le)+"px"))}function D(we,Le,He){var De=Pe(u,we),Je=De.text.length,wt,Vt;function Tt(Pt,yn){return Ma(n,Q(we,Pt),"div",De,yn)}function Mn(Pt,yn,Kt){var Ft=Kp(n,De,null,Pt),Rt=yn=="ltr"==(Kt=="after")?"left":"right",Mt=Kt=="after"?Ft.begin:Ft.end-(/\s/.test(De.text.charAt(Ft.end-1))?2:1);return Tt(Mt,Rt)[Rt]}var mn=Ve(De,u.direction);return or(mn,Le||0,He??Je,function(Pt,yn,Kt,Ft){var Rt=Kt=="ltr",Mt=Tt(Pt,Rt?"left":"right"),bn=Tt(yn-1,Rt?"right":"left"),os=Le==null&&Pt==0,Ti=He==null&&yn==Je,rn=Ft==0,Lr=!mn||Ft==mn.length-1;if(bn.top-Mt.top<=3){var jt=(S?os:Ti)&&rn,Df=(S?Ti:os)&&Lr,Xr=jt?w:(Rt?Mt:bn).left,ho=Df?_:(Rt?bn:Mt).right;$(Xr,Mt.top,ho-Xr,Mt.bottom)}else{var po,cn,ss,zf;Rt?(po=S&&os&&rn?w:Mt.left,cn=S?_:Mn(Pt,Kt,"before"),ss=S?w:Mn(yn,Kt,"after"),zf=S&&Ti&&Lr?_:bn.right):(po=S?Mn(Pt,Kt,"before"):w,cn=!S&&os&&rn?_:Mt.right,ss=!S&&Ti&&Lr?w:bn.left,zf=S?Mn(yn,Kt,"after"):_),$(po,Mt.top,cn-po,Mt.bottom),Mt.bottom0?i.blinker=setInterval(function(){n.hasFocus()||Go(n),i.cursorDiv.style.visibility=(a=!a)?"":"hidden"},n.options.cursorBlinkRate):n.options.cursorBlinkRate<0&&(i.cursorDiv.style.visibility="hidden")}}function Jp(n){n.hasFocus()||(n.display.input.focus(),n.state.focused||df(n))}function ff(n){n.state.delayingBlurEvent=!0,setTimeout(function(){n.state.delayingBlurEvent&&(n.state.delayingBlurEvent=!1,n.state.focused&&Go(n))},100)}function df(n,i){n.state.delayingBlurEvent&&!n.state.draggingText&&(n.state.delayingBlurEvent=!1),n.options.readOnly!="nocursor"&&(n.state.focused||(Et(n,"focus",n,i),n.state.focused=!0,Ne(n.display.wrapper,"CodeMirror-focused"),!n.curOp&&n.display.selForContextMenu!=n.doc.sel&&(n.display.input.reset(),v&&setTimeout(function(){return n.display.input.reset(!0)},20)),n.display.input.receivedFocus()),uf(n))}function Go(n,i){n.state.delayingBlurEvent||(n.state.focused&&(Et(n,"blur",n,i),n.state.focused=!1,K(n.display.wrapper,"CodeMirror-focused")),clearInterval(n.display.blinker),setTimeout(function(){n.state.focused||(n.display.shift=!1)},150))}function Oa(n){for(var i=n.display,a=i.lineDiv.offsetTop,l=Math.max(0,i.scroller.getBoundingClientRect().top),u=i.lineDiv.getBoundingClientRect().top,p=0,m=0;m.005||U<-.005)&&(un.display.sizerWidth){var ce=Math.ceil($/jo(n.display));ce>n.display.maxLineLength&&(n.display.maxLineLength=ce,n.display.maxLine=w.line,n.display.maxLineChanged=!0)}}}Math.abs(p)>2&&(i.scroller.scrollTop+=p)}function Qp(n){if(n.widgets)for(var i=0;i=m&&(p=R(i,Vr(Pe(i,_))-n.wrapper.clientHeight),m=_)}return{from:p,to:Math.max(m,p+1)}}function Lx(n,i){if(!Lt(n,"scrollCursorIntoView")){var a=n.display,l=a.sizer.getBoundingClientRect(),u=null,p=a.wrapper.ownerDocument;if(i.top+l.top<0?u=!0:i.bottom+l.top>(p.defaultView.innerHeight||p.documentElement.clientHeight)&&(u=!1),u!=null&&!N){var m=k("div","​",null,`position: absolute; + top: `+(i.top-a.viewOffset-La(n.display))+`px; + height: `+(i.bottom-i.top+Tr(n)+a.barHeight)+`px; + left: `+i.left+"px; width: "+Math.max(2,i.right-i.left)+"px;");n.display.lineSpace.appendChild(m),m.scrollIntoView(u),n.display.lineSpace.removeChild(m)}}}function Ax(n,i,a,l){l==null&&(l=0);var u;!n.options.lineWrapping&&i==a&&(a=i.sticky=="before"?Q(i.line,i.ch+1,"before"):i,i=i.ch?Q(i.line,i.sticky=="before"?i.ch-1:i.ch,"after"):i);for(var p=0;p<5;p++){var m=!1,w=hr(n,i),_=!a||a==i?w:hr(n,a);u={left:Math.min(w.left,_.left),top:Math.min(w.top,_.top)-l,right:Math.max(w.left,_.left),bottom:Math.max(w.bottom,_.bottom)+l};var S=hf(n,u),$=n.doc.scrollTop,D=n.doc.scrollLeft;if(S.scrollTop!=null&&(Gs(n,S.scrollTop),Math.abs(n.doc.scrollTop-$)>1&&(m=!0)),S.scrollLeft!=null&&(ao(n,S.scrollLeft),Math.abs(n.doc.scrollLeft-D)>1&&(m=!0)),!m)break}return u}function Mx(n,i){var a=hf(n,i);a.scrollTop!=null&&Gs(n,a.scrollTop),a.scrollLeft!=null&&ao(n,a.scrollLeft)}function hf(n,i){var a=n.display,l=Vo(n.display);i.top<0&&(i.top=0);var u=n.curOp&&n.curOp.scrollTop!=null?n.curOp.scrollTop:a.scroller.scrollTop,p=Qu(n),m={};i.bottom-i.top>p&&(i.bottom=i.top+p);var w=n.doc.height+Ju(a),_=i.topw-l;if(i.topu+p){var $=Math.min(i.top,(S?w:i.bottom)-p);$!=u&&(m.scrollTop=$)}var D=n.options.fixedGutter?0:a.gutters.offsetWidth,G=n.curOp&&n.curOp.scrollLeft!=null?n.curOp.scrollLeft:a.scroller.scrollLeft-D,U=io(n)-a.gutters.offsetWidth,ee=i.right-i.left>U;return ee&&(i.right=i.left+U),i.left<10?m.scrollLeft=0:i.leftU+G-3&&(m.scrollLeft=i.right+(ee?0:10)-U),m}function pf(n,i){i!=null&&(Ra(n),n.curOp.scrollTop=(n.curOp.scrollTop==null?n.doc.scrollTop:n.curOp.scrollTop)+i)}function Ko(n){Ra(n);var i=n.getCursor();n.curOp.scrollToPos={from:i,to:i,margin:n.options.cursorScrollMargin}}function js(n,i,a){(i!=null||a!=null)&&Ra(n),i!=null&&(n.curOp.scrollLeft=i),a!=null&&(n.curOp.scrollTop=a)}function Nx(n,i){Ra(n),n.curOp.scrollToPos=i}function Ra(n){var i=n.curOp.scrollToPos;if(i){n.curOp.scrollToPos=null;var a=jp(n,i.from),l=jp(n,i.to);eg(n,a,l,i.margin)}}function eg(n,i,a,l){var u=hf(n,{left:Math.min(i.left,a.left),top:Math.min(i.top,a.top)-l,right:Math.max(i.right,a.right),bottom:Math.max(i.bottom,a.bottom)+l});js(n,u.scrollLeft,u.scrollTop)}function Gs(n,i){Math.abs(n.doc.scrollTop-i)<2||(s||vf(n,{top:i}),tg(n,i,!0),s&&vf(n),Ys(n,100))}function tg(n,i,a){i=Math.max(0,Math.min(n.display.scroller.scrollHeight-n.display.scroller.clientHeight,i)),!(n.display.scroller.scrollTop==i&&!a)&&(n.doc.scrollTop=i,n.display.scrollbars.setScrollTop(i),n.display.scroller.scrollTop!=i&&(n.display.scroller.scrollTop=i))}function ao(n,i,a,l){i=Math.max(0,Math.min(i,n.display.scroller.scrollWidth-n.display.scroller.clientWidth)),!((a?i==n.doc.scrollLeft:Math.abs(n.doc.scrollLeft-i)<2)&&!l)&&(n.doc.scrollLeft=i,sg(n),n.display.scroller.scrollLeft!=i&&(n.display.scroller.scrollLeft=i),n.display.scrollbars.setScrollLeft(i))}function Ks(n){var i=n.display,a=i.gutters.offsetWidth,l=Math.round(n.doc.height+Ju(n.display));return{clientHeight:i.scroller.clientHeight,viewHeight:i.wrapper.clientHeight,scrollWidth:i.scroller.scrollWidth,clientWidth:i.scroller.clientWidth,viewWidth:i.wrapper.clientWidth,barLeft:n.options.fixedGutter?a:0,docHeight:l,scrollHeight:l+Tr(n)+i.barHeight,nativeBarWidth:i.nativeBarWidth,gutterWidth:a}}var co=function(n,i,a){this.cm=a;var l=this.vert=k("div",[k("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),u=this.horiz=k("div",[k("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");l.tabIndex=u.tabIndex=-1,n(l),n(u),Fe(l,"scroll",function(){l.clientHeight&&i(l.scrollTop,"vertical")}),Fe(u,"scroll",function(){u.clientWidth&&i(u.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,h&&g<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};co.prototype.update=function(n){var i=n.scrollWidth>n.clientWidth+1,a=n.scrollHeight>n.clientHeight+1,l=n.nativeBarWidth;if(a){this.vert.style.display="block",this.vert.style.bottom=i?l+"px":"0";var u=n.viewHeight-(i?l:0);this.vert.firstChild.style.height=Math.max(0,n.scrollHeight-n.clientHeight+u)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(i){this.horiz.style.display="block",this.horiz.style.right=a?l+"px":"0",this.horiz.style.left=n.barLeft+"px";var p=n.viewWidth-n.barLeft-(a?l:0);this.horiz.firstChild.style.width=Math.max(0,n.scrollWidth-n.clientWidth+p)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&n.clientHeight>0&&(l==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:a?l:0,bottom:i?l:0}},co.prototype.setScrollLeft=function(n){this.horiz.scrollLeft!=n&&(this.horiz.scrollLeft=n),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},co.prototype.setScrollTop=function(n){this.vert.scrollTop!=n&&(this.vert.scrollTop=n),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},co.prototype.zeroWidthHack=function(){var n=H&&!M?"12px":"18px";this.horiz.style.height=this.vert.style.width=n,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new $e,this.disableVert=new $e},co.prototype.enableZeroWidthBar=function(n,i,a){n.style.visibility="";function l(){var u=n.getBoundingClientRect(),p=a=="vert"?document.elementFromPoint(u.right-1,(u.top+u.bottom)/2):document.elementFromPoint((u.right+u.left)/2,u.bottom-1);p!=n?n.style.visibility="hidden":i.set(1e3,l)}i.set(1e3,l)},co.prototype.clear=function(){var n=this.horiz.parentNode;n.removeChild(this.horiz),n.removeChild(this.vert)};var Xs=function(){};Xs.prototype.update=function(){return{bottom:0,right:0}},Xs.prototype.setScrollLeft=function(){},Xs.prototype.setScrollTop=function(){},Xs.prototype.clear=function(){};function Xo(n,i){i||(i=Ks(n));var a=n.display.barWidth,l=n.display.barHeight;ng(n,i);for(var u=0;u<4&&a!=n.display.barWidth||l!=n.display.barHeight;u++)a!=n.display.barWidth&&n.options.lineWrapping&&Oa(n),ng(n,Ks(n)),a=n.display.barWidth,l=n.display.barHeight}function ng(n,i){var a=n.display,l=a.scrollbars.update(i);a.sizer.style.paddingRight=(a.barWidth=l.right)+"px",a.sizer.style.paddingBottom=(a.barHeight=l.bottom)+"px",a.heightForcer.style.borderBottom=l.bottom+"px solid transparent",l.right&&l.bottom?(a.scrollbarFiller.style.display="block",a.scrollbarFiller.style.height=l.bottom+"px",a.scrollbarFiller.style.width=l.right+"px"):a.scrollbarFiller.style.display="",l.bottom&&n.options.coverGutterNextToScrollbar&&n.options.fixedGutter?(a.gutterFiller.style.display="block",a.gutterFiller.style.height=l.bottom+"px",a.gutterFiller.style.width=i.gutterWidth+"px"):a.gutterFiller.style.display=""}var rg={native:co,null:Xs};function ig(n){n.display.scrollbars&&(n.display.scrollbars.clear(),n.display.scrollbars.addClass&&K(n.display.wrapper,n.display.scrollbars.addClass)),n.display.scrollbars=new rg[n.options.scrollbarStyle](function(i){n.display.wrapper.insertBefore(i,n.display.scrollbarFiller),Fe(i,"mousedown",function(){n.state.focused&&setTimeout(function(){return n.display.input.focus()},0)}),i.setAttribute("cm-not-content","true")},function(i,a){a=="horizontal"?ao(n,i):Gs(n,i)},n),n.display.scrollbars.addClass&&Ne(n.display.wrapper,n.display.scrollbars.addClass)}var $x=0;function uo(n){n.curOp={cm:n,viewChanged:!1,startHeight:n.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++$x,markArrays:null},cx(n.curOp)}function fo(n){var i=n.curOp;i&&fx(i,function(a){for(var l=0;l=a.viewTo)||a.maxLineChanged&&i.options.lineWrapping,n.update=n.mustUpdate&&new Da(i,n.mustUpdate&&{top:n.scrollTop,ensure:n.scrollToPos},n.forceUpdate)}function Rx(n){n.updatedDisplay=n.mustUpdate&&gf(n.cm,n.update)}function Dx(n){var i=n.cm,a=i.display;n.updatedDisplay&&Oa(i),n.barMeasure=Ks(i),a.maxLineChanged&&!i.options.lineWrapping&&(n.adjustWidthTo=Ip(i,a.maxLine,a.maxLine.text.length).left+3,i.display.sizerWidth=n.adjustWidthTo,n.barMeasure.scrollWidth=Math.max(a.scroller.clientWidth,a.sizer.offsetLeft+n.adjustWidthTo+Tr(i)+i.display.barWidth),n.maxScrollLeft=Math.max(0,a.sizer.offsetLeft+n.adjustWidthTo-io(i))),(n.updatedDisplay||n.selectionChanged)&&(n.preparedSelection=a.input.prepareSelection())}function zx(n){var i=n.cm;n.adjustWidthTo!=null&&(i.display.sizer.style.minWidth=n.adjustWidthTo+"px",n.maxScrollLeft=n.display.viewTo)){var a=+new Date+n.options.workTime,l=Fs(n,i.highlightFrontier),u=[];i.iter(l.line,Math.min(i.first+i.size,n.display.viewTo+500),function(p){if(l.line>=n.display.viewFrom){var m=p.styles,w=p.text.length>n.options.maxHighlightLength?kr(i.mode,l.state):null,_=dp(n,p,l,!0);w&&(l.state=w),p.styles=_.styles;var S=p.styleClasses,$=_.classes;$?p.styleClasses=$:S&&(p.styleClasses=null);for(var D=!m||m.length!=p.styles.length||S!=$&&(!S||!$||S.bgClass!=$.bgClass||S.textClass!=$.textClass),G=0;!D&&Ga)return Ys(n,n.options.workDelay),!0}),i.highlightFrontier=l.line,i.modeFrontier=Math.max(i.modeFrontier,l.line),u.length&&An(n,function(){for(var p=0;p=a.viewFrom&&i.visible.to<=a.viewTo&&(a.updateLineNumbers==null||a.updateLineNumbers>=a.viewTo)&&a.renderedView==a.view&&Yp(n)==0)return!1;lg(n)&&(wi(n),i.dims=sf(n));var u=l.first+l.size,p=Math.max(i.visible.from-n.options.viewportMargin,l.first),m=Math.min(u,i.visible.to+n.options.viewportMargin);a.viewFromm&&a.viewTo-m<20&&(m=Math.min(u,a.viewTo)),Ur&&(p=Ku(n.doc,p),m=Tp(n.doc,m));var w=p!=a.viewFrom||m!=a.viewTo||a.lastWrapHeight!=i.wrapperHeight||a.lastWrapWidth!=i.wrapperWidth;Tx(n,p,m),a.viewOffset=Vr(Pe(n.doc,a.viewFrom)),n.display.mover.style.top=a.viewOffset+"px";var _=Yp(n);if(!w&&_==0&&!i.force&&a.renderedView==a.view&&(a.updateLineNumbers==null||a.updateLineNumbers>=a.viewTo))return!1;var S=qx(n);return _>4&&(a.lineDiv.style.display="none"),Wx(n,a.updateLineNumbers,i.dims),_>4&&(a.lineDiv.style.display=""),a.renderedView=a.view,Bx(S),V(a.cursorDiv),V(a.selectionDiv),a.gutters.style.height=a.sizer.style.minHeight=0,w&&(a.lastWrapHeight=i.wrapperHeight,a.lastWrapWidth=i.wrapperWidth,Ys(n,400)),a.updateLineNumbers=null,!0}function og(n,i){for(var a=i.viewport,l=!0;;l=!1){if(!l||!n.options.lineWrapping||i.oldDisplayWidth==io(n)){if(a&&a.top!=null&&(a={top:Math.min(n.doc.height+Ju(n.display)-Qu(n),a.top)}),i.visible=Pa(n.display,n.doc,a),i.visible.from>=n.display.viewFrom&&i.visible.to<=n.display.viewTo)break}else l&&(i.visible=Pa(n.display,n.doc,a));if(!gf(n,i))break;Oa(n);var u=Ks(n);Vs(n),Xo(n,u),yf(n,u),i.force=!1}i.signal(n,"update",n),(n.display.viewFrom!=n.display.reportedViewFrom||n.display.viewTo!=n.display.reportedViewTo)&&(i.signal(n,"viewportChange",n,n.display.viewFrom,n.display.viewTo),n.display.reportedViewFrom=n.display.viewFrom,n.display.reportedViewTo=n.display.viewTo)}function vf(n,i){var a=new Da(n,i);if(gf(n,a)){Oa(n),og(n,a);var l=Ks(n);Vs(n),Xo(n,l),yf(n,l),a.finish()}}function Wx(n,i,a){var l=n.display,u=n.options.lineNumbers,p=l.lineDiv,m=p.firstChild;function w(ee){var ce=ee.nextSibling;return v&&H&&n.display.currentWheelTarget==ee?ee.style.display="none":ee.parentNode.removeChild(ee),ce}for(var _=l.view,S=l.viewFrom,$=0;$<_.length;$++){var D=_[$];if(!D.hidden)if(!D.node||D.node.parentNode!=p){var G=vx(n,D,S,a);p.insertBefore(G,m)}else{for(;m!=D.node;)m=w(m);var U=u&&i!=null&&i<=S&&D.lineNumber;D.changes&&(Te(D.changes,"gutter")>-1&&(U=!1),Np(n,D,S,a)),U&&(V(D.lineNumber),D.lineNumber.appendChild(document.createTextNode(ge(n.options,S)))),m=D.node.nextSibling}S+=D.size}for(;m;)m=w(m)}function mf(n){var i=n.gutters.offsetWidth;n.sizer.style.marginLeft=i+"px",Bt(n,"gutterChanged",n)}function yf(n,i){n.display.sizer.style.minHeight=i.docHeight+"px",n.display.heightForcer.style.top=i.docHeight+"px",n.display.gutters.style.height=i.docHeight+n.display.barHeight+Tr(n)+"px"}function sg(n){var i=n.display,a=i.view;if(!(!i.alignWidgets&&(!i.gutters.firstChild||!n.options.fixedGutter))){for(var l=lf(i)-i.scroller.scrollLeft+n.doc.scrollLeft,u=i.gutters.offsetWidth,p=l+"px",m=0;m=105&&(u.wrapper.style.clipPath="inset(0px)"),u.wrapper.setAttribute("translate","no"),h&&g<8&&(u.gutters.style.zIndex=-1,u.scroller.style.paddingRight=0),!v&&!(s&&A)&&(u.scroller.draggable=!0),n&&(n.appendChild?n.appendChild(u.wrapper):n(u.wrapper)),u.viewFrom=u.viewTo=i.first,u.reportedViewFrom=u.reportedViewTo=i.first,u.view=[],u.renderedView=null,u.externalMeasured=null,u.viewOffset=0,u.lastWrapHeight=u.lastWrapWidth=0,u.updateLineNumbers=null,u.nativeBarWidth=u.barHeight=u.barWidth=0,u.scrollbarsClipped=!1,u.lineNumWidth=u.lineNumInnerWidth=u.lineNumChars=null,u.alignWidgets=!1,u.cachedCharWidth=u.cachedTextHeight=u.cachedPaddingH=null,u.maxLine=null,u.maxLineLength=0,u.maxLineChanged=!1,u.wheelDX=u.wheelDY=u.wheelStartX=u.wheelStartY=null,u.shift=!1,u.selForContextMenu=null,u.activeTouch=null,u.gutterSpecs=bf(l.gutters,l.lineNumbers),ag(u),a.init(u)}var za=0,Gr=null;h?Gr=-.53:s?Gr=15:b?Gr=-.7:E&&(Gr=-1/3);function cg(n){var i=n.wheelDeltaX,a=n.wheelDeltaY;return i==null&&n.detail&&n.axis==n.HORIZONTAL_AXIS&&(i=n.detail),a==null&&n.detail&&n.axis==n.VERTICAL_AXIS?a=n.detail:a==null&&(a=n.wheelDelta),{x:i,y:a}}function Vx(n){var i=cg(n);return i.x*=Gr,i.y*=Gr,i}function ug(n,i){b&&x==102&&(n.display.chromeScrollHack==null?n.display.sizer.style.pointerEvents="none":clearTimeout(n.display.chromeScrollHack),n.display.chromeScrollHack=setTimeout(function(){n.display.chromeScrollHack=null,n.display.sizer.style.pointerEvents=""},100));var a=cg(i),l=a.x,u=a.y,p=Gr;i.deltaMode===0&&(l=i.deltaX,u=i.deltaY,p=1);var m=n.display,w=m.scroller,_=w.scrollWidth>w.clientWidth,S=w.scrollHeight>w.clientHeight;if(l&&_||u&&S){if(u&&H&&v){e:for(var $=i.target,D=m.view;$!=w;$=$.parentNode)for(var G=0;G=0&&_e(n,l.to())<=0)return a}return-1};var ht=function(n,i){this.anchor=n,this.head=i};ht.prototype.from=function(){return qo(this.anchor,this.head)},ht.prototype.to=function(){return pn(this.anchor,this.head)},ht.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function pr(n,i,a){var l=n&&n.options.selectionsMayTouch,u=i[a];i.sort(function(G,U){return _e(G.from(),U.from())}),a=Te(i,u);for(var p=1;p0:_>=0){var S=qo(w.from(),m.from()),$=pn(w.to(),m.to()),D=w.empty()?m.from()==m.head:w.from()==w.head;p<=a&&--a,i.splice(--p,2,new ht(D?$:S,D?S:$))}}return new qn(i,a)}function xi(n,i){return new qn([new ht(n,i||n)],0)}function _i(n){return n.text?Q(n.from.line+n.text.length-1,fe(n.text).length+(n.text.length==1?n.from.ch:0)):n.to}function fg(n,i){if(_e(n,i.from)<0)return n;if(_e(n,i.to)<=0)return _i(i);var a=n.line+i.text.length-(i.to.line-i.from.line)-1,l=n.ch;return n.line==i.to.line&&(l+=_i(i).ch-i.to.ch),Q(a,l)}function wf(n,i){for(var a=[],l=0;l1&&n.remove(w.line+1,ee-1),n.insert(w.line+1,be)}Bt(n,"change",n,i)}function Si(n,i,a){function l(u,p,m){if(u.linked)for(var w=0;w1&&!n.done[n.done.length-2].ranges)return n.done.pop(),fe(n.done)}function mg(n,i,a,l){var u=n.history;u.undone.length=0;var p=+new Date,m,w;if((u.lastOp==l||u.lastOrigin==i.origin&&i.origin&&(i.origin.charAt(0)=="+"&&u.lastModTime>p-(n.cm?n.cm.options.historyEventDelay:500)||i.origin.charAt(0)=="*"))&&(m=Kx(u,u.lastOp==l)))w=fe(m.changes),_e(i.from,i.to)==0&&_e(i.from,w.to)==0?w.to=_i(i):m.changes.push(Sf(n,i));else{var _=fe(u.done);for((!_||!_.ranges)&&Fa(n.sel,u.done),m={changes:[Sf(n,i)],generation:u.generation},u.done.push(m);u.done.length>u.undoDepth;)u.done.shift(),u.done[0].ranges||u.done.shift()}u.done.push(a),u.generation=++u.maxGeneration,u.lastModTime=u.lastSelTime=p,u.lastOp=u.lastSelOp=l,u.lastOrigin=u.lastSelOrigin=i.origin,w||Et(n,"historyAdded")}function Xx(n,i,a,l){var u=i.charAt(0);return u=="*"||u=="+"&&a.ranges.length==l.ranges.length&&a.somethingSelected()==l.somethingSelected()&&new Date-n.history.lastSelTime<=(n.cm?n.cm.options.historyEventDelay:500)}function Yx(n,i,a,l){var u=n.history,p=l&&l.origin;a==u.lastSelOp||p&&u.lastSelOrigin==p&&(u.lastModTime==u.lastSelTime&&u.lastOrigin==p||Xx(n,p,fe(u.done),i))?u.done[u.done.length-1]=i:Fa(i,u.done),u.lastSelTime=+new Date,u.lastSelOrigin=p,u.lastSelOp=a,l&&l.clearRedo!==!1&&vg(u.undone)}function Fa(n,i){var a=fe(i);a&&a.ranges&&a.equals(n)||i.push(n)}function yg(n,i,a,l){var u=i["spans_"+n.id],p=0;n.iter(Math.max(n.first,a),Math.min(n.first+n.size,l),function(m){m.markedSpans&&((u||(u=i["spans_"+n.id]={}))[p]=m.markedSpans),++p})}function Zx(n){if(!n)return null;for(var i,a=0;a-1&&(fe(w)[D]=S[D],delete S[D])}}return l}function kf(n,i,a,l){if(l){var u=n.anchor;if(a){var p=_e(i,u)<0;p!=_e(a,u)<0?(u=i,i=a):p!=_e(i,a)<0&&(i=a)}return new ht(u,i)}else return new ht(a||i,i)}function Ha(n,i,a,l,u){u==null&&(u=n.cm&&(n.cm.display.shift||n.extend)),nn(n,new qn([kf(n.sel.primary(),i,a,u)],0),l)}function wg(n,i,a){for(var l=[],u=n.cm&&(n.cm.display.shift||n.extend),p=0;p=i.ch:w.to>i.ch))){if(u&&(Et(_,"beforeCursorEnter"),_.explicitlyCleared))if(p.markedSpans){--m;continue}else break;if(!_.atomic)continue;if(a){var D=_.find(l<0?1:-1),G=void 0;if((l<0?$:S)&&(D=Tg(n,D,-l,D&&D.line==i.line?p:null)),D&&D.line==i.line&&(G=_e(D,a))&&(l<0?G<0:G>0))return Zo(n,D,i,l,u)}var U=_.find(l<0?-1:1);return(l<0?S:$)&&(U=Tg(n,U,l,U.line==i.line?p:null)),U?Zo(n,U,i,l,u):null}}return i}function Ba(n,i,a,l,u){var p=l||1,m=Zo(n,i,a,p,u)||!u&&Zo(n,i,a,p,!0)||Zo(n,i,a,-p,u)||!u&&Zo(n,i,a,-p,!0);return m||(n.cantEdit=!0,Q(n.first,0))}function Tg(n,i,a,l){return a<0&&i.ch==0?i.line>n.first?Ke(n,Q(i.line-1)):null:a>0&&i.ch==(l||Pe(n,i.line)).text.length?i.line=0;--u)Ag(n,{from:l[u].from,to:l[u].to,text:u?[""]:i.text,origin:i.origin});else Ag(n,i)}}function Ag(n,i){if(!(i.text.length==1&&i.text[0]==""&&_e(i.from,i.to)==0)){var a=wf(n,i);mg(n,i,a,n.cm?n.cm.curOp.id:NaN),Qs(n,i,a,ju(n,i));var l=[];Si(n,function(u,p){!p&&Te(l,u.history)==-1&&(Og(u.history,i),l.push(u.history)),Qs(u,i,null,ju(u,i))})}}function Wa(n,i,a){var l=n.cm&&n.cm.state.suppressEdits;if(!(l&&!a)){for(var u=n.history,p,m=n.sel,w=i=="undo"?u.done:u.undone,_=i=="undo"?u.undone:u.done,S=0;S=0;--U){var ee=G(U);if(ee)return ee.v}}}}function Mg(n,i){if(i!=0&&(n.first+=i,n.sel=new qn(xe(n.sel.ranges,function(u){return new ht(Q(u.anchor.line+i,u.anchor.ch),Q(u.head.line+i,u.head.ch))}),n.sel.primIndex),n.cm)){gn(n.cm,n.first,n.first-i,i);for(var a=n.cm.display,l=a.viewFrom;ln.lastLine())){if(i.from.linep&&(i={from:i.from,to:Q(p,Pe(n,p).text.length),text:[i.text[0]],origin:i.origin}),i.removed=Wr(n,i.from,i.to),a||(a=wf(n,i)),n.cm?e_(n.cm,i,l):_f(n,i,l),qa(n,a,F),n.cantEdit&&Ba(n,Q(n.firstLine(),0))&&(n.cantEdit=!1)}}function e_(n,i,a){var l=n.doc,u=n.display,p=i.from,m=i.to,w=!1,_=p.line;n.options.lineWrapping||(_=C(dr(Pe(l,p.line))),l.iter(_,m.line+1,function(U){if(U==u.maxLine)return w=!0,!0})),l.sel.contains(i.from,i.to)>-1&&Kn(n),_f(l,i,a,Xp(n)),n.options.lineWrapping||(l.iter(_,p.line+i.text.length,function(U){var ee=Ta(U);ee>u.maxLineLength&&(u.maxLine=U,u.maxLineLength=ee,u.maxLineChanged=!0,w=!1)}),w&&(n.curOp.updateMaxLine=!0)),W1(l,p.line),Ys(n,400);var S=i.text.length-(m.line-p.line)-1;i.full?gn(n):p.line==m.line&&i.text.length==1&&!hg(n.doc,i)?bi(n,p.line,"text"):gn(n,p.line,m.line+1,S);var $=Ln(n,"changes"),D=Ln(n,"change");if(D||$){var G={from:p,to:m,text:i.text,removed:i.removed,origin:i.origin};D&&Bt(n,"change",n,G),$&&(n.curOp.changeObjs||(n.curOp.changeObjs=[])).push(G)}n.display.selForContextMenu=null}function Qo(n,i,a,l,u){var p;l||(l=a),_e(l,a)<0&&(p=[l,a],a=p[0],l=p[1]),typeof i=="string"&&(i=n.splitLines(i)),Jo(n,{from:a,to:l,text:i,origin:u})}function Ng(n,i,a,l){a1||!(this.children[0]instanceof tl))){var w=[];this.collapse(w),this.children=[new tl(w)],this.children[0].parent=this}},collapse:function(n){for(var i=0;i50){for(var m=u.lines.length%25+25,w=m;w10);n.parent.maybeSpill()}},iterN:function(n,i,a){for(var l=0;ln.display.maxLineLength&&(n.display.maxLine=S,n.display.maxLineLength=$,n.display.maxLineChanged=!0)}l!=null&&n&&this.collapsed&&gn(n,l,u+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,n&&kg(n.doc)),n&&Bt(n,"markerCleared",n,this,l,u),i&&fo(n),this.parent&&this.parent.clear()}},ki.prototype.find=function(n,i){n==null&&this.type=="bookmark"&&(n=1);for(var a,l,u=0;u0||m==0&&p.clearWhenEmpty!==!1)return p;if(p.replacedWith&&(p.collapsed=!0,p.widgetNode=B("span",[p.replacedWith],"CodeMirror-widget"),l.handleMouseEvents||p.widgetNode.setAttribute("cm-ignore-events","true"),l.insertLeft&&(p.widgetNode.insertLeft=!0)),p.collapsed){if(Cp(n,i.line,i,a,p)||i.line!=a.line&&Cp(n,a.line,i,a,p))throw new Error("Inserting collapsed marker partially overlapping an existing one");V1()}p.addToHistory&&mg(n,{from:i,to:a,origin:"markText"},n.sel,NaN);var w=i.line,_=n.cm,S;if(n.iter(w,a.line+1,function(D){_&&p.collapsed&&!_.options.lineWrapping&&dr(D)==_.display.maxLine&&(S=!0),p.collapsed&&w!=i.line&&Hn(D,0),G1(D,new _a(p,w==i.line?i.ch:null,w==a.line?a.ch:null),n.cm&&n.cm.curOp),++w}),p.collapsed&&n.iter(i.line,a.line+1,function(D){yi(n,D)&&Hn(D,0)}),p.clearOnEnter&&Fe(p,"beforeCursorEnter",function(){return p.clear()}),p.readOnly&&(U1(),(n.history.done.length||n.history.undone.length)&&n.clearHistory()),p.collapsed&&(p.id=++Rg,p.atomic=!0),_){if(S&&(_.curOp.updateMaxLine=!0),p.collapsed)gn(_,i.line,a.line+1);else if(p.className||p.startStyle||p.endStyle||p.css||p.attributes||p.title)for(var $=i.line;$<=a.line;$++)bi(_,$,"text");p.atomic&&kg(_.doc),Bt(_,"markerAdded",_,p)}return p}var il=function(n,i){this.markers=n,this.primary=i;for(var a=0;a=0;_--)Jo(this,l[_]);w?_g(this,w):this.cm&&Ko(this.cm)}),undo:Ut(function(){Wa(this,"undo")}),redo:Ut(function(){Wa(this,"redo")}),undoSelection:Ut(function(){Wa(this,"undo",!0)}),redoSelection:Ut(function(){Wa(this,"redo",!0)}),setExtending:function(n){this.extend=n},getExtending:function(){return this.extend},historySize:function(){for(var n=this.history,i=0,a=0,l=0;l=n.ch)&&i.push(u.marker.parent||u.marker)}return i},findMarks:function(n,i,a){n=Ke(this,n),i=Ke(this,i);var l=[],u=n.line;return this.iter(n.line,i.line+1,function(p){var m=p.markedSpans;if(m)for(var w=0;w=_.to||_.from==null&&u!=n.line||_.from!=null&&u==i.line&&_.from>=i.ch)&&(!a||a(_.marker))&&l.push(_.marker.parent||_.marker)}++u}),l},getAllMarks:function(){var n=[];return this.iter(function(i){var a=i.markedSpans;if(a)for(var l=0;ln)return i=n,!0;n-=p,++a}),Ke(this,Q(a,i))},indexFromPos:function(n){n=Ke(this,n);var i=n.ch;if(n.linei&&(i=n.from),n.to!=null&&n.to-1){i.state.draggingText(n),setTimeout(function(){return i.display.input.focus()},20);return}try{var $=n.dataTransfer.getData("Text");if($){var D;if(i.state.draggingText&&!i.state.draggingText.copy&&(D=i.listSelections()),qa(i.doc,xi(a,a)),D)for(var G=0;G=0;w--)Qo(n.doc,"",l[w].from,l[w].to,"+delete");Ko(n)})}function Tf(n,i,a){var l=It(n.text,i+a,a);return l<0||l>n.text.length?null:l}function Ef(n,i,a){var l=Tf(n,i.ch,a);return l==null?null:new Q(i.line,l,a<0?"after":"before")}function Lf(n,i,a,l,u){if(n){i.doc.direction=="rtl"&&(u=-u);var p=Ve(a,i.doc.direction);if(p){var m=u<0?fe(p):p[0],w=u<0==(m.level==1),_=w?"after":"before",S;if(m.level>0||i.doc.direction=="rtl"){var $=Uo(i,a);S=u<0?a.text.length-1:0;var D=Er(i,$,S).top;S=Jt(function(G){return Er(i,$,G).top==D},u<0==(m.level==1)?m.from:m.to-1,S),_=="before"&&(S=Tf(a,S,1))}else S=u<0?m.to:m.from;return new Q(l,S,_)}}return new Q(l,u<0?a.text.length:0,u<0?"before":"after")}function p_(n,i,a,l){var u=Ve(i,n.doc.direction);if(!u)return Ef(i,a,l);a.ch>=i.text.length?(a.ch=i.text.length,a.sticky="before"):a.ch<=0&&(a.ch=0,a.sticky="after");var p=sr(u,a.ch,a.sticky),m=u[p];if(n.doc.direction=="ltr"&&m.level%2==0&&(l>0?m.to>a.ch:m.from=m.from&&G>=$.begin)){var U=D?"before":"after";return new Q(a.line,G,U)}}var ee=function(be,ke,we){for(var Le=function(wt,Vt){return Vt?new Q(a.line,w(wt,1),"before"):new Q(a.line,wt,"after")};be>=0&&be0==(He.level!=1),Je=De?we.begin:w(we.end,-1);if(He.from<=Je&&Je0?$.end:w($.begin,-1);return ve!=null&&!(l>0&&ve==i.text.length)&&(ce=ee(l>0?0:u.length-1,l,S(ve)),ce)?ce:null}var ll={selectAll:Eg,singleSelection:function(n){return n.setSelection(n.getCursor("anchor"),n.getCursor("head"),F)},killLine:function(n){return ns(n,function(i){if(i.empty()){var a=Pe(n.doc,i.head.line).text.length;return i.head.ch==a&&i.head.line0)u=new Q(u.line,u.ch+1),n.replaceRange(p.charAt(u.ch-1)+p.charAt(u.ch-2),Q(u.line,u.ch-2),u,"+transpose");else if(u.line>n.doc.first){var m=Pe(n.doc,u.line-1).text;m&&(u=new Q(u.line,1),n.replaceRange(p.charAt(0)+n.doc.lineSeparator()+m.charAt(m.length-1),Q(u.line-1,m.length-1),u,"+transpose"))}}a.push(new ht(u,u))}n.setSelections(a)})},newlineAndIndent:function(n){return An(n,function(){for(var i=n.listSelections(),a=i.length-1;a>=0;a--)n.replaceRange(n.doc.lineSeparator(),i[a].anchor,i[a].head,"+input");i=n.listSelections();for(var l=0;ln&&_e(i,this.pos)==0&&a==this.button};var cl,ul;function x_(n,i){var a=+new Date;return ul&&ul.compare(a,n,i)?(cl=ul=null,"triple"):cl&&cl.compare(a,n,i)?(ul=new Mf(a,n,i),cl=null,"double"):(cl=new Mf(a,n,i),ul=null,"single")}function Zg(n){var i=this,a=i.display;if(!(Lt(i,n)||a.activeTouch&&a.input.supportsTouch())){if(a.input.ensurePolled(),a.shift=n.shiftKey,jr(a,n)){v||(a.scroller.draggable=!1,setTimeout(function(){return a.scroller.draggable=!0},100));return}if(!Nf(i,n)){var l=so(i,n),u=ar(n),p=l?x_(l,u):"single";Ee(i).focus(),u==1&&i.state.selectingText&&i.state.selectingText(n),!(l&&__(i,u,l,p,n))&&(u==1?l?k_(i,l,p,n):Rs(n)==a.scroller&&tn(n):u==2?(l&&Ha(i.doc,l),setTimeout(function(){return a.input.focus()},20)):u==3&&(j?i.display.input.onContextMenu(n):ff(i)))}}}function __(n,i,a,l,u){var p="Click";return l=="double"?p="Double"+p:l=="triple"&&(p="Triple"+p),p=(i==1?"Left":i==2?"Middle":"Right")+p,al(n,Bg(p,u),u,function(m){if(typeof m=="string"&&(m=ll[m]),!m)return!1;var w=!1;try{n.isReadOnly()&&(n.state.suppressEdits=!0),w=m(n,a)!=P}finally{n.state.suppressEdits=!1}return w})}function S_(n,i,a){var l=n.getOption("configureMouse"),u=l?l(n,i,a):{};if(u.unit==null){var p=z?a.shiftKey&&a.metaKey:a.altKey;u.unit=p?"rectangle":i=="single"?"char":i=="double"?"word":"line"}return(u.extend==null||n.doc.extend)&&(u.extend=n.doc.extend||a.shiftKey),u.addNew==null&&(u.addNew=H?a.metaKey:a.ctrlKey),u.moveOnDrag==null&&(u.moveOnDrag=!(H?a.altKey:a.ctrlKey)),u}function k_(n,i,a,l){h?setTimeout(X(Jp,n),0):n.curOp.focus=ye(rt(n));var u=S_(n,a,l),p=n.doc.sel,m;n.options.dragDrop&&Bu&&!n.isReadOnly()&&a=="single"&&(m=p.contains(i))>-1&&(_e((m=p.ranges[m]).from(),i)<0||i.xRel>0)&&(_e(m.to(),i)>0||i.xRel<0)?C_(n,l,i,u):T_(n,l,i,u)}function C_(n,i,a,l){var u=n.display,p=!1,m=Wt(n,function(S){v&&(u.scroller.draggable=!1),n.state.draggingText=!1,n.state.delayingBlurEvent&&(n.hasFocus()?n.state.delayingBlurEvent=!1:ff(n)),en(u.wrapper.ownerDocument,"mouseup",m),en(u.wrapper.ownerDocument,"mousemove",w),en(u.scroller,"dragstart",_),en(u.scroller,"drop",m),p||(tn(S),l.addNew||Ha(n.doc,a,null,null,l.extend),v&&!E||h&&g==9?setTimeout(function(){u.wrapper.ownerDocument.body.focus({preventScroll:!0}),u.input.focus()},20):u.input.focus())}),w=function(S){p=p||Math.abs(i.clientX-S.clientX)+Math.abs(i.clientY-S.clientY)>=10},_=function(){return p=!0};v&&(u.scroller.draggable=!0),n.state.draggingText=m,m.copy=!l.moveOnDrag,Fe(u.wrapper.ownerDocument,"mouseup",m),Fe(u.wrapper.ownerDocument,"mousemove",w),Fe(u.scroller,"dragstart",_),Fe(u.scroller,"drop",m),n.state.delayingBlurEvent=!0,setTimeout(function(){return u.input.focus()},20),u.scroller.dragDrop&&u.scroller.dragDrop()}function Jg(n,i,a){if(a=="char")return new ht(i,i);if(a=="word")return n.findWordAt(i);if(a=="line")return new ht(Q(i.line,0),Ke(n.doc,Q(i.line+1,0)));var l=a(n,i);return new ht(l.from,l.to)}function T_(n,i,a,l){h&&ff(n);var u=n.display,p=n.doc;tn(i);var m,w,_=p.sel,S=_.ranges;if(l.addNew&&!l.extend?(w=p.sel.contains(a),w>-1?m=S[w]:m=new ht(a,a)):(m=p.sel.primary(),w=p.sel.primIndex),l.unit=="rectangle")l.addNew||(m=new ht(a,a)),a=so(n,i,!0,!0),w=-1;else{var $=Jg(n,a,l.unit);l.extend?m=kf(m,$.anchor,$.head,l.extend):m=$}l.addNew?w==-1?(w=S.length,nn(p,pr(n,S.concat([m]),w),{scroll:!1,origin:"*mouse"})):S.length>1&&S[w].empty()&&l.unit=="char"&&!l.extend?(nn(p,pr(n,S.slice(0,w).concat(S.slice(w+1)),0),{scroll:!1,origin:"*mouse"}),_=p.sel):Cf(p,w,m,Z):(w=0,nn(p,new qn([m],0),Z),_=p.sel);var D=a;function G(we){if(_e(D,we)!=0)if(D=we,l.unit=="rectangle"){for(var Le=[],He=n.options.tabSize,De=de(Pe(p,a.line).text,a.ch,He),Je=de(Pe(p,we.line).text,we.ch,He),wt=Math.min(De,Je),Vt=Math.max(De,Je),Tt=Math.min(a.line,we.line),Mn=Math.min(n.lastLine(),Math.max(a.line,we.line));Tt<=Mn;Tt++){var mn=Pe(p,Tt).text,Pt=le(mn,wt,He);wt==Vt?Le.push(new ht(Q(Tt,Pt),Q(Tt,Pt))):mn.length>Pt&&Le.push(new ht(Q(Tt,Pt),Q(Tt,le(mn,Vt,He))))}Le.length||Le.push(new ht(a,a)),nn(p,pr(n,_.ranges.slice(0,w).concat(Le),w),{origin:"*mouse",scroll:!1}),n.scrollIntoView(we)}else{var yn=m,Kt=Jg(n,we,l.unit),Ft=yn.anchor,Rt;_e(Kt.anchor,Ft)>0?(Rt=Kt.head,Ft=qo(yn.from(),Kt.anchor)):(Rt=Kt.anchor,Ft=pn(yn.to(),Kt.head));var Mt=_.ranges.slice(0);Mt[w]=E_(n,new ht(Ke(p,Ft),Rt)),nn(p,pr(n,Mt,w),Z)}}var U=u.wrapper.getBoundingClientRect(),ee=0;function ce(we){var Le=++ee,He=so(n,we,!0,l.unit=="rectangle");if(He)if(_e(He,D)!=0){n.curOp.focus=ye(rt(n)),G(He);var De=Pa(u,p);(He.line>=De.to||He.lineU.bottom?20:0;Je&&setTimeout(Wt(n,function(){ee==Le&&(u.scroller.scrollTop+=Je,ce(we))}),50)}}function ve(we){n.state.selectingText=!1,ee=1/0,we&&(tn(we),u.input.focus()),en(u.wrapper.ownerDocument,"mousemove",be),en(u.wrapper.ownerDocument,"mouseup",ke),p.history.lastSelOrigin=null}var be=Wt(n,function(we){we.buttons===0||!ar(we)?ve(we):ce(we)}),ke=Wt(n,ve);n.state.selectingText=ke,Fe(u.wrapper.ownerDocument,"mousemove",be),Fe(u.wrapper.ownerDocument,"mouseup",ke)}function E_(n,i){var a=i.anchor,l=i.head,u=Pe(n.doc,a.line);if(_e(a,l)==0&&a.sticky==l.sticky)return i;var p=Ve(u);if(!p)return i;var m=sr(p,a.ch,a.sticky),w=p[m];if(w.from!=a.ch&&w.to!=a.ch)return i;var _=m+(w.from==a.ch==(w.level!=1)?0:1);if(_==0||_==p.length)return i;var S;if(l.line!=a.line)S=(l.line-a.line)*(n.doc.direction=="ltr"?1:-1)>0;else{var $=sr(p,l.ch,l.sticky),D=$-m||(l.ch-a.ch)*(w.level==1?-1:1);$==_-1||$==_?S=D<0:S=D>0}var G=p[_+(S?-1:0)],U=S==(G.level==1),ee=U?G.from:G.to,ce=U?"after":"before";return a.ch==ee&&a.sticky==ce?i:new ht(new Q(a.line,ee,ce),l)}function Qg(n,i,a,l){var u,p;if(i.touches)u=i.touches[0].clientX,p=i.touches[0].clientY;else try{u=i.clientX,p=i.clientY}catch{return!1}if(u>=Math.floor(n.display.gutters.getBoundingClientRect().right))return!1;l&&tn(i);var m=n.display,w=m.lineDiv.getBoundingClientRect();if(p>w.bottom||!Ln(n,a))return hn(i);p-=w.top-m.viewOffset;for(var _=0;_=u){var $=R(n.doc,p),D=n.display.gutterSpecs[_];return Et(n,a,n,$,D.className,i),hn(i)}}}function Nf(n,i){return Qg(n,i,"gutterClick",!0)}function ev(n,i){jr(n.display,i)||L_(n,i)||Lt(n,i,"contextmenu")||j||n.display.input.onContextMenu(i)}function L_(n,i){return Ln(n,"gutterContextMenu")?Qg(n,i,"gutterContextMenu",!1):!1}function tv(n){n.display.wrapper.className=n.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+n.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Us(n)}var rs={toString:function(){return"CodeMirror.Init"}},nv={},Ga={};function A_(n){var i=n.optionHandlers;function a(l,u,p,m){n.defaults[l]=u,p&&(i[l]=m?function(w,_,S){S!=rs&&p(w,_,S)}:p)}n.defineOption=a,n.Init=rs,a("value","",function(l,u){return l.setValue(u)},!0),a("mode",null,function(l,u){l.doc.modeOption=u,xf(l)},!0),a("indentUnit",2,xf,!0),a("indentWithTabs",!1),a("smartIndent",!0),a("tabSize",4,function(l){Js(l),Us(l),gn(l)},!0),a("lineSeparator",null,function(l,u){if(l.doc.lineSep=u,!!u){var p=[],m=l.doc.first;l.doc.iter(function(_){for(var S=0;;){var $=_.text.indexOf(u,S);if($==-1)break;S=$+u.length,p.push(Q(m,$))}m++});for(var w=p.length-1;w>=0;w--)Qo(l.doc,u,p[w],Q(p[w].line,p[w].ch+u.length))}}),a("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(l,u,p){l.state.specialChars=new RegExp(u.source+(u.test(" ")?"":"| "),"g"),p!=rs&&l.refresh()}),a("specialCharPlaceholder",ix,function(l){return l.refresh()},!0),a("electricChars",!0),a("inputStyle",A?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),a("spellcheck",!1,function(l,u){return l.getInputField().spellcheck=u},!0),a("autocorrect",!1,function(l,u){return l.getInputField().autocorrect=u},!0),a("autocapitalize",!1,function(l,u){return l.getInputField().autocapitalize=u},!0),a("rtlMoveVisually",!J),a("wholeLineUpdateBefore",!0),a("theme","default",function(l){tv(l),Zs(l)},!0),a("keyMap","default",function(l,u,p){var m=Va(u),w=p!=rs&&Va(p);w&&w.detach&&w.detach(l,m),m.attach&&m.attach(l,w||null)}),a("extraKeys",null),a("configureMouse",null),a("lineWrapping",!1,N_,!0),a("gutters",[],function(l,u){l.display.gutterSpecs=bf(u,l.options.lineNumbers),Zs(l)},!0),a("fixedGutter",!0,function(l,u){l.display.gutters.style.left=u?lf(l.display)+"px":"0",l.refresh()},!0),a("coverGutterNextToScrollbar",!1,function(l){return Xo(l)},!0),a("scrollbarStyle","native",function(l){ig(l),Xo(l),l.display.scrollbars.setScrollTop(l.doc.scrollTop),l.display.scrollbars.setScrollLeft(l.doc.scrollLeft)},!0),a("lineNumbers",!1,function(l,u){l.display.gutterSpecs=bf(l.options.gutters,u),Zs(l)},!0),a("firstLineNumber",1,Zs,!0),a("lineNumberFormatter",function(l){return l},Zs,!0),a("showCursorWhenSelecting",!1,Vs,!0),a("resetSelectionOnContextMenu",!0),a("lineWiseCopyCut",!0),a("pasteLinesPerSelection",!0),a("selectionsMayTouch",!1),a("readOnly",!1,function(l,u){u=="nocursor"&&(Go(l),l.display.input.blur()),l.display.input.readOnlyChanged(u)}),a("screenReaderLabel",null,function(l,u){u=u===""?null:u,l.display.input.screenReaderLabelChanged(u)}),a("disableInput",!1,function(l,u){u||l.display.input.reset()},!0),a("dragDrop",!0,M_),a("allowDropFileTypes",null),a("cursorBlinkRate",530),a("cursorScrollMargin",0),a("cursorHeight",1,Vs,!0),a("singleCursorHeightPerLine",!0,Vs,!0),a("workTime",100),a("workDelay",100),a("flattenSpans",!0,Js,!0),a("addModeClass",!1,Js,!0),a("pollInterval",100),a("undoDepth",200,function(l,u){return l.doc.history.undoDepth=u}),a("historyEventDelay",1250),a("viewportMargin",10,function(l){return l.refresh()},!0),a("maxHighlightLength",1e4,Js,!0),a("moveInputWithCursor",!0,function(l,u){u||l.display.input.resetPosition()}),a("tabindex",null,function(l,u){return l.display.input.getField().tabIndex=u||""}),a("autofocus",null),a("direction","ltr",function(l,u){return l.doc.setDirection(u)},!0),a("phrases",null)}function M_(n,i,a){var l=a&&a!=rs;if(!i!=!l){var u=n.display.dragFunctions,p=i?Fe:en;p(n.display.scroller,"dragstart",u.start),p(n.display.scroller,"dragenter",u.enter),p(n.display.scroller,"dragover",u.over),p(n.display.scroller,"dragleave",u.leave),p(n.display.scroller,"drop",u.drop)}}function N_(n){n.options.lineWrapping?(Ne(n.display.wrapper,"CodeMirror-wrap"),n.display.sizer.style.minWidth="",n.display.sizerWidth=null):(K(n.display.wrapper,"CodeMirror-wrap"),Yu(n)),af(n),gn(n),Us(n),setTimeout(function(){return Xo(n)},100)}function kt(n,i){var a=this;if(!(this instanceof kt))return new kt(n,i);this.options=i=i?ae(i):{},ae(nv,i,!1);var l=i.value;typeof l=="string"?l=new vn(l,i.mode,null,i.lineSeparator,i.direction):i.mode&&(l.modeOption=i.mode),this.doc=l;var u=new kt.inputStyles[i.inputStyle](this),p=this.display=new Ux(n,l,u,i);p.wrapper.CodeMirror=this,tv(this),i.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ig(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new $e,keySeq:null,specialChars:null},i.autofocus&&!A&&p.input.focus(),h&&g<11&&setTimeout(function(){return a.display.input.reset(!0)},20),$_(this),c_(),uo(this),this.curOp.forceUpdate=!0,pg(this,l),i.autofocus&&!A||this.hasFocus()?setTimeout(function(){a.hasFocus()&&!a.state.focused&&df(a)},20):Go(this);for(var m in Ga)Ga.hasOwnProperty(m)&&Ga[m](this,i[m],rs);lg(this),i.finishInit&&i.finishInit(this);for(var w=0;w<$f.length;++w)$f[w](this);fo(this),v&&i.lineWrapping&&getComputedStyle(p.lineDiv).textRendering=="optimizelegibility"&&(p.lineDiv.style.textRendering="auto")}kt.defaults=nv,kt.optionHandlers=Ga;function $_(n){var i=n.display;Fe(i.scroller,"mousedown",Wt(n,Zg)),h&&g<11?Fe(i.scroller,"dblclick",Wt(n,function(_){if(!Lt(n,_)){var S=so(n,_);if(!(!S||Nf(n,_)||jr(n.display,_))){tn(_);var $=n.findWordAt(S);Ha(n.doc,$.anchor,$.head)}}})):Fe(i.scroller,"dblclick",function(_){return Lt(n,_)||tn(_)}),Fe(i.scroller,"contextmenu",function(_){return ev(n,_)}),Fe(i.input.getField(),"contextmenu",function(_){i.scroller.contains(_.target)||ev(n,_)});var a,l={end:0};function u(){i.activeTouch&&(a=setTimeout(function(){return i.activeTouch=null},1e3),l=i.activeTouch,l.end=+new Date)}function p(_){if(_.touches.length!=1)return!1;var S=_.touches[0];return S.radiusX<=1&&S.radiusY<=1}function m(_,S){if(S.left==null)return!0;var $=S.left-_.left,D=S.top-_.top;return $*$+D*D>20*20}Fe(i.scroller,"touchstart",function(_){if(!Lt(n,_)&&!p(_)&&!Nf(n,_)){i.input.ensurePolled(),clearTimeout(a);var S=+new Date;i.activeTouch={start:S,moved:!1,prev:S-l.end<=300?l:null},_.touches.length==1&&(i.activeTouch.left=_.touches[0].pageX,i.activeTouch.top=_.touches[0].pageY)}}),Fe(i.scroller,"touchmove",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),Fe(i.scroller,"touchend",function(_){var S=i.activeTouch;if(S&&!jr(i,_)&&S.left!=null&&!S.moved&&new Date-S.start<300){var $=n.coordsChar(i.activeTouch,"page"),D;!S.prev||m(S,S.prev)?D=new ht($,$):!S.prev.prev||m(S,S.prev.prev)?D=n.findWordAt($):D=new ht(Q($.line,0),Ke(n.doc,Q($.line+1,0))),n.setSelection(D.anchor,D.head),n.focus(),tn(_)}u()}),Fe(i.scroller,"touchcancel",u),Fe(i.scroller,"scroll",function(){i.scroller.clientHeight&&(Gs(n,i.scroller.scrollTop),ao(n,i.scroller.scrollLeft,!0),Et(n,"scroll",n))}),Fe(i.scroller,"mousewheel",function(_){return ug(n,_)}),Fe(i.scroller,"DOMMouseScroll",function(_){return ug(n,_)}),Fe(i.wrapper,"scroll",function(){return i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(_){Lt(n,_)||pi(_)},over:function(_){Lt(n,_)||(a_(n,_),pi(_))},start:function(_){return l_(n,_)},drop:Wt(n,s_),leave:function(_){Lt(n,_)||Ig(n)}};var w=i.input.getField();Fe(w,"keyup",function(_){return Xg.call(n,_)}),Fe(w,"keydown",Wt(n,Kg)),Fe(w,"keypress",Wt(n,Yg)),Fe(w,"focus",function(_){return df(n,_)}),Fe(w,"blur",function(_){return Go(n,_)})}var $f=[];kt.defineInitHook=function(n){return $f.push(n)};function fl(n,i,a,l){var u=n.doc,p;a==null&&(a="add"),a=="smart"&&(u.mode.indent?p=Fs(n,i).state:a="prev");var m=n.options.tabSize,w=Pe(u,i),_=de(w.text,null,m);w.stateAfter&&(w.stateAfter=null);var S=w.text.match(/^\s*/)[0],$;if(!l&&!/\S/.test(w.text))$=0,a="not";else if(a=="smart"&&($=u.mode.indent(p,w.text.slice(S.length),w.text),$==P||$>150)){if(!l)return;a="prev"}a=="prev"?i>u.first?$=de(Pe(u,i-1).text,null,m):$=0:a=="add"?$=_+n.options.indentUnit:a=="subtract"?$=_-n.options.indentUnit:typeof a=="number"&&($=_+a),$=Math.max(0,$);var D="",G=0;if(n.options.indentWithTabs)for(var U=Math.floor($/m);U;--U)G+=m,D+=" ";if(G<$&&(D+=Se($-G)),D!=S)return Qo(u,D,Q(i,0),Q(i,S.length),"+input"),w.stateAfter=null,!0;for(var ee=0;eem,_=Xn(i),S=null;if(w&&l.ranges.length>1)if(gr&&gr.text.join(` +`)==i){if(l.ranges.length%gr.text.length==0){S=[];for(var $=0;$=0;G--){var U=l.ranges[G],ee=U.from(),ce=U.to();U.empty()&&(a&&a>0?ee=Q(ee.line,ee.ch-a):n.state.overwrite&&!w?ce=Q(ce.line,Math.min(Pe(p,ce.line).text.length,ce.ch+fe(_).length)):w&&gr&&gr.lineWise&&gr.text.join(` +`)==_.join(` +`)&&(ee=ce=Q(ee.line,0)));var ve={from:ee,to:ce,text:S?S[G%S.length]:_,origin:u||(w?"paste":n.state.cutIncoming>m?"cut":"+input")};Jo(n.doc,ve),Bt(n,"inputRead",n,ve)}i&&!w&&iv(n,i),Ko(n),n.curOp.updateInput<2&&(n.curOp.updateInput=D),n.curOp.typing=!0,n.state.pasteIncoming=n.state.cutIncoming=-1}function rv(n,i){var a=n.clipboardData&&n.clipboardData.getData("Text");if(a)return n.preventDefault(),!i.isReadOnly()&&!i.options.disableInput&&i.hasFocus()&&An(i,function(){return Of(i,a,0,null,"paste")}),!0}function iv(n,i){if(!(!n.options.electricChars||!n.options.smartIndent))for(var a=n.doc.sel,l=a.ranges.length-1;l>=0;l--){var u=a.ranges[l];if(!(u.head.ch>100||l&&a.ranges[l-1].head.line==u.head.line)){var p=n.getModeAt(u.head),m=!1;if(p.electricChars){for(var w=0;w-1){m=fl(n,u.head.line,"smart");break}}else p.electricInput&&p.electricInput.test(Pe(n.doc,u.head.line).text.slice(0,u.head.ch))&&(m=fl(n,u.head.line,"smart"));m&&Bt(n,"electricInput",n,u.head.line)}}}function ov(n){for(var i=[],a=[],l=0;lp&&(fl(this,w.head.line,l,!0),p=w.head.line,m==this.doc.sel.primIndex&&Ko(this));else{var _=w.from(),S=w.to(),$=Math.max(p,_.line);p=Math.min(this.lastLine(),S.line-(S.ch?0:1))+1;for(var D=$;D0&&Cf(this.doc,m,new ht(_,G[m].to()),F)}}}),getTokenAt:function(l,u){return vp(this,l,u)},getLineTokens:function(l,u){return vp(this,Q(l),u,!0)},getTokenTypeAt:function(l){l=Ke(this.doc,l);var u=hp(this,Pe(this.doc,l.line)),p=0,m=(u.length-1)/2,w=l.ch,_;if(w==0)_=u[2];else for(;;){var S=p+m>>1;if((S?u[S*2-1]:0)>=w)m=S;else if(u[S*2+1]_&&(l=_,m=!0),w=Pe(this.doc,l)}else w=l;return Aa(this,w,{top:0,left:0},u||"page",p||m).top+(m?this.doc.height-Vr(w):0)},defaultTextHeight:function(){return Vo(this.display)},defaultCharWidth:function(){return jo(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(l,u,p,m,w){var _=this.display;l=hr(this,Ke(this.doc,l));var S=l.bottom,$=l.left;if(u.style.position="absolute",u.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(u),_.sizer.appendChild(u),m=="over")S=l.top;else if(m=="above"||m=="near"){var D=Math.max(_.wrapper.clientHeight,this.doc.height),G=Math.max(_.sizer.clientWidth,_.lineSpace.clientWidth);(m=="above"||l.bottom+u.offsetHeight>D)&&l.top>u.offsetHeight?S=l.top-u.offsetHeight:l.bottom+u.offsetHeight<=D&&(S=l.bottom),$+u.offsetWidth>G&&($=G-u.offsetWidth)}u.style.top=S+"px",u.style.left=u.style.right="",w=="right"?($=_.sizer.clientWidth-u.offsetWidth,u.style.right="0px"):(w=="left"?$=0:w=="middle"&&($=(_.sizer.clientWidth-u.offsetWidth)/2),u.style.left=$+"px"),p&&Mx(this,{left:$,top:S,right:$+u.offsetWidth,bottom:S+u.offsetHeight})},triggerOnKeyDown:an(Kg),triggerOnKeyPress:an(Yg),triggerOnKeyUp:Xg,triggerOnMouseDown:an(Zg),execCommand:function(l){if(ll.hasOwnProperty(l))return ll[l].call(null,this)},triggerElectric:an(function(l){iv(this,l)}),findPosH:function(l,u,p,m){var w=1;u<0&&(w=-1,u=-u);for(var _=Ke(this.doc,l),S=0;S0&&$(p.charAt(m-1));)--m;for(;w.5||this.options.lineWrapping)&&af(this),Et(this,"refresh",this)}),swapDoc:an(function(l){var u=this.doc;return u.cm=null,this.state.selectingText&&this.state.selectingText(),pg(this,l),Us(this),this.display.input.reset(),js(this,l.scrollLeft,l.scrollTop),this.curOp.forceScroll=!0,Bt(this,"swapDoc",this,u),u}),phrase:function(l){var u=this.options.phrases;return u&&Object.prototype.hasOwnProperty.call(u,l)?u[l]:l},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},lr(n),n.registerHelper=function(l,u,p){a.hasOwnProperty(l)||(a[l]=n[l]={_global:[]}),a[l][u]=p},n.registerGlobalHelper=function(l,u,p,m){n.registerHelper(l,u,m),a[l]._global.push({pred:p,val:m})}}function Rf(n,i,a,l,u){var p=i,m=a,w=Pe(n,i.line),_=u&&n.direction=="rtl"?-a:a;function S(){var ke=i.line+_;return ke=n.first+n.size?!1:(i=new Q(ke,i.ch,i.sticky),w=Pe(n,ke))}function $(ke){var we;if(l=="codepoint"){var Le=w.text.charCodeAt(i.ch+(a>0?0:-1));if(isNaN(Le))we=null;else{var He=a>0?Le>=55296&&Le<56320:Le>=56320&&Le<57343;we=new Q(i.line,Math.max(0,Math.min(w.text.length,i.ch+a*(He?2:1))),-a)}}else u?we=p_(n.cm,w,i,a):we=Ef(w,i,a);if(we==null)if(!ke&&S())i=Lf(u,n.cm,w,i.line,_);else return!1;else i=we;return!0}if(l=="char"||l=="codepoint")$();else if(l=="column")$(!0);else if(l=="word"||l=="group")for(var D=null,G=l=="group",U=n.cm&&n.cm.getHelper(i,"wordChars"),ee=!0;!(a<0&&!$(!ee));ee=!1){var ce=w.text.charAt(i.ch)||` +`,ve=Ge(ce,U)?"w":G&&ce==` +`?"n":!G||/\s/.test(ce)?null:"p";if(G&&!ee&&!ve&&(ve="s"),D&&D!=ve){a<0&&(a=1,$(),i.sticky="after");break}if(ve&&(D=ve),a>0&&!$(!ee))break}var be=Ba(n,i,p,m,!0);return dt(p,be)&&(be.hitSide=!0),be}function lv(n,i,a,l){var u=n.doc,p=i.left,m;if(l=="page"){var w=Math.min(n.display.wrapper.clientHeight,Ee(n).innerHeight||u(n).documentElement.clientHeight),_=Math.max(w-.5*Vo(n.display),3);m=(a>0?i.bottom:i.top)+a*_}else l=="line"&&(m=a>0?i.bottom+3:i.top-3);for(var S;S=rf(n,p,m),!!S.outside;){if(a<0?m<=0:m>=u.height){S.hitSide=!0;break}m+=a*5}return S}var mt=function(n){this.cm=n,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new $e,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};mt.prototype.init=function(n){var i=this,a=this,l=a.cm,u=a.div=n.lineDiv;u.contentEditable=!0,Pf(u,l.options.spellcheck,l.options.autocorrect,l.options.autocapitalize);function p(w){for(var _=w.target;_;_=_.parentNode){if(_==u)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(_.className))break}return!1}Fe(u,"paste",function(w){!p(w)||Lt(l,w)||rv(w,l)||g<=11&&setTimeout(Wt(l,function(){return i.updateFromDOM()}),20)}),Fe(u,"compositionstart",function(w){i.composing={data:w.data,done:!1}}),Fe(u,"compositionupdate",function(w){i.composing||(i.composing={data:w.data,done:!1})}),Fe(u,"compositionend",function(w){i.composing&&(w.data!=i.composing.data&&i.readFromDOMSoon(),i.composing.done=!0)}),Fe(u,"touchstart",function(){return a.forceCompositionEnd()}),Fe(u,"input",function(){i.composing||i.readFromDOMSoon()});function m(w){if(!(!p(w)||Lt(l,w))){if(l.somethingSelected())Ka({lineWise:!1,text:l.getSelections()}),w.type=="cut"&&l.replaceSelection("",null,"cut");else if(l.options.lineWiseCopyCut){var _=ov(l);Ka({lineWise:!0,text:_.text}),w.type=="cut"&&l.operation(function(){l.setSelections(_.ranges,0,F),l.replaceSelection("",null,"cut")})}else return;if(w.clipboardData){w.clipboardData.clearData();var S=gr.text.join(` +`);if(w.clipboardData.setData("Text",S),w.clipboardData.getData("Text")==S){w.preventDefault();return}}var $=sv(),D=$.firstChild;Pf(D),l.display.lineSpace.insertBefore($,l.display.lineSpace.firstChild),D.value=gr.text.join(` +`);var G=ye(Ze(u));je(D),setTimeout(function(){l.display.lineSpace.removeChild($),G.focus(),G==u&&a.showPrimarySelection()},50)}}Fe(u,"copy",m),Fe(u,"cut",m)},mt.prototype.screenReaderLabelChanged=function(n){n?this.div.setAttribute("aria-label",n):this.div.removeAttribute("aria-label")},mt.prototype.prepareSelection=function(){var n=Zp(this.cm,!1);return n.focus=ye(Ze(this.div))==this.div,n},mt.prototype.showSelection=function(n,i){!n||!this.cm.display.view.length||((n.focus||i)&&this.showPrimarySelection(),this.showMultipleSelections(n))},mt.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},mt.prototype.showPrimarySelection=function(){var n=this.getSelection(),i=this.cm,a=i.doc.sel.primary(),l=a.from(),u=a.to();if(i.display.viewTo==i.display.viewFrom||l.line>=i.display.viewTo||u.line=i.display.viewFrom&&av(i,l)||{node:w[0].measure.map[2],offset:0},S=u.linen.firstLine()&&(l=Q(l.line-1,Pe(n.doc,l.line-1).length)),u.ch==Pe(n.doc,u.line).text.length&&u.linei.viewTo-1)return!1;var p,m,w;l.line==i.viewFrom||(p=lo(n,l.line))==0?(m=C(i.view[0].line),w=i.view[0].node):(m=C(i.view[p].line),w=i.view[p-1].node.nextSibling);var _=lo(n,u.line),S,$;if(_==i.view.length-1?(S=i.viewTo-1,$=i.lineDiv.lastChild):(S=C(i.view[_+1].line)-1,$=i.view[_+1].node.previousSibling),!w)return!1;for(var D=n.doc.splitLines(R_(n,w,$,m,S)),G=Wr(n.doc,Q(m,0),Q(S,Pe(n.doc,S).text.length));D.length>1&&G.length>1;)if(fe(D)==fe(G))D.pop(),G.pop(),S--;else if(D[0]==G[0])D.shift(),G.shift(),m++;else break;for(var U=0,ee=0,ce=D[0],ve=G[0],be=Math.min(ce.length,ve.length);Ul.ch&&ke.charCodeAt(ke.length-ee-1)==we.charCodeAt(we.length-ee-1);)U--,ee++;D[D.length-1]=ke.slice(0,ke.length-ee).replace(/^\u200b+/,""),D[0]=D[0].slice(U).replace(/\u200b+$/,"");var He=Q(m,U),De=Q(S,G.length?fe(G).length-ee:0);if(D.length>1||D[0]||_e(He,De))return Qo(n.doc,D,He,De,"+input"),!0},mt.prototype.ensurePolled=function(){this.forceCompositionEnd()},mt.prototype.reset=function(){this.forceCompositionEnd()},mt.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},mt.prototype.readFromDOMSoon=function(){var n=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(n.readDOMTimeout=null,n.composing)if(n.composing.done)n.composing=null;else return;n.updateFromDOM()},80))},mt.prototype.updateFromDOM=function(){var n=this;(this.cm.isReadOnly()||!this.pollContent())&&An(this.cm,function(){return gn(n.cm)})},mt.prototype.setUneditable=function(n){n.contentEditable="false"},mt.prototype.onKeyPress=function(n){n.charCode==0||this.composing||(n.preventDefault(),this.cm.isReadOnly()||Wt(this.cm,Of)(this.cm,String.fromCharCode(n.charCode==null?n.keyCode:n.charCode),0))},mt.prototype.readOnlyChanged=function(n){this.div.contentEditable=String(n!="nocursor")},mt.prototype.onContextMenu=function(){},mt.prototype.resetPosition=function(){},mt.prototype.needsContentAttribute=!0;function av(n,i){var a=ef(n,i.line);if(!a||a.hidden)return null;var l=Pe(n.doc,i.line),u=zp(a,l,i.line),p=Ve(l,n.doc.direction),m="left";if(p){var w=sr(p,i.ch);m=w%2?"right":"left"}var _=Hp(u.map,i.ch,m);return _.offset=_.collapse=="right"?_.end:_.start,_}function P_(n){for(var i=n;i;i=i.parentNode)if(/CodeMirror-gutter-wrapper/.test(i.className))return!0;return!1}function is(n,i){return i&&(n.bad=!0),n}function R_(n,i,a,l,u){var p="",m=!1,w=n.doc.lineSeparator(),_=!1;function S(U){return function(ee){return ee.id==U}}function $(){m&&(p+=w,_&&(p+=w),m=_=!1)}function D(U){U&&($(),p+=U)}function G(U){if(U.nodeType==1){var ee=U.getAttribute("cm-text");if(ee){D(ee);return}var ce=U.getAttribute("cm-marker"),ve;if(ce){var be=n.findMarks(Q(l,0),Q(u+1,0),S(+ce));be.length&&(ve=be[0].find(0))&&D(Wr(n.doc,ve.from,ve.to).join(w));return}if(U.getAttribute("contenteditable")=="false")return;var ke=/^(pre|div|p|li|table|br)$/i.test(U.nodeName);if(!/^br$/i.test(U.nodeName)&&U.textContent.length==0)return;ke&&$();for(var we=0;we=9&&i.hasSelection&&(i.hasSelection=null),a.poll()}),Fe(u,"paste",function(m){Lt(l,m)||rv(m,l)||(l.state.pasteIncoming=+new Date,a.fastPoll())});function p(m){if(!Lt(l,m)){if(l.somethingSelected())Ka({lineWise:!1,text:l.getSelections()});else if(l.options.lineWiseCopyCut){var w=ov(l);Ka({lineWise:!0,text:w.text}),m.type=="cut"?l.setSelections(w.ranges,null,F):(a.prevInput="",u.value=w.text.join(` +`),je(u))}else return;m.type=="cut"&&(l.state.cutIncoming=+new Date)}}Fe(u,"cut",p),Fe(u,"copy",p),Fe(n.scroller,"paste",function(m){if(!(jr(n,m)||Lt(l,m))){if(!u.dispatchEvent){l.state.pasteIncoming=+new Date,a.focus();return}var w=new Event("paste");w.clipboardData=m.clipboardData,u.dispatchEvent(w)}}),Fe(n.lineSpace,"selectstart",function(m){jr(n,m)||tn(m)}),Fe(u,"compositionstart",function(){var m=l.getCursor("from");a.composing&&a.composing.range.clear(),a.composing={start:m,range:l.markText(m,l.getCursor("to"),{className:"CodeMirror-composing"})}}),Fe(u,"compositionend",function(){a.composing&&(a.poll(),a.composing.range.clear(),a.composing=null)})},Nt.prototype.createField=function(n){this.wrapper=sv(),this.textarea=this.wrapper.firstChild;var i=this.cm.options;Pf(this.textarea,i.spellcheck,i.autocorrect,i.autocapitalize)},Nt.prototype.screenReaderLabelChanged=function(n){n?this.textarea.setAttribute("aria-label",n):this.textarea.removeAttribute("aria-label")},Nt.prototype.prepareSelection=function(){var n=this.cm,i=n.display,a=n.doc,l=Zp(n);if(n.options.moveInputWithCursor){var u=hr(n,a.sel.primary().head,"div"),p=i.wrapper.getBoundingClientRect(),m=i.lineDiv.getBoundingClientRect();l.teTop=Math.max(0,Math.min(i.wrapper.clientHeight-10,u.top+m.top-p.top)),l.teLeft=Math.max(0,Math.min(i.wrapper.clientWidth-10,u.left+m.left-p.left))}return l},Nt.prototype.showSelection=function(n){var i=this.cm,a=i.display;I(a.cursorDiv,n.cursors),I(a.selectionDiv,n.selection),n.teTop!=null&&(this.wrapper.style.top=n.teTop+"px",this.wrapper.style.left=n.teLeft+"px")},Nt.prototype.reset=function(n){if(!(this.contextMenuPending||this.composing&&n)){var i=this.cm;if(this.resetting=!0,i.somethingSelected()){this.prevInput="";var a=i.getSelection();this.textarea.value=a,i.state.focused&&je(this.textarea),h&&g>=9&&(this.hasSelection=a)}else n||(this.prevInput=this.textarea.value="",h&&g>=9&&(this.hasSelection=null));this.resetting=!1}},Nt.prototype.getField=function(){return this.textarea},Nt.prototype.supportsTouch=function(){return!1},Nt.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!A||ye(Ze(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},Nt.prototype.blur=function(){this.textarea.blur()},Nt.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Nt.prototype.receivedFocus=function(){this.slowPoll()},Nt.prototype.slowPoll=function(){var n=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){n.poll(),n.cm.state.focused&&n.slowPoll()})},Nt.prototype.fastPoll=function(){var n=!1,i=this;i.pollingFast=!0;function a(){var l=i.poll();!l&&!n?(n=!0,i.polling.set(60,a)):(i.pollingFast=!1,i.slowPoll())}i.polling.set(20,a)},Nt.prototype.poll=function(){var n=this,i=this.cm,a=this.textarea,l=this.prevInput;if(this.contextMenuPending||this.resetting||!i.state.focused||vi(a)&&!l&&!this.composing||i.isReadOnly()||i.options.disableInput||i.state.keySeq)return!1;var u=a.value;if(u==l&&!i.somethingSelected())return!1;if(h&&g>=9&&this.hasSelection===u||H&&/[\uf700-\uf7ff]/.test(u))return i.display.input.reset(),!1;if(i.doc.sel==i.display.selForContextMenu){var p=u.charCodeAt(0);if(p==8203&&!l&&(l="​"),p==8666)return this.reset(),this.cm.execCommand("undo")}for(var m=0,w=Math.min(l.length,u.length);m1e3||u.indexOf(` +`)>-1?a.value=n.prevInput="":n.prevInput=u,n.composing&&(n.composing.range.clear(),n.composing.range=i.markText(n.composing.start,i.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Nt.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Nt.prototype.onKeyPress=function(){h&&g>=9&&(this.hasSelection=null),this.fastPoll()},Nt.prototype.onContextMenu=function(n){var i=this,a=i.cm,l=a.display,u=i.textarea;i.contextMenuPending&&i.contextMenuPending();var p=so(a,n),m=l.scroller.scrollTop;if(!p||T)return;var w=a.options.resetSelectionOnContextMenu;w&&a.doc.sel.contains(p)==-1&&Wt(a,nn)(a.doc,xi(p),F);var _=u.style.cssText,S=i.wrapper.style.cssText,$=i.wrapper.offsetParent.getBoundingClientRect();i.wrapper.style.cssText="position: static",u.style.cssText=`position: absolute; width: 30px; height: 30px; + top: `+(n.clientY-$.top-5)+"px; left: "+(n.clientX-$.left-5)+`px; + z-index: 1000; background: `+(h?"rgba(255, 255, 255, .05)":"transparent")+`; + outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var D;v&&(D=u.ownerDocument.defaultView.scrollY),l.input.focus(),v&&u.ownerDocument.defaultView.scrollTo(null,D),l.input.reset(),a.somethingSelected()||(u.value=i.prevInput=" "),i.contextMenuPending=U,l.selForContextMenu=a.doc.sel,clearTimeout(l.detectingSelectAll);function G(){if(u.selectionStart!=null){var ce=a.somethingSelected(),ve="​"+(ce?u.value:"");u.value="⇚",u.value=ve,i.prevInput=ce?"":"​",u.selectionStart=1,u.selectionEnd=ve.length,l.selForContextMenu=a.doc.sel}}function U(){if(i.contextMenuPending==U&&(i.contextMenuPending=!1,i.wrapper.style.cssText=S,u.style.cssText=_,h&&g<9&&l.scrollbars.setScrollTop(l.scroller.scrollTop=m),u.selectionStart!=null)){(!h||h&&g<9)&&G();var ce=0,ve=function(){l.selForContextMenu==a.doc.sel&&u.selectionStart==0&&u.selectionEnd>0&&i.prevInput=="​"?Wt(a,Eg)(a):ce++<10?l.detectingSelectAll=setTimeout(ve,500):(l.selForContextMenu=null,l.input.reset())};l.detectingSelectAll=setTimeout(ve,200)}}if(h&&g>=9&&G(),j){pi(n);var ee=function(){en(window,"mouseup",ee),setTimeout(U,20)};Fe(window,"mouseup",ee)}else setTimeout(U,50)},Nt.prototype.readOnlyChanged=function(n){n||this.reset(),this.textarea.disabled=n=="nocursor",this.textarea.readOnly=!!n},Nt.prototype.setUneditable=function(){},Nt.prototype.needsContentAttribute=!1;function z_(n,i){if(i=i?ae(i):{},i.value=n.value,!i.tabindex&&n.tabIndex&&(i.tabindex=n.tabIndex),!i.placeholder&&n.placeholder&&(i.placeholder=n.placeholder),i.autofocus==null){var a=ye(Ze(n));i.autofocus=a==n||n.getAttribute("autofocus")!=null&&a==document.body}function l(){n.value=w.getValue()}var u;if(n.form&&(Fe(n.form,"submit",l),!i.leaveSubmitMethodAlone)){var p=n.form;u=p.submit;try{var m=p.submit=function(){l(),p.submit=u,p.submit(),p.submit=m}}catch{}}i.finishInit=function(_){_.save=l,_.getTextArea=function(){return n},_.toTextArea=function(){_.toTextArea=isNaN,l(),n.parentNode.removeChild(_.getWrapperElement()),n.style.display="",n.form&&(en(n.form,"submit",l),!i.leaveSubmitMethodAlone&&typeof n.form.submit=="function"&&(n.form.submit=u))}},n.style.display="none";var w=kt(function(_){return n.parentNode.insertBefore(_,n.nextSibling)},i);return w}function I_(n){n.off=en,n.on=Fe,n.wheelEventPixels=Vx,n.Doc=vn,n.splitLines=Xn,n.countColumn=de,n.findColumn=le,n.isWordChar=Ue,n.Pass=P,n.signal=Et,n.Line=Bo,n.changeEnd=_i,n.scrollbarModel=rg,n.Pos=Q,n.cmpPos=_e,n.modes=Do,n.mimeModes=ur,n.resolveMode=zo,n.getMode=Io,n.modeExtensions=mi,n.extendMode=Fo,n.copyState=kr,n.startState=Ho,n.innerMode=zs,n.commands=ll,n.keyMap=Kr,n.keyName=Wg,n.isModifierKey=qg,n.lookupKey=ts,n.normalizeKeyMap=h_,n.StringStream=At,n.SharedTextMarker=il,n.TextMarker=ki,n.LineWidget=rl,n.e_preventDefault=tn,n.e_stopPropagation=Po,n.e_stop=pi,n.addClass=Ne,n.contains=ie,n.rmClass=K,n.keyNames=Ci}A_(kt),O_(kt);var F_="iter insert remove copy getEditor constructor".split(" ");for(var Ya in vn.prototype)vn.prototype.hasOwnProperty(Ya)&&Te(F_,Ya)<0&&(kt.prototype[Ya]=function(n){return function(){return n.apply(this.doc,arguments)}}(vn.prototype[Ya]));return lr(vn),kt.inputStyles={textarea:Nt,contenteditable:mt},kt.defineMode=function(n){!kt.defaults.mode&&n!="null"&&(kt.defaults.mode=n),fr.apply(this,arguments)},kt.defineMIME=ro,kt.defineMode("null",function(){return{token:function(n){return n.skipToEnd()}}}),kt.defineMIME("text/plain","null"),kt.defineExtension=function(n,i){kt.prototype[n]=i},kt.defineDocExtension=function(n,i){vn.prototype[n]=i},kt.fromTextArea=z_,I_(kt),kt.version="5.65.17",kt})})(Yw);var Ps=Yw.exports;const dfe=Vb(Ps);var hfe={exports:{}};(function(e,t){(function(r){r(Ps)})(function(r){r.defineMode("javascript",function(o,s){var c=o.indentUnit,f=s.statementIndent,d=s.jsonld,h=s.json||d,g=s.trackScope!==!1,v=s.typescript,y=s.wordCharacters||/[\w$\xa1-\uffff]/,b=function(){function C(qt){return{type:qt,style:"keyword"}}var R=C("keyword a"),se=C("keyword b"),ge=C("keyword c"),Q=C("keyword d"),_e=C("operator"),dt={type:"atom",style:"atom"};return{if:C("if"),while:R,with:R,else:se,do:se,try:se,finally:se,return:Q,break:Q,continue:Q,new:C("new"),delete:ge,void:ge,throw:ge,debugger:C("debugger"),var:C("var"),const:C("var"),let:C("var"),function:C("function"),catch:C("catch"),for:C("for"),switch:C("switch"),case:C("case"),default:C("default"),in:_e,typeof:_e,instanceof:_e,true:dt,false:dt,null:dt,undefined:dt,NaN:dt,Infinity:dt,this:C("this"),class:C("class"),super:C("atom"),yield:ge,export:C("export"),import:C("import"),extends:ge,await:ge}}(),x=/[+\-*&%=<>!?|~^@]/,T=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function E(C){for(var R=!1,se,ge=!1;(se=C.next())!=null;){if(!R){if(se=="/"&&!ge)return;se=="["?ge=!0:ge&&se=="]"&&(ge=!1)}R=!R&&se=="\\"}}var M,N;function L(C,R,se){return M=C,N=se,R}function O(C,R){var se=C.next();if(se=='"'||se=="'")return R.tokenize=A(se),R.tokenize(C,R);if(se=="."&&C.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return L("number","number");if(se=="."&&C.match(".."))return L("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(se))return L(se);if(se=="="&&C.eat(">"))return L("=>","operator");if(se=="0"&&C.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return L("number","number");if(/\d/.test(se))return C.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),L("number","number");if(se=="/")return C.eat("*")?(R.tokenize=H,H(C,R)):C.eat("/")?(C.skipToEnd(),L("comment","comment")):Hn(C,R,1)?(E(C),C.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),L("regexp","string-2")):(C.eat("="),L("operator","operator",C.current()));if(se=="`")return R.tokenize=z,z(C,R);if(se=="#"&&C.peek()=="!")return C.skipToEnd(),L("meta","meta");if(se=="#"&&C.eatWhile(y))return L("variable","property");if(se=="<"&&C.match("!--")||se=="-"&&C.match("->")&&!/\S/.test(C.string.slice(0,C.start)))return C.skipToEnd(),L("comment","comment");if(x.test(se))return(se!=">"||!R.lexical||R.lexical.type!=">")&&(C.eat("=")?(se=="!"||se=="=")&&C.eat("="):/[<>*+\-|&?]/.test(se)&&(C.eat(se),se==">"&&C.eat(se))),se=="?"&&C.eat(".")?L("."):L("operator","operator",C.current());if(y.test(se)){C.eatWhile(y);var ge=C.current();if(R.lastType!="."){if(b.propertyIsEnumerable(ge)){var Q=b[ge];return L(Q.type,Q.style,ge)}if(ge=="async"&&C.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return L("async","keyword",ge)}return L("variable","variable",ge)}}function A(C){return function(R,se){var ge=!1,Q;if(d&&R.peek()=="@"&&R.match(T))return se.tokenize=O,L("jsonld-keyword","meta");for(;(Q=R.next())!=null&&!(Q==C&&!ge);)ge=!ge&&Q=="\\";return ge||(se.tokenize=O),L("string","string")}}function H(C,R){for(var se=!1,ge;ge=C.next();){if(ge=="/"&&se){R.tokenize=O;break}se=ge=="*"}return L("comment","comment")}function z(C,R){for(var se=!1,ge;(ge=C.next())!=null;){if(!se&&(ge=="`"||ge=="$"&&C.eat("{"))){R.tokenize=O;break}se=!se&&ge=="\\"}return L("quasi","string-2",C.current())}var J="([{}])";function re(C,R){R.fatArrowAt&&(R.fatArrowAt=null);var se=C.string.indexOf("=>",C.start);if(!(se<0)){if(v){var ge=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(C.string.slice(C.start,se));ge&&(se=ge.index)}for(var Q=0,_e=!1,dt=se-1;dt>=0;--dt){var qt=C.string.charAt(dt),pn=J.indexOf(qt);if(pn>=0&&pn<3){if(!Q){++dt;break}if(--Q==0){qt=="("&&(_e=!0);break}}else if(pn>=3&&pn<6)++Q;else if(y.test(qt))_e=!0;else if(/["'\/`]/.test(qt))for(;;--dt){if(dt==0)return;var qo=C.string.charAt(dt-1);if(qo==qt&&C.string.charAt(dt-2)!="\\"){dt--;break}}else if(_e&&!Q){++dt;break}}_e&&!Q&&(R.fatArrowAt=dt)}}var te={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function j(C,R,se,ge,Q,_e){this.indented=C,this.column=R,this.type=se,this.prev=Q,this.info=_e,ge!=null&&(this.align=ge)}function ne(C,R){if(!g)return!1;for(var se=C.localVars;se;se=se.next)if(se.name==R)return!0;for(var ge=C.context;ge;ge=ge.prev)for(var se=ge.vars;se;se=se.next)if(se.name==R)return!0}function K(C,R,se,ge,Q){var _e=C.cc;for(V.state=C,V.stream=Q,V.marked=null,V.cc=_e,V.style=R,C.lexical.hasOwnProperty("align")||(C.lexical.align=!0);;){var dt=_e.length?_e.pop():h?Te:de;if(dt(se,ge)){for(;_e.length&&_e[_e.length-1].lex;)_e.pop()();return V.marked?V.marked:se=="variable"&&ne(C,ge)?"variable-2":R}}}var V={state:null,column:null,marked:null,cc:null};function I(){for(var C=arguments.length-1;C>=0;C--)V.cc.push(arguments[C])}function k(){return I.apply(null,arguments),!0}function B(C,R){for(var se=R;se;se=se.next)if(se.name==C)return!0;return!1}function W(C){var R=V.state;if(V.marked="def",!!g){if(R.context){if(R.lexical.info=="var"&&R.context&&R.context.block){var se=ie(C,R.context);if(se!=null){R.context=se;return}}else if(!B(C,R.localVars)){R.localVars=new We(C,R.localVars);return}}s.globalVars&&!B(C,R.globalVars)&&(R.globalVars=new We(C,R.globalVars))}}function ie(C,R){if(R)if(R.block){var se=ie(C,R.prev);return se?se==R.prev?R:new Ne(se,R.vars,!0):null}else return B(C,R.vars)?R:new Ne(R.prev,new We(C,R.vars),!1);else return null}function ye(C){return C=="public"||C=="private"||C=="protected"||C=="abstract"||C=="readonly"}function Ne(C,R,se){this.prev=C,this.vars=R,this.block=se}function We(C,R){this.name=C,this.next=R}var je=new We("this",new We("arguments",null));function it(){V.state.context=new Ne(V.state.context,V.state.localVars,!1),V.state.localVars=je}function rt(){V.state.context=new Ne(V.state.context,V.state.localVars,!0),V.state.localVars=null}it.lex=rt.lex=!0;function Ze(){V.state.localVars=V.state.context.vars,V.state.context=V.state.context.prev}Ze.lex=!0;function Ee(C,R){var se=function(){var ge=V.state,Q=ge.indented;if(ge.lexical.type=="stat")Q=ge.lexical.indented;else for(var _e=ge.lexical;_e&&_e.type==")"&&_e.align;_e=_e.prev)Q=_e.indented;ge.lexical=new j(Q,V.stream.column(),C,null,ge.lexical,R)};return se.lex=!0,se}function X(){var C=V.state;C.lexical.prev&&(C.lexical.type==")"&&(C.indented=C.lexical.indented),C.lexical=C.lexical.prev)}X.lex=!0;function ae(C){function R(se){return se==C?k():C==";"||se=="}"||se==")"||se=="]"?I():k(R)}return R}function de(C,R){return C=="var"?k(Ee("vardef",R),Po,ae(";"),X):C=="keyword a"?k(Ee("form"),P,de,X):C=="keyword b"?k(Ee("form"),de,X):C=="keyword d"?V.stream.match(/^\s*$/,!1)?k():k(Ee("stat"),Z,ae(";"),X):C=="debugger"?k(ae(";")):C=="{"?k(Ee("}"),rt,Jt,X,Ze):C==";"?k():C=="if"?(V.state.lexical.info=="else"&&V.state.cc[V.state.cc.length-1]==X&&V.state.cc.pop()(),k(Ee("form"),P,de,X,Ro)):C=="function"?k(Xn):C=="for"?k(Ee("form"),rt,ba,de,Ze,X):C=="class"||v&&R=="interface"?(V.marked="keyword",k(Ee("form",C=="class"?C:R),Do,X)):C=="variable"?v&&R=="declare"?(V.marked="keyword",k(de)):v&&(R=="module"||R=="enum"||R=="type")&&V.stream.match(/^\s*\w/,!1)?(V.marked="keyword",R=="enum"?k(Pe):R=="type"?k(wa,ae("operator"),Ve,ae(";")):k(Ee("form"),hn,ae("{"),Ee("}"),Jt,X,X)):v&&R=="namespace"?(V.marked="keyword",k(Ee("form"),Te,de,X)):v&&R=="abstract"?(V.marked="keyword",k(de)):k(Ee("stat"),Re):C=="switch"?k(Ee("form"),P,ae("{"),Ee("}","switch"),rt,Jt,X,X,Ze):C=="case"?k(Te,ae(":")):C=="default"?k(ae(":")):C=="catch"?k(Ee("form"),it,$e,de,X,Ze):C=="export"?k(Ee("stat"),zo,X):C=="import"?k(Ee("stat"),mi,X):C=="async"?k(de):R=="@"?k(Te,de):I(Ee("stat"),Te,ae(";"),X)}function $e(C){if(C=="(")return k(cr,ae(")"))}function Te(C,R){return F(C,R,!1)}function Ye(C,R){return F(C,R,!0)}function P(C){return C!="("?I():k(Ee(")"),Z,ae(")"),X)}function F(C,R,se){if(V.state.fatArrowAt==V.stream.start){var ge=se?xe:fe;if(C=="(")return k(it,Ee(")"),nt(cr,")"),X,ae("=>"),ge,Ze);if(C=="variable")return I(it,hn,ae("=>"),ge,Ze)}var Q=se?le:ue;return te.hasOwnProperty(C)?k(Q):C=="function"?k(Xn,Q):C=="class"||v&&R=="interface"?(V.marked="keyword",k(Ee("form"),Wu,X)):C=="keyword c"||C=="async"?k(se?Ye:Te):C=="("?k(Ee(")"),Z,ae(")"),X,Q):C=="operator"||C=="spread"?k(se?Ye:Te):C=="["?k(Ee("]"),At,X,Q):C=="{"?It(Ge,"}",null,Q):C=="quasi"?I(he,Q):C=="new"?k(pe(se)):k()}function Z(C){return C.match(/[;\}\)\],]/)?I():I(Te)}function ue(C,R){return C==","?k(Z):le(C,R,!1)}function le(C,R,se){var ge=se==!1?ue:le,Q=se==!1?Te:Ye;if(C=="=>")return k(it,se?xe:fe,Ze);if(C=="operator")return/\+\+|--/.test(R)||v&&R=="!"?k(ge):v&&R=="<"&&V.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?k(Ee(">"),nt(Ve,">"),X,ge):R=="?"?k(Te,ae(":"),Q):k(Q);if(C=="quasi")return I(he,ge);if(C!=";"){if(C=="(")return It(Ye,")","call",ge);if(C==".")return k(Ue,ge);if(C=="[")return k(Ee("]"),Z,ae("]"),X,ge);if(v&&R=="as")return V.marked="keyword",k(Ve,ge);if(C=="regexp")return V.state.lastType=V.marked="operator",V.stream.backUp(V.stream.pos-V.stream.start-1),k(Q)}}function he(C,R){return C!="quasi"?I():R.slice(R.length-2)!="${"?k(he):k(Z,Se)}function Se(C){if(C=="}")return V.marked="string-2",V.state.tokenize=z,k(he)}function fe(C){return re(V.stream,V.state),I(C=="{"?de:Te)}function xe(C){return re(V.stream,V.state),I(C=="{"?de:Ye)}function pe(C){return function(R){return R=="."?k(C?ze:Ae):R=="variable"&&v?k(Ln,C?le:ue):I(C?Ye:Te)}}function Ae(C,R){if(R=="target")return V.marked="keyword",k(ue)}function ze(C,R){if(R=="target")return V.marked="keyword",k(le)}function Re(C){return C==":"?k(X,de):I(ue,ae(";"),X)}function Ue(C){if(C=="variable")return V.marked="property",k()}function Ge(C,R){if(C=="async")return V.marked="property",k(Ge);if(C=="variable"||V.style=="keyword"){if(V.marked="property",R=="get"||R=="set")return k(vt);var se;return v&&V.state.fatArrowAt==V.stream.start&&(se=V.stream.match(/^\s*:\s*/,!1))&&(V.state.fatArrowAt=V.stream.pos+se[0].length),k(tt)}else{if(C=="number"||C=="string")return V.marked=d?"property":V.style+" property",k(tt);if(C=="jsonld-keyword")return k(tt);if(v&&ye(R))return V.marked="keyword",k(Ge);if(C=="[")return k(Te,or,ae("]"),tt);if(C=="spread")return k(Ye,tt);if(R=="*")return V.marked="keyword",k(Ge);if(C==":")return I(tt)}}function vt(C){return C!="variable"?I(tt):(V.marked="property",k(Xn))}function tt(C){if(C==":")return k(Ye);if(C=="(")return I(Xn)}function nt(C,R,se){function ge(Q,_e){if(se?se.indexOf(Q)>-1:Q==","){var dt=V.state.lexical;return dt.info=="call"&&(dt.pos=(dt.pos||0)+1),k(function(qt,pn){return qt==R||pn==R?I():I(C)},ge)}return Q==R||_e==R?k():se&&se.indexOf(";")>-1?I(C):k(ae(R))}return function(Q,_e){return Q==R||_e==R?k():I(C,ge)}}function It(C,R,se){for(var ge=3;ge"),Ve);if(C=="quasi")return I(en,Kn)}function no(C){if(C=="=>")return k(Ve)}function Fe(C){return C.match(/[\}\)\]]/)?k():C==","||C==";"?k(Fe):I(Br,Fe)}function Br(C,R){if(C=="variable"||V.style=="keyword")return V.marked="property",k(Br);if(R=="?"||C=="number"||C=="string")return k(Br);if(C==":")return k(Ve);if(C=="[")return k(ae("variable"),Fn,ae("]"),Br);if(C=="(")return I(vi,Br);if(!C.match(/[;\}\)\],]/))return k()}function en(C,R){return C!="quasi"?I():R.slice(R.length-2)!="${"?k(en):k(Ve,Et)}function Et(C){if(C=="}")return V.marked="string-2",V.state.tokenize=z,k(en)}function Lt(C,R){return C=="variable"&&V.stream.match(/^\s*[?:]/,!1)||R=="?"?k(Lt):C==":"?k(Ve):C=="spread"?k(Lt):I(Ve)}function Kn(C,R){if(R=="<")return k(Ee(">"),nt(Ve,">"),X,Kn);if(R=="|"||C=="."||R=="&")return k(Ve);if(C=="[")return k(Ve,ae("]"),Kn);if(R=="extends"||R=="implements")return V.marked="keyword",k(Ve);if(R=="?")return k(Ve,ae(":"),Ve)}function Ln(C,R){if(R=="<")return k(Ee(">"),nt(Ve,">"),X,Kn)}function lr(){return I(Ve,tn)}function tn(C,R){if(R=="=")return k(Ve)}function Po(C,R){return R=="enum"?(V.marked="keyword",k(Pe)):I(hn,or,ar,Bu)}function hn(C,R){if(v&&ye(R))return V.marked="keyword",k(hn);if(C=="variable")return W(R),k();if(C=="spread")return k(hn);if(C=="[")return It(Rs,"]");if(C=="{")return It(pi,"}")}function pi(C,R){return C=="variable"&&!V.stream.match(/^\s*:/,!1)?(W(R),k(ar)):(C=="variable"&&(V.marked="property"),C=="spread"?k(hn):C=="}"?I():C=="["?k(Te,ae("]"),ae(":"),pi):k(ae(":"),hn,ar))}function Rs(){return I(hn,ar)}function ar(C,R){if(R=="=")return k(Ye)}function Bu(C){if(C==",")return k(Po)}function Ro(C,R){if(C=="keyword b"&&R=="else")return k(Ee("form","else"),de,X)}function ba(C,R){if(R=="await")return k(ba);if(C=="(")return k(Ee(")"),Ds,X)}function Ds(C){return C=="var"?k(Po,gi):C=="variable"?k(gi):I(gi)}function gi(C,R){return C==")"?k():C==";"?k(gi):R=="in"||R=="of"?(V.marked="keyword",k(Te,gi)):I(Te,gi)}function Xn(C,R){if(R=="*")return V.marked="keyword",k(Xn);if(C=="variable")return W(R),k(Xn);if(C=="(")return k(it,Ee(")"),nt(cr,")"),X,sr,de,Ze);if(v&&R=="<")return k(Ee(">"),nt(lr,">"),X,Xn)}function vi(C,R){if(R=="*")return V.marked="keyword",k(vi);if(C=="variable")return W(R),k(vi);if(C=="(")return k(it,Ee(")"),nt(cr,")"),X,sr,Ze);if(v&&R=="<")return k(Ee(">"),nt(lr,">"),X,vi)}function wa(C,R){if(C=="keyword"||C=="variable")return V.marked="type",k(wa);if(R=="<")return k(Ee(">"),nt(lr,">"),X)}function cr(C,R){return R=="@"&&k(Te,cr),C=="spread"?k(cr):v&&ye(R)?(V.marked="keyword",k(cr)):v&&C=="this"?k(or,ar):I(hn,or,ar)}function Wu(C,R){return C=="variable"?Do(C,R):ur(C,R)}function Do(C,R){if(C=="variable")return W(R),k(ur)}function ur(C,R){if(R=="<")return k(Ee(">"),nt(lr,">"),X,ur);if(R=="extends"||R=="implements"||v&&C==",")return R=="implements"&&(V.marked="keyword"),k(v?Ve:Te,ur);if(C=="{")return k(Ee("}"),fr,X)}function fr(C,R){if(C=="async"||C=="variable"&&(R=="static"||R=="get"||R=="set"||v&&ye(R))&&V.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return V.marked="keyword",k(fr);if(C=="variable"||V.style=="keyword")return V.marked="property",k(ro,fr);if(C=="number"||C=="string")return k(ro,fr);if(C=="[")return k(Te,or,ae("]"),ro,fr);if(R=="*")return V.marked="keyword",k(fr);if(v&&C=="(")return I(vi,fr);if(C==";"||C==",")return k(fr);if(C=="}")return k();if(R=="@")return k(Te,fr)}function ro(C,R){if(R=="!"||R=="?")return k(ro);if(C==":")return k(Ve,ar);if(R=="=")return k(Ye);var se=V.state.lexical.prev,ge=se&&se.info=="interface";return I(ge?vi:Xn)}function zo(C,R){return R=="*"?(V.marked="keyword",k(Ho,ae(";"))):R=="default"?(V.marked="keyword",k(Te,ae(";"))):C=="{"?k(nt(Io,"}"),Ho,ae(";")):I(de)}function Io(C,R){if(R=="as")return V.marked="keyword",k(ae("variable"));if(C=="variable")return I(Ye,Io)}function mi(C){return C=="string"?k():C=="("?I(Te):C=="."?I(ue):I(Fo,kr,Ho)}function Fo(C,R){return C=="{"?It(Fo,"}"):(C=="variable"&&W(R),R=="*"&&(V.marked="keyword"),k(zs))}function kr(C){if(C==",")return k(Fo,kr)}function zs(C,R){if(R=="as")return V.marked="keyword",k(Fo)}function Ho(C,R){if(R=="from")return V.marked="keyword",k(Te)}function At(C){return C=="]"?k():I(nt(Ye,"]"))}function Pe(){return I(Ee("form"),hn,ae("{"),Ee("}"),nt(Wr,"}"),X,X)}function Wr(){return I(hn,ar)}function Is(C,R){return C.lastType=="operator"||C.lastType==","||x.test(R.charAt(0))||/[,.]/.test(R.charAt(0))}function Hn(C,R,se){return R.tokenize==O&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(R.lastType)||R.lastType=="quasi"&&/\{\s*$/.test(C.string.slice(0,C.pos-(se||0)))}return{startState:function(C){var R={tokenize:O,lastType:"sof",cc:[],lexical:new j((C||0)-c,0,"block",!1),localVars:s.localVars,context:s.localVars&&new Ne(null,null,!1),indented:C||0};return s.globalVars&&typeof s.globalVars=="object"&&(R.globalVars=s.globalVars),R},token:function(C,R){if(C.sol()&&(R.lexical.hasOwnProperty("align")||(R.lexical.align=!1),R.indented=C.indentation(),re(C,R)),R.tokenize!=H&&C.eatSpace())return null;var se=R.tokenize(C,R);return M=="comment"?se:(R.lastType=M=="operator"&&(N=="++"||N=="--")?"incdec":M,K(R,se,M,N,C))},indent:function(C,R){if(C.tokenize==H||C.tokenize==z)return r.Pass;if(C.tokenize!=O)return 0;var se=R&&R.charAt(0),ge=C.lexical,Q;if(!/^\s*else\b/.test(R))for(var _e=C.cc.length-1;_e>=0;--_e){var dt=C.cc[_e];if(dt==X)ge=ge.prev;else if(dt!=Ro&&dt!=Ze)break}for(;(ge.type=="stat"||ge.type=="form")&&(se=="}"||(Q=C.cc[C.cc.length-1])&&(Q==ue||Q==le)&&!/^[,\.=+\-*:?[\(]/.test(R));)ge=ge.prev;f&&ge.type==")"&&ge.prev.type=="stat"&&(ge=ge.prev);var qt=ge.type,pn=se==qt;return qt=="vardef"?ge.indented+(C.lastType=="operator"||C.lastType==","?ge.info.length+1:0):qt=="form"&&se=="{"?ge.indented:qt=="form"?ge.indented+c:qt=="stat"?ge.indented+(Is(C,R)?f||c:0):ge.info=="switch"&&!pn&&s.doubleIndentSwitch!=!1?ge.indented+(/^(?:case|default)\b/.test(R)?c:2*c):ge.align?ge.column+(pn?0:1):ge.indented+(pn?0:c)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:h?null:"/*",blockCommentEnd:h?null:"*/",blockCommentContinue:h?null:" * ",lineComment:h?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:h?"json":"javascript",jsonldMode:d,jsonMode:h,expressionAllowed:Hn,skipExpression:function(C){K(C,"atom","atom","true",new r.StringStream("",2,null))}}}),r.registerHelper("wordChars","javascript",/[\w$]/),r.defineMIME("text/javascript","javascript"),r.defineMIME("text/ecmascript","javascript"),r.defineMIME("application/javascript","javascript"),r.defineMIME("application/x-javascript","javascript"),r.defineMIME("application/ecmascript","javascript"),r.defineMIME("application/json",{name:"javascript",json:!0}),r.defineMIME("application/x-json",{name:"javascript",json:!0}),r.defineMIME("application/manifest+json",{name:"javascript",json:!0}),r.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),r.defineMIME("text/typescript",{name:"javascript",typescript:!0}),r.defineMIME("application/typescript",{name:"javascript",typescript:!0})})})();var pfe=hfe.exports,gfe={exports:{}};(function(e,t){(function(r){r(Ps)})(function(r){var o={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},s={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};r.defineMode("xml",function(c,f){var d=c.indentUnit,h={},g=f.htmlMode?o:s;for(var v in g)h[v]=g[v];for(var v in f)h[v]=f[v];var y,b;function x(k,B){function W(Ne){return B.tokenize=Ne,Ne(k,B)}var ie=k.next();if(ie=="<")return k.eat("!")?k.eat("[")?k.match("CDATA[")?W(M("atom","]]>")):null:k.match("--")?W(M("comment","-->")):k.match("DOCTYPE",!0,!0)?(k.eatWhile(/[\w\._\-]/),W(N(1))):null:k.eat("?")?(k.eatWhile(/[\w\._\-]/),B.tokenize=M("meta","?>"),"meta"):(y=k.eat("/")?"closeTag":"openTag",B.tokenize=T,"tag bracket");if(ie=="&"){var ye;return k.eat("#")?k.eat("x")?ye=k.eatWhile(/[a-fA-F\d]/)&&k.eat(";"):ye=k.eatWhile(/[\d]/)&&k.eat(";"):ye=k.eatWhile(/[\w\.\-:]/)&&k.eat(";"),ye?"atom":"error"}else return k.eatWhile(/[^&<]/),null}x.isInText=!0;function T(k,B){var W=k.next();if(W==">"||W=="/"&&k.eat(">"))return B.tokenize=x,y=W==">"?"endTag":"selfcloseTag","tag bracket";if(W=="=")return y="equals",null;if(W=="<"){B.tokenize=x,B.state=z,B.tagName=B.tagStart=null;var ie=B.tokenize(k,B);return ie?ie+" tag error":"tag error"}else return/[\'\"]/.test(W)?(B.tokenize=E(W),B.stringStartCol=k.column(),B.tokenize(k,B)):(k.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function E(k){var B=function(W,ie){for(;!W.eol();)if(W.next()==k){ie.tokenize=T;break}return"string"};return B.isInAttribute=!0,B}function M(k,B){return function(W,ie){for(;!W.eol();){if(W.match(B)){ie.tokenize=x;break}W.next()}return k}}function N(k){return function(B,W){for(var ie;(ie=B.next())!=null;){if(ie=="<")return W.tokenize=N(k+1),W.tokenize(B,W);if(ie==">")if(k==1){W.tokenize=x;break}else return W.tokenize=N(k-1),W.tokenize(B,W)}return"meta"}}function L(k){return k&&k.toLowerCase()}function O(k,B,W){this.prev=k.context,this.tagName=B||"",this.indent=k.indented,this.startOfLine=W,(h.doNotIndent.hasOwnProperty(B)||k.context&&k.context.noIndent)&&(this.noIndent=!0)}function A(k){k.context&&(k.context=k.context.prev)}function H(k,B){for(var W;;){if(!k.context||(W=k.context.tagName,!h.contextGrabbers.hasOwnProperty(L(W))||!h.contextGrabbers[L(W)].hasOwnProperty(L(B))))return;A(k)}}function z(k,B,W){return k=="openTag"?(W.tagStart=B.column(),J):k=="closeTag"?re:z}function J(k,B,W){return k=="word"?(W.tagName=B.current(),b="tag",ne):h.allowMissingTagName&&k=="endTag"?(b="tag bracket",ne(k,B,W)):(b="error",J)}function re(k,B,W){if(k=="word"){var ie=B.current();return W.context&&W.context.tagName!=ie&&h.implicitlyClosed.hasOwnProperty(L(W.context.tagName))&&A(W),W.context&&W.context.tagName==ie||h.matchClosing===!1?(b="tag",te):(b="tag error",j)}else return h.allowMissingTagName&&k=="endTag"?(b="tag bracket",te(k,B,W)):(b="error",j)}function te(k,B,W){return k!="endTag"?(b="error",te):(A(W),z)}function j(k,B,W){return b="error",te(k,B,W)}function ne(k,B,W){if(k=="word")return b="attribute",K;if(k=="endTag"||k=="selfcloseTag"){var ie=W.tagName,ye=W.tagStart;return W.tagName=W.tagStart=null,k=="selfcloseTag"||h.autoSelfClosers.hasOwnProperty(L(ie))?H(W,ie):(H(W,ie),W.context=new O(W,ie,ye==W.indented)),z}return b="error",ne}function K(k,B,W){return k=="equals"?V:(h.allowMissing||(b="error"),ne(k,B,W))}function V(k,B,W){return k=="string"?I:k=="word"&&h.allowUnquoted?(b="string",ne):(b="error",ne(k,B,W))}function I(k,B,W){return k=="string"?I:ne(k,B,W)}return{startState:function(k){var B={tokenize:x,state:z,indented:k||0,tagName:null,tagStart:null,context:null};return k!=null&&(B.baseIndent=k),B},token:function(k,B){if(!B.tagName&&k.sol()&&(B.indented=k.indentation()),k.eatSpace())return null;y=null;var W=B.tokenize(k,B);return(W||y)&&W!="comment"&&(b=null,B.state=B.state(y||W,k,B),b&&(W=b=="error"?W+" error":b)),W},indent:function(k,B,W){var ie=k.context;if(k.tokenize.isInAttribute)return k.tagStart==k.indented?k.stringStartCol+1:k.indented+d;if(ie&&ie.noIndent)return r.Pass;if(k.tokenize!=T&&k.tokenize!=x)return W?W.match(/^(\s*)/)[0].length:0;if(k.tagName)return h.multilineTagIndentPastTag!==!1?k.tagStart+k.tagName.length+2:k.tagStart+d*(h.multilineTagIndentFactor||1);if(h.alignCDATA&&/$/,blockCommentStart:"",configuration:h.htmlMode?"html":"xml",helperType:h.htmlMode?"html":"xml",skipAttribute:function(k){k.state==V&&(k.state=ne)},xmlCurrentTag:function(k){return k.tagName?{name:k.tagName,close:k.type=="closeTag"}:null},xmlCurrentContext:function(k){for(var B=[],W=k.context;W;W=W.prev)B.push(W.tagName);return B.reverse()}}}),r.defineMIME("text/xml","xml"),r.defineMIME("application/xml","xml"),r.mimeModes.hasOwnProperty("text/html")||r.defineMIME("text/html",{name:"xml",htmlMode:!0})})})();var vfe=gfe.exports;(function(e,t){(function(r){r(Ps,vfe,pfe)})(function(r){function o(c,f,d,h){this.state=c,this.mode=f,this.depth=d,this.prev=h}function s(c){return new o(r.copyState(c.mode,c.state),c.mode,c.depth,c.prev&&s(c.prev))}r.defineMode("jsx",function(c,f){var d=r.getMode(c,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1,allowMissingTagName:!0}),h=r.getMode(c,f&&f.base||"javascript");function g(x){var T=x.tagName;x.tagName=null;var E=d.indent(x,"","");return x.tagName=T,E}function v(x,T){return T.context.mode==d?y(x,T,T.context):b(x,T,T.context)}function y(x,T,E){if(E.depth==2)return x.match(/^.*?\*\//)?E.depth=1:x.skipToEnd(),"comment";if(x.peek()=="{"){d.skipAttribute(E.state);var M=g(E.state),N=E.state.context;if(N&&x.match(/^[^>]*>\s*$/,!1)){for(;N.prev&&!N.startOfLine;)N=N.prev;N.startOfLine?M-=c.indentUnit:E.prev.state.lexical&&(M=E.prev.state.lexical.indented)}else E.depth==1&&(M+=c.indentUnit);return T.context=new o(r.startState(h,M),h,0,T.context),null}if(E.depth==1){if(x.peek()=="<")return d.skipAttribute(E.state),T.context=new o(r.startState(d,g(E.state)),d,0,T.context),null;if(x.match("//"))return x.skipToEnd(),"comment";if(x.match("/*"))return E.depth=2,v(x,T)}var L=d.token(x,E.state),O=x.current(),A;return/\btag\b/.test(L)?/>$/.test(O)?E.state.context?E.depth=0:T.context=T.context.prev:/^-1&&x.backUp(O.length-A),L}function b(x,T,E){if(x.peek()=="<"&&!x.match(/^<([^<>]|<[^>]*>)+,\s*>/,!1)&&h.expressionAllowed(x,E.state))return T.context=new o(r.startState(d,h.indent(E.state,"","")),d,0,T.context),h.skipExpression(E.state),null;var M=h.token(x,E.state);if(!M&&E.depth!=null){var N=x.current();N=="{"?E.depth++:N=="}"&&--E.depth==0&&(T.context=T.context.prev)}return M}return{startState:function(){return{context:new o(r.startState(h),h)}},copyState:function(x){return{context:s(x.context)}},token:v,indent:function(x,T,E){return x.context.mode.indent(x.context.state,T,E)},innerMode:function(x){return x.context}}},"xml","javascript"),r.defineMIME("text/jsx","jsx"),r.defineMIME("text/typescript-jsx",{name:"jsx",base:{name:"javascript",typescript:!0}})})})();(function(e,t){(function(r){r(Ps)})(function(r){r.defineOption("placeholder","",function(g,v,y){var b=y&&y!=r.Init;if(v&&!b)g.on("blur",f),g.on("change",d),g.on("swapDoc",d),r.on(g.getInputField(),"compositionupdate",g.state.placeholderCompose=function(){c(g)}),d(g);else if(!v&&b){g.off("blur",f),g.off("change",d),g.off("swapDoc",d),r.off(g.getInputField(),"compositionupdate",g.state.placeholderCompose),o(g);var x=g.getWrapperElement();x.className=x.className.replace(" CodeMirror-empty","")}v&&!g.hasFocus()&&f(g)});function o(g){g.state.placeholder&&(g.state.placeholder.parentNode.removeChild(g.state.placeholder),g.state.placeholder=null)}function s(g){o(g);var v=g.state.placeholder=document.createElement("pre");v.style.cssText="height: 0; overflow: visible",v.style.direction=g.getOption("direction"),v.className="CodeMirror-placeholder CodeMirror-line-like";var y=g.getOption("placeholder");typeof y=="string"&&(y=document.createTextNode(y)),v.appendChild(y),g.display.lineSpace.insertBefore(v,g.display.lineSpace.firstChild)}function c(g){setTimeout(function(){var v=!1;if(g.lineCount()==1){var y=g.getInputField();v=y.nodeName=="TEXTAREA"?!g.getLine(0).length:!/[^\u200b]/.test(y.querySelector(".CodeMirror-line").textContent)}v?s(g):o(g)},20)}function f(g){h(g)&&s(g)}function d(g){var v=g.getWrapperElement(),y=h(g);v.className=v.className.replace(" CodeMirror-empty","")+(y?" CodeMirror-empty":""),y?s(g):o(g)}function h(g){return g.lineCount()===1&&g.getLine(0)===""}})})();(function(e,t){(function(r){r(Ps)})(function(r){function o(f,d,h){this.orientation=d,this.scroll=h,this.screen=this.total=this.size=1,this.pos=0,this.node=document.createElement("div"),this.node.className=f+"-"+d,this.inner=this.node.appendChild(document.createElement("div"));var g=this;r.on(this.inner,"mousedown",function(y){if(y.which!=1)return;r.e_preventDefault(y);var b=g.orientation=="horizontal"?"pageX":"pageY",x=y[b],T=g.pos;function E(){r.off(document,"mousemove",M),r.off(document,"mouseup",E)}function M(N){if(N.which!=1)return E();g.moveTo(T+(N[b]-x)*(g.total/g.size))}r.on(document,"mousemove",M),r.on(document,"mouseup",E)}),r.on(this.node,"click",function(y){r.e_preventDefault(y);var b=g.inner.getBoundingClientRect(),x;g.orientation=="horizontal"?x=y.clientXb.right?1:0:x=y.clientYb.bottom?1:0,g.moveTo(g.pos+x*g.screen)});function v(y){var b=r.wheelEventPixels(y)[g.orientation=="horizontal"?"x":"y"],x=g.pos;g.moveTo(g.pos+b),g.pos!=x&&r.e_preventDefault(y)}r.on(this.node,"mousewheel",v),r.on(this.node,"DOMMouseScroll",v)}o.prototype.setPos=function(f,d){return f<0&&(f=0),f>this.total-this.screen&&(f=this.total-this.screen),!d&&f==this.pos?!1:(this.pos=f,this.inner.style[this.orientation=="horizontal"?"left":"top"]=f*(this.size/this.total)+"px",!0)},o.prototype.moveTo=function(f){this.setPos(f)&&this.scroll(f,this.orientation)};var s=10;o.prototype.update=function(f,d,h){var g=this.screen!=d||this.total!=f||this.size!=h;g&&(this.screen=d,this.total=f,this.size=h);var v=this.screen*(this.size/this.total);vf.clientWidth+1,v=f.scrollHeight>f.clientHeight+1;return this.vert.node.style.display=v?"block":"none",this.horiz.node.style.display=g?"block":"none",v&&(this.vert.update(f.scrollHeight,f.clientHeight,f.viewHeight-(g?h:0)),this.vert.node.style.bottom=g?h+"px":"0"),g&&(this.horiz.update(f.scrollWidth,f.clientWidth,f.viewWidth-(v?h:0)-f.barLeft),this.horiz.node.style.right=v?h+"px":"0",this.horiz.node.style.left=f.barLeft+"px"),{right:v?h:0,bottom:g?h:0}},c.prototype.setScrollTop=function(f){this.vert.setPos(f)},c.prototype.setScrollLeft=function(f){this.horiz.setPos(f)},c.prototype.clear=function(){var f=this.horiz.node.parentNode;f.removeChild(this.horiz.node),f.removeChild(this.vert.node)},r.scrollbarModel.simple=function(f,d){return new c("CodeMirror-simplescroll",f,d)},r.scrollbarModel.overlay=function(f,d){return new c("CodeMirror-overlayscroll",f,d)}})})();const Zn=Fr();function mfe(e,t,r={}){const o=dfe.fromTextArea(e.value,{theme:"vars",...r,scrollbarStyle:"simple"});let s=!1;return o.on("change",()=>{if(s){s=!1;return}t.value=o.getValue()}),Ht(t,c=>{if(c!==o.getValue()){s=!0;const f=o.listSelections();o.replaceRange(c,o.posFromIndex(0),o.posFromIndex(Number.POSITIVE_INFINITY)),o.setSelections(f)}},{immediate:!0}),bu(()=>{Zn.value=void 0}),vh(o)}async function yfe(e){var t;Gw(e,((t=e.location)==null?void 0:t.line)??0)}const bfe={relative:"","font-mono":"","text-sm":"",class:"codemirror-scrolls"},Zw=ft({__name:"CodeMirrorContainer",props:Ic({mode:{},readOnly:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:Ic(["save"],["update:modelValue"]),setup(e,{emit:t}){const r=t,o=Th(e,"modelValue"),s=JS(),c={js:"javascript",mjs:"javascript",cjs:"javascript",ts:{name:"javascript",typescript:!0},mts:{name:"javascript",typescript:!0},cts:{name:"javascript",typescript:!0},jsx:{name:"javascript",jsx:!0},tsx:{name:"javascript",typescript:!0,jsx:!0}},f=Be();return Os(async()=>{const d=mfe(f,o,{...s,mode:c[e.mode||""]||e.mode,readOnly:e.readOnly?!0:void 0,extraKeys:{"Cmd-S":function(h){r("save",h.getValue())},"Ctrl-S":function(h){r("save",h.getValue())}}});d.setSize("100%","100%"),d.clearHistory(),Zn.value=d,setTimeout(()=>Zn.value.refresh(),100)}),(d,h)=>(oe(),me("div",bfe,[Y("textarea",{ref_key:"el",ref:f},null,512)]))}}),wfe=ft({__name:"ViewEditor",props:{file:{}},emits:["draft"],setup(e,{emit:t}){const r=e,o=t,s=Be(""),c=Fr(void 0),f=Be(!1),d=Be(!0);Ht(()=>r.file,async()=>{var A;d.value=!0;try{if(!r.file||!((A=r.file)!=null&&A.filepath)){s.value="",c.value=s.value,f.value=!1;return}s.value=await yt.rpc.readTestFile(r.file.filepath)||"",c.value=s.value,f.value=!1}finally{ln(()=>d.value=!1)}},{immediate:!0}),Ht(()=>[d.value,r.file,Rd.value],([A,H,z])=>{A||(z!=null?ln(()=>{var re;const J={line:z??0,ch:0};(re=Zn.value)==null||re.scrollIntoView(J,100),ln(()=>{var te,j;(te=Zn.value)==null||te.focus(),(j=Zn.value)==null||j.setCursor(J)})}):ln(()=>{var J;(J=Zn.value)==null||J.focus()}))},{flush:"post"});const h=Me(()=>{var A,H;return((H=(A=r.file)==null?void 0:A.filepath)==null?void 0:H.split(/\./g).pop())||"js"}),g=Be(),v=Me(()=>{var A;return(A=g.value)==null?void 0:A.cm}),y=Me(()=>{var A;return((A=r.file)==null?void 0:A.tasks.filter(H=>{var z;return((z=H.result)==null?void 0:z.state)==="fail"}))||[]}),b=[],x=[],T=[],E=Be(!1);function M(){T.forEach(([A,H,z])=>{A.removeEventListener("click",H),z()}),T.length=0}Lw(g,()=>{var A;(A=Zn.value)==null||A.refresh()});function N(){f.value=c.value!==Zn.value.getValue()}Ht(f,A=>{o("draft",A)},{immediate:!0});function L(A){const H=((A==null?void 0:A.stacks)||[]).filter(ne=>{var K;return ne.file&&ne.file===((K=r.file)==null?void 0:K.filepath)}),z=H==null?void 0:H[0];if(!z)return;const J=document.createElement("div");J.className="op80 flex gap-x-2 items-center";const re=document.createElement("pre");re.className="c-red-600 dark:c-red-400",re.textContent=`${" ".repeat(z.column)}^ ${(A==null?void 0:A.nameStr)||A.name}: ${(A==null?void 0:A.message)||""}`,J.appendChild(re);const te=document.createElement("span");te.className="i-carbon-launch c-red-600 dark:c-red-400 hover:cursor-pointer min-w-1em min-h-1em",te.tabIndex=0,te.ariaLabel="Open in Editor",Mb(te,{content:"Open in Editor",placement:"bottom"},!1);const j=async()=>{await pw(z.file,z.line,z.column)};J.appendChild(te),T.push([te,j,()=>Dh(te)]),x.push(Zn.value.addLineClass(z.line-1,"wrap","bg-red-500/10")),b.push(Zn.value.addLineWidget(z.line-1,J))}Ht([v,y],([A])=>{if(!A){M();return}setTimeout(()=>{M(),b.forEach(H=>H.clear()),x.forEach(H=>{var z;return(z=Zn.value)==null?void 0:z.removeLineClass(H,"wrap")}),b.length=0,x.length=0,A.on("changes",N),y.value.forEach(H=>{var z,J;(J=(z=H.result)==null?void 0:z.errors)==null||J.forEach(L)}),E.value||A.clearHistory()},100)},{flush:"post"});async function O(A){E.value=!0,await yt.rpc.saveTestFile(r.file.filepath,A),c.value=A,f.value=!1}return(A,H)=>{const z=Zw;return oe(),ot(z,ii({ref_key:"editor",ref:g,modelValue:q(s),"onUpdate:modelValue":H[0]||(H[0]=J=>Ot(s)?s.value=J:null),"h-full":""},{lineNumbers:!0,readOnly:q(Pr)},{mode:q(h),"data-testid":"code-mirror",onSave:O}),null,16,["modelValue","mode"])}}}),xfe={"w-350":"","max-w-screen":"","h-full":"",flex:"","flex-col":""},_fe={"p-4":"",relative:""},Sfe=Y("p",null,"Module Info",-1),kfe={op50:"","font-mono":"","text-sm":""},Cfe={key:0,"p-5":""},Tfe={grid:"~ cols-2 rows-[min-content_auto]","overflow-hidden":"","flex-auto":""},Efe=Y("div",{p:"x3 y-1","bg-overlay":"",border:"base b t r"}," Source ",-1),Lfe=Y("div",{p:"x3 y-1","bg-overlay":"",border:"base b t"}," Transformed ",-1),Afe={key:0},Mfe={p:"x3 y-1","bg-overlay":"",border:"base b t"},Nfe=ft({__name:"ModuleTransformResultView",props:{id:{},projectName:{}},emits:["close"],setup(e,{emit:t}){const r=e,o=t,s=ace(()=>yt.rpc.getTransformResult(r.projectName,r.id,!!No)),c=Me(()=>{var g;return((g=r.id)==null?void 0:g.split(/\./g).pop())||"js"}),f=Me(()=>{var g,v;return((v=(g=s.value)==null?void 0:g.source)==null?void 0:v.trim())||""}),d=Me(()=>{var g,v;return((v=(g=s.value)==null?void 0:g.code)==null?void 0:v.replace(/\/\/# sourceMappingURL=.*\n/,"").trim())||""}),h=Me(()=>{var g,v,y,b;return{mappings:((v=(g=s.value)==null?void 0:g.map)==null?void 0:v.mappings)??"",version:(b=(y=s.value)==null?void 0:y.map)==null?void 0:b.version}});return _w("Escape",()=>{o("close")}),(g,v)=>{const y=hi,b=Zw;return oe(),me("div",xfe,[Y("div",_fe,[Sfe,Y("p",kfe,qe(g.id),1),Oe(y,{icon:"i-carbon-close",absolute:"","top-5px":"","right-5px":"","text-2xl":"",onClick:v[0]||(v[0]=x=>o("close"))})]),q(s)?(oe(),me(ut,{key:1},[Y("div",Tfe,[Efe,Lfe,Oe(b,ii({"h-full":"","model-value":q(f),"read-only":""},{lineNumbers:!0},{mode:q(c)}),null,16,["model-value","mode"]),Oe(b,ii({"h-full":"","model-value":q(d),"read-only":""},{lineNumbers:!0},{mode:q(c)}),null,16,["model-value","mode"])]),q(h).mappings!==""?(oe(),me("div",Afe,[Y("div",Mfe," Source map (v"+qe(q(h).version)+") ",1),Oe(b,ii({"model-value":q(h).mappings,"read-only":""},{lineNumbers:!0},{mode:q(c)}),null,16,["model-value","mode"])])):et("",!0)],64)):(oe(),me("div",Cfe," No transform result found for this module. "))])}}});function $fe(e,t){let r;return(...o)=>{r!==void 0&&clearTimeout(r),r=setTimeout(()=>e(...o),t)}}var Ud="http://www.w3.org/1999/xhtml";const l0={svg:"http://www.w3.org/2000/svg",xhtml:Ud,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Iu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),l0.hasOwnProperty(t)?{space:l0[t],local:e}:e}function Ofe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Ud&&t.documentElement.namespaceURI===Ud?t.createElement(e):t.createElementNS(r,e)}}function Pfe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Jw(e){var t=Iu(e);return(t.local?Pfe:Ofe)(t)}function Rfe(){}function Yh(e){return e==null?Rfe:function(){return this.querySelector(e)}}function Dfe(e){typeof e!="function"&&(e=Yh(e));for(var t=this._groups,r=t.length,o=new Array(r),s=0;s=O&&(O=L+1);!(H=M[O])&&++O=0;)(f=o[s])&&(c&&f.compareDocumentPosition(c)^4&&c.parentNode.insertBefore(f,c),c=f);return this}function lde(e){e||(e=ade);function t(y,b){return y&&b?e(y.__data__,b.__data__):!y-!b}for(var r=this._groups,o=r.length,s=new Array(o),c=0;ct?1:e>=t?0:NaN}function cde(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ude(){return Array.from(this)}function fde(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?_de:typeof t=="function"?kde:Sde)(e,t,r??"")):Ns(this.node(),e)}function Ns(e,t){return e.style.getPropertyValue(t)||r1(e).getComputedStyle(e,null).getPropertyValue(t)}function Tde(e){return function(){delete this[e]}}function Ede(e,t){return function(){this[e]=t}}function Lde(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function Ade(e,t){return arguments.length>1?this.each((t==null?Tde:typeof t=="function"?Lde:Ede)(e,t)):this.node()[e]}function i1(e){return e.trim().split(/^|\s+/)}function Zh(e){return e.classList||new o1(e)}function o1(e){this._node=e,this._names=i1(e.getAttribute("class")||"")}o1.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function s1(e,t){for(var r=Zh(e),o=-1,s=t.length;++o=0&&(r=t.slice(o+1),t=t.slice(0,o)),{type:t,name:r}})}function rhe(e){return function(){var t=this.__on;if(t){for(var r=0,o=-1,s=t.length,c;r{}};function ma(){for(var e=0,t=arguments.length,r={},o;e=0&&(o=r.slice(s+1),r=r.slice(0,s)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:o}})}Lc.prototype=ma.prototype={constructor:Lc,on:function(e,t){var r=this._,o=hhe(e+"",r),s,c=-1,f=o.length;if(arguments.length<2){for(;++c0)for(var r=new Array(s),o=0,s,c;o()=>e;function Vd(e,{sourceEvent:t,subject:r,target:o,identifier:s,active:c,x:f,y:d,dx:h,dy:g,dispatch:v}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:c,enumerable:!0,configurable:!0},x:{value:f,enumerable:!0,configurable:!0},y:{value:d,enumerable:!0,configurable:!0},dx:{value:h,enumerable:!0,configurable:!0},dy:{value:g,enumerable:!0,configurable:!0},_:{value:v}})}Vd.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function vhe(e){return!e.ctrlKey&&!e.button}function mhe(){return this.parentNode}function yhe(e,t){return t??{x:e.x,y:e.y}}function bhe(){return navigator.maxTouchPoints||"ontouchstart"in this}function whe(){var e=vhe,t=mhe,r=yhe,o=bhe,s={},c=ma("start","drag","end"),f=0,d,h,g,v,y=0;function b(A){A.on("mousedown.drag",x).filter(o).on("touchstart.drag",M).on("touchmove.drag",N,ghe).on("touchend.drag touchcancel.drag",L).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(A,H){if(!(v||!e.call(this,A,H))){var z=O(this,t.call(this,A,H),A,H,"mouse");z&&(Pn(A.view).on("mousemove.drag",T,Ql).on("mouseup.drag",E,Ql),u1(A.view),id(A),g=!1,d=A.clientX,h=A.clientY,z("start",A))}}function T(A){if(bs(A),!g){var H=A.clientX-d,z=A.clientY-h;g=H*H+z*z>y}s.mouse("drag",A)}function E(A){Pn(A.view).on("mousemove.drag mouseup.drag",null),f1(A.view,g),bs(A),s.mouse("end",A)}function M(A,H){if(e.call(this,A,H)){var z=A.changedTouches,J=t.call(this,A,H),re=z.length,te,j;for(te=0;te>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?dc(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?dc(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=_he.exec(e))?new Dn(t[1],t[2],t[3],1):(t=She.exec(e))?new Dn(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=khe.exec(e))?dc(t[1],t[2],t[3],t[4]):(t=Che.exec(e))?dc(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=The.exec(e))?g0(t[1],t[2]/100,t[3]/100,1):(t=Ehe.exec(e))?g0(t[1],t[2]/100,t[3]/100,t[4]):c0.hasOwnProperty(e)?d0(c0[e]):e==="transparent"?new Dn(NaN,NaN,NaN,0):null}function d0(e){return new Dn(e>>16&255,e>>8&255,e&255,1)}function dc(e,t,r,o){return o<=0&&(e=t=r=NaN),new Dn(e,t,r,o)}function Mhe(e){return e instanceof ya||(e=na(e)),e?(e=e.rgb(),new Dn(e.r,e.g,e.b,e.opacity)):new Dn}function jd(e,t,r,o){return arguments.length===1?Mhe(e):new Dn(e,t,r,o??1)}function Dn(e,t,r,o){this.r=+e,this.g=+t,this.b=+r,this.opacity=+o}Jh(Dn,jd,d1(ya,{brighter(e){return e=e==null?iu:Math.pow(iu,e),new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ea:Math.pow(ea,e),new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dn(Eo(this.r),Eo(this.g),Eo(this.b),ou(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:h0,formatHex:h0,formatHex8:Nhe,formatRgb:p0,toString:p0}));function h0(){return`#${ko(this.r)}${ko(this.g)}${ko(this.b)}`}function Nhe(){return`#${ko(this.r)}${ko(this.g)}${ko(this.b)}${ko((isNaN(this.opacity)?1:this.opacity)*255)}`}function p0(){const e=ou(this.opacity);return`${e===1?"rgb(":"rgba("}${Eo(this.r)}, ${Eo(this.g)}, ${Eo(this.b)}${e===1?")":`, ${e})`}`}function ou(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Eo(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ko(e){return e=Eo(e),(e<16?"0":"")+e.toString(16)}function g0(e,t,r,o){return o<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new yr(e,t,r,o)}function h1(e){if(e instanceof yr)return new yr(e.h,e.s,e.l,e.opacity);if(e instanceof ya||(e=na(e)),!e)return new yr;if(e instanceof yr)return e;e=e.rgb();var t=e.r/255,r=e.g/255,o=e.b/255,s=Math.min(t,r,o),c=Math.max(t,r,o),f=NaN,d=c-s,h=(c+s)/2;return d?(t===c?f=(r-o)/d+(r0&&h<1?0:f,new yr(f,d,h,e.opacity)}function $he(e,t,r,o){return arguments.length===1?h1(e):new yr(e,t,r,o??1)}function yr(e,t,r,o){this.h=+e,this.s=+t,this.l=+r,this.opacity=+o}Jh(yr,$he,d1(ya,{brighter(e){return e=e==null?iu:Math.pow(iu,e),new yr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ea:Math.pow(ea,e),new yr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,o=r+(r<.5?r:1-r)*t,s=2*r-o;return new Dn(od(e>=240?e-240:e+120,s,o),od(e,s,o),od(e<120?e+240:e-120,s,o),this.opacity)},clamp(){return new yr(v0(this.h),hc(this.s),hc(this.l),ou(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ou(this.opacity);return`${e===1?"hsl(":"hsla("}${v0(this.h)}, ${hc(this.s)*100}%, ${hc(this.l)*100}%${e===1?")":`, ${e})`}`}}));function v0(e){return e=(e||0)%360,e<0?e+360:e}function hc(e){return Math.max(0,Math.min(1,e||0))}function od(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const p1=e=>()=>e;function Ohe(e,t){return function(r){return e+r*t}}function Phe(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(o){return Math.pow(e+o*t,r)}}function Rhe(e){return(e=+e)==1?g1:function(t,r){return r-t?Phe(t,r,e):p1(isNaN(t)?r:t)}}function g1(e,t){var r=t-e;return r?Ohe(e,r):p1(isNaN(e)?t:e)}const m0=function e(t){var r=Rhe(t);function o(s,c){var f=r((s=jd(s)).r,(c=jd(c)).r),d=r(s.g,c.g),h=r(s.b,c.b),g=g1(s.opacity,c.opacity);return function(v){return s.r=f(v),s.g=d(v),s.b=h(v),s.opacity=g(v),s+""}}return o.gamma=e,o}(1);function Fi(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var Gd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sd=new RegExp(Gd.source,"g");function Dhe(e){return function(){return e}}function zhe(e){return function(t){return e(t)+""}}function Ihe(e,t){var r=Gd.lastIndex=sd.lastIndex=0,o,s,c,f=-1,d=[],h=[];for(e=e+"",t=t+"";(o=Gd.exec(e))&&(s=sd.exec(t));)(c=s.index)>r&&(c=t.slice(r,c),d[f]?d[f]+=c:d[++f]=c),(o=o[0])===(s=s[0])?d[f]?d[f]+=s:d[++f]=s:(d[++f]=null,h.push({i:f,x:Fi(o,s)})),r=sd.lastIndex;return r180?v+=360:v-g>180&&(g+=360),b.push({i:y.push(s(y)+"rotate(",null,o)-2,x:Fi(g,v)})):v&&y.push(s(y)+"rotate("+v+o)}function d(g,v,y,b){g!==v?b.push({i:y.push(s(y)+"skewX(",null,o)-2,x:Fi(g,v)}):v&&y.push(s(y)+"skewX("+v+o)}function h(g,v,y,b,x,T){if(g!==y||v!==b){var E=x.push(s(x)+"scale(",null,",",null,")");T.push({i:E-4,x:Fi(g,y)},{i:E-2,x:Fi(v,b)})}else(y!==1||b!==1)&&x.push(s(x)+"scale("+y+","+b+")")}return function(g,v){var y=[],b=[];return g=e(g),v=e(v),c(g.translateX,g.translateY,v.translateX,v.translateY,y,b),f(g.rotate,v.rotate,y,b),d(g.skewX,v.skewX,y,b),h(g.scaleX,g.scaleY,v.scaleX,v.scaleY,y,b),g=v=null,function(x){for(var T=-1,E=b.length,M;++T=0&&e._call.call(void 0,t),e=e._next;--$s}function w0(){$o=(lu=ra.now())+Fu,$s=wl=0;try{Khe()}finally{$s=0,Yhe(),$o=0}}function Xhe(){var e=ra.now(),t=e-lu;t>y1&&(Fu-=t,lu=e)}function Yhe(){for(var e,t=su,r,o=1/0;t;)t._call?(o>t._time&&(o=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:su=r);xl=e,Xd(o)}function Xd(e){if(!$s){wl&&(wl=clearTimeout(wl));var t=e-$o;t>24?(e<1/0&&(wl=setTimeout(w0,e-ra.now()-Fu)),vl&&(vl=clearInterval(vl))):(vl||(lu=ra.now(),vl=setInterval(Xhe,y1)),$s=1,b1(w0))}}function x0(e,t,r){var o=new au;return t=t==null?0:+t,o.restart(s=>{o.stop(),e(s+t)},t,r),o}var Zhe=ma("start","end","cancel","interrupt"),Jhe=[],w1=0,_0=1,Yd=2,Ac=3,S0=4,Zd=5,Mc=6;function Hu(e,t,r,o,s,c){var f=e.__transition;if(!f)e.__transition={};else if(r in f)return;Qhe(e,r,{name:t,index:o,group:s,on:Zhe,tween:Jhe,time:c.time,delay:c.delay,duration:c.duration,ease:c.ease,timer:null,state:w1})}function tp(e,t){var r=Sr(e,t);if(r.state>w1)throw new Error("too late; already scheduled");return r}function qr(e,t){var r=Sr(e,t);if(r.state>Ac)throw new Error("too late; already running");return r}function Sr(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function Qhe(e,t,r){var o=e.__transition,s;o[t]=r,r.timer=ep(c,0,r.time);function c(g){r.state=_0,r.timer.restart(f,r.delay,r.time),r.delay<=g&&f(g-r.delay)}function f(g){var v,y,b,x;if(r.state!==_0)return h();for(v in o)if(x=o[v],x.name===r.name){if(x.state===Ac)return x0(f);x.state===S0?(x.state=Mc,x.timer.stop(),x.on.call("interrupt",e,e.__data__,x.index,x.group),delete o[v]):+vYd&&o.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function Ape(e,t,r){var o,s,c=Lpe(t)?tp:qr;return function(){var f=c(this,e),d=f.on;d!==o&&(s=(o=d).copy()).on(t,r),f.on=s}}function Mpe(e,t){var r=this._id;return arguments.length<2?Sr(this.node(),r).on.on(e):this.each(Ape(r,e,t))}function Npe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function $pe(){return this.on("end.remove",Npe(this._id))}function Ope(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Yh(e));for(var o=this._groups,s=o.length,c=new Array(s),f=0;f()=>e;function ige(e,{sourceEvent:t,target:r,transform:o,dispatch:s}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:s}})}function ti(e,t,r){this.k=e,this.x=t,this.y=r}ti.prototype={constructor:ti,scale:function(e){return e===1?this:new ti(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ti(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var rp=new ti(1,0,0);ti.prototype;function ld(e){e.stopImmediatePropagation()}function ml(e){e.preventDefault(),e.stopImmediatePropagation()}function oge(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function sge(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function k0(){return this.__zoom||rp}function lge(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function age(){return navigator.maxTouchPoints||"ontouchstart"in this}function cge(e,t,r){var o=e.invertX(t[0][0])-r[0][0],s=e.invertX(t[1][0])-r[1][0],c=e.invertY(t[0][1])-r[0][1],f=e.invertY(t[1][1])-r[1][1];return e.translate(s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s),f>c?(c+f)/2:Math.min(0,c)||Math.max(0,f))}function uge(){var e=oge,t=sge,r=cge,o=lge,s=age,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],d=250,h=jhe,g=ma("start","zoom","end"),v,y,b,x=500,T=150,E=0,M=10;function N(I){I.property("__zoom",k0).on("wheel.zoom",re,{passive:!1}).on("mousedown.zoom",te).on("dblclick.zoom",j).filter(s).on("touchstart.zoom",ne).on("touchmove.zoom",K).on("touchend.zoom touchcancel.zoom",V).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}N.transform=function(I,k,B,W){var ie=I.selection?I.selection():I;ie.property("__zoom",k0),I!==ie?H(I,k,B,W):ie.interrupt().each(function(){z(this,arguments).event(W).start().zoom(null,typeof k=="function"?k.apply(this,arguments):k).end()})},N.scaleBy=function(I,k,B,W){N.scaleTo(I,function(){var ie=this.__zoom.k,ye=typeof k=="function"?k.apply(this,arguments):k;return ie*ye},B,W)},N.scaleTo=function(I,k,B,W){N.transform(I,function(){var ie=t.apply(this,arguments),ye=this.__zoom,Ne=B==null?A(ie):typeof B=="function"?B.apply(this,arguments):B,We=ye.invert(Ne),je=typeof k=="function"?k.apply(this,arguments):k;return r(O(L(ye,je),Ne,We),ie,f)},B,W)},N.translateBy=function(I,k,B,W){N.transform(I,function(){return r(this.__zoom.translate(typeof k=="function"?k.apply(this,arguments):k,typeof B=="function"?B.apply(this,arguments):B),t.apply(this,arguments),f)},null,W)},N.translateTo=function(I,k,B,W,ie){N.transform(I,function(){var ye=t.apply(this,arguments),Ne=this.__zoom,We=W==null?A(ye):typeof W=="function"?W.apply(this,arguments):W;return r(rp.translate(We[0],We[1]).scale(Ne.k).translate(typeof k=="function"?-k.apply(this,arguments):-k,typeof B=="function"?-B.apply(this,arguments):-B),ye,f)},W,ie)};function L(I,k){return k=Math.max(c[0],Math.min(c[1],k)),k===I.k?I:new ti(k,I.x,I.y)}function O(I,k,B){var W=k[0]-B[0]*I.k,ie=k[1]-B[1]*I.k;return W===I.x&&ie===I.y?I:new ti(I.k,W,ie)}function A(I){return[(+I[0][0]+ +I[1][0])/2,(+I[0][1]+ +I[1][1])/2]}function H(I,k,B,W){I.on("start.zoom",function(){z(this,arguments).event(W).start()}).on("interrupt.zoom end.zoom",function(){z(this,arguments).event(W).end()}).tween("zoom",function(){var ie=this,ye=arguments,Ne=z(ie,ye).event(W),We=t.apply(ie,ye),je=B==null?A(We):typeof B=="function"?B.apply(ie,ye):B,it=Math.max(We[1][0]-We[0][0],We[1][1]-We[0][1]),rt=ie.__zoom,Ze=typeof k=="function"?k.apply(ie,ye):k,Ee=h(rt.invert(je).concat(it/rt.k),Ze.invert(je).concat(it/Ze.k));return function(X){if(X===1)X=Ze;else{var ae=Ee(X),de=it/ae[2];X=new ti(de,je[0]-ae[0]*de,je[1]-ae[1]*de)}Ne.zoom(null,X)}})}function z(I,k,B){return!B&&I.__zooming||new J(I,k)}function J(I,k){this.that=I,this.args=k,this.active=0,this.sourceEvent=null,this.extent=t.apply(I,k),this.taps=0}J.prototype={event:function(I){return I&&(this.sourceEvent=I),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(I,k){return this.mouse&&I!=="mouse"&&(this.mouse[1]=k.invert(this.mouse[0])),this.touch0&&I!=="touch"&&(this.touch0[1]=k.invert(this.touch0[0])),this.touch1&&I!=="touch"&&(this.touch1[1]=k.invert(this.touch1[0])),this.that.__zoom=k,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(I){var k=Pn(this.that).datum();g.call(I,this.that,new ige(I,{sourceEvent:this.sourceEvent,target:N,type:I,transform:this.that.__zoom,dispatch:g}),k)}};function re(I,...k){if(!e.apply(this,arguments))return;var B=z(this,k).event(I),W=this.__zoom,ie=Math.max(c[0],Math.min(c[1],W.k*Math.pow(2,o.apply(this,arguments)))),ye=ei(I);if(B.wheel)(B.mouse[0][0]!==ye[0]||B.mouse[0][1]!==ye[1])&&(B.mouse[1]=W.invert(B.mouse[0]=ye)),clearTimeout(B.wheel);else{if(W.k===ie)return;B.mouse=[ye,W.invert(ye)],Nc(this),B.start()}ml(I),B.wheel=setTimeout(Ne,T),B.zoom("mouse",r(O(L(W,ie),B.mouse[0],B.mouse[1]),B.extent,f));function Ne(){B.wheel=null,B.end()}}function te(I,...k){if(b||!e.apply(this,arguments))return;var B=I.currentTarget,W=z(this,k,!0).event(I),ie=Pn(I.view).on("mousemove.zoom",je,!0).on("mouseup.zoom",it,!0),ye=ei(I,B),Ne=I.clientX,We=I.clientY;u1(I.view),ld(I),W.mouse=[ye,this.__zoom.invert(ye)],Nc(this),W.start();function je(rt){if(ml(rt),!W.moved){var Ze=rt.clientX-Ne,Ee=rt.clientY-We;W.moved=Ze*Ze+Ee*Ee>E}W.event(rt).zoom("mouse",r(O(W.that.__zoom,W.mouse[0]=ei(rt,B),W.mouse[1]),W.extent,f))}function it(rt){ie.on("mousemove.zoom mouseup.zoom",null),f1(rt.view,W.moved),ml(rt),W.event(rt).end()}}function j(I,...k){if(e.apply(this,arguments)){var B=this.__zoom,W=ei(I.changedTouches?I.changedTouches[0]:I,this),ie=B.invert(W),ye=B.k*(I.shiftKey?.5:2),Ne=r(O(L(B,ye),W,ie),t.apply(this,k),f);ml(I),d>0?Pn(this).transition().duration(d).call(H,Ne,W,I):Pn(this).call(N.transform,Ne,W,I)}}function ne(I,...k){if(e.apply(this,arguments)){var B=I.touches,W=B.length,ie=z(this,k,I.changedTouches.length===W).event(I),ye,Ne,We,je;for(ld(I),Ne=0;Ne=(y=(d+g)/2))?d=y:g=y,(M=r>=(b=(h+v)/2))?h=b:v=b,s=c,!(c=c[N=M<<1|E]))return s[N]=f,e;if(x=+e._x.call(null,c.data),T=+e._y.call(null,c.data),t===x&&r===T)return f.next=c,s?s[N]=f:e._root=f,e;do s=s?s[N]=new Array(4):e._root=new Array(4),(E=t>=(y=(d+g)/2))?d=y:g=y,(M=r>=(b=(h+v)/2))?h=b:v=b;while((N=M<<1|E)===(L=(T>=b)<<1|x>=y));return s[L]=c,s[N]=f,e}function dge(e){var t,r,o=e.length,s,c,f=new Array(o),d=new Array(o),h=1/0,g=1/0,v=-1/0,y=-1/0;for(r=0;rv&&(v=s),cy&&(y=c));if(h>v||g>y)return this;for(this.cover(h,g).cover(v,y),r=0;re||e>=s||o>t||t>=c;)switch(g=(tv||(d=T.y0)>y||(h=T.x1)=N)<<1|e>=M)&&(T=b[b.length-1],b[b.length-1]=b[b.length-1-E],b[b.length-1-E]=T)}else{var L=e-+this._x.call(null,x.data),O=t-+this._y.call(null,x.data),A=L*L+O*O;if(A=(b=(f+h)/2))?f=b:h=b,(E=y>=(x=(d+g)/2))?d=x:g=x,t=r,!(r=r[M=E<<1|T]))return this;if(!r.length)break;(t[M+1&3]||t[M+2&3]||t[M+3&3])&&(o=t,N=M)}for(;r.data!==e;)if(s=r,!(r=r.next))return this;return(c=r.next)&&delete r.next,s?(c?s.next=c:delete s.next,this):t?(c?t[M]=c:delete t[M],(r=t[0]||t[1]||t[2]||t[3])&&r===(t[3]||t[2]||t[1]||t[0])&&!r.length&&(o?o[N]=r:this._root=r),this):(this._root=c,this)}function yge(e){for(var t=0,r=e.length;tb.index){var ne=x-re.x-re.vx,K=T-re.y-re.vy,V=ne*ne+K*K;Vx+j||zT+j||Jg.r&&(g.r=g[v].r)}function h(){if(t){var g,v=t.length,y;for(r=new Array(v),g=0;g[t(H,z,f),H])),A;for(M=0,d=new Array(N);M(e=($ge*e+Oge)%E0)/E0}function Rge(e){return e.x}function Dge(e){return e.y}var zge=10,Ige=Math.PI*(3-Math.sqrt(5));function Fge(e){var t,r=1,o=.001,s=1-Math.pow(o,1/300),c=0,f=.6,d=new Map,h=ep(y),g=ma("tick","end"),v=Pge();e==null&&(e=[]);function y(){b(),g.call("tick",t),r1?(M==null?d.delete(E):d.set(E,T(M)),t):d.get(E)},find:function(E,M,N){var L=0,O=e.length,A,H,z,J,re;for(N==null?N=1/0:N*=N,L=0;L1?(g.on(E,M),t):g.on(E)}}}function Hge(){var e,t,r,o,s=Cn(-30),c,f=1,d=1/0,h=.81;function g(x){var T,E=e.length,M=ip(e,Rge,Dge).visitAfter(y);for(o=x,T=0;T=d)return;(x.data!==t||x.next)&&(N===0&&(N=Bi(r),A+=N*N),L===0&&(L=Bi(r),A+=L*L),At in e?Wge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Dt=(e,t,r)=>Uge(e,typeof t!="symbol"?t+"":t,r);function Vge(){return{drag:{end:0,start:.1},filter:{link:1,type:.1,unlinked:{include:.1,exclude:.1}},focus:{acquire:()=>.1,release:()=>.1},initialize:1,labels:{links:{hide:0,show:0},nodes:{hide:0,show:0}},resize:.5}}function L0(e){if(typeof e=="object"&&e!==null){if(typeof Object.getPrototypeOf=="function"){const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}return Object.prototype.toString.call(e)==="[object Object]"}return!1}function Wi(...e){return e.reduce((t,r)=>{if(Array.isArray(r))throw new TypeError("Arguments provided to deepmerge must be objects, not arrays.");return Object.keys(r).forEach(o=>{["__proto__","constructor","prototype"].includes(o)||(Array.isArray(t[o])&&Array.isArray(r[o])?t[o]=Wi.options.mergeArrays?Array.from(new Set(t[o].concat(r[o]))):r[o]:L0(t[o])&&L0(r[o])?t[o]=Wi(t[o],r[o]):t[o]=r[o])}),t},{})}const C1={mergeArrays:!0};Wi.options=C1;Wi.withOptions=(e,...t)=>{Wi.options={mergeArrays:!0,...e};const r=Wi(...t);return Wi.options=C1,r};function jge(){return{centering:{enabled:!0,strength:.1},charge:{enabled:!0,strength:-1},collision:{enabled:!0,strength:1,radiusMultiplier:2},link:{enabled:!0,strength:1,length:128}}}function Gge(){return{includeUnlinked:!0,linkFilter:()=>!0,nodeTypeFilter:void 0,showLinkLabels:!0,showNodeLabels:!0}}function T1(e){e.preventDefault(),e.stopPropagation()}function E1(e){return typeof e=="number"}function Qi(e,t){return E1(e.nodeRadius)?e.nodeRadius:e.nodeRadius(t)}function Kge(e){return`${e.source.id}-${e.target.id}`}function L1(e){return`link-arrow-${e}`.replace(/[()]/g,"~")}function Xge(e){return`url(#${L1(e.color)})`}function Yge(e){return{size:e,padding:(t,r)=>Qi(r,t)+2*e,ref:[e/2,e/2],path:[[0,0],[0,e],[e,e/2]],viewBox:[0,0,e,e].join(",")}}const A1={Arrow:e=>Yge(e)},Zge=(e,t,r)=>[t/2,r/2],M1=(e,t,r)=>[A0(0,t),A0(0,r)];function A0(e,t){return Math.random()*(t-e)+e}function Jge(e){const t=Object.fromEntries(e.nodes.map(r=>[r.id,[r.x,r.y]]));return(r,o,s)=>{const[c,f]=t[r.id]??[];return!c||!f?M1(r,o,s):[c,f]}}const Jd={Centered:Zge,Randomized:M1,Stable:Jge};function Qge(){return{autoResize:!1,callbacks:{},hooks:{},initial:Gge(),nodeRadius:16,marker:A1.Arrow(4),modifiers:{},positionInitializer:Jd.Centered,simulation:{alphas:Vge(),forces:jge()},zoom:{initial:1,min:.1,max:2}}}function eve(e={}){return Wi.withOptions({mergeArrays:!1},Qge(),e)}function tve({applyZoom:e,container:t,onDoubleClick:r,onPointerMoved:o,onPointerUp:s,offset:[c,f],scale:d,zoom:h}){const g=t.classed("graph",!0).append("svg").attr("height","100%").attr("width","100%").call(h).on("contextmenu",v=>T1(v)).on("dblclick",v=>r==null?void 0:r(v)).on("dblclick.zoom",null).on("pointermove",v=>o==null?void 0:o(v)).on("pointerup",v=>s==null?void 0:s(v)).style("cursor","grab");return e&&g.call(h.transform,rp.translate(c,f).scale(d)),g.append("g")}function nve({canvas:e,scale:t,xOffset:r,yOffset:o}){e==null||e.attr("transform",`translate(${r},${o})scale(${t})`)}function rve({config:e,onDragStart:t,onDragEnd:r}){var o,s;const c=whe().filter(f=>f.type==="mousedown"?f.button===0:f.type==="touchstart"?f.touches.length===1:!1).on("start",(f,d)=>{f.active===0&&t(f,d),Pn(f.sourceEvent.target).classed("grabbed",!0),d.fx=d.x,d.fy=d.y}).on("drag",(f,d)=>{d.fx=f.x,d.fy=f.y}).on("end",(f,d)=>{f.active===0&&r(f,d),Pn(f.sourceEvent.target).classed("grabbed",!1),d.fx=void 0,d.fy=void 0});return(s=(o=e.modifiers).drag)==null||s.call(o,c),c}function ive({graph:e,filter:t,focusedNode:r,includeUnlinked:o,linkFilter:s}){const c=e.links.filter(h=>t.includes(h.source.type)&&t.includes(h.target.type)&&s(h)),f=h=>c.find(g=>g.source.id===h.id||g.target.id===h.id)!==void 0,d=e.nodes.filter(h=>t.includes(h.type)&&(o||f(h)));return r===void 0||!t.includes(r.type)?{nodes:d,links:c}:ove({nodes:d,links:c},r)}function ove(e,t){const r=[...sve(e,t),...lve(e,t)],o=r.flatMap(s=>[s.source,s.target]);return{nodes:[...new Set([...o,t])],links:[...new Set(r)]}}function sve(e,t){return N1(e,t,(r,o)=>r.target.id===o.id)}function lve(e,t){return N1(e,t,(r,o)=>r.source.id===o.id)}function N1(e,t,r){const o=new Set(e.links),s=new Set([t]),c=[];for(;o.size>0;){const f=[...o].filter(d=>[...s].some(h=>r(d,h)));if(f.length===0)return c;f.forEach(d=>{s.add(d.source),s.add(d.target),c.push(d),o.delete(d)})}return c}function Qd(e){return e.x??0}function eh(e){return e.y??0}function sp({source:e,target:t}){const r=new _n(Qd(e),eh(e)),o=new _n(Qd(t),eh(t)),s=o.subtract(r),c=s.length(),f=s.normalize(),d=f.multiply(-1);return{s:r,t:o,dist:c,norm:f,endNorm:d}}function $1({center:e,node:t}){const r=new _n(Qd(t),eh(t));let o=e;return r.x===o.x&&r.y===o.y&&(o=o.add(new _n(0,1))),{n:r,c:o}}function O1({config:e,source:t,target:r}){const{s:o,t:s,norm:c}=sp({config:e,source:t,target:r}),f=o.add(c.multiply(Qi(e,t)-1)),d=s.subtract(c.multiply(e.marker.padding(r,e)));return{start:f,end:d}}function ave(e){const{start:t,end:r}=O1(e);return`M${t.x},${t.y} + L${r.x},${r.y}`}function cve(e){const{start:t,end:r}=O1(e),o=r.subtract(t).multiply(.5),s=t.add(o);return`translate(${s.x-8},${s.y-4})`}function uve({config:e,source:t,target:r}){const{s:o,t:s,dist:c,norm:f,endNorm:d}=sp({config:e,source:t,target:r}),h=10,g=f.rotateByDegrees(-h).multiply(Qi(e,t)-1).add(o),v=d.rotateByDegrees(h).multiply(Qi(e,r)).add(s).add(d.rotateByDegrees(h).multiply(2*e.marker.size)),y=1.2*c;return`M${g.x},${g.y} + A${y},${y},0,0,1,${v.x},${v.y}`}function fve({center:e,config:t,node:r}){const{n:o,c:s}=$1({center:e,config:t,node:r}),c=Qi(t,r),f=o.subtract(s),d=f.multiply(1/f.length()),h=40,g=d.rotateByDegrees(h).multiply(c-1).add(o),v=d.rotateByDegrees(-h).multiply(c).add(o).add(d.rotateByDegrees(-h).multiply(2*t.marker.size));return`M${g.x},${g.y} + A${c},${c},0,1,0,${v.x},${v.y}`}function dve({config:e,source:t,target:r}){const{t:o,dist:s,endNorm:c}=sp({config:e,source:t,target:r}),f=c.rotateByDegrees(10).multiply(.5*s).add(o);return`translate(${f.x},${f.y})`}function hve({center:e,config:t,node:r}){const{n:o,c:s}=$1({center:e,config:t,node:r}),c=o.subtract(s),f=c.multiply(1/c.length()).multiply(3*Qi(t,r)+8).add(o);return`translate(${f.x},${f.y})`}const xs={line:{labelTransform:cve,path:ave},arc:{labelTransform:dve,path:uve},reflexive:{labelTransform:hve,path:fve}};function pve(e){return e.append("g").classed("links",!0).selectAll("path")}function gve({config:e,graph:t,selection:r,showLabels:o}){const s=r==null?void 0:r.data(t.links,c=>Kge(c)).join(c=>{var f,d,h,g;const v=c.append("g"),y=v.append("path").classed("link",!0).style("marker-end",x=>Xge(x)).style("stroke",x=>x.color);(d=(f=e.modifiers).link)==null||d.call(f,y);const b=v.append("text").classed("link__label",!0).style("fill",x=>x.label?x.label.color:null).style("font-size",x=>x.label?x.label.fontSize:null).text(x=>x.label?x.label.text:null);return(g=(h=e.modifiers).linkLabel)==null||g.call(h,b),v});return s==null||s.select(".link__label").attr("opacity",c=>c.label&&o?1:0),s}function vve(e){mve(e),yve(e)}function mve({center:e,config:t,graph:r,selection:o}){o==null||o.selectAll("path").attr("d",s=>s.source.x===void 0||s.source.y===void 0||s.target.x===void 0||s.target.y===void 0?"":s.source.id===s.target.id?xs.reflexive.path({config:t,node:s.source,center:e}):P1(r,s.source,s.target)?xs.arc.path({config:t,source:s.source,target:s.target}):xs.line.path({config:t,source:s.source,target:s.target}))}function yve({config:e,center:t,graph:r,selection:o}){o==null||o.select(".link__label").attr("transform",s=>s.source.x===void 0||s.source.y===void 0||s.target.x===void 0||s.target.y===void 0?"translate(0, 0)":s.source.id===s.target.id?xs.reflexive.labelTransform({config:e,node:s.source,center:t}):P1(r,s.source,s.target)?xs.arc.labelTransform({config:e,source:s.source,target:s.target}):xs.line.labelTransform({config:e,source:s.source,target:s.target}))}function P1(e,t,r){return t.id!==r.id&&e.links.some(o=>o.target.id===t.id&&o.source.id===r.id)&&e.links.some(o=>o.target.id===r.id&&o.source.id===t.id)}function bve(e){return e.append("defs").selectAll("marker")}function wve({config:e,graph:t,selection:r}){return r==null?void 0:r.data(xve(t),o=>o).join(o=>{const s=o.append("marker").attr("id",c=>L1(c)).attr("markerHeight",4*e.marker.size).attr("markerWidth",4*e.marker.size).attr("markerUnits","userSpaceOnUse").attr("orient","auto").attr("refX",e.marker.ref[0]).attr("refY",e.marker.ref[1]).attr("viewBox",e.marker.viewBox).style("fill",c=>c);return s.append("path").attr("d",_ve(e.marker.path)),s})}function xve(e){return[...new Set(e.links.map(t=>t.color))]}function _ve(e){const[t,...r]=e;if(!t)return"M0,0";const[o,s]=t;return r.reduce((c,[f,d])=>`${c}L${f},${d}`,`M${o},${s}`)}function Sve(e){return e.append("g").classed("nodes",!0).selectAll("circle")}function kve({config:e,drag:t,graph:r,onNodeContext:o,onNodeSelected:s,selection:c,showLabels:f}){const d=c==null?void 0:c.data(r.nodes,h=>h.id).join(h=>{var g,v,y,b;const x=h.append("g");t!==void 0&&x.call(t);const T=x.append("circle").classed("node",!0).attr("r",M=>Qi(e,M)).on("contextmenu",(M,N)=>{T1(M),o(N)}).on("pointerdown",(M,N)=>Tve(M,N,s??o)).style("fill",M=>M.color);(v=(g=e.modifiers).node)==null||v.call(g,T);const E=x.append("text").classed("node__label",!0).attr("dy","0.33em").style("fill",M=>M.label?M.label.color:null).style("font-size",M=>M.label?M.label.fontSize:null).style("stroke","none").text(M=>M.label?M.label.text:null);return(b=(y=e.modifiers).nodeLabel)==null||b.call(y,E),x});return d==null||d.select(".node").classed("focused",h=>h.isFocused),d==null||d.select(".node__label").attr("opacity",f?1:0),d}const Cve=500;function Tve(e,t,r){if(e.button!==void 0&&e.button!==0)return;const o=t.lastInteractionTimestamp,s=Date.now();if(o===void 0||s-o>Cve){t.lastInteractionTimestamp=s;return}t.lastInteractionTimestamp=void 0,r(t)}function Eve(e){e==null||e.attr("transform",t=>`translate(${t.x??0},${t.y??0})`)}function Lve({center:e,config:t,graph:r,onTick:o}){var s,c;const f=Fge(r.nodes),d=t.simulation.forces.centering;if(d&&d.enabled){const y=d.strength;f.force("x",qge(()=>e().x).strength(y)).force("y",Bge(()=>e().y).strength(y))}const h=t.simulation.forces.charge;h&&h.enabled&&f.force("charge",Hge().strength(h.strength));const g=t.simulation.forces.collision;g&&g.enabled&&f.force("collision",Age().radius(y=>g.radiusMultiplier*Qi(t,y)));const v=t.simulation.forces.link;return v&&v.enabled&&f.force("link",Nge(r.links).id(y=>y.id).distance(t.simulation.forces.link.length).strength(v.strength)),f.on("tick",()=>o()),(c=(s=t.modifiers).simulation)==null||c.call(s,f),f}function Ave({canvasContainer:e,config:t,min:r,max:o,onZoom:s}){var c,f;const d=uge().scaleExtent([r,o]).filter(h=>{var g;return h.button===0||((g=h.touches)==null?void 0:g.length)>=2}).on("start",()=>e().classed("grabbed",!0)).on("zoom",h=>s(h)).on("end",()=>e().classed("grabbed",!1));return(f=(c=t.modifiers).zoom)==null||f.call(c,d),d}class Mve{constructor(t,r,o){if(Dt(this,"nodeTypes"),Dt(this,"_nodeTypeFilter"),Dt(this,"_includeUnlinked",!0),Dt(this,"_linkFilter",()=>!0),Dt(this,"_showLinkLabels",!0),Dt(this,"_showNodeLabels",!0),Dt(this,"filteredGraph"),Dt(this,"width",0),Dt(this,"height",0),Dt(this,"simulation"),Dt(this,"canvas"),Dt(this,"linkSelection"),Dt(this,"nodeSelection"),Dt(this,"markerSelection"),Dt(this,"zoom"),Dt(this,"drag"),Dt(this,"xOffset",0),Dt(this,"yOffset",0),Dt(this,"scale"),Dt(this,"focusedNode"),Dt(this,"resizeObserver"),this.container=t,this.graph=r,this.config=o,this.scale=o.zoom.initial,this.resetView(),this.graph.nodes.forEach(s=>{const[c,f]=o.positionInitializer(s,this.effectiveWidth,this.effectiveHeight);s.x=s.x??c,s.y=s.y??f}),this.nodeTypes=[...new Set(r.nodes.map(s=>s.type))],this._nodeTypeFilter=[...this.nodeTypes],o.initial){const{includeUnlinked:s,nodeTypeFilter:c,linkFilter:f,showLinkLabels:d,showNodeLabels:h}=o.initial;this._includeUnlinked=s??this._includeUnlinked,this._showLinkLabels=d??this._showLinkLabels,this._showNodeLabels=h??this._showNodeLabels,this._nodeTypeFilter=c??this._nodeTypeFilter,this._linkFilter=f??this._linkFilter}this.filterGraph(void 0),this.initGraph(),this.restart(o.simulation.alphas.initialize),o.autoResize&&(this.resizeObserver=new ResizeObserver($fe(()=>this.resize())),this.resizeObserver.observe(this.container))}get nodeTypeFilter(){return this._nodeTypeFilter}get includeUnlinked(){return this._includeUnlinked}set includeUnlinked(t){this._includeUnlinked=t,this.filterGraph(this.focusedNode);const{include:r,exclude:o}=this.config.simulation.alphas.filter.unlinked,s=t?r:o;this.restart(s)}set linkFilter(t){this._linkFilter=t,this.filterGraph(this.focusedNode),this.restart(this.config.simulation.alphas.filter.link)}get linkFilter(){return this._linkFilter}get showNodeLabels(){return this._showNodeLabels}set showNodeLabels(t){this._showNodeLabels=t;const{hide:r,show:o}=this.config.simulation.alphas.labels.nodes,s=t?o:r;this.restart(s)}get showLinkLabels(){return this._showLinkLabels}set showLinkLabels(t){this._showLinkLabels=t;const{hide:r,show:o}=this.config.simulation.alphas.labels.links,s=t?o:r;this.restart(s)}get effectiveWidth(){return this.width/this.scale}get effectiveHeight(){return this.height/this.scale}get effectiveCenter(){return _n.of([this.width,this.height]).divide(2).subtract(_n.of([this.xOffset,this.yOffset])).divide(this.scale)}resize(){const t=this.width,r=this.height,o=this.container.getBoundingClientRect().width,s=this.container.getBoundingClientRect().height,c=t.toFixed()!==o.toFixed(),f=r.toFixed()!==s.toFixed();if(!c&&!f)return;this.width=this.container.getBoundingClientRect().width,this.height=this.container.getBoundingClientRect().height;const d=this.config.simulation.alphas.resize;this.restart(E1(d)?d:d({oldWidth:t,oldHeight:r,newWidth:o,newHeight:s}))}restart(t){var r;this.markerSelection=wve({config:this.config,graph:this.filteredGraph,selection:this.markerSelection}),this.linkSelection=gve({config:this.config,graph:this.filteredGraph,selection:this.linkSelection,showLabels:this._showLinkLabels}),this.nodeSelection=kve({config:this.config,drag:this.drag,graph:this.filteredGraph,onNodeContext:o=>this.toggleNodeFocus(o),onNodeSelected:this.config.callbacks.nodeClicked,selection:this.nodeSelection,showLabels:this._showNodeLabels}),(r=this.simulation)==null||r.stop(),this.simulation=Lve({center:()=>this.effectiveCenter,config:this.config,graph:this.filteredGraph,onTick:()=>this.onTick()}).alpha(t).restart()}filterNodesByType(t,r){t?this._nodeTypeFilter.push(r):this._nodeTypeFilter=this._nodeTypeFilter.filter(o=>o!==r),this.filterGraph(this.focusedNode),this.restart(this.config.simulation.alphas.filter.type)}shutdown(){var t,r;this.focusedNode!==void 0&&(this.focusedNode.isFocused=!1,this.focusedNode=void 0),(t=this.resizeObserver)==null||t.unobserve(this.container),(r=this.simulation)==null||r.stop()}initGraph(){this.zoom=Ave({config:this.config,canvasContainer:()=>Pn(this.container).select("svg"),min:this.config.zoom.min,max:this.config.zoom.max,onZoom:t=>this.onZoom(t)}),this.canvas=tve({applyZoom:this.scale!==1,container:Pn(this.container),offset:[this.xOffset,this.yOffset],scale:this.scale,zoom:this.zoom}),this.applyZoom(),this.linkSelection=pve(this.canvas),this.nodeSelection=Sve(this.canvas),this.markerSelection=bve(this.canvas),this.drag=rve({config:this.config,onDragStart:()=>{var t;return(t=this.simulation)==null?void 0:t.alphaTarget(this.config.simulation.alphas.drag.start).restart()},onDragEnd:()=>{var t;return(t=this.simulation)==null?void 0:t.alphaTarget(this.config.simulation.alphas.drag.end).restart()}})}onTick(){Eve(this.nodeSelection),vve({config:this.config,center:this.effectiveCenter,graph:this.filteredGraph,selection:this.linkSelection})}resetView(){var t;(t=this.simulation)==null||t.stop(),Pn(this.container).selectChildren().remove(),this.zoom=void 0,this.canvas=void 0,this.linkSelection=void 0,this.nodeSelection=void 0,this.markerSelection=void 0,this.simulation=void 0,this.width=this.container.getBoundingClientRect().width,this.height=this.container.getBoundingClientRect().height}onZoom(t){var r,o,s;this.xOffset=t.transform.x,this.yOffset=t.transform.y,this.scale=t.transform.k,this.applyZoom(),(o=(r=this.config.hooks).afterZoom)==null||o.call(r,this.scale,this.xOffset,this.yOffset),(s=this.simulation)==null||s.restart()}applyZoom(){nve({canvas:this.canvas,scale:this.scale,xOffset:this.xOffset,yOffset:this.yOffset})}toggleNodeFocus(t){t.isFocused?(this.filterGraph(void 0),this.restart(this.config.simulation.alphas.focus.release(t))):this.focusNode(t)}focusNode(t){this.filterGraph(t),this.restart(this.config.simulation.alphas.focus.acquire(t))}filterGraph(t){this.focusedNode!==void 0&&(this.focusedNode.isFocused=!1,this.focusedNode=void 0),t!==void 0&&this._nodeTypeFilter.includes(t.type)&&(t.isFocused=!0,this.focusedNode=t),this.filteredGraph=ive({graph:this.graph,filter:this._nodeTypeFilter,focusedNode:this.focusedNode,includeUnlinked:this._includeUnlinked,linkFilter:this._linkFilter})}}function M0({nodes:e,links:t}){return{nodes:e??[],links:t??[]}}function Nve(e){return{...e}}function R1(e){return{...e,isFocused:!1,lastInteractionTimestamp:void 0}}const $ve={"h-full":"","min-h-75":"","flex-1":"",overflow:"hidden"},Ove={flex:"","items-center":"","gap-4":"","px-3":"","py-2":""},Pve=["id","checked","onChange"],Rve=["for"],Dve=Y("div",{"flex-auto":""},null,-1),zve=ft({__name:"ViewModuleGraph",props:{graph:{},projectName:{}},setup(e){const t=e,{graph:r}=LS(t),o=Be(),s=Be(!1),c=Be(),f=Be();Ch(()=>{s.value===!1&&setTimeout(()=>c.value=void 0,300)},{flush:"post"}),Os(()=>{g()}),bu(()=>{var y;(y=f.value)==null||y.shutdown()}),Ht(r,g);function d(y,b){var x;(x=f.value)==null||x.filterNodesByType(b,y)}function h(y){c.value=y,s.value=!0}function g(){var y;(y=f.value)==null||y.shutdown(),!(!r.value||!o.value)&&(f.value=new Mve(o.value,r.value,eve({nodeRadius:10,autoResize:!0,simulation:{alphas:{initialize:1,resize:({newHeight:b,newWidth:x})=>b===0&&x===0?0:.25},forces:{collision:{radiusMultiplier:10},link:{length:240}}},marker:A1.Arrow(2),modifiers:{node:v},positionInitializer:r.value.nodes.length>1?Jd.Randomized:Jd.Centered,zoom:{min:.5,max:2}})))}function v(y){if(Pr)return;const b=M=>M.button===0;let x=0,T=0,E=0;y.on("pointerdown",(M,N)=>{N.type!=="external"&&(!N.x||!N.y||!b(M)||(x=N.x,T=N.y,E=Date.now()))}).on("pointerup",(M,N)=>{if(N.type==="external"||!N.x||!N.y||!b(M)||Date.now()-E>500)return;const L=N.x-x,O=N.y-T;L**2+O**2<100&&h(N.id)})}return(y,b)=>{var N;const x=hi,T=Nfe,E=Xw,M=Hr("tooltip");return oe(),me("div",$ve,[Y("div",null,[Y("div",Ove,[(oe(!0),me(ut,null,si((N=q(f))==null?void 0:N.nodeTypes.sort(),L=>{var O;return oe(),me("div",{key:L,flex:"~ gap-1","items-center":"","select-none":""},[Y("input",{id:`type-${L}`,type:"checkbox",checked:(O=q(f))==null?void 0:O.nodeTypeFilter.includes(L),onChange:A=>d(L,A.target.checked)},null,40,Pve),Y("label",{"font-light":"","text-sm":"","ws-nowrap":"","overflow-hidden":"",capitalize:"",truncate:"",for:`type-${L}`,"border-b-2":"",style:Zt({"border-color":`var(--color-node-${L})`})},qe(L)+" Modules",13,Rve)])}),128)),Dve,Y("div",null,[_t(Oe(x,{icon:"i-carbon-reset",onClick:g},null,512),[[M,"Reset",void 0,{bottom:!0}]])])])]),Y("div",{ref_key:"el",ref:o},null,512),Oe(E,{modelValue:q(s),"onUpdate:modelValue":b[1]||(b[1]=L=>Ot(s)?s.value=L:null),direction:"right"},{default:st(()=>[q(c)?(oe(),ot(zy,{key:0},{default:st(()=>[Oe(T,{id:q(c),"project-name":y.projectName,onClose:b[0]||(b[0]=L=>s.value=!1)},null,8,["id","project-name"])]),_:1})):et("",!0)]),_:1},8,["modelValue"])])}}}),Ive={key:0,"text-green-500":"","flex-shrink-0":"","i-carbon:checkmark":""},Fve={key:1,"text-red-500":"","flex-shrink-0":"","i-carbon:compare":""},Hve={key:2,"text-red-500":"","flex-shrink-0":"","i-carbon:close":""},qve={key:3,"text-gray-500":"","flex-shrink-0":"","i-carbon:document-blank":""},Bve={key:4,"text-gray-500":"","flex-shrink-0":"","i-carbon:redo":"","rotate-90":""},Wve={key:5,"text-yellow-500":"","flex-shrink-0":"","i-carbon:circle-dash":"","animate-spin":""},D1=ft({__name:"StatusIcon",props:{state:{},mode:{},failedSnapshot:{type:Boolean}},setup(e){return(t,r)=>{const o=Hr("tooltip");return t.state==="pass"?(oe(),me("div",Ive)):t.failedSnapshot?_t((oe(),me("div",Fve,null,512)),[[o,"Contains failed snapshot",void 0,{right:!0}]]):t.state==="fail"?(oe(),me("div",Hve)):t.mode==="todo"?_t((oe(),me("div",qve,null,512)),[[o,"Todo",void 0,{right:!0}]]):t.mode==="skip"||t.state==="skip"?_t((oe(),me("div",Bve,null,512)),[[o,"Skipped",void 0,{right:!0}]]):(oe(),me("div",Wve))}}});function Uve(e){const t=new Map,r=new Map,o=[];for(;;){let s=0;if(e.forEach((c,f)=>{var v;const{splits:d,finished:h}=c;if(h){s++;const{raw:y,candidate:b}=c;t.set(y,b);return}if(d.length===0){c.finished=!0;return}const g=d[0];r.has(g)?(c.candidate+=c.candidate===""?g:`/${g}`,(v=r.get(g))==null||v.push(f),d.shift()):(r.set(g,[f]),o.push(f))}),o.forEach(c=>{const f=e[c],d=f.splits.shift();f.candidate+=f.candidate===""?d:`/${d}`}),r.forEach(c=>{if(c.length===1){const f=c[0];e[f].finished=!0}}),r.clear(),o.length=0,s===e.length)break}return t}function Vve(e){let t=e;t.includes("/node_modules/")&&(t=e.split(/\/node_modules\//g).pop());const r=t.split(/\//g);return{raw:t,splits:r,candidate:"",finished:!1,id:e}}function jve(e){const t=e.map(o=>Vve(o)),r=Uve(t);return t.map(({raw:o,id:s})=>R1({color:"var(--color-node-external)",label:{color:"var(--color-node-external)",fontSize:"0.875rem",text:r.get(o)??""},isFocused:!1,id:s,type:"external"}))}function Gve(e,t){return R1({color:t?"var(--color-node-root)":"var(--color-node-inline)",label:{color:t?"var(--color-node-root)":"var(--color-node-inline)",fontSize:"0.875rem",text:e.split(/\//g).pop()},isFocused:!1,id:e,type:"inline"})}function Kve(e,t){if(!e)return M0({});const r=jve(e.externalized),o=e.inlined.map(d=>Gve(d,d===t))??[],s=[...r,...o],c=Object.fromEntries(s.map(d=>[d.id,d])),f=Object.entries(e.graph).flatMap(([d,h])=>h.map(g=>{const v=c[d],y=c[g];if(!(v===void 0||y===void 0))return Nve({source:v,target:y,color:"var(--color-link)",label:!1})}).filter(g=>g!==void 0));return M0({nodes:s,links:f})}const Xve={key:0,flex:"","flex-col":"","h-full":"","max-h-full":"","overflow-hidden":"","data-testid":"file-detail"},Yve={p:"2","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},Zve={"flex-1":"","font-light":"","op-50":"","ws-nowrap":"",truncate:"","text-sm":""},Jve={class:"flex text-lg"},Qve={flex:"~","items-center":"","bg-header":"",border:"b-2 base","text-sm":"","h-41px":""},eme=Y("span",{class:"block w-1.4em h-1.4em i-carbon:report"},null,-1),tme={key:0,class:"block w-1.4em h-1.4em i-carbon:circle-dash animate-spin animate-2s"},nme={key:1,class:"block w-1.4em h-1.4em i-carbon:chart-relationship"},rme=Y("span",{class:"block w-1.4em h-1.4em i-carbon:code"},null,-1),ime=Y("span",{class:"block w-1.4em h-1.4em i-carbon:terminal-3270"},null,-1),ome={flex:"","flex-col":"","flex-1":"",overflow:"hidden"},sme=["flex-1"],lme=ft({__name:"FileDetails",setup(e){const t=Be({nodes:[],links:[]}),r=Be(!1),o=Be(!1),s=Be(!1),c=Be(void 0),f=Me(()=>{const x=Xt.value;if(!(!x||!x.filepath))return{filepath:x.filepath,projectName:x.file.projectName||""}}),d=Me(()=>Xt.value&&Fh(Xt.value));function h(){var T;const x=(T=Xt.value)==null?void 0:T.filepath;x&&fetch(`/__open-in-editor?file=${encodeURIComponent(x)}`)}function g(x){x==="graph"&&(o.value=!0),Bn.value=x}const v=Me(()=>{var x;return((x=jw.value)==null?void 0:x.reduce((T,{size:E})=>T+E,0))??0});function y(x){r.value=x}async function b(){var x;if(!(s.value||((x=f.value)==null?void 0:x.filepath)===c.value)){s.value=!0,await ln();try{const T=f.value;if(!T)return;(!c.value||T.filepath!==c.value||!t.value.nodes.length&&!t.value.links.length)&&(t.value=Kve(await yt.rpc.getModuleGraph(T.projectName,T.filepath,!!No),T.filepath),c.value=T.filepath),g("graph")}finally{await new Promise(T=>setTimeout(T,100)),s.value=!1}}}return xw(()=>[f.value,Bn.value],([,x])=>{x==="graph"&&b()},{debounce:100,immediate:!0}),(x,T)=>{var z,J,re,te,j,ne;const E=D1,M=hi,N=zve,L=wfe,O=ffe,A=ife,H=Hr("tooltip");return q(Xt)?(oe(),me("div",Xve,[Y("div",null,[Y("div",Yve,[Oe(E,{state:(z=q(Xt).result)==null?void 0:z.state,mode:q(Xt).mode,"failed-snapshot":q(d)},null,8,["state","mode","failed-snapshot"]),(J=q(Xt))!=null&&J.file.projectName?(oe(),me("div",{key:0,"font-light":"","op-50":"","text-sm":"",style:Zt({color:q(Iw)((re=q(Xt))==null?void 0:re.file.projectName)})}," ["+qe(((te=q(Xt))==null?void 0:te.file.projectName)||"")+"] ",5)):et("",!0),Y("div",Zve,qe((j=q(Xt))==null?void 0:j.name),1),Y("div",Jve,[q(Pr)?et("",!0):_t((oe(),ot(M,{key:0,title:"Open in editor",icon:"i-carbon-launch",disabled:!((ne=q(Xt))!=null&&ne.filepath),onClick:h},null,8,["disabled"])),[[H,"Open in editor",void 0,{bottom:!0}]])])]),Y("div",Qve,[Y("button",{"tab-button":"",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==null}]),"data-testid":"btn-report",onClick:T[0]||(T[0]=K=>g(null))},[eme,gt(" Report ")],2),Y("button",{"tab-button":"","data-testid":"btn-graph",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==="graph"}]),onClick:T[1]||(T[1]=K=>g("graph"))},[q(s)?(oe(),me("span",tme)):(oe(),me("span",nme)),gt(" Module Graph ")],2),Y("button",{"tab-button":"","data-testid":"btn-code",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==="editor"}]),onClick:T[2]||(T[2]=K=>g("editor"))},[rme,gt(" "+qe(q(r)?"* ":"")+"Code ",1)],2),Y("button",{"tab-button":"","data-testid":"btn-console",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==="console",op20:q(Bn)!=="console"&&q(v)===0}]),onClick:T[3]||(T[3]=K=>g("console"))},[ime,gt(" Console ("+qe(q(v))+") ",1)],2)])]),Y("div",ome,[q(o)?(oe(),me("div",{key:0,"flex-1":q(Bn)==="graph"&&""},[_t(Oe(N,{graph:q(t),"data-testid":"graph","project-name":q(Xt).file.projectName||""},null,8,["graph","project-name"]),[[bl,q(Bn)==="graph"&&!q(s)]])],8,sme)):et("",!0),q(Bn)==="editor"?(oe(),ot(L,{key:q(Xt).filepath,file:q(Xt),"data-testid":"editor",onDraft:y},null,8,["file"])):q(Bn)==="console"?(oe(),ot(O,{key:2,file:q(Xt),"data-testid":"console"},null,8,["file"])):q(Bn)?et("",!0):(oe(),ot(A,{key:3,file:q(Xt),"data-testid":"report"},null,8,["file"]))])])):et("",!0)}}}),ame={h:"full",flex:"~ col"},cme=Y("div",{p:"3","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},[Y("div",{class:"i-carbon:folder-details-reference"}),Y("span",{"pl-1":"","font-bold":"","text-sm":"","flex-auto":"","ws-nowrap":"","overflow-hidden":"",truncate:""},"Coverage")],-1),ume={"flex-auto":"","py-1":"","bg-white":""},fme=["src"],dme=ft({__name:"Coverage",props:{src:{}},setup(e){return(t,r)=>(oe(),me("div",ame,[cme,Y("div",ume,[Y("iframe",{id:"vitest-ui-coverage",src:t.src},null,8,fme)])]))}}),hme={bg:"red500/10","p-1":"","mb-1":"","mt-2":"",rounded:""},pme={"font-bold":""},gme={key:0,class:"scrolls",text:"xs","font-mono":"","mx-1":"","my-2":"","pb-2":"","overflow-auto":""},vme=["font-bold"],mme={text:"red500/70"},yme=Y("br",null,null,-1),bme={key:1,text:"sm","mb-2":""},wme={"font-bold":""},xme={key:2,text:"sm","mb-2":""},_me={"font-bold":""},Sme=Y("br",null,null,-1),kme=Y("ul",null,[Y("li",null," The error was thrown, while Vitest was running this test. "),Y("li",null," If the error occurred after the test had been completed, this was the last documented test before it was thrown. ")],-1),Cme={key:3,text:"sm","font-thin":""},Tme=Y("br",null,null,-1),Eme=Y("ul",null,[Y("li",null," Cancel timeouts using clearTimeout and clearInterval. "),Y("li",null," Wait for promises to resolve using the await keyword. ")],-1),Lme=ft({__name:"ErrorEntry",props:{error:{}},setup(e){return(t,r)=>{var o;return oe(),me(ut,null,[Y("h4",hme,[Y("span",pme,[gt(qe(t.error.name||t.error.nameStr||"Unknown Error"),1),t.error.message?(oe(),me(ut,{key:0},[gt(":")],64)):et("",!0)]),gt(" "+qe(t.error.message),1)]),(o=t.error.stacks)!=null&&o.length?(oe(),me("p",gme,[(oe(!0),me(ut,null,si(t.error.stacks,(s,c)=>(oe(),me("span",{key:c,"whitespace-pre":"","font-bold":c===0?"":null},[gt("❯ "+qe(s.method)+" "+qe(s.file)+":",1),Y("span",mme,qe(s.line)+":"+qe(s.column),1),yme],8,vme))),128))])):et("",!0),t.error.VITEST_TEST_PATH?(oe(),me("p",bme,[gt(" This error originated in "),Y("span",wme,qe(t.error.VITEST_TEST_PATH),1),gt(" test file. It doesn't mean the error was thrown inside the file itself, but while it was running. ")])):et("",!0),t.error.VITEST_TEST_NAME?(oe(),me("p",xme,[gt(" The latest test that might've caused the error is "),Y("span",_me,qe(t.error.VITEST_TEST_NAME),1),gt(". It might mean one of the following:"),Sme,kme])):et("",!0),t.error.VITEST_AFTER_ENV_TEARDOWN?(oe(),me("p",Cme,[gt(" This error was caught after test environment was torn down. Make sure to cancel any running tasks before test finishes:"),Tme,Eme])):et("",!0)],64)}}}),En=e=>(la("data-v-0178ddee"),e=e(),aa(),e),Ame={"data-testid":"test-files-entry",grid:"~ cols-[min-content_1fr_min-content]","items-center":"",gap:"x-2 y-3",p:"x4",relative:"","font-light":"","w-80":"",op80:""},Mme=En(()=>Y("div",{"i-carbon-document":""},null,-1)),Nme=En(()=>Y("div",null,"Files",-1)),$me={class:"number","data-testid":"num-files"},Ome=En(()=>Y("div",{"i-carbon-checkmark":""},null,-1)),Pme=En(()=>Y("div",null,"Pass",-1)),Rme={class:"number"},Dme=En(()=>Y("div",{"i-carbon-close":""},null,-1)),zme=En(()=>Y("div",null," Fail ",-1)),Ime={class:"number","text-red5":""},Fme=En(()=>Y("div",{"i-carbon-compare":""},null,-1)),Hme=En(()=>Y("div",null," Snapshot Fail ",-1)),qme={class:"number","text-red5":""},Bme=En(()=>Y("div",{"i-carbon-checkmark-outline-error":""},null,-1)),Wme=En(()=>Y("div",null," Errors ",-1)),Ume={class:"number","text-red5":""},Vme=En(()=>Y("div",{"i-carbon-timer":""},null,-1)),jme=En(()=>Y("div",null,"Time",-1)),Gme={class:"number","data-testid":"run-time"},Kme={key:0,bg:"red500/10",text:"red500",p:"x3 y2","max-w-xl":"","m-2":"",rounded:""},Xme=En(()=>Y("h3",{"text-center":"","mb-2":""}," Unhandled Errors ",-1)),Yme={text:"sm","font-thin":"","mb-2":"","data-testid":"unhandled-errors"},Zme=En(()=>Y("br",null,null,-1)),Jme={"data-testid":"unhandled-errors-details",class:"scrolls unhandled-errors",text:"sm","font-thin":"","pe-2.5":"","open:max-h-52":"","overflow-auto":""},Qme=En(()=>Y("summary",{"font-bold":"","cursor-pointer":""}," Errors ",-1)),e0e=ft({__name:"TestFilesEntry",setup(e){return(t,r)=>{const o=Lme;return oe(),me(ut,null,[Y("div",Ame,[Mme,Nme,Y("div",$me,qe(q(Ce).summary.files),1),q(Ce).summary.filesSuccess?(oe(),me(ut,{key:0},[Ome,Pme,Y("div",Rme,qe(q(Ce).summary.filesSuccess),1)],64)):et("",!0),q(Ce).summary.filesFailed?(oe(),me(ut,{key:1},[Dme,zme,Y("div",Ime,qe(q(Ce).summary.filesFailed),1)],64)):et("",!0),q(Ce).summary.filesSnapshotFailed?(oe(),me(ut,{key:2},[Fme,Hme,Y("div",qme,qe(q(Ce).summary.filesSnapshotFailed),1)],64)):et("",!0),q(Ii).length?(oe(),me(ut,{key:3},[Bme,Wme,Y("div",Ume,qe(q(Ii).length),1)],64)):et("",!0),Vme,jme,Y("div",Gme,qe(q(Ce).summary.time),1)]),q(Ii).length?(oe(),me("div",Kme,[Xme,Y("p",Yme,[gt(" Vitest caught "+qe(q(Ii).length)+" error"+qe(q(Ii).length>1?"s":"")+" during the test run.",1),Zme,gt(" This might cause false positive tests. Resolve unhandled errors to make sure your tests are not affected. ")]),Y("details",Jme,[Qme,(oe(!0),me(ut,null,si(q(Ii),(s,c)=>(oe(),ot(o,{key:c,error:s},null,8,["error"]))),128))])])):et("",!0)],64)}}}),t0e=di(e0e,[["__scopeId","data-v-0178ddee"]]),n0e={"p-2":"","text-center":"",flex:""},r0e={"text-4xl":"","min-w-2em":""},i0e={"text-md":""},o0e=ft({__name:"DashboardEntry",setup(e){return(t,r)=>(oe(),me("div",n0e,[Y("div",null,[Y("div",r0e,[dn(t.$slots,"body")]),Y("div",i0e,[dn(t.$slots,"header")])])]))}}),s0e={flex:"~ wrap","justify-evenly":"","gap-2":"",p:"x-4",relative:""},l0e=ft({__name:"TestsEntry",setup(e){return(t,r)=>{const o=o0e;return oe(),me("div",s0e,[Oe(o,{"text-green5":"","data-testid":"pass-entry"},{header:st(()=>[gt(" Pass ")]),body:st(()=>[gt(qe(q(Ce).summary.testsSuccess),1)]),_:1}),Oe(o,{class:lt({"text-red5":q(Ce).summary.testsFailed,op50:!q(Ce).summary.testsFailed}),"data-testid":"fail-entry"},{header:st(()=>[gt(" Fail ")]),body:st(()=>[gt(qe(q(Ce).summary.testsFailed),1)]),_:1},8,["class"]),q(Ce).summary.testsSkipped?(oe(),ot(o,{key:0,op50:"","data-testid":"skipped-entry"},{header:st(()=>[gt(" Skip ")]),body:st(()=>[gt(qe(q(Ce).summary.testsSkipped),1)]),_:1})):et("",!0),q(Ce).summary.testsTodo?(oe(),ot(o,{key:1,op50:"","data-testid":"todo-entry"},{header:st(()=>[gt(" Todo ")]),body:st(()=>[gt(qe(q(Ce).summary.testsTodo),1)]),_:1})):et("",!0),Oe(o,{tail:!0,"data-testid":"total-entry"},{header:st(()=>[gt(" Total ")]),body:st(()=>[gt(qe(q(Ce).summary.totalTests),1)]),_:1})])}}}),a0e={},c0e={"gap-0":"",flex:"~ col gap-4","h-full":"","justify-center":"","items-center":""},u0e={"aria-labelledby":"tests",m:"y-4 x-2"};function f0e(e,t){const r=l0e,o=t0e;return oe(),me("div",c0e,[Y("section",u0e,[Oe(r)]),Oe(o)])}const d0e=di(a0e,[["render",f0e]]),h0e={},p0e={h:"full",flex:"~ col"},g0e=Y("div",{p:"3","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},[Y("div",{class:"i-carbon-dashboard"}),Y("span",{"pl-1":"","font-bold":"","text-sm":"","flex-auto":"","ws-nowrap":"","overflow-hidden":"",truncate:""},"Dashboard")],-1),v0e={class:"scrolls","flex-auto":"","py-1":""};function m0e(e,t){const r=d0e;return oe(),me("div",p0e,[g0e,Y("div",v0e,[Oe(r)])])}const y0e=di(h0e,[["render",m0e]]),b0e=["open"],w0e=Y("div",{"flex-1":"","h-1px":"",border:"base b",op80:""},null,-1),x0e=Y("div",{"flex-1":"","h-1px":"",border:"base b",op80:""},null,-1),_0e=ft({__name:"DetailsPanel",props:{color:{}},setup(e){const t=Be(!0);return(r,o)=>(oe(),me("div",{open:q(t),class:"details-panel","data-testid":"details-panel",onToggle:o[0]||(o[0]=s=>t.value=s.target.open)},[Y("div",{p:"y1","text-sm":"","bg-base":"","items-center":"","z-5":"","gap-2":"",class:lt(r.color),"w-full":"",flex:"","select-none":"",sticky:"",top:"-1"},[w0e,dn(r.$slots,"summary",{open:q(t)}),x0e],2),dn(r.$slots,"default")],40,b0e))}}),S0e={type:"button",dark:"op75",bg:"gray-200 dark:#111",hover:"op100","rounded-1":"","p-0.5":""},k0e={__name:"IconAction",props:{icon:String},setup(e){return(t,r)=>(oe(),me("button",S0e,[Y("span",{block:"",class:lt([e.icon,"dark:op85 hover:op100"]),op65:""},null,2)]))}},lp=e=>(la("data-v-96b36737"),e=e(),aa(),e),C0e=["aria-label","data-current"],T0e={key:1,"w-4":""},E0e={key:2,class:"i-logos:typescript-icon","flex-shrink-0":"","mr-2":""},L0e=["text"],A0e={"text-sm":"",truncate:"","font-light":""},M0e=["innerHTML"],N0e={key:0,text:"xs",op20:"",style:{"white-space":"nowrap"}},$0e={"gap-1":"","justify-end":"","flex-grow-1":"","pl-1":"",class:"test-actions"},O0e={key:0,class:"op100 gap-1 p-y-1",grid:"~ items-center cols-[1.5em_1fr]"},P0e=lp(()=>Y("div",{class:"i-carbon:information-square w-1.5em h-1.5em"},null,-1)),R0e=lp(()=>Y("span",{class:"text-[#add467]"},"includeTaskLocation",-1)),D0e=lp(()=>Y("div",{style:{"grid-column":"2"}}," Clicking this button the code tab will position the cursor at first line in the source code since the UI doesn't have the information available. ",-1)),z0e={key:1},I0e=ft({__name:"ExplorerItem",props:{taskId:{},name:{},indent:{},typecheck:{type:Boolean},duration:{},state:{},current:{type:Boolean},type:{},opened:{type:Boolean},expandable:{type:Boolean},search:{},projectName:{},projectNameColor:{},disableTaskLocation:{type:Boolean},onItemClick:{type:Function}},setup(e){const t=Me(()=>yt.state.idMap.get(e.taskId)),r=Me(()=>{if(Pr)return!1;const T=t.value;return T&&Fh(T)});function o(){e.expandable&&(e.opened?Ce.collapseNode(e.taskId):Ce.expandNode(e.taskId))}async function s(T){var E;(E=e.onItemClick)==null||E.call(e,T),fs.value&&(tu.value=!0,await ln()),await Kh([T.file])}function c(T){return yt.rpc.updateSnapshot(T.file)}const f=Me(()=>e.indent<=0?[]:Array.from({length:e.indent},(T,E)=>`${e.taskId}-${E}`)),d=Me(()=>{const T=f.value,E=[];return(e.type==="file"||e.type==="suite")&&E.push("min-content"),E.push("min-content"),e.type==="suite"&&e.typecheck&&E.push("min-content"),E.push("minmax(0, 1fr)"),E.push("min-content"),`grid-template-columns: ${T.map(()=>"1rem").join(" ")} ${E.join(" ")};`}),h=Me(()=>Dw(e.name)),g=Me(()=>{const T=Wce.value,E=h.value;return T?E.replace(T,M=>`${M}`):E}),v=Me(()=>e.type!=="file"&&e.disableTaskLocation),y=Me(()=>e.type==="file"?"Open test details":e.type==="suite"?"View Suite Source Code":"View Test Source Code"),b=Me(()=>v.value?"color-red5 dark:color-#f43f5e":null);function x(){var E;const T=t.value;e.type==="file"?(E=e.onItemClick)==null||E.call(e,T):yfe(T)}return(T,E)=>{const M=D1,N=k0e,L=hi,O=Hr("tooltip");return q(t)?(oe(),me("div",{key:0,"items-center":"",p:"x-2 y-1",grid:"~ rows-1 items-center gap-x-2","w-full":"","h-28px":"","border-rounded":"",hover:"bg-active","cursor-pointer":"",class:"item-wrapper",style:Zt(q(d)),"aria-label":T.name,"data-current":T.current,onClick:E[2]||(E[2]=A=>o())},[T.indent>0?(oe(!0),me(ut,{key:0},si(q(f),A=>(oe(),me("div",{key:A,border:"solid gray-500 dark:gray-400",class:"vertical-line","h-28px":"","inline-flex":"","mx-2":"",op20:""}))),128)):et("",!0),T.type==="file"||T.type==="suite"?(oe(),me("div",T0e,[Y("div",{class:lt(T.opened?"i-carbon:chevron-down":"i-carbon:chevron-right op20"),op20:""},null,2)])):et("",!0),Oe(M,{state:T.state,mode:q(t).mode,"failed-snapshot":q(r),"w-4":""},null,8,["state","mode","failed-snapshot"]),T.type==="suite"&&T.typecheck?(oe(),me("div",E0e)):et("",!0),Y("div",{flex:"","items-end":"","gap-2":"",text:T.state==="fail"?"red-500":"","overflow-hidden":""},[Y("span",A0e,[T.type==="file"&&T.projectName?(oe(),me("span",{key:0,style:Zt({color:T.projectNameColor})}," ["+qe(T.projectName)+"] ",5)):et("",!0),Y("span",{innerHTML:q(g)},null,8,M0e)]),typeof T.duration=="number"?(oe(),me("span",N0e,qe(T.duration>0?T.duration:"< 1")+"ms ",1)):et("",!0)],8,L0e),Y("div",$0e,[!q(Pr)&&q(r)?_t((oe(),ot(N,{key:0,"data-testid":"btn-fix-snapshot",title:"Fix failed snapshot(s)",icon:"i-carbon:result-old",onClick:E[0]||(E[0]=_c(A=>c(q(t)),["prevent","stop"]))},null,512)),[[O,"Fix failed snapshot(s)",void 0,{bottom:!0}]]):et("",!0),Oe(q(Rb),{placement:"bottom",class:lt(["w-1.4em h-1.4em op100 rounded flex",q(b)])},{popper:st(()=>[q(v)?(oe(),me("div",O0e,[P0e,Y("div",null,[gt(qe(q(y))+": this feature is not available, you have disabled ",1),R0e,gt(" in your configuration file.")]),D0e])):(oe(),me("div",z0e,qe(q(y)),1))]),default:st(()=>[Oe(L,{"data-testid":"btn-open-details",icon:"i-carbon:intrusion-prevention",onClick:_c(x,["prevent","stop"])})]),_:1},8,["class"]),q(Pr)?et("",!0):_t((oe(),ot(L,{key:1,"data-testid":"btn-run-test",title:"Run current test",icon:"i-carbon:play-filled-alt","text-green5":"",disabled:T.type!=="file",onClick:E[1]||(E[1]=_c(A=>s(q(t)),["prevent","stop"]))},null,8,["disabled"])),[[O,"Run current test",void 0,{bottom:!0}]])])],12,C0e)):et("",!0)}}}),F0e=di(I0e,[["__scopeId","data-v-96b36737"]]),H0e={"flex-1":"","ms-2":"","select-none":""},q0e=ft({__name:"FilterStatus",props:Ic({label:{}},{modelValue:{type:[Boolean,null]},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Th(e,"modelValue");return(r,o)=>(oe(),me("label",ii({class:"font-light text-sm checkbox flex items-center cursor-pointer py-1 text-sm w-full gap-y-1 mb-1px"},r.$attrs,{onClick:o[1]||(o[1]=_c(s=>t.value=!t.value,["prevent"]))}),[Y("span",{class:lt([t.value?"i-carbon:checkbox-checked-filled":"i-carbon:checkbox"]),"text-lg":"","aria-hidden":"true"},null,2),_t(Y("input",{"onUpdate:modelValue":o[0]||(o[0]=s=>t.value=s),type:"checkbox","sr-only":""},null,512),[[mC,t.value]]),Y("span",H0e,qe(r.label),1)],16))}});function B0e(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var r=e.indexOf("Trident/");if(r>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var s=e.indexOf("Edge/");return s>0?parseInt(e.substring(s+5,e.indexOf(".",s)),10):-1}let $c;function th(){th.init||(th.init=!0,$c=B0e()!==-1)}var qu={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){th(),ln(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",$c&&this.$el.appendChild(e),e.data="about:blank",$c||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!$c&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const W0e=dy();la("data-v-b329ee4c");const U0e={class:"resize-observer",tabindex:"-1"};aa();const V0e=W0e((e,t,r,o,s,c)=>(oe(),ot("div",U0e)));qu.render=V0e;qu.__scopeId="data-v-b329ee4c";qu.__file="src/components/ResizeObserver.vue";function Oc(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Oc=function(t){return typeof t}:Oc=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Oc(e)}function j0e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function G0e(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,o=new Array(t);r2&&arguments[2]!==void 0?arguments[2]:{},o,s,c,f=function(h){for(var g=arguments.length,v=new Array(g>1?g-1:0),y=1;y1){var g=d.find(function(y){return y.isIntersecting});g&&(h=g)}if(s.callback){var v=h.isIntersecting&&h.intersectionRatio>=s.threshold;if(v===s.oldResult)return;s.oldResult=v,s.callback(v,h)}},this.options.intersection),ln(function(){s.observer&&s.observer.observe(s.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),e}();function I1(e,t,r){var o=t.value;if(o)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var s=new tye(e,o,r);e._vue_visibilityState=s}}function nye(e,t,r){var o=t.value,s=t.oldValue;if(!z1(o,s)){var c=e._vue_visibilityState;if(!o){F1(e);return}c?c.createObserver(o,r):I1(e,{value:o},r)}}function F1(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var rye={beforeMount:I1,updated:nye,unmounted:F1},iye={itemsLimit:1e3},oye=/(auto|scroll)/;function H1(e,t){return e.parentNode===null?t:H1(e.parentNode,t.concat([e]))}var ad=function(t,r){return getComputedStyle(t,null).getPropertyValue(r)},sye=function(t){return ad(t,"overflow")+ad(t,"overflow-y")+ad(t,"overflow-x")},lye=function(t){return oye.test(sye(t))};function $0(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=H1(e.parentNode,[]),r=0;r{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const e=this.$_lastUpdateScrollPosition;typeof e=="number"&&this.$nextTick(()=>{this.scrollToPosition(e)})},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,r,o,s){const c=vh({id:fye++,index:t,used:!0,key:o,type:s}),f=ph({item:r,position:0,nr:c});return e.push(f),f},unuseView(e,t=!1){const r=this.$_unusedViews,o=e.nr.type;let s=r.get(o);s||(s=[],r.set(o,s)),s.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const t=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:r}=this.updateVisibleItems(!1,!0);r||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});t(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&t()},this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||t.boundingClientRect.width!==0||t.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const r=this.itemSize,o=this.gridItems||1,s=this.itemSecondarySize||r,c=this.$_computedMinItemSize,f=this.typeField,d=this.simpleArray?null:this.keyField,h=this.items,g=h.length,v=this.sizes,y=this.$_views,b=this.$_unusedViews,x=this.pool,T=this.itemIndexByKey;let E,M,N,L,O;if(!g)E=M=L=O=N=0;else if(this.$_prerender)E=L=0,M=O=Math.min(this.prerender,h.length),N=null;else{const j=this.getScroll();if(t){let V=j.start-this.$_lastUpdateScrollPosition;if(V<0&&(V=-V),r===null&&Vj.start&&(k=B),B=~~((I+k)/2);while(B!==W);for(B<0&&(B=0),E=B,N=v[g-1].accumulator,M=B;Mg&&(M=g)),L=E;Lg&&(M=g),L<0&&(L=0),O>g&&(O=g),N=Math.ceil(g/o)*r}}M-E>iye.itemsLimit&&this.itemsLimitError(),this.totalSize=N;let A;const H=E<=this.$_endIndex&&M>=this.$_startIndex;if(H)for(let j=0,ne=x.length;j=M)&&this.unuseView(A));const z=H?null:new Map;let J,re,te;for(let j=E;j=K.length)&&(A=this.addView(x,j,J,ne,re),this.unuseView(A,!0),K=b.get(re)),A=K[te],z.set(re,te+1)),y.delete(A.nr.key),A.nr.used=!0,A.nr.index=j,A.nr.key=ne,A.nr.type=re,y.set(ne,A),V=!0;else if(!A.nr.used&&(A.nr.used=!0,V=!0,K)){const I=K.indexOf(A);I!==-1&&K.splice(I,1)}A.item=J,V&&(j===h.length-1&&this.$emit("scroll-end"),j===0&&this.$emit("scroll-start")),r===null?(A.position=v[j-1].accumulator,A.offset=0):(A.position=Math.floor(j/o)*r,A.offset=j%o*s)}return this.$_startIndex=E,this.$_endIndex=M,this.emitUpdate&&this.$emit("update",E,M,L,O),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:H}},getListenerTarget(){let e=$0(this.$el);return window.document&&(e===window.document.documentElement||e===window.document.body)&&(e=window),e},getScroll(){const{$el:e,direction:t}=this,r=t==="vertical";let o;if(this.pageMode){const s=e.getBoundingClientRect(),c=r?s.height:s.width;let f=-(r?s.top:s.left),d=r?window.innerHeight:window.innerWidth;f<0&&(d+=f,f=0),f+d>c&&(d=c-f),o={start:f,end:f+d}}else r?o={start:e.scrollTop,end:e.scrollTop+e.clientHeight}:o={start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return o},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,ih?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const r=this.gridItems||1;this.itemSize===null?t=e>0?this.sizes[e-1].accumulator:0:t=Math.floor(e/r)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let r,o,s;if(this.pageMode){const c=$0(this.$el),f=c.tagName==="HTML"?0:c[t.scroll],d=c.getBoundingClientRect(),g=this.$el.getBoundingClientRect()[t.start]-d[t.start];r=c,o=t.scroll,s=e+f+g}else r=this.$el,o=t.scroll,s=e;r[o]=s},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((e,t)=>e.nr.index-t.nr.index)}}};const dye={key:0,ref:"before",class:"vue-recycle-scroller__slot"},hye={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function pye(e,t,r,o,s,c){const f=Ao("ResizeObserver"),d=Hr("observe-visibility");return _t((oe(),me("div",{class:lt(["vue-recycle-scroller",{ready:s.ready,"page-mode":r.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...h)=>c.handleScroll&&c.handleScroll(...h))},[e.$slots.before?(oe(),me("div",dye,[dn(e.$slots,"before")],512)):et("v-if",!0),(oe(),ot(wv(r.listTag),{ref:"wrapper",style:Zt({[e.direction==="vertical"?"minHeight":"minWidth"]:s.totalSize+"px"}),class:lt(["vue-recycle-scroller__item-wrapper",r.listClass])},{default:st(()=>[(oe(!0),me(ut,null,si(s.pool,h=>(oe(),ot(wv(r.itemTag),ii({key:h.nr.id,style:s.ready?{transform:`translate${e.direction==="vertical"?"Y":"X"}(${h.position}px) translate${e.direction==="vertical"?"X":"Y"}(${h.offset}px)`,width:r.gridItems?`${e.direction==="vertical"&&r.itemSecondarySize||r.itemSize}px`:void 0,height:r.gridItems?`${e.direction==="horizontal"&&r.itemSecondarySize||r.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[r.itemClass,{hover:!r.skipHover&&s.hoverKey===h.nr.key}]]},YS(r.skipHover?{}:{mouseenter:()=>{s.hoverKey=h.nr.key},mouseleave:()=>{s.hoverKey=null}})),{default:st(()=>[dn(e.$slots,"default",{item:h.item,index:h.nr.index,active:h.nr.used})]),_:2},1040,["style","class"]))),128)),dn(e.$slots,"empty")]),_:3},8,["style","class"])),e.$slots.after?(oe(),me("div",hye,[dn(e.$slots,"after")],512)):et("v-if",!0),Oe(f,{onNotify:c.handleResize},null,8,["onNotify"])],34)),[[d,c.handleVisibilityChange]])}ap.render=pye;ap.__file="src/components/RecycleScroller.vue";function gye(e){const t=Me(()=>Fd.value?!1:!Qe.onlyTests),r=Me(()=>On.value===""),o=Be(On.value);xw(On,h=>{o.value=(h==null?void 0:h.trim())??""},{debounce:256});function s(h){var g;On.value="",h&&((g=e.value)==null||g.focus())}function c(h){var g;Qe.failed=!1,Qe.success=!1,Qe.skipped=!1,Qe.onlyTests=!1,h&&((g=e.value)==null||g.focus())}function f(){c(!1),s(!0)}function d(h,g,v,y,b){As.value&&(on.value.search=(h==null?void 0:h.trim())??"",on.value.failed=g,on.value.success=v,on.value.skipped=y,on.value.onlyTests=b)}return Ht(()=>[o.value,Qe.failed,Qe.success,Qe.skipped,Qe.onlyTests],([h,g,v,y,b])=>{d(h,g,v,y,b),Ce.filterNodes()},{flush:"post"}),Ht(()=>_r.value.length,h=>{h&&(on.value.expandAll=void 0)},{flush:"post"}),{initialized:As,filter:Qe,search:On,disableFilter:t,isFiltered:zw,isFilteredByStatus:Fd,disableClearSearch:r,clearAll:f,clearSearch:s,clearFilter:c,filteredFiles:Ru,testsTotal:Uce,uiEntries:In}}const vye={p:"2","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},mye={p:"l3 y2 r2",flex:"~ gap-2","items-center":"","bg-header":"",border:"b-2 base"},yye=Y("div",{class:"i-carbon:search","flex-shrink-0":""},null,-1),bye=["op"],wye=Y("div",{"aria-hidden":"true",class:"i-carbon:filter"},null,-1),xye=Y("div",{"flex-grow-1":"","text-sm":""}," Filter ",-1),_ye={grid:"~ items-center gap-x-1 cols-[auto_min-content_auto] rows-[min-content_min-content]"},Sye={"text-red5":""},kye=Y("span",null,"/",-1),Cye={"text-yellow5":""},Tye={"text-green5":""},Eye=Y("span",null,"/",-1),Lye={class:"text-purple5:50"},Aye={key:0,flex:"~ col","items-center":"",p:"x4 y4","font-light":""},Mye=Y("div",{op30:""}," No matched test ",-1),Nye=["disabled"],$ye=["disabled"],Oye={key:1,flex:"~ col","items-center":"",p:"x4 y4","font-light":""},Pye=Y("div",{class:"i-carbon:circle-dash animate-spin"},null,-1),Rye=Y("div",{op30:""}," Loading... ",-1),Dye=[Pye,Rye],zye=ft({inheritAttrs:!1,__name:"Explorer",props:{onItemClick:{type:Function}},emits:["item-click","run"],setup(e,{emit:t}){const r=t,o=Me(()=>zu.value.includeTaskLocation),s=Be(),{initialized:c,filter:f,search:d,disableFilter:h,isFiltered:g,isFilteredByStatus:v,disableClearSearch:y,clearAll:b,clearSearch:x,clearFilter:T,filteredFiles:E,testsTotal:M,uiEntries:N}=gye(s),L=Be("grid-cols-2"),O=Be("grid-col-span-2"),A=Be();return Lw(A,H=>{const{width:z}=H[0].contentRect;z<420?(L.value="grid-cols-2",O.value="grid-col-span-2"):(L.value="grid-cols-4",O.value="grid-col-span-4")}),(H,z)=>{const J=hi,re=q0e,te=F0e,j=_0e,ne=Hr("tooltip");return oe(),me("div",{ref_key:"testExplorerRef",ref:A,h:"full",flex:"~ col"},[Y("div",null,[Y("div",vye,[dn(H.$slots,"header",{filteredFiles:q(g)||q(v)?q(E):void 0})]),Y("div",mye,[yye,_t(Y("input",{ref_key:"searchBox",ref:s,"onUpdate:modelValue":z[0]||(z[0]=K=>Ot(d)?d.value=K:null),placeholder:"Search...",outline:"none",bg:"transparent",font:"light",text:"sm","flex-1":"","pl-1":"",op:q(d).length?"100":"50",onKeydown:[z[1]||(z[1]=kd(K=>q(x)(!1),["esc"])),z[2]||(z[2]=kd(K=>r("run",q(g)||q(v)?q(E):void 0),["enter"]))]},null,40,bye),[[vC,q(d)]]),_t(Oe(J,{disabled:q(y),title:"Clear search",icon:"i-carbon:filter-remove",onClickPassive:z[3]||(z[3]=K=>q(x)(!0))},null,8,["disabled"]),[[ne,"Clear search",void 0,{bottom:!0}]])]),Y("div",{p:"l3 y2 r2","items-center":"","bg-header":"",border:"b-2 base",grid:"~ items-center gap-x-2 rows-[auto_auto]",class:lt(q(L))},[Y("div",{class:lt(q(O)),flex:"~ gap-2 items-center"},[wye,xye,_t(Oe(J,{disabled:q(h),title:"Clear search",icon:"i-carbon:filter-remove",onClickPassive:z[4]||(z[4]=K=>q(T)(!1))},null,8,["disabled"]),[[ne,"Clear Filter",void 0,{bottom:!0}]])],2),Oe(re,{modelValue:q(f).failed,"onUpdate:modelValue":z[5]||(z[5]=K=>q(f).failed=K),label:"Fail"},null,8,["modelValue"]),Oe(re,{modelValue:q(f).success,"onUpdate:modelValue":z[6]||(z[6]=K=>q(f).success=K),label:"Pass"},null,8,["modelValue"]),Oe(re,{modelValue:q(f).skipped,"onUpdate:modelValue":z[7]||(z[7]=K=>q(f).skipped=K),label:"Skip"},null,8,["modelValue"]),Oe(re,{modelValue:q(f).onlyTests,"onUpdate:modelValue":z[8]||(z[8]=K=>q(f).onlyTests=K),label:"Only Tests"},null,8,["modelValue"])],2)]),Y("div",{class:"scrolls","flex-auto":"","py-1":"",onScrollPassive:z[12]||(z[12]=(...K)=>q(Am)&&q(Am)(...K))},[Oe(j,null,XS({default:st(()=>[(q(g)||q(v))&&q(N).length===0?(oe(),me(ut,{key:0},[q(c)?(oe(),me("div",Aye,[Mye,Y("button",{type:"button","font-light":"","text-sm":"",border:"~ gray-400/50 rounded",p:"x2 y0.5",m:"t2",op:"50",class:lt(q(y)?null:"hover:op100"),disabled:q(y),onClickPassive:z[9]||(z[9]=K=>q(x)(!0))}," Clear Search ",42,Nye),Y("button",{type:"button","font-light":"","text-sm":"",border:"~ gray-400/50 rounded",p:"x2 y0.5",m:"t2",op:"50",class:lt(q(h)?null:"hover:op100"),disabled:q(h),onClickPassive:z[10]||(z[10]=K=>q(T)(!0))}," Clear Filter ",42,$ye),Y("button",{type:"button","font-light":"",op:"50 hover:100","text-sm":"",border:"~ gray-400/50 rounded",p:"x2 y0.5",m:"t2",onClickPassive:z[11]||(z[11]=(...K)=>q(b)&&q(b)(...K))}," Clear All ",32)])):(oe(),me("div",Oye,Dye))],64)):(oe(),ot(q(ap),{key:1,"page-mode":"","key-field":"id","item-size":28,items:q(N),buffer:100},{default:st(({item:K})=>[Oe(te,{class:lt(["h-28px m-0 p-0",q(Zi)===K.id?"bg-active":""]),"task-id":K.id,expandable:K.expandable,type:K.type,current:q(Zi)===K.id,indent:K.indent,name:K.name,typecheck:K.typecheck===!0,"project-name":K.projectName??"","project-name-color":K.projectNameColor??"",state:K.state,duration:K.duration,opened:K.expanded,"disable-task-location":!q(o),"on-item-click":H.onItemClick},null,8,["task-id","expandable","type","current","indent","name","typecheck","project-name","project-name-color","state","duration","opened","disable-task-location","class","on-item-click"])]),_:1},8,["items"]))]),_:2},[q(c)?{name:"summary",fn:st(()=>[Y("div",_ye,[Y("span",Sye," FAIL ("+qe(q(M).failed)+") ",1),kye,Y("span",Cye," RUNNING ("+qe(q(M).running)+") ",1),Y("span",Tye," PASS ("+qe(q(M).success)+") ",1),Eye,Y("span",Lye," SKIP ("+qe(q(f).onlyTests?q(M).skipped:"--")+") ",1)])]),key:"0"}:void 0]),1024)],32)],512)}}}),Iye=""+new URL("../favicon.svg",import.meta.url).href,Fye=Y("img",{"w-6":"","h-6":"",src:Iye,alt:"Vitest logo"},null,-1),Hye=Y("span",{"font-light":"","text-sm":"","flex-1":""},"Vitest",-1),qye={class:"flex text-lg"},Bye=Y("div",{class:"i-carbon:folder-off ma"},null,-1),Wye=Y("div",{class:"op100 gap-1 p-y-1",grid:"~ items-center cols-[1.5em_1fr]"},[Y("div",{class:"i-carbon:information-square w-1.5em h-1.5em"}),Y("div",null,"Coverage enabled but missing html reporter."),Y("div",{style:{"grid-column":"2"}}," Add html reporter to your configuration to see coverage here. ")],-1),Uye=ft({__name:"Navigation",setup(e){function t(){return yt.rpc.updateSnapshot()}const r=Me(()=>ga.value?"light":"dark");async function o(f){fs.value&&(tu.value=!0,await ln(),Ji.value&&(nu(!0),await ln())),f!=null&&f.length?await Kh(f):await wue()}function s(){Ce.collapseAllNodes()}function c(){Ce.expandAllNodes()}return(f,d)=>{const h=hi,g=zye,v=Hr("tooltip");return oe(),ot(g,{border:"r base","on-item-click":q(Gw),nested:!0,onRun:o},{header:st(({filteredFiles:y})=>[Fye,Hye,Y("div",qye,[_t(Oe(h,{title:"Collapse tests",disabled:!q(As),"data-testid":"collapse-all",icon:"i-carbon:collapse-all",onClick:d[0]||(d[0]=b=>s())},null,8,["disabled"]),[[bl,!q(n0)],[v,"Collapse tests",void 0,{bottom:!0}]]),_t(Oe(h,{disabled:!q(As),title:"Expand tests","data-testid":"expand-all",icon:"i-carbon:expand-all",onClick:d[1]||(d[1]=b=>c())},null,8,["disabled"]),[[bl,q(n0)],[v,"Expand tests",void 0,{bottom:!0}]]),_t(Oe(h,{title:"Show dashboard",class:"!animate-100ms","animate-count-1":"",icon:"i-carbon:dashboard",onClick:d[2]||(d[2]=b=>q(nu)(!0))},null,512),[[bl,q(Wd)&&!q(fs)||!q(ys)],[v,"Dashboard",void 0,{bottom:!0}]]),q(Wd)&&!q(fs)?(oe(),ot(q(Rb),{key:0,title:"Coverage enabled but missing html reporter",class:"w-1.4em h-1.4em op100 rounded flex color-red5 dark:color-#f43f5e cursor-help"},{popper:st(()=>[Wye]),default:st(()=>[Bye]),_:1})):et("",!0),q(fs)?_t((oe(),ot(h,{key:1,disabled:q(tu),title:"Show coverage",class:"!animate-100ms","animate-count-1":"",icon:"i-carbon:folder-details-reference",onClick:d[3]||(d[3]=b=>q(Eue)())},null,8,["disabled"])),[[bl,!q(Ji)],[v,"Coverage",void 0,{bottom:!0}]]):et("",!0),q(Ce).summary.failedSnapshot&&!q(Pr)?_t((oe(),ot(h,{key:2,icon:"i-carbon:result-old",disabled:!q(Ce).summary.failedSnapshotEnabled,onClick:d[4]||(d[4]=b=>q(Ce).summary.failedSnapshotEnabled&&t())},null,8,["disabled"])),[[v,"Update all failed snapshot(s)",void 0,{bottom:!0}]]):et("",!0),q(Pr)?et("",!0):_t((oe(),ot(h,{key:3,disabled:(y==null?void 0:y.length)===0,icon:"i-carbon:play",onClick:b=>o(y)},null,8,["disabled","onClick"])),[[v,y?y.length===0?"No test to run (clear filter)":"Rerun filtered":"Rerun all",void 0,{bottom:!0}]]),_t(Oe(h,{icon:"dark:i-carbon-moon i-carbon:sun",onClick:d[5]||(d[5]=b=>q(jue)())},null,512),[[v,`Toggle to ${q(r)} mode`,void 0,{bottom:!0}]])])]),_:1},8,["on-item-click"])}}}),Vye={"h-3px":"",relative:"","overflow-hidden":"",class:"px-0","w-screen":""},jye=ft({__name:"ProgressBar",setup(e){const{width:t}=bce(),r=Me(()=>Ce.summary.files===0?"!bg-gray-4 !dark:bg-gray-7 in-progress":qce.value?null:"in-progress"),o=Me(()=>{const d=Ce.summary.files;return d>0?t.value*Ce.summary.filesSuccess/d:0}),s=Me(()=>{const d=Ce.summary.files;return d>0?t.value*Ce.summary.filesFailed/d:0}),c=Me(()=>Ce.summary.files-Ce.summary.filesFailed-Ce.summary.filesSuccess),f=Me(()=>{const d=Ce.summary.files;return d>0?t.value*c.value/d:0});return(d,h)=>(oe(),me("div",{absolute:"","t-0":"","l-0":"","r-0":"","z-index-1031":"","pointer-events-none":"","p-0":"","h-3px":"",grid:"~ auto-cols-max","justify-items-center":"","w-screen":"",class:lt(q(r))},[Y("div",Vye,[Y("div",{absolute:"","l-0":"","t-0":"","bg-red5":"","h-3px":"",class:lt(q(r)),style:Zt(`width: ${q(s)}px;`)},"   ",6),Y("div",{absolute:"","l-0":"","t-0":"","bg-green5":"","h-3px":"",class:lt(q(r)),style:Zt(`left: ${q(s)}px; width: ${q(o)}px;`)},"   ",6),Y("div",{absolute:"","l-0":"","t-0":"","bg-yellow5":"","h-3px":"",class:lt(q(r)),style:Zt(`left: ${q(o)+q(s)}px; width: ${q(f)}px;`)},"   ",6)])],2))}}),Gye=di(jye,[["__scopeId","data-v-38451300"]]),O0={name:"splitpanes",emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:()=>({container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}),computed:{panesCount(){return this.panes.length},indexedPanes(){return this.panes.reduce((e,t)=>(e[t.id]=t)&&e,{})}},methods:{updatePaneComponents(){this.panes.forEach(e=>{e.update&&e.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[e.id].size}%`})})},bindEvents(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown(e,t){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=t},onMouseMove(e){this.touch.mouseDown&&(e.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(e)),this.$emit("resize",this.panes.map(t=>({min:t.min,max:t.max,size:t.size}))))},onMouseUp(){this.touch.dragging&&this.$emit("resized",this.panes.map(e=>({min:e.min,max:e.max,size:e.size}))),this.touch.mouseDown=!1,setTimeout(()=>{this.touch.dragging=!1,this.unbindEvents()},100)},onSplitterClick(e,t){"ontouchstart"in window&&(e.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===t?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(e,t),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=t,this.splitterTaps.timeoutId=setTimeout(()=>{this.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[t])},onSplitterDblClick(e,t){let r=0;this.panes=this.panes.map((o,s)=>(o.size=s===t?o.max:o.min,s!==t&&(r+=o.min),o)),this.panes[t].size-=r,this.$emit("pane-maximize",this.panes[t]),this.$emit("resized",this.panes.map(o=>({min:o.min,max:o.max,size:o.size})))},onPaneClick(e,t){this.$emit("pane-click",this.indexedPanes[t])},getCurrentMouseDrag(e){const t=this.container.getBoundingClientRect(),{clientX:r,clientY:o}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:r-t.left,y:o-t.top}},getCurrentDragPercentage(e){e=e[this.horizontal?"y":"x"];const t=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(e=t-e),e*100/t},calculatePanesSize(e){const t=this.touch.activeSplitter;let r={prevPanesSize:this.sumPrevPanesSize(t),nextPanesSize:this.sumNextPanesSize(t),prevReachedMinPanes:0,nextReachedMinPanes:0};const o=0+(this.pushOtherPanes?0:r.prevPanesSize),s=100-(this.pushOtherPanes?0:r.nextPanesSize),c=Math.max(Math.min(this.getCurrentDragPercentage(e),s),o);let f=[t,t+1],d=this.panes[f[0]]||null,h=this.panes[f[1]]||null;const g=d.max<100&&c>=d.max+r.prevPanesSize,v=h.max<100&&c<=100-(h.max+this.sumNextPanesSize(t+1));if(g||v){g?(d.size=d.max,h.size=Math.max(100-d.max-r.prevPanesSize-r.nextPanesSize,0)):(d.size=Math.max(100-h.max-r.prevPanesSize-this.sumNextPanesSize(t+1),0),h.size=h.max);return}if(this.pushOtherPanes){const y=this.doPushOtherPanes(r,c);if(!y)return;({sums:r,panesToResize:f}=y),d=this.panes[f[0]]||null,h=this.panes[f[1]]||null}d!==null&&(d.size=Math.min(Math.max(c-r.prevPanesSize-r.prevReachedMinPanes,d.min),d.max)),h!==null&&(h.size=Math.min(Math.max(100-c-r.nextPanesSize-r.nextReachedMinPanes,h.min),h.max))},doPushOtherPanes(e,t){const r=this.touch.activeSplitter,o=[r,r+1];return t{c>o[0]&&c<=r&&(s.size=s.min,e.prevReachedMinPanes+=s.min)}),e.prevPanesSize=this.sumPrevPanesSize(o[0]),o[0]===void 0)?(e.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach((s,c)=>{c>0&&c<=r&&(s.size=s.min,e.prevReachedMinPanes+=s.min)}),this.panes[o[1]].size=100-e.prevReachedMinPanes-this.panes[0].min-e.prevPanesSize-e.nextPanesSize,null):t>100-e.nextPanesSize-this.panes[o[1]].min&&(o[1]=this.findNextExpandedPane(r).index,e.nextReachedMinPanes=0,o[1]>r+1&&this.panes.forEach((s,c)=>{c>r&&c{c=r+1&&(s.size=s.min,e.nextReachedMinPanes+=s.min)}),this.panes[o[0]].size=100-e.prevPanesSize-e.nextReachedMinPanes-this.panes[this.panesCount-1].min-e.nextPanesSize,null):{sums:e,panesToResize:o}},sumPrevPanesSize(e){return this.panes.reduce((t,r,o)=>t+(ot+(o>e+1?r.size:0),0)},findPrevExpandedPane(e){return[...this.panes].reverse().find(t=>t.indext.min)||{}},findNextExpandedPane(e){return this.panes.find(t=>t.index>e+1&&t.size>t.min)||{}},checkSplitpanesNodes(){Array.from(this.container.children).forEach(e=>{const t=e.classList.contains("splitpanes__pane"),r=e.classList.contains("splitpanes__splitter");!t&&!r&&(e.parentNode.removeChild(e),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))})},addSplitter(e,t,r=!1){const o=e-1,s=document.createElement("div");s.classList.add("splitpanes__splitter"),r||(s.onmousedown=c=>this.onMouseDown(c,o),typeof window<"u"&&"ontouchstart"in window&&(s.ontouchstart=c=>this.onMouseDown(c,o)),s.onclick=c=>this.onSplitterClick(c,o+1)),this.dblClickSplitter&&(s.ondblclick=c=>this.onSplitterDblClick(c,o+1)),t.parentNode.insertBefore(s,t)},removeSplitter(e){e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.parentNode.removeChild(e)},redoSplitters(){const e=Array.from(this.container.children);e.forEach(r=>{r.className.includes("splitpanes__splitter")&&this.removeSplitter(r)});let t=0;e.forEach(r=>{r.className.includes("splitpanes__pane")&&(!t&&this.firstSplitter?this.addSplitter(t,r,!0):t&&this.addSplitter(t,r),t++)})},requestUpdate({target:e,...t}){const r=this.indexedPanes[e._.uid];Object.entries(t).forEach(([o,s])=>r[o]=s)},onPaneAdd(e){let t=-1;Array.from(e.$el.parentNode.children).some(s=>(s.className.includes("splitpanes__pane")&&t++,s===e.$el));const r=parseFloat(e.minSize),o=parseFloat(e.maxSize);this.panes.splice(t,0,{id:e._.uid,index:t,min:isNaN(r)?0:r,max:isNaN(o)?100:o,size:e.size===null?null:parseFloat(e.size),givenSize:e.size,update:e.update}),this.panes.forEach((s,c)=>s.index=c),this.ready&&this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({addedPane:this.panes[t]}),this.$emit("pane-add",{index:t,panes:this.panes.map(s=>({min:s.min,max:s.max,size:s.size}))})})},onPaneRemove(e){const t=this.panes.findIndex(o=>o.id===e._.uid),r=this.panes.splice(t,1)[0];this.panes.forEach((o,s)=>o.index=s),this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({removedPane:{...r,index:t}}),this.$emit("pane-remove",{removed:r,panes:this.panes.map(o=>({min:o.min,max:o.max,size:o.size}))})})},resetPaneSizes(e={}){!e.addedPane&&!e.removedPane?this.initialPanesSizing():this.panes.some(t=>t.givenSize!==null||t.min||t.max<100)?this.equalizeAfterAddOrRemove(e):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(t=>({min:t.min,max:t.max,size:t.size})))},equalize(){const e=100/this.panesCount;let t=0;const r=[],o=[];this.panes.forEach(s=>{s.size=Math.max(Math.min(e,s.max),s.min),t-=s.size,s.size>=s.max&&r.push(s.id),s.size<=s.min&&o.push(s.id)}),t>.1&&this.readjustSizes(t,r,o)},initialPanesSizing(){let e=100;const t=[],r=[];let o=0;this.panes.forEach(c=>{e-=c.size,c.size!==null&&o++,c.size>=c.max&&t.push(c.id),c.size<=c.min&&r.push(c.id)});let s=100;e>.1&&(this.panes.forEach(c=>{c.size===null&&(c.size=Math.max(Math.min(e/(this.panesCount-o),c.max),c.min)),s-=c.size}),s>.1&&this.readjustSizes(e,t,r))},equalizeAfterAddOrRemove({addedPane:e,removedPane:t}={}){let r=100/this.panesCount,o=0;const s=[],c=[];e&&e.givenSize!==null&&(r=(100-e.givenSize)/(this.panesCount-1)),this.panes.forEach(f=>{o-=f.size,f.size>=f.max&&s.push(f.id),f.size<=f.min&&c.push(f.id)}),!(Math.abs(o)<.1)&&(this.panes.forEach(f=>{e&&e.givenSize!==null&&e.id===f.id||(f.size=Math.max(Math.min(r,f.max),f.min)),o-=f.size,f.size>=f.max&&s.push(f.id),f.size<=f.min&&c.push(f.id)}),o>.1&&this.readjustSizes(o,s,c))},readjustSizes(e,t,r){let o;e>0?o=e/(this.panesCount-t.length):o=e/(this.panesCount-r.length),this.panes.forEach((s,c)=>{if(e>0&&!t.includes(s.id)){const f=Math.max(Math.min(s.size+o,s.max),s.min),d=f-s.size;e-=d,s.size=f}else if(!r.includes(s.id)){const f=Math.max(Math.min(s.size+o,s.max),s.min),d=f-s.size;e-=d,s.size=f}s.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[s.id].size}%`})}),Math.abs(e)>.1&&this.$nextTick(()=>{this.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler(){this.updatePaneComponents()}},horizontal(){this.updatePaneComponents()},firstSplitter(){this.redoSplitters()},dblClickSplitter(e){[...this.container.querySelectorAll(".splitpanes__splitter")].forEach((t,r)=>{t.ondblclick=e?o=>this.onSplitterDblClick(o,r):void 0})}},beforeUnmount(){this.ready=!1},mounted(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render(){return fa("div",{ref:"container",class:["splitpanes",`splitpanes--${this.horizontal?"horizontal":"vertical"}`,{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default())}},Kye=(e,t)=>{const r=e.__vccOpts||e;for(const[o,s]of t)r[o]=s;return r},Xye={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:()=>({style:{}}),mounted(){this.onPaneAdd(this)},beforeUnmount(){this.onPaneRemove(this)},methods:{update(e){this.style=e}},computed:{sizeNumber(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber(){return parseFloat(this.minSize)},maxSizeNumber(){return parseFloat(this.maxSize)}},watch:{sizeNumber(e){this.requestUpdate({target:this,size:e})},minSizeNumber(e){this.requestUpdate({target:this,min:e})},maxSizeNumber(e){this.requestUpdate({target:this,max:e})}}};function Yye(e,t,r,o,s,c){return oe(),me("div",{class:"splitpanes__pane",onClick:t[0]||(t[0]=f=>c.onPaneClick(f,e._.uid)),style:Zt(e.style)},[dn(e.$slots,"default")],4)}const vc=Kye(Xye,[["render",Yye]]),Zye={"h-screen":"","w-screen":"",overflow:"hidden"},Jye=ft({__name:"index",setup(e){const t=Tue(),r=Pu("vitest-ui_splitpanes-mainSizes",[33,67],{initOnMounted:!0}),o=e0(f=>{f.forEach((d,h)=>{r.value[h]=d.size})},0),s=e0(f=>{f.forEach((d,h)=>{Ec.value[h]=d.size}),rd(!1)},0);function c(){const f=window.innerWidth,d=Math.min(f/3,300);r.value[0]=100*d/f,r.value[1]=100-r.value[0]}return(f,d)=>{const h=Gye,g=Uye,v=y0e,y=dme,b=lme,x=Pue,T=kue;return oe(),me(ut,null,[Oe(h),Y("div",Zye,[Oe(q(O0),{class:"pt-4px",onResized:q(o),onResize:d[2]||(d[2]=E=>q(rd)(!0)),onReady:c},{default:st(()=>[Oe(q(vc),{size:q(r)[0]},{default:st(()=>[Oe(g)]),_:1},8,["size"]),Oe(q(vc),{size:q(r)[1]},{default:st(()=>[q(No)?(oe(),ot(q(O0),{id:"details-splitpanes",key:"browser-detail",onResize:d[1]||(d[1]=E=>q(rd)(!0)),onResized:q(s)},{default:st(()=>[Oe(q(vc),{size:q(Ec)[0],"min-size":"10"},{default:st(()=>[d[0]||(Hc(-1),(d[0]=Oe(x)).cacheIndex=0,Hc(1),d[0])]),_:1},8,["size"]),Oe(q(vc),{size:q(Ec)[1],"min-size":"5"},{default:st(()=>[q(t)?(oe(),ot(v,{key:"summary"})):q(Ji)?(oe(),ot(y,{key:"coverage",src:q(s0)},null,8,["src"])):(oe(),ot(b,{key:"details"}))]),_:1},8,["size"])]),_:1},8,["onResized"])):(oe(),ot(Ah,{key:"ui-detail"},{default:st(()=>[q(t)?(oe(),ot(v,{key:"summary"})):q(Ji)?(oe(),ot(y,{key:"coverage",src:q(s0)},null,8,["src"])):(oe(),ot(b,{key:"details"}))]),_:1}))]),_:1},8,["size"])]),_:1},8,["onResized"])]),Oe(T)],64)}}}),Qye=[{name:"index",path:"/",component:Jye,props:!0}],ebe={tooltip:ME};Db.options.instantMove=!0;Db.options.distance=10;function tbe(){return $T({history:sT(),routes:Qye})}const nbe=[tbe],cp=Xy(LC);nbe.forEach(e=>{cp.use(e())});Object.entries(ebe).forEach(([e,t])=>{cp.directive(e,t)});cp.mount("#app"); diff --git a/html/assets/index-C0SwoDYm.css b/html/assets/index-C0SwoDYm.css new file mode 100644 index 0000000..4b72c75 --- /dev/null +++ b/html/assets/index-C0SwoDYm.css @@ -0,0 +1 @@ +.scrolls[data-v-93900314]{place-items:center}.task-error[data-v-9dd6eaea]{--cm-ttc-c-thumb: #ccc}html.dark .task-error[data-v-9dd6eaea]{--cm-ttc-c-thumb: #444}.task-error[data-v-8f3dbcaa]{--cm-ttc-c-thumb: #ccc}html.dark .task-error[data-v-8f3dbcaa]{--cm-ttc-c-thumb: #444}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:6;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler,.CodeMirror-overlayscroll .CodeMirror-gutter-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}:root{--color-link-label: var(--color-text);--color-link: #ddd;--color-node-external: #c0ad79;--color-node-inline: #8bc4a0;--color-node-root: #6e9aa5;--color-node-label: var(--color-text);--color-node-stroke: var(--color-text)}html.dark{--color-text: #fff;--color-link: #333;--color-node-external: #857a40;--color-node-inline: #468b60;--color-node-root: #467d8b}.graph{height:calc(100% - 39px)!important}.graph .node{stroke-width:2px;stroke-opacity:.5}.graph .link{stroke-width:2px}.graph .node:hover:not(.focused){filter:none!important}.graph .node__label{transform:translateY(20px);font-weight:100;filter:brightness(.5)}html.dark .graph .node__label{filter:brightness(1.2)}#vitest-ui-coverage{width:100%;height:calc(100vh - 42px);border:none}.number[data-v-0178ddee]{font-weight:400;text-align:right}.unhandled-errors[data-v-0178ddee]{--cm-ttc-c-thumb: #ccc}html.dark .unhandled-errors[data-v-0178ddee]{--cm-ttc-c-thumb: #444}.details-panel{-webkit-user-select:none;user-select:none;width:100%}.vertical-line[data-v-96b36737]:first-of-type{border-left-width:2px}.vertical-line+.vertical-line[data-v-96b36737]{border-right-width:1px}.test-actions[data-v-96b36737]{display:none}.item-wrapper:hover .test-actions[data-v-96b36737]{display:flex}.checkbox:focus-within{outline:none;margin-bottom:0!important;border-bottom-width:1px}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.in-progress[data-v-38451300]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px;animation:in-progress-stripes-38451300 2s linear infinite}@keyframes in-progress-stripes-38451300{0%{background-position:40px 0}to{background-position:0 0}}.graph,.graph>svg{display:block}.graph{height:100%;touch-action:none;width:100%}.graph *{-webkit-touch-callout:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.link{fill:none;stroke-width:4px}.node{--color-stroke: var(--color-node-stroke, rgba(0, 0, 0, .5));cursor:pointer;stroke:none;stroke-width:2px;transition:filter .25s ease,stroke .25s ease,stroke-dasharray .25s ease}.node:hover:not(.focused){filter:brightness(80%);stroke:var(--color-stroke);stroke-dasharray:4px}.node.focused{stroke:var(--color-stroke)}.link__label,.node__label{pointer-events:none;text-anchor:middle}.grabbed{cursor:grabbing!important}.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}:root{--cm-scheme: light;--cm-foreground: #6e6e6e;--cm-background: #f4f4f4;--cm-comment: #a8a8a8;--cm-string: #555555;--cm-literal: #333333;--cm-keyword: #000000;--cm-function: #4f4f4f;--cm-deleted: #333333;--cm-class: #333333;--cm-builtin: #757575;--cm-property: #333333;--cm-namespace: #4f4f4f;--cm-punctuation: #ababab;--cm-decorator: var(--cm-class);--cm-operator: var(--cm-punctuation);--cm-number: var(--cm-literal);--cm-boolean: var(--cm-literal);--cm-variable: var(--cm-literal);--cm-constant: var(--cm-literal);--cm-symbol: var(--cm-literal);--cm-interpolation: var(--cm-literal);--cm-selector: var(--cm-keyword);--cm-keyword-control: var(--cm-keyword);--cm-regex: var(--cm-string);--cm-json-property: var(--cm-property);--cm-inline-background: var(--cm-background);--cm-comment-style: italic;--cm-url-decoration: underline;--cm-line-number: #a5a5a5;--cm-line-number-gutter: #333333;--cm-line-highlight-background: #eeeeee;--cm-selection-background: #aaaaaa;--cm-marker-color: var(--cm-foreground);--cm-marker-opacity: .4;--cm-marker-font-size: .8em;--cm-font-size: 1em;--cm-line-height: 1.5em;--cm-font-family: monospace;--cm-inline-font-size: var(--cm-font-size);--cm-block-font-size: var(--cm-font-size);--cm-tab-size: 2;--cm-block-padding-x: 1em;--cm-block-padding-y: 1em;--cm-block-margin-x: 0;--cm-block-margin-y: .5em;--cm-block-radius: .3em;--cm-inline-padding-x: .3em;--cm-inline-padding-y: .1em;--cm-inline-radius: .3em}.cm-s-vars.CodeMirror{background-color:var(--cm-background);color:var(--cm-foreground)}.cm-s-vars .CodeMirror-gutters{background:var(--cm-line-number-gutter);color:var(--cm-line-number);border:none}.cm-s-vars .CodeMirror-guttermarker,.cm-s-vars .CodeMirror-guttermarker-subtle,.cm-s-vars .CodeMirror-linenumber{color:var(--cm-line-number)}.cm-s-vars div.CodeMirror-selected,.cm-s-vars.CodeMirror-focused div.CodeMirror-selected{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::selection,.cm-s-vars .CodeMirror-line>span::selection,.cm-s-vars .CodeMirror-line>span>span::selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::-moz-selection,.cm-s-vars .CodeMirror-line>span::-moz-selection,.cm-s-vars .CodeMirror-line>span>span::-moz-selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-activeline-background{background:var(--cm-line-highlight-background)}.cm-s-vars .cm-keyword{color:var(--cm-keyword)}.cm-s-vars .cm-variable,.cm-s-vars .cm-variable-2,.cm-s-vars .cm-variable-3,.cm-s-vars .cm-type{color:var(--cm-variable)}.cm-s-vars .cm-builtin{color:var(--cm-builtin)}.cm-s-vars .cm-atom{color:var(--cm-literal)}.cm-s-vars .cm-number{color:var(--cm-number)}.cm-s-vars .cm-def{color:var(--cm-decorator)}.cm-s-vars .cm-string,.cm-s-vars .cm-string-2{color:var(--cm-string)}.cm-s-vars .cm-comment{color:var(--cm-comment)}.cm-s-vars .cm-tag{color:var(--cm-builtin)}.cm-s-vars .cm-meta{color:var(--cm-namespace)}.cm-s-vars .cm-attribute,.cm-s-vars .cm-property{color:var(--cm-property)}.cm-s-vars .cm-qualifier{color:var(--cm-keyword)}.cm-s-vars .cm-error{color:var(--prism-deleted)}.cm-s-vars .cm-operator,.cm-s-vars .cm-bracket{color:var(--cm-punctuation)}.cm-s-vars .CodeMirror-matchingbracket{text-decoration:underline}.cm-s-vars .CodeMirror-cursor{border-left:1px solid currentColor}html,body{height:100%;font-family:Readex Pro,sans-serif;scroll-behavior:smooth}:root{--color-text-light: #000;--color-text-dark: #ddd;--color-text: var(--color-text-light);--background-color: #e4e4e4}html.dark{--color-text: var(--color-text-dark);--background-color: #141414;color:var(--color-text);background-color:var(--background-color);color-scheme:dark}.CodeMirror{height:100%!important;width:100%!important;font-family:inherit}.cm-s-vars .cm-tag{color:var(--cm-keyword)}:root{--cm-foreground: #393a3480;--cm-background: transparent;--cm-comment: #a0ada0;--cm-string: #b56959;--cm-literal: #2f8a89;--cm-number: #296aa3;--cm-keyword: #1c6b48;--cm-function: #6c7834;--cm-boolean: #1c6b48;--cm-constant: #a65e2b;--cm-deleted: #a14f55;--cm-class: #2993a3;--cm-builtin: #ab5959;--cm-property: #b58451;--cm-namespace: #b05a78;--cm-punctuation: #8e8f8b;--cm-decorator: #bd8f8f;--cm-regex: #ab5e3f;--cm-json-property: #698c96;--cm-line-number-gutter: #f8f8f8;--cm-ttc-c-thumb: #eee;--cm-ttc-c-track: white}html.dark{--cm-scheme: dark;--cm-foreground: #d4cfbf80;--cm-background: transparent;--cm-comment: #758575;--cm-string: #d48372;--cm-literal: #429988;--cm-keyword: #4d9375;--cm-boolean: #1c6b48;--cm-number: #6394bf;--cm-variable: #c2b36e;--cm-function: #a1b567;--cm-deleted: #a14f55;--cm-class: #54b1bf;--cm-builtin: #e0a569;--cm-property: #dd8e6e;--cm-namespace: #db889a;--cm-punctuation: #858585;--cm-decorator: #bd8f8f;--cm-regex: #ab5e3f;--cm-json-property: #6b8b9e;--cm-line-number: #888888;--cm-line-number-gutter: #161616;--cm-line-highlight-background: #444444;--cm-selection-background: #44444450;--cm-ttc-c-thumb: #222;--cm-ttc-c-track: #111}.splitpanes__pane{background-color:unset!important}.splitpanes__splitter{position:relative;background-color:#7d7d7d1a;z-index:10}.splitpanes__splitter:before{content:"";position:absolute;left:0;top:0;transition:opacity .4s;background-color:#7d7d7d1a;opacity:0;z-index:1}.splitpanes__splitter:hover:before{opacity:1}.splitpanes--vertical>.splitpanes__splitter:before{left:0;right:-10px;height:100%}.splitpanes--horizontal>.splitpanes__splitter:before{top:0;bottom:-10px;width:100%}.splitpanes.loading .splitpanes__pane{transition:none!important;height:100%}.CodeMirror-scroll{scrollbar-width:none}.CodeMirror-scroll::-webkit-scrollbar,.codemirror-scrolls::-webkit-scrollbar{display:none}.codemirror-scrolls{overflow:auto!important;scrollbar-width:thin;scrollbar-color:var(--cm-ttc-c-thumb) var(--cm-ttc-c-track)}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{background-color:var(--cm-ttc-c-track)!important;border:none!important}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{background-color:var(--cm-ttc-c-thumb)!important;border:none!important}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:var(--cm-ttc-c-track)!important}.CodeMirror{overflow:unset!important}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar{display:none!important}.CodeMirror-scroll{margin-bottom:unset!important;margin-right:unset!important;padding-bottom:unset!important}.scrolls::-webkit-scrollbar{width:8px;height:8px}.scrolls{overflow:auto!important;scrollbar-width:thin;scrollbar-color:var(--cm-ttc-c-thumb) var(--cm-ttc-c-track)}.scrolls::-webkit-scrollbar-track{background:var(--cm-ttc-c-track)}.scrolls::-webkit-scrollbar-thumb{background-color:var(--cm-ttc-c-thumb);border:2px solid var(--cm-ttc-c-thumb)}.scrolls::-webkit-scrollbar-thumb,.scrolls-rounded::-webkit-scrollbar-track{border-radius:3px}.scrolls::-webkit-scrollbar-corner{background-color:var(--cm-ttc-c-track)}.v-popper__popper .v-popper__inner{font-size:12px;padding:4px 6px;border-radius:4px;background-color:var(--background-color);color:var(--color-text)}.v-popper__popper .v-popper__arrow-outer{border-color:var(--background-color)}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:#000c;color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.dark .dark\:i-carbon-moon{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M13.503 5.414a15.076 15.076 0 0 0 11.593 18.194a11.1 11.1 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1 1 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.07 13.07 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-checkmark,.i-carbon\:checkmark,[i-carbon-checkmark=""],[i-carbon\:checkmark=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-checkmark-outline-error,[i-carbon-checkmark-outline-error=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M14 24a10 10 0 1 1 10-10h2a12 12 0 1 0-12 12Z'/%3E%3Cpath fill='currentColor' d='M12 15.59L9.41 13L8 14.41l4 4l7-7L17.59 10zM30 24a6 6 0 1 0-6 6a6.007 6.007 0 0 0 6-6m-2 0a3.95 3.95 0 0 1-.567 2.019l-5.452-5.452A3.95 3.95 0 0 1 24 20a4.005 4.005 0 0 1 4 4m-8 0a3.95 3.95 0 0 1 .567-2.019l5.452 5.452A3.95 3.95 0 0 1 24 28a4.005 4.005 0 0 1-4-4'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-close,.i-carbon\:close,[i-carbon-close=""],[i-carbon\:close=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17.414 16L24 9.414L22.586 8L16 14.586L9.414 8L8 9.414L14.586 16L8 22.586L9.414 24L16 17.414L22.586 24L24 22.586z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-compare,.i-carbon\:compare,[i-carbon-compare=""],[i-carbon\:compare=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 6H18V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h10v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2M4 15h6.17l-2.58 2.59L9 19l5-5l-5-5l-1.41 1.41L10.17 13H4V4h12v20H4Zm12 13v-2a2 2 0 0 0 2-2V8h10v9h-6.17l2.58-2.59L23 13l-5 5l5 5l1.41-1.41L21.83 19H28v9Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-content-delivery-network{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='21' cy='21' r='2' fill='currentColor'/%3E%3Ccircle cx='7' cy='7' r='2' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M27 31a4 4 0 1 1 4-4a4.01 4.01 0 0 1-4 4m0-6a2 2 0 1 0 2 2a2.006 2.006 0 0 0-2-2'/%3E%3Cpath fill='currentColor' d='M30 16A14.04 14.04 0 0 0 16 2a13.04 13.04 0 0 0-6.8 1.8l1.1 1.7a24 24 0 0 1 2.4-1A25.1 25.1 0 0 0 10 15H4a11.15 11.15 0 0 1 1.4-4.7L3.9 9A13.84 13.84 0 0 0 2 16a14 14 0 0 0 14 14a13.4 13.4 0 0 0 5.2-1l-.6-1.9a11.44 11.44 0 0 1-5.2.9A21.07 21.07 0 0 1 12 17h17.9a3.4 3.4 0 0 0 .1-1M12.8 27.6a13 13 0 0 1-5.3-3.1A12.5 12.5 0 0 1 4 17h6a25 25 0 0 0 2.8 10.6M12 15a21.45 21.45 0 0 1 3.3-11h1.4A21.45 21.45 0 0 1 20 15Zm10 0a23.3 23.3 0 0 0-2.8-10.6A12.09 12.09 0 0 1 27.9 15Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-dashboard,.i-carbon\:dashboard{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M24 21h2v5h-2zm-4-5h2v10h-2zm-9 10a5.006 5.006 0 0 1-5-5h2a3 3 0 1 0 3-3v-2a5 5 0 0 1 0 10'/%3E%3Cpath fill='currentColor' d='M28 2H4a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h24a2.003 2.003 0 0 0 2-2V4a2 2 0 0 0-2-2m0 9H14V4h14ZM12 4v7H4V4ZM4 28V13h24l.002 15Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-document,[i-carbon-document=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7M18 4.4l5.6 5.6H18zM24 28H8V4h8v6c0 1.1.9 2 2 2h6z'/%3E%3Cpath fill='currentColor' d='M10 22h12v2H10zm0-6h12v2H10z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-launch{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 28H6a2.003 2.003 0 0 1-2-2V6a2.003 2.003 0 0 1 2-2h10v2H6v20h20V16h2v10a2.003 2.003 0 0 1-2 2'/%3E%3Cpath fill='currentColor' d='M20 2v2h6.586L18 12.586L19.414 14L28 5.414V12h2V2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-reset{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 28A12 12 0 1 0 6 16v6.2l-3.6-3.6L1 20l6 6l6-6l-1.4-1.4L8 22.2V16a10 10 0 1 1 10 10Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-timer,[i-carbon-timer=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 11h2v9h-2zm-2-9h6v2h-6z'/%3E%3Cpath fill='currentColor' d='m28 9l-1.42-1.41l-2.25 2.25a10.94 10.94 0 1 0 1.18 1.65ZM16 26a9 9 0 1 1 9-9a9 9 0 0 1-9 9'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-wifi-off{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='16' cy='25' r='2' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M30 3.414L28.586 2L2 28.586L3.414 30l10.682-10.682a5.94 5.94 0 0 1 6.01 1.32l1.414-1.414a7.97 7.97 0 0 0-5.125-2.204l3.388-3.388a12 12 0 0 1 4.564 2.765l1.413-1.414a14 14 0 0 0-4.426-2.903l2.997-2.997a18 18 0 0 1 4.254 3.075L30 10.743v-.002a20 20 0 0 0-4.19-3.138zm-15.32 9.664l2.042-2.042C16.48 11.023 16.243 11 16 11a13.95 13.95 0 0 0-9.771 3.993l1.414 1.413a11.97 11.97 0 0 1 7.037-3.328M16 7a18 18 0 0 1 4.232.525l1.643-1.642A19.95 19.95 0 0 0 2 10.74v.023l1.404 1.404A17.92 17.92 0 0 1 16 7'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:chart-relationship{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 6a3.996 3.996 0 0 0-3.858 3H17.93A7.996 7.996 0 1 0 9 17.93v4.212a4 4 0 1 0 2 0v-4.211a7.95 7.95 0 0 0 3.898-1.62l3.669 3.67A3.95 3.95 0 0 0 18 22a4 4 0 1 0 4-4a3.95 3.95 0 0 0-2.019.567l-3.67-3.67A7.95 7.95 0 0 0 17.932 11h4.211A3.993 3.993 0 1 0 26 6M12 26a2 2 0 1 1-2-2a2 2 0 0 1 2 2m-2-10a6 6 0 1 1 6-6a6.007 6.007 0 0 1-6 6m14 6a2 2 0 1 1-2-2a2 2 0 0 1 2 2m2-10a2 2 0 1 1 2-2a2 2 0 0 1-2 2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:checkbox{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M6 26V6h20v20Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:checkbox-checked-filled{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M14 21.5l-5-4.957L10.59 15L14 18.346L21.409 11L23 12.577Z'/%3E%3Cpath fill='none' d='m14 21.5l-5-4.957L10.59 15L14 18.346L21.409 11L23 12.577Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:chevron-down{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:chevron-right{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M22 16L12 26l-1.4-1.4l8.6-8.6l-8.6-8.6L12 6z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:circle-dash,[i-carbon\:circle-dash=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7.7 4.7a14.7 14.7 0 0 0-3 3.1L6.3 9a13.3 13.3 0 0 1 2.6-2.7zm-3.1 7.6l-1.9-.6A12.5 12.5 0 0 0 2 16h2a11.5 11.5 0 0 1 .6-3.7m-1.9 8.1a14.4 14.4 0 0 0 2 3.9l1.6-1.2a12.9 12.9 0 0 1-1.7-3.3zm5.1 6.9a14.4 14.4 0 0 0 3.9 2l.6-1.9A12.9 12.9 0 0 1 9 25.7zm3.9-24.6l.6 1.9A11.5 11.5 0 0 1 16 4V2a12.5 12.5 0 0 0-4.3.7m12.5 24.6a15.2 15.2 0 0 0 3.1-3.1L25.7 23a11.5 11.5 0 0 1-2.7 2.7zm3.2-7.6l1.9.6A15.5 15.5 0 0 0 30 16h-2a11.5 11.5 0 0 1-.6 3.7m1.8-8.1a14.4 14.4 0 0 0-2-3.9l-1.6 1.2a12.9 12.9 0 0 1 1.7 3.3zm-5.1-7a14.4 14.4 0 0 0-3.9-2l-.6 1.9a12.9 12.9 0 0 1 3.3 1.7zm-3.8 24.7l-.6-1.9a11.5 11.5 0 0 1-3.7.6v2a21.4 21.4 0 0 0 4.3-.7'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m31 16l-7 7l-1.41-1.41L28.17 16l-5.58-5.59L24 9zM1 16l7-7l1.41 1.41L3.83 16l5.58 5.59L8 23zm11.42 9.484L17.64 6l1.932.517L14.352 26z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:collapse-all{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M30 15h-2V7H13V5h15a2 2 0 0 1 2 2Z'/%3E%3Cpath fill='currentColor' d='M25 20h-2v-8H8v-2h15a2 2 0 0 1 2 2Z'/%3E%3Cpath fill='currentColor' d='M18 27H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2M4 17v8h14.001L18 17Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:document-blank,[i-carbon\:document-blank=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m25.7 9.3l-7-7A.9.9 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h16a2.006 2.006 0 0 0 2-2V10a.9.9 0 0 0-.3-.7M18 4.4l5.6 5.6H18ZM24 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:expand-all{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10h14a2.003 2.003 0 0 0 2-2V4a2.003 2.003 0 0 0-2-2H12a2.003 2.003 0 0 0-2 2v1H6V2H4v23a2.003 2.003 0 0 0 2 2h4v1a2.003 2.003 0 0 0 2 2h14a2.003 2.003 0 0 0 2-2v-4a2.003 2.003 0 0 0-2-2H12a2.003 2.003 0 0 0-2 2v1H6v-8h4v1a2.003 2.003 0 0 0 2 2h14a2.003 2.003 0 0 0 2-2v-4a2.003 2.003 0 0 0-2-2H12a2.003 2.003 0 0 0-2 2v1H6V7h4v1a2.003 2.003 0 0 0 2 2m0-6h14l.001 4H12Zm0 20h14l.001 4H12Zm0-10h14l.001 4H12Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:filter{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 28h-4a2 2 0 0 1-2-2v-7.59L4.59 11A2 2 0 0 1 4 9.59V6a2 2 0 0 1 2-2h20a2 2 0 0 1 2 2v3.59a2 2 0 0 1-.59 1.41L20 18.41V26a2 2 0 0 1-2 2M6 6v3.59l8 8V26h4v-8.41l8-8V6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:filter-remove{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M30 11.414L28.586 10L24 14.586L19.414 10L18 11.414L22.586 16L18 20.585L19.415 22L24 17.414L28.587 22L30 20.587L25.414 16z'/%3E%3Cpath fill='currentColor' d='M4 4a2 2 0 0 0-2 2v3.17a2 2 0 0 0 .586 1.415L10 18v8a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-2h-2v2h-4v-8.83l-.586-.585L4 9.171V6h20v2h2V6a2 2 0 0 0-2-2Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:fit-to-screen{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M22 16h2V8h-8v2h6zM8 24h8v-2h-6v-6H8z'/%3E%3Cpath fill='currentColor' d='M26 28H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h20a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2M6 6v20h20.001L26 6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:folder-details-reference{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 28h7v2h-7zm0-4h14v2H16zm0-4h14v2H16zM4 20v2h4.586L2 28.586L3.414 30L10 23.414V28h2v-8zM28 8H16l-3.414-3.414A2 2 0 0 0 11.172 4H4a2 2 0 0 0-2 2v12h2V6h7.172l3.414 3.414l.586.586H28v8h2v-8a2 2 0 0 0-2-2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:folder-off{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 8h-2.586L30 3.414L28.586 2L2 28.586L3.414 30l2-2H28a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2m0 18H7.414l16-16H28zM4 6h7.172l3.414 3.414l.586.586H18V8h-2l-3.414-3.414A2 2 0 0 0 11.172 4H4a2 2 0 0 0-2 2v18h2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:image{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 14a3 3 0 1 0-3-3a3 3 0 0 0 3 3m0-4a1 1 0 1 1-1 1a1 1 0 0 1 1-1'/%3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 22H6v-6l5-5l5.59 5.59a2 2 0 0 0 2.82 0L21 19l5 5Zm0-4.83l-3.59-3.59a2 2 0 0 0-2.82 0L18 19.17l-5.59-5.59a2 2 0 0 0-2.82 0L6 17.17V6h20Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:image-reference{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M4 20v2h4.586L2 28.586L3.414 30L10 23.414V28h2v-8zm15-6a3 3 0 1 0-3-3a3 3 0 0 0 3 3m0-4a1 1 0 1 1-1 1a1 1 0 0 1 1-1'/%3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v10h2V6h20v15.17l-3.59-3.59a2 2 0 0 0-2.82 0L18 19.17L11.83 13l-1.414 1.416L14 18l2.59 2.59a2 2 0 0 0 2.82 0L21 19l5 5v2H16v2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:information-square{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17 22v-8h-4v2h2v6h-3v2h8v-2zM16 8a1.5 1.5 0 1 0 1.5 1.5A1.5 1.5 0 0 0 16 8'/%3E%3Cpath fill='currentColor' d='M26 28H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h20a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2M6 6v20h20V6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:intrusion-prevention{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='22' cy='23.887' r='2' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M29.777 23.479A8.64 8.64 0 0 0 22 18a8.64 8.64 0 0 0-7.777 5.479L14 24l.223.522A8.64 8.64 0 0 0 22 30a8.64 8.64 0 0 0 7.777-5.478L30 24zM22 28a4 4 0 1 1 4-4a4.005 4.005 0 0 1-4 4m3-18H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h21a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2M4 4v4h21V4zm8 24H4v-4h8v-2H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h8z'/%3E%3Cpath fill='currentColor' d='M28 12H7a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5v-2H7v-4h21v2h2v-2a2 2 0 0 0-2-2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:mobile{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M22 4H10a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h12a2.003 2.003 0 0 0 2-2V6a2 2 0 0 0-2-2m0 2v2H10V6ZM10 28V10h12v18Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:mobile-add{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 24h-4v-4h-2v4h-4v2h4v4h2v-4h4z'/%3E%3Cpath fill='currentColor' d='M10 28V10h12v7h2V6a2 2 0 0 0-2-2H10a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h6v-2Zm0-22h12v2H10Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:play{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28M8 6.69v18.62L24.925 16Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:play-filled-alt{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:redo,[i-carbon\:redo=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:renew{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10H6.78A11 11 0 0 1 27 16h2A13 13 0 0 0 6 7.68V4H4v8h8zm8 12h5.22A11 11 0 0 1 5 16H3a13 13 0 0 0 23 8.32V28h2v-8h-8z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:report{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 18h8v2h-8zm0-5h12v2H10zm0 10h5v2h-5z'/%3E%3Cpath fill='currentColor' d='M25 5h-3V4a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v1H7a2 2 0 0 0-2 2v21a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2M12 4h8v4h-8Zm13 24H7V7h3v3h12V7h3Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:result-old{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 13h2v2h-2zm4 0h8v2h-8zm-4 5h2v2h-2zm0 5h2v2h-2z'/%3E%3Cpath fill='currentColor' d='M7 28V7h3v3h12V7h3v8h2V7a2 2 0 0 0-2-2h-3V4a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v1H7a2 2 0 0 0-2 2v21a2 2 0 0 0 2 2h9v-2Zm5-24h8v4h-8Z'/%3E%3Cpath fill='currentColor' d='M18 19v2.413A6.996 6.996 0 1 1 24 32v-2a5 5 0 1 0-4.576-7H22v2h-6v-6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:search{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:sun{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6M5.394 6.813L6.81 5.399l3.505 3.506L8.9 10.319zM2 15.005h5v2H2zm3.394 10.193L8.9 21.692l1.414 1.414l-3.505 3.506zM15 25.005h2v5h-2zm6.687-1.9l1.414-1.414l3.506 3.506l-1.414 1.414zm3.313-8.1h5v2h-5zm-3.313-6.101l3.506-3.506l1.414 1.414l-3.506 3.506zM15 2.005h2v5h-2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:tablet{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 24v2h-6v-2z'/%3E%3Cpath fill='currentColor' d='M25 30H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h18a2 2 0 0 1 2 2v24a2.003 2.003 0 0 1-2 2M7 4v24h18V4Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:terminal-3270{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 21h6v2h-6z'/%3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 2v4H6V6ZM6 26V12h20v14Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-logos\:typescript-icon{background:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='%233178C6' d='M20 0h216c11.046 0 20 8.954 20 20v216c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20V20C0 8.954 8.954 0 20 0'/%3E%3Cpath fill='%23FFF' d='M150.518 200.475v27.62q6.738 3.453 15.938 5.179T185.849 235q9.934 0 18.874-1.899t15.678-6.257q6.738-4.359 10.669-11.394q3.93-7.033 3.93-17.391q0-7.51-2.246-13.163a30.8 30.8 0 0 0-6.479-10.055q-4.232-4.402-10.149-7.898t-13.347-6.602q-5.442-2.245-9.761-4.359t-7.342-4.316q-3.024-2.2-4.665-4.661t-1.641-5.567q0-2.848 1.468-5.135q1.469-2.288 4.147-3.927t6.565-2.547q3.887-.906 8.638-.906q3.456 0 7.299.518q3.844.517 7.732 1.597a54 54 0 0 1 7.558 2.719a41.7 41.7 0 0 1 6.781 3.797v-25.807q-6.306-2.417-13.778-3.582T198.633 107q-9.847 0-18.658 2.115q-8.811 2.114-15.506 6.602q-6.694 4.49-10.582 11.437Q150 134.102 150 143.769q0 12.342 7.127 21.06t21.638 14.759a292 292 0 0 1 10.625 4.575q4.924 2.244 8.509 4.66t5.658 5.265t2.073 6.474a9.9 9.9 0 0 1-1.296 4.963q-1.295 2.287-3.93 3.97t-6.565 2.632t-9.2.95q-8.983 0-17.794-3.151t-16.327-9.451m-46.036-68.733H140V109H41v22.742h35.345V233h28.137z'/%3E%3C/svg%3E") no-repeat;background-size:100% 100%;background-color:transparent;width:1em;height:1em}.container{width:100%}.tab-button,[tab-button=""]{height:100%;padding-left:1rem;padding-right:1rem;font-weight:300;opacity:.5}.border-base,[border~=base]{border-color:#6b72801a}.bg-active{background-color:#6b728014}.bg-base,[bg-base=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark .bg-base,.dark [bg-base=""]{--un-bg-opacity:1;background-color:rgb(17 17 17 / var(--un-bg-opacity))}.bg-header,[bg-header=""]{background-color:#6b72800d}.bg-overlay,[bg-overlay=""],[bg~=overlay]{background-color:#eeeeee80}.dark .bg-overlay,.dark [bg-overlay=""],.dark [bg~=overlay]{background-color:#22222280}.dark .highlight{--un-bg-opacity:1;background-color:rgb(50 50 56 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(234 179 6 / var(--un-text-opacity))}.highlight{--un-bg-opacity:1;background-color:rgb(234 179 6 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(50 50 56 / var(--un-text-opacity))}.tab-button-active{background-color:#6b72801a;opacity:1}[hover~=bg-active]:hover{background-color:#6b728014}.tab-button:hover,[tab-button=""]:hover{opacity:.8}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only,[sr-only=""]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none,[pointer-events-none=""]{pointer-events:none}.absolute,[absolute=""]{position:absolute}.fixed,[fixed=""]{position:fixed}.relative,[relative=""]{position:relative}.sticky,[sticky=""]{position:sticky}.inset-0,[inset-0=""]{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.right-0,[right~="0"]{right:0}.right-5px,[right-5px=""]{right:5px}.top-0{top:0}.top-5px,[top-5px=""]{top:5px}[top~="-1"]{top:-.25rem}.z-10,[z-10=""]{z-index:10}.z-40{z-index:40}.z-5,[z-5=""]{z-index:5}.grid,[grid~="~"]{display:grid}.grid-col-span-2{grid-column:span 2/span 2}.grid-col-span-4,[grid-col-span-4=""],[grid-col-span-4~="~"]{grid-column:span 4/span 4}[grid-col-span-4~="placeholder:"]::placeholder{grid-column:span 4/span 4}.auto-cols-max,[grid~=auto-cols-max]{grid-auto-columns:max-content}.cols-\[1\.5em_1fr\],[grid~="cols-[1.5em_1fr]"]{grid-template-columns:1.5em 1fr}.cols-\[auto_min-content_auto\],[grid~="cols-[auto_min-content_auto]"]{grid-template-columns:auto min-content auto}.cols-\[min-content_1fr_min-content\],[grid~="cols-[min-content_1fr_min-content]"]{grid-template-columns:min-content 1fr min-content}.rows-\[auto_auto\],[grid~="rows-[auto_auto]"]{grid-template-rows:auto auto}.rows-\[min-content_auto\],[grid~="rows-[min-content_auto]"]{grid-template-rows:min-content auto}.rows-\[min-content_min-content\],[grid~="rows-[min-content_min-content]"]{grid-template-rows:min-content min-content}.rows-\[min-content\],[grid~="rows-[min-content]"]{grid-template-rows:min-content}.cols-1,[grid~=cols-1]{grid-template-columns:repeat(1,minmax(0,1fr))}.cols-2,.grid-cols-2,[grid~=cols-2]{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.rows-1,[grid~=rows-1]{grid-template-rows:repeat(1,minmax(0,1fr))}.m-0{margin:0}.m-2,[m-2=""]{margin:.5rem}.ma,[ma=""]{margin:auto}.mx-1,[mx-1=""]{margin-left:.25rem;margin-right:.25rem}.mx-2,[m~=x-2],[mx-2=""]{margin-left:.5rem;margin-right:.5rem}.my-0,[my-0=""]{margin-top:0;margin-bottom:0}.my-2,[my-2=""]{margin-top:.5rem;margin-bottom:.5rem}[m~=y-4]{margin-top:1rem;margin-bottom:1rem}.\!mb-none{margin-bottom:0!important}.mb-1,[mb-1=""]{margin-bottom:.25rem}.mb-1px{margin-bottom:1px}.mb-2,[mb-2=""]{margin-bottom:.5rem}.mr-2,[mr-2=""]{margin-right:.5rem}.ms,[ms=""]{margin-inline-start:1rem}.ms-2,[ms-2=""]{margin-inline-start:.5rem}.mt-2,[m~=t2],[mt-2=""]{margin-top:.5rem}.inline,[inline=""]{display:inline}.block,[block=""]{display:block}.hidden{display:none}.h-1\.4em,[h-1\.4em=""]{height:1.4em}.h-1\.5em{height:1.5em}.h-10,[h-10=""]{height:2.5rem}.h-1px,[h-1px=""]{height:1px}.h-28px,[h-28px=""]{height:28px}.h-3px,[h-3px=""]{height:3px}.h-41px,[h-41px=""]{height:41px}.h-6,[h-6=""]{height:1.5rem}.h-full,[h-full=""],[h~=full]{height:100%}.h-screen,[h-screen=""]{height:100vh}.h3{height:.75rem}.h4{height:1rem}.max-h-full,[max-h-full=""]{max-height:100%}.max-w-screen,[max-w-screen=""]{max-width:100vw}.max-w-xl,[max-w-xl=""]{max-width:36rem}.min-h-1em{min-height:1em}.min-h-75,[min-h-75=""]{min-height:18.75rem}.min-w-1em{min-width:1em}.min-w-2em,[min-w-2em=""]{min-width:2em}.w-1\.4em,[w-1\.4em=""]{width:1.4em}.w-1\.5em{width:1.5em}.w-2px,[w-2px=""]{width:2px}.w-350,[w-350=""]{width:87.5rem}.w-4,[w-4=""]{width:1rem}.w-6,[w-6=""]{width:1.5rem}.w-80,[w-80=""]{width:20rem}.w-full,[w-full=""]{width:100%}.w-screen,[w-screen=""]{width:100vw}.open\:max-h-52[open],[open\:max-h-52=""][open]{max-height:13rem}.flex,[flex=""],[flex~="~"]{display:flex}.inline-flex,[inline-flex=""]{display:inline-flex}.flex-1,[flex-1=""]{flex:1 1 0%}.flex-auto,[flex-auto=""]{flex:1 1 auto}.flex-shrink-0,[flex-shrink-0=""]{flex-shrink:0}.flex-grow-1,[flex-grow-1=""]{flex-grow:1}.flex-col,[flex-col=""],[flex~=col]{flex-direction:column}[flex~=wrap]{flex-wrap:wrap}.origin-center,[origin-center=""]{transform-origin:center}.translate-x-3,[translate-x-3=""]{--un-translate-x:.75rem;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-0,[rotate-0=""]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-90,[rotate-90=""]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:90deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin,[animate-spin=""]{animation:spin 1s linear infinite}.animate-reverse{animation-direction:reverse}.animate-count-1,[animate-count-1=""]{animation-iteration-count:1}.cursor-help{cursor:help}.cursor-pointer,[cursor-pointer=""],.hover\:cursor-pointer:hover{cursor:pointer}.select-none,[select-none=""]{-webkit-user-select:none;user-select:none}.resize{resize:both}.items-end,[items-end=""]{align-items:flex-end}.items-center,[flex~=items-center],[grid~=items-center],[items-center=""]{align-items:center}[items-center~="disabled:"]:disabled{align-items:center}.justify-end,[justify-end=""]{justify-content:flex-end}.justify-center,[justify-center=""]{justify-content:center}.justify-evenly,[justify-evenly=""]{justify-content:space-evenly}.justify-items-center,[justify-items-center=""]{justify-items:center}.gap-0,[gap-0=""]{gap:0}.gap-1,[flex~=gap-1],[gap-1=""]{gap:.25rem}.gap-2,[flex~=gap-2],[gap-2=""]{gap:.5rem}.gap-4,[flex~=gap-4],[gap-4=""]{gap:1rem}.gap-x-1,[grid~=gap-x-1]{column-gap:.25rem}.gap-x-2,[gap-x-2=""],[gap~=x-2],[grid~=gap-x-2]{column-gap:.5rem}.gap-y-1{row-gap:.25rem}[gap~=y-3]{row-gap:.75rem}.overflow-auto,[overflow-auto=""]{overflow:auto}.overflow-hidden,[overflow-hidden=""],[overflow~=hidden]{overflow:hidden}.truncate,[truncate=""]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre,[whitespace-pre=""]{white-space:pre}.ws-nowrap,[ws-nowrap=""]{white-space:nowrap}.b,.border,[border~="~"]{border-width:1px}.b-2,[b-2=""]{border-width:2px}.border-b,.border-b-1,[border~=b]{border-bottom-width:1px}.border-b-2,[border-b-2=""],[border~=b-2]{border-bottom-width:2px}.border-l,[border~=l]{border-left-width:1px}.border-l-2px{border-left-width:2px}.border-r,.border-r-1px,[border~=r]{border-right-width:1px}.border-t,[border~=t]{border-top-width:1px}.dark [border~="dark:gray-400"]{--un-border-opacity:1;border-color:rgb(156 163 175 / var(--un-border-opacity))}[border~="gray-400/50"]{border-color:#9ca3af80}[border~=gray-500]{--un-border-opacity:1;border-color:rgb(107 114 128 / var(--un-border-opacity))}[border~=red-500]{--un-border-opacity:1;border-color:rgb(239 68 68 / var(--un-border-opacity))}.border-rounded,.rounded,.rounded-1,[border-rounded=""],[border~=rounded],[rounded-1=""],[rounded=""]{border-radius:.25rem}.rounded-lg,[rounded-lg=""]{border-radius:.5rem}[border~=dotted]{border-style:dotted}[border~=solid]{border-style:solid}.\!bg-gray-4{--un-bg-opacity:1 !important;background-color:rgb(156 163 175 / var(--un-bg-opacity))!important}.bg-current,[bg-current=""]{background-color:currentColor}.bg-gray-500\:35{background-color:#6b728059}.bg-green5,[bg-green5=""]{--un-bg-opacity:1;background-color:rgb(34 197 94 / var(--un-bg-opacity))}.bg-red-500\/10,[bg~="red-500/10"],[bg~="red500/10"]{background-color:#ef44441a}.bg-red5,[bg-red5=""]{--un-bg-opacity:1;background-color:rgb(239 68 68 / var(--un-bg-opacity))}.bg-white,[bg-white=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.bg-yellow5,[bg-yellow5=""]{--un-bg-opacity:1;background-color:rgb(234 179 8 / var(--un-bg-opacity))}.dark .\!dark\:bg-gray-7{--un-bg-opacity:1 !important;background-color:rgb(55 65 81 / var(--un-bg-opacity))!important}.dark [bg~="dark:#111"]{--un-bg-opacity:1;background-color:rgb(17 17 17 / var(--un-bg-opacity))}[bg~=gray-200]{--un-bg-opacity:1;background-color:rgb(229 231 235 / var(--un-bg-opacity))}[bg~="green-500/10"]{background-color:#22c55e1a}[bg~=transparent]{background-color:transparent}.p-0,[p-0=""]{padding:0}.p-0\.5,[p-0\.5=""]{padding:.125rem}.p-1,[p-1=""]{padding:.25rem}.p-2,.p2,[p-2=""],[p~="2"],[p2=""]{padding:.5rem}.p-4,[p-4=""]{padding:1rem}.p-5,[p-5=""]{padding:1.25rem}.p6,[p6=""]{padding:1.5rem}[p~="3"]{padding:.75rem}.p-y-1,.py-1,[p~=y-1],[p~=y1],[py-1=""]{padding-top:.25rem;padding-bottom:.25rem}.px,[p~=x-4],[p~=x4]{padding-left:1rem;padding-right:1rem}.px-0{padding-left:0;padding-right:0}.px-3,[p~=x3],[px-3=""]{padding-left:.75rem;padding-right:.75rem}.py,[p~=y4]{padding-top:1rem;padding-bottom:1rem}.py-2,[p~=y2],[py-2=""]{padding-top:.5rem;padding-bottom:.5rem}[p~=x-2],[p~=x2]{padding-left:.5rem;padding-right:.5rem}[p~="y0.5"]{padding-top:.125rem;padding-bottom:.125rem}.pb-2,[pb-2=""]{padding-bottom:.5rem}.pe-2\.5,[pe-2\.5=""]{padding-inline-end:.625rem}.pl-1,[pl-1=""]{padding-left:.25rem}.pt{padding-top:1rem}.pt-4px{padding-top:4px}[p~=l3]{padding-left:.75rem}[p~=r2]{padding-right:.5rem}.text-center,[text-center=""],[text~=center]{text-align:center}.indent,[indent=""]{text-indent:1.5rem}.text-2xl,[text-2xl=""]{font-size:1.5rem;line-height:2rem}.text-4xl,[text-4xl=""]{font-size:2.25rem;line-height:2.5rem}.text-lg,[text-lg=""]{font-size:1.125rem;line-height:1.75rem}.text-sm,[text-sm=""],[text~=sm]{font-size:.875rem;line-height:1.25rem}.text-xs,[text-xs=""],[text~=xs]{font-size:.75rem;line-height:1rem}[text~="5xl"]{font-size:3rem;line-height:1}.dark .dark\:text-red-300{--un-text-opacity:1;color:rgb(252 165 165 / var(--un-text-opacity))}.text-\[\#add467\]{--un-text-opacity:1;color:rgb(173 212 103 / var(--un-text-opacity))}.text-gray-500,[text-gray-500=""]{--un-text-opacity:1;color:rgb(107 114 128 / var(--un-text-opacity))}.text-green-500,.text-green5,[text-green-500=""],[text-green5=""],[text~=green-500]{--un-text-opacity:1;color:rgb(34 197 94 / var(--un-text-opacity))}.text-purple5\:50{color:#a855f780}.color-red5,.text-red-500,.text-red5,[text-red-500=""],[text-red5=""],[text~=red-500],[text~=red500]{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.c-red-600,.text-red-600{--un-text-opacity:1;color:rgb(220 38 38 / var(--un-text-opacity))}.text-yellow-500,.text-yellow5,[text-yellow-500=""],[text-yellow5=""]{--un-text-opacity:1;color:rgb(234 179 8 / var(--un-text-opacity))}[text~="red500/70"]{color:#ef4444b3}.dark .dark\:c-red-400{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity))}.dark .dark\:color-\#f43f5e{--un-text-opacity:1;color:rgb(244 63 94 / var(--un-text-opacity))}.font-bold,[font-bold=""]{font-weight:700}.font-light,[font-light=""],[font~=light]{font-weight:300}.font-thin,[font-thin=""]{font-weight:100}.font-mono,[font-mono=""]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.capitalize,[capitalize=""]{text-transform:capitalize}.tab,[tab=""]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.\!op-100{opacity:1!important}.dark .dark\:op85{opacity:.85}.dark [dark~=op75],.op75{opacity:.75}.op-50,.op50,.opacity-50,[op-50=""],[op~="50"],[op50=""]{opacity:.5}.op100,[op~="100"],[op100=""]{opacity:1}.op20,[op20=""]{opacity:.2}.op30,[op30=""]{opacity:.3}.op65,[op65=""]{opacity:.65}.op70,[opacity~="70"]{opacity:.7}.op80,[op80=""]{opacity:.8}.opacity-0{opacity:0}[opacity~="10"]{opacity:.1}[hover\:op100~="default:"]:hover:default{opacity:1}.hover\:op100:hover,[hover\:op100~="~"]:hover,[hover~=op100]:hover,[op~="hover:100"]:hover{opacity:1}[hover\:op100~="disabled:"]:hover:disabled{opacity:1}.outline{outline-style:solid}[outline~=none]{outline:2px solid transparent;outline-offset:2px}.backdrop-blur-sm,[backdrop-blur-sm=""]{--un-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.backdrop-saturate-0,[backdrop-saturate-0=""]{--un-backdrop-saturate:saturate(0);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.filter,[filter=""]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)} diff --git a/html/bg.png b/html/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..718b0677a886476fd57d9e23cc299dabbc1389f9 GIT binary patch literal 190939 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

r5mj5{Vqw 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

876&HI81 z-g?42bkn_L3LXM%81PT~cqM&yXF(mC*hNoVN_=rwrd)KeNN`qZIRa*#+`rs>vs>44 zQxzI5olmdU+0U>0I5pPB=t5t>TA?bN_jlU3Z?FzAU%i=6aFn!dS%k4&nbrESkdx>O zcj|e%M0@?PN8%Otk*OGPseSwmfOO06t?OQ^9B_|b=YaLFwN}(IvxHS?4fON>+JEM) z_t|Yn%!>K*%7P&Wf%y|;lEw)l3>Fywc>J7v*B*yz6$8!Ml%L zS69_K7lYRFANO0V(wGV{G^Oa-@9V9oNu6*Ns_3asr1mowmhkINnY3DT<<>oiu?=)# zlWm^gCHO;V7;AZa8O27F!yf;$j)qZGc6%`iBEbirRrJsXWH={qrY9oaovB1e07)6UnqJPpDd&=O};itT4mXxON0oCoeZF0f$MVv zDLUMa3q4%K^;4pbxh&iP_doWm+7-s(@2kfXl5M&l7Vg|B3q#nP+=!<^bMAv!^SXGHaOw2sT@*ORor zZ-Bw`{HMZx(!>*@IXCPj?{Ix*O&oU3I{hl?T6znvkwq|_;N;NURzv>uraK0l|~~ zNakbz9Z#^ltT&cs<0XRbe+k|{rbgJCZ-HS9j*$Kg=68tu3gGeHFux+-6^IS>kADu6 zt0WtL>xX-TY}2@p9E_f(>6c{oz&Py1BvDMar1C|3|z8qEFq?$ddEX8OEf%Y#aaG?N2b*n`%#DZ@9Y7qZ?s2wil&Rs<4(oB z0=egAYx#&N*Jc4ujdnUW!z&tegt1xt&XkVB$?`PR$93pb_FhK-ZNkIW3U?nEGt=_k z?PIJWwl8KDaw#2LqcIZ#EKM9SN~kX6C`66JuUa^R+JguKRP&irQKO(+fa(N?|L%kn zi@DktUv~YDi{r2OCW+VJFbsx3y zYYuU~s7UK740oLz8+3&0FrM%W_q*T0+^;19U!ghkCXv3zfH!%B1+zx_ zn+%KO#}js4!wY@9|MEYo__7w*4>Kl2W9Rjpoy-f*vMN2zn&m*#-rVoJC;yHD&H3i` zfD0f=z$$9_8hx7eE{OQOescej+DBap*yiI-KB+vfa|?OdAG{BLaT8xOxPL=kf1aI; z1fKJ;kucAbPUfb9(F~MzI>aAg=&)b(s?9fnT?%(l7V$jPr31jRsy81F-OB%avEXIH zOKEd3BW#g5pF8wCPom17pxX9{`R3$G&D$tQt>C)*M1Rgf=aCWF&pk!J~fM`u*=2&NCl>V29Jm_hgdHG}C{iL8!*)apZ;htKHg`5<1R^cAGsM#3%s=IEdCxlN?Z zD9hHbAgw(zFPigt0RliIm7tbs*CnXtH&^9iD_ZZ1r}_lojgNr><)A*@hC3yUO}D&P z26d9|@f+>`U{Jbki|al0k|ktdW{TkNLy))+Dz@}e8Bu0v5FY>69&4O;lQivF_z19K zli86^;r}2CAf>~u_NQ_OQceX`wFn4=H^Z!wY4^w75CST!w&-MbDcYWY%7geLaz5j( z3Xl*%5+uF;NLp+JN9%Jk7A^?bf4wE}kG3h~S%KQY)~;C8?1SHGFCk4IqhA&}t!OC8 zHYLNKL72B;L*~t$PZs_uQZ}-+8T@1LnOnXkBIhU4ujl1LunLg`jP6Y!RtE~rgZgyF zL>7nhBU0b(rYnH9gavi@!)uo6f`ElhRiG_ee#G-8%_ztV_|UoFAKu^6b7rS0!~qx| zE00XQ;U^3JSj8V8Aybno$l}|7pMxYQK*IIhTpHbIsaX|k%Y!KJ`7Vc-ue5` zSGue#_|wyJ5t0&*f*Dlz{0>Gft$PUBE>wvC2=3CGx7&mJ>}ChoKjm6RU;d^YR;B0t zE`k1Rq&zLdi>Ginu;JZ8{A(c#bEN4g)?A5vJ|c_FC$N_ zbI~Z9vuQlewfQOUCw5j_icHNf^vo<&+(Ce$g(!b>yQ(O=+XkqT9MTH=hj7uA3+ka+ zwCu0^p~|9I00HLs@Uksu;%yq3I|{{Ak}PD3Bf6O0<|7kd1OumPzex!qH}A`gE7cw6 zDu^@h4y4xPmFG>0u`vndUu~w3pcaVQeY|kB&Gz3DI=RcA92*h1kZ8IF&kY~aWF+~p z=RvB1m}`vZ!6ODVh++R4{ue=iH0RTDY&O4C{8$Xgpk*<_h8k=S*n&8)xF{N~mb#6+ zZQ{i^*YQ)=1ABQlYdMSAn-WXT`7)-9HNmBE=klUpce zPKj~quluptcmruX8YXY^nMt*rEGB!)H17NzkbL{>7d-Z-grH`H;qoL0S7$Qxb9D+(HCx zrE{v$JvW_H2b#vTHDZr9Wx=1v%v%5L_wQ6I1#dO(ko`CDDbF?8B{}2qH9G3JYjtvI zqeu`29}zEhB7lzJNApaK?9c47uX3GQLR$N8hz(|aD0#Dbu(H8HyBDN;65h!B^VP81 z8m6pGfyY(lrcXD5zihPqx!B9dL%FL>{KR2pq@}7`$Z?fWiw=>O|B9RWq73vF?&y9;mjPNTJs}jp&$8(^t*x`o;-uk>t~kegc@umG=~^B z)2*y8-u<3oPkFW6IX0LZst>EG**-CRIaplgVk;ZJrqnQZaW`BJ`;wvZvm`C4BG;+CDz zcaJysvNBxOm#1@w4O^f}hwXEp@(-=gX7W?Ml7b7|u!kzf6XhM_RIbwpJ}G2sE8TAM z9({Sa{9#`6qw}G-1D6#;<$Mj7qdV<~=?a65b#Jx-(SbQNOIUXZUJ?6#z2)&*!dD`b z8!)-e@}3>18XwsZd}PQ2*FL`bjBi;qHnM=pl(?h%CeEA>c-8`L%!r$|T;gD%As3|YZ z2AlOsj+c?rvu|FnlEGtU=#8Pc%x^Fx}PlU8@YSi z>m4lC0ay>^>{XRY5#{OcqPFt#-6C^ z&F<{=!NZnCS&0umBADQbBc0Lk5RWIieoKZ*;}t#!T1DpC&6xg&O?+x>)-$}FwrPRU zEe~Z}l!hJS2pZwsS3stz=>gX+BeCV9)} z>q&^CBVL+lbm!Bi3PsDg#K?CT@Nq+c6U_dk>Z*B5D9thI9;4`|ED&XXY8K~?4uirk zla8|PA8{MQ%TO!?FAE$t}1} zS4`iS9;Fe}S1&@2Ldff`g7G6T+|KSkB5YP|p$R)@FfF|R?BeIkLjC27x}>H1*hOsx zIg3@CcwBYuChR?u0ii0#9FRWQMFx7Qr@}X2LlOE02KR1beA>6++xYZOo3eG)Qg!~6u0C2tXJ3Ysg`Tp&4&?Pg+ac|F77N~jLx{i(qW(xS)}(baT!)Goe7Cf*4B|%E zIMP=Px^rk1tvwf;E|}<}0d_?eluo${)AEQKBa+{H_g2r!zo;t7{-QA4+4$z!Afx?Z zRx&+$+Jt?QCly};c9)|E{m<};5+BB=9sz$WRU^X-e@!^We|@7gEOm|W?w?v(S%H=tF#$FJl} zZLDW_Kz$MX=7fgcc2%6Y$#e702TW@wId6~km@9^Umk-12K+Y&y>Otm z4XaNU4yYWS1%x&iL2k!d`EsI42X%p#(JpKk6@e3l6p(jBhw&o<`Un1aTv@m?1-d`N zx&_)ei4L>2p#ZNqHdSwr3+~m48}xKdDT;RN>=lvqE_IhoQr>ro&=J63B@6yOC=-?b z)g5|g4zS*_NWFiTpdrN>XRy(n-&^u2T7>g0lkd8kB>4wJgyb>cwtf@m&o$*LiQ4}> zaW0Junn~IH1ma6AlHN2Npjiw}FNg^YYh@ZLRy`O}hcRA$qiecDhE|a%8Shy(9=1sK zo}u-{wid*1^QHIJ+n-EL9Qb`N_`3{{Tr`aRvqnaLC{~SG+8G8$)HwZ>ylo1_WrRfK zRO{b?Ni?nr{N^;xkgOT59+|NOV$nExE6h2}93Qn7Py=x(RfSbFgaK?s_^ET-X%mmC z=s=|qdIuQr4>Gj;vfd)<=gt)!Iu2ZxV9OW52AawMj05$97cMFL;WCvWi_RB*gX%s< zgzPUWL*jSQjH=!jAAbh%49a%|%!|l8dn!!Q)1lv@c+~7c(axt+Kjg` zV$#O_*zk&GY5Aw%5FwElx@RKeL?@u-whv_gt+Vu=P4}$P7|H@P=QymQ*|v#N|AH?% zv)@Fii^?@vJO_>?1maZv0wF@W!2f_K8Z%v!GyjO6x>}G96$d)ZW&OzlMLcvO6@#0x z^##X&N_No>=M!lKMbrPM=uDwBl5bFbzmiIJ)-&#gw?qIaWT;5N!Ry|7FImQ$h8&FC z#$`*o9y+X72$YN@-__>JOMqgasYqp)1B;zw56O3*n{Tz%iDLS~<0zya>Vm17Ho4Xh z{AEwt&Ht(EB10(62|1{4U-!#nms7DmYvv;#hVN6eDp)>mYHq<|4|b891n>&i5ono% zuuTwbeI<NBx%hbW!bcUGc*@8y(Bc7$AHcCiXFiWE#qR`v**#r}bsy1f={1#bRumqo`<3?KKQ`0WehnEzeA|492YcH_ zD|}dsp2}Ti0F^o-&c8J}bq=<&sHp;$H3-Wo{Gv7FKckFZ^c(Y!du-a_EBmoU+3Ghn z73aQ0J|0+cslUs=yGkYFSQm;L7e3Eg{ahw5R`Y>s-Gk5=)7A!R|D@)qGpKCI>WuEV zlV{}eWLXR**Y-fxs^$F?YiY8w6Pmd8!Bo>YSVHjGGu9X0Htnla;Vv=57JWCj6NwVr z2Ls;;`DW4dy$}P7Cpr2ZEZD=gVpzz(5BcS^J4~>Y`|~rA$NlA}0#^8L^dYgd^(S%h zy-H{E@RLgTH;8unLZY2XU`xJ|zExYwV=6tzbeZsqFphYwb> zKnT~pesJ)Ret%}|$B*%Zt9}Tl7sG`>&JH zk4^bu!aL5$*z+r{*3Vfya>y@miSITR!2{D;`AkMGKaC&polWfA$uP!%cdEMLQF?Cq zJQypUpqmZif1d4y0r$k2EfQ@1>3*f>$UcQFq9&*hb#f@IJn6p5Ip2}XpPf(Q*s@f3 zc#;(s72Zc(P9~x8%zMk?U7zT&P+o#wdKUp%r zeNp8B!XoHT%!SqOVG$dKTj@_jmD^IS&=F5u1lh)3pIzE%W-?&FFN5mXS~`r=zKiU8ejvtbGc^b0Rh5K{L z9hU2N^dCbL7CWwXSV{8rjxX&BP_4OGatb-_z4Os#*@_1g}#zT|{O$%b!kk4J7g;(h!krmF*!a@%27vDn{6wC#X}-TK#LuM#Ae2G(3~z&(ol}r>!%6l$RUr z%6@50?r08mSIB*nqzWC$GnDkUVV{Cb-s)08Lx*{Rh=A`~u$}SU(Q|WnP8miZq+9`6 zlNtChR-)qkS>cu7pzM5Xe-*7JDqXOnnx@HoUKQybZl2zFU^zm-e7hsgZ{3jyQa+e6 zYWc%73H1!SlhHYTE_O-vtu6mH>*3N6RxA+dznG*Mim+BM`E5w_x)6DA4nXwRO)NWpm_>`Nwp#IO;Tcc0m(dDCZ0%}; zzO`dAm^)`fiC&J*dlvQQ-r+M;}>=pB8$+}wcjMOo}p6YU8 z^E=1gLu!QfgG`?_Y0W?aA+;@Miw&sk?UIMG(rfFDAGtuJ8NnHkJ5~9;E@KqcMlrXL zcR2$q2Zjk3JF-|vmqi7Y4KPhFBg4Me@iSpg>VDi#)TfoZ4VqVqZ7zNAMD~Dg$zmmx z%l)d0WIw)eslV2$*R75nEkM%CaRIj~Mbo0&bu=YX*&M|DJ)S-EpLcoR=X6RY&6I3a zsGR0%b`x0oz=wk64s@QVP#gn3hv<5N^ku|WH9#k@nvK6?wYFgzJs5C}2Vw1s#<#?w zk$Bh<>)0|agvS0qW}R!_L=%{vkuvRnXylrR;$*rJ8yiDt>V^qVlK`omx$k*X#!E^Ze|PgU@u67ULfN8(dsj)aaE` z=({;EwbBe}PyN+#)fdt`yQNjM+viHkKj&N3O`?nl$r8u1R>n++t0b{`01 z+7@Pve^C@NzsZCexyg(~%dB}GH9>B&nlA2Q?Bb8*)q-&Kf~X?&kFbA_0hsSCq-_@t z?nHd(kqf?E!hI7yaEH${EWSN?b5`inE%ydAXG#RGa8rc@XtQ3~OY&e+xg9)y8Uvj* zRD3?iENpFF z(v@L5Ch2z`)}e0%_2dTK0i8r!b`tJIoehz=pRmE`&a@FfFTD%~iVw%k4#VMgMAfZN z9kyC{htXdprE@oC3NeYi`}R{0`p(73ATimQB$xO*qQYgiiiCyO)WEYcYST0X;>IKN ztu%_UBbJQlj~PzUsxaK~$@%1bG9J=$>OWuNP@5uu0YBRQ;9tbl$uTK|=G}T65;QhYjs?R!&QNF1d zJ3&eU9t>X@YkcsvT2a-b%+tz!DG)9 z`+F%LL-#ie3N-_3B3wRi(HKs5gc2F<&@vXZxaXM>^|UGT4XK3^2pL)_|K`Rn6?ax_ z0|%dyLyKENE5>$-HnzAwU+VR5RuP~hx{xf=_rxnYh2HbhfVnCY&ZjSRU+a8jruMUO+X{tZ*HR&Thdid_J)biu}=}c4td9rOnNe_$f?U>Q0f)Th5+lO%- zu<&0dw%xH8!H?B*(YS8k>TF|YF{*tfm#UUYdk*Y!5`QAW1*l(*! zjYL3%YCnhb*?1fV<6*0jpq6*yV4=9eZQ(ptAK;b{!{AK9cmEl(Af#q1fDf;k{nc-g zMYb}qdKX>q6rgr$PZL$Lv-7um zj45Cj;lHodLqK3W@hl$n?6lIgQ%U7Y3NM-l!5)X9PYbYuVg;V48 zZAmt&B^`L!9mur&2v$*qKlp#2dW3}73*iI2T>6QrtnmG72aG@#hz#K!lG~Sl`9;2K zf>jJn3t5o#PFA2mna*d%gBoGEaKdnOy)q2fvh@dM*G|IM8PD3)+vD2Hxbc144yaJL zs<>~F`2rjXcx|4eM+c08h>Os7*zw^ED`O`TujmMB!wteoKargJ4fV`;nlCXvbGPHN8N-JL#(hrC2@dzIKHpujR7%rxMmj>(juJm|nF##K5O( zEr?(Uj?(Lt-Wo@lDRpZyi*W7<8d6BYJ6R?|L7ECd2-Z^W?`1k@bc6-f z-2#8tGzFb3k_hI>GZ#q~`wM4D7NS4g4Go%w7Ve)MM98eSo(J77DZL3F)yW;ayh-)P zLdEoRGE>uK*XvYUtk0zksJ@(>slAMzRUVBQjDs3?b_9eIspOj_iDh?QkJ)ZleV<`C z;njY!)6eIiQ?mjVqHn=lq)!*7U}k6nDum)lac`T%a2orQf%{GOassj#f6l=ULNlfI z>9O`~D+H-+1cLx{MNF4PNKw3ERe-Gh#1culG^OiO51KHr{qnQOn^Q7sAJ{x(y3T(Z z1CCGGT~C6oOj*;QRXFIh^HFuykZe_Dz`~v6$@lwB{nCV}4nW|ngG112S^(PltX~2h<{kF&XPM^;FJVB>fpJG=9xeJ>Ty_tLF!pxymVE<_Z~r zwFY1y-KFaSg8X=Q=6)rAa>q$D-86p_ANQhq`^h`ezC)`CI&{SO5{0ST z{0DXiRea)!n>Hp7CXUi1t=4{QlGRjz6q-+7Ij`Ug_h{kOXjHk};C0roRB(Zdj?i7E z0KSe;{B7I`2+ZPwlcMGSabCnG4A^2p_AF1yw=7W*ODppc>TjxpY8vHyK0tb$9RIDM?@3b3Hw-;v_^Ye`oJXsMgmlr;=iV zAa{m_Tc&7#zm@`1sJ4r-Q}G7kBCl!7J{<#YA|>cKXRB+Ue0G=JBX7C-^e8+6VhQWpi?e#jP*vJ~L5_3Ug-3~)L_zgimx04z977XFfBjLa zZjf3oBaus=|4;qc8kMw*bcLv8!FdYjqzM5rE`0zHsl04A5m|Qior-`Gpg9-2Zx&W- z9F8|!O{)Xo$69{>!k?vdIrE>5ccnI-GId3gjzthn4wfG_OFP_nB@Vfhqxnimsm)xR{R+mfM{(t{IQ%kxNlq4 zFn2(&aXKMdE9)I9Se#h7#cXSj_aQn@*YgCa?o+=2Kk+;VG6&^BTQpe%fyt?Y`bv9e za%<|f5gIF!+T~yDw|DlGgxK!6sO(H7E+P6HKt~Ksq^z~N8p$w>gp-bh7yP0e9R_k@ zRaOo1zHmo6IeRX2FJ%3_^MqC)%v5GxKw@3x(xRK1++K!PQZ7>Nt@9ccM%-xl zb4XHXBC9}`UnX$GiB&|14zO_Ysr|R-VzH3jjyv-yx(MEd!(e?^z zfeIU6R|oTL73y?;QKT7N50&QA587TLWX+_~a4Hclba_Uq4i=H*vLK2HrZEObZO!r}uPhJA@+hjrMD zX}f+3;P;;5-x5h)bLv7vbH2D=ye>^_D8$&B!u|dchBkzh5#^$4$)EDjSn+8{4(w5@ z0cLG5D;X6tLMZmF~J4i$B9MS2m)ZH=liKY3&+ddBD2kxc@9F`<(D&tBgj*;TNv;$Wv(6>vtgm#1?fa|3os!qzkH&@ zZ8FXjujsGn2?DNx``VI+i?c@SLsnQ;kt+S+; z3_znubII;lrY^1;hPQxGEyVz%YCP14HSq{FsvE`?-rpa$XH7$z_QU(A}~9%CUlvb(4>C{}+1 zkSej^M3naHA}i4w5{RcOr39vES{$j@QwzMB5<*FOTwSzA!uV*~a#6LhPM~V527oqn zM1l(QTM)SSN0g_@3-uBcTC+QL)19E2>HwM=i$b=A*6dwZ7l3NyXYd`cv8Tj-?j8Wy zPb78dtOOFc^;ffFjPc<%?NwiY{l-dg7?$@v>mJx~sDgujEzyV%80@h(D8OLLS1w^| zhQLWek)R-MU$~A<>hZmS;}U9Xb^tol^#LgfUfomR#Q#41%EcCq_NP9Unja((FZYam z^|u46kj+2OX{tG4;q!K`M>Lw_Zu%Gd%4Ag~KR}o6v1nXqVSW-FmSDUbiAP zrOB2-!&snBeu3nM|H@(o6z8}$%kmH-rq(@uB%&hk;VY%YvH544OFtg!0KJp(xp#HB z(W20~M7ul?=`AJhQ}mesKd+SikX)5b!T z{87l&mHJ7h`*=;usm>bFL7tZ3-^K%7T`n*i*Rg#b*CAa*UJc1{6wb~QCO<0uN^Jum zxJb&fD zQ#O+JYQM(|PO4UL)@&@DW7?NTmBP2_pP1!UJllBr-oX2*L)D8g$&`wTuaddBiK}Ak zxIT~F&vLG~_8(5r<;;8jX0){=|6qTwfV0%6^I$zP-0VU9;WApH!HutlB13`dn=bu@ z6Irygf21jT0SpVGESEy>-00yag$v>N`R7!%g70mzexAZww_{HG9(M5-%~n1)t$i~w zz^dSwt(;9QJHfPWey()8LN2L9XXESXgYYo2Ie!PsyxD#M;;o}1Gi>jgoc#EuyebXk z4+P~4mA*V!e(NtcMRzx4_a+45{l=1=47&(zNv3T(ys|9O5|uEy1;}&Q&4(PW?f8WK zo$PyK`&^9pnqa7dd&4`1A=YwIV1ZPr^hr%!7+x;qhiN#W1+l_4R;YZ*!9}aa^7mvC zWROR7^LZMu-iM1;$3RN$+5mYOkzQvwEQ(p@08 zhgdQ@UhIUNQ3$2&lVArsf*<)x8d#xVPiWpa_lw_zyz55+dCGZqw;$V(vZKIh0)8|@ zo@F6otO_g%ea7GySbnobQ>Xi6ROpbK@pV@EuGhHT&urI~$dIucm<^#r6adJq-M>Jm zlyNFbWh0TX(Qe1m%kLTnq|Cu2V=*%T@-^jxa1zJ^?NcqeJ`?ufXMh_kJJa69e==QR z%!-s9GWe2ZCoB&SG=PyEGy~w|ygwHikvyY_j*Jk&%zyf#?tw2Hj3A|x3psG@kb7zJ zYXC_RpG_#8$;2?K18h}e7{Z?)Z1PiwWDdEu^1gK4augmfx&B#o(@++~yI$j9(1#27 zoMfu}3MKb&3wHoi`bsG)LQPi;s!|ttQTOh;lHs&Dk-eL!YD|Ck2Y%3#yyt1-BANOw zVvv_De=HpT3g%VF&Z|oXD*ej!>S|3B82nZDhu1+ahzRL^49diScqdSL{#gpbE{Y|x zkqEM|-NJ%=-90F05iAZGkCenCy>$5gT?4b$r}qxjMvf`*Z;O9y=?RUgvp$8cWD8OM z#{CKd;Fy93nJIE*H8m)V3o!S8=|@c*+goSwwOsISmzzcT{f{8NwEZ8IO2}gr%#w2O z{{XN1pB`C}zYp;t>zQi@P&lbq2hacO8v=Shf~w=w9Ne@ervLdfr8mHN#({h*+vLB< zRxq6OQ^RzHmzyR~qV?6XY^hAs&t(h2iMd|XSghq0lElX-9~ObOpG-vJrX5C-YKKHmg+;lEZ5uQKEi7x)%itAmKJUJ^+mvS? z?*r;tuXklsOha-yn_)zg3Oc8wwRY4Vr3KDnWJi`8ucwtV@?($ zlXw0f?#?@&t1o{1Z*Ego=P z$cy=G33jXz-(c zImJT}@1lQ3K5Mf&?>&0)(fZ{y zx$Sr6Wl5q@549@6J|kGpl+rv}x#N2yk4c$t%e3=@Pw4)!iznX`5yrOEaXoUu?zxJc zhM=IH2NWbB9p$lQo0kic?!!b)Z&tXS_QY81EHbGjo00k}&HQNd(~APj#lcdqPkKEo z-8porMrrK}5nt39cT)ZA%|8*2MCvS%qi5Jsxh|Bfjo4{)uDvuD3*WOE>mPk=%#y#` zxndT6$_&BrY;-dX+RmnMUC>e^VRLvfrmcoWCgiZ5)oMg#+SuOqk{~m~$~9^SAnZOLX3Z;(Bnu!k+cnd0H@5P9oRCXo znktNUhi5BZ=F+FshM@+P6_(GSyt6a$ z$OQ6V=48J1f!W(WNye(e&7~d2V43{h5-lr5ye?JGJ`$`&te+d7c4$M*#}g(6orTF+ z1Vkwdco?c=!f(!|f3_yMHi{#q@OnE5^CRZseizt+rTMyUE99NvejUN?N*!_+4-~B!o6Xd92EvJx?7Ca& zlTm|m=L?cd*nFuaS&gLold$_dITyBX^PTS7zqquXdpgkqKRcD{$;&g@+kYSb%KT?- z38U)9FIew`&9-Q;^BZ@yk+?hXUW?xQB`B4et(m(s30J8<5_hhD{87#hfd8z_9npgT zyqDN-H0^;-`&>CZWKbE}V!w7{E-y5d0L_?LMNgJ92U@wA&Iuq8TT3c{WJ;-AdKSQ+ zb^e~_P`J`7>Yqq5jiF~rn4Ll5WcG9Xyr#-q=#~{EUCo4BTW65;kQzWJV`Z2uL-q-? zzxVuEue%Sma?!Kis&{P$yzLIOuOmv&!2n&4M5f%q&oK_>oaWj|Z_fA5gtiIFopyD! zFJdqX2`1RiNQ@~IWh7i!9|^9#R&}v-bz;vzK$scuIgaG{&8$%>Sp6c9Og!fBlsFc} zA2Kvi&g`WWU(fwW1J>LJSF=`e7wB7U`eO-?0e`k$>{S#KQp;Xd=y;X{$=vBa+lhK2 zmrnGaPrrTxg);7$`hRb#lVFW)RKxwD(0eUU-or341&_@_tHJjo)TpgkT%;IboSV+k-DLW`|Q)!mROd;Z60e zZW#sYdJ|%NP80$TbV)tIwUEw*?F1W7Wd%%xeiNxKvV4Wp7pTtgfz=cC_KZ+gfc&Wp zs;{cw&tS$_h~g&-J*D)Z>+n)6UxuWYIS0u9z3}oSd7~HRAkz_h6+1PX5Uky`u$ExDiB3gJ` z*Kp&PJFBOiTgzTKDa>dX;847&hDoK^%Nqd95o_iZf2IW7?W|3x7(MBKTJz=!gI8?# z;X~==E#`0_crt?>q~&0V(U|rc6&o50^Yr3-g2rv)uL0@3VF*D|W0H zHz$59ev7XfC@ZbU<3DBq6f(U`cuE)nzdo)27=tFqno|K`qGBT#0GbH+9NWK62A8{; z^KV0Ae{{B2uvUhwDz5Dg;>{8d3oi1?iY=+SHNJ@)&Nzx3j!-ag7XV08<#a$!%XpG# zWCNsD``_kw{pj-3$2!;DYHAZ|eFa4C`gzbqoSCq-;EOw~7ArVfY{h~h@gj$bfn?S< z)%Ij&7ey0S0li!_@(SHIAMQU-+R9p`ZzXK#G^3b=XScbwI|%y$cWI)_>Mt8#-zS}a z-Mqpw5~@V(Cckvi8dL~n4Pf0hMG!e*~NBEa#a@!)yTf>Ztbl!=gVf5}fw z0;=hu+Y+0+W2>*M`#Z>jR0TrzA$O*I77y}T^kM^u9|XSpEAz;``%kkHVd;JUhCj(Q zh*EB1}{L`$+6658VV#I@>33 z*}6&O7Ng71HwIm{qOwSG5d80-LXb*_6~9C`RMU-r#~HTeWIcH=jV2X^fLKd`m3S|2 z?ILA}J`P>M#^TyZko=z1mA^0W?-TSw+0B$W6%W0~zPSJS*fF+6`n~Bh)(XVK=BZhW zDOUVg!dm|i$*Vr*xV{kDIyw>@ktXtYDv?H*rJH4v%|!3oM4X)z)@;(F4)alg;`pa_ zJ7*`|{$Gmd;Bo~G5^C=i&*Qzs4WEZ2NHKo4zs6f@){(Pc8XLG8KD0p(HEn!09Z#wv{Jqol z#&UIBEuFu>ei`dof00o9wH7+b3g;S##n+;`3Pw#kv@0oGr+*867d zUr>KuF~znJSRZQO_Qxnxqi0EMi?E;KX^B{zNDx?jcavzRJ<`8i_lE?6eD%-T|1QTf zJX~&fkE}-xx(E6Yi?Dtza24Q)jf_V3OD{+stDAN!WftfYVl8@(L~7;2y7sB^VogGL zCGgKmIJz#UPt>LxCy-S;T1^QZ^>jrf%!c-A zbKA+9xuZnKA%p+RL1ttH9s@y+hV#U#ozxufewA$Vo7<_cg!^|;j!v)p%dC&KN)+9z zXUtzMrN-zUM=!nNdi@f9K{=XSdTu}A zF4`7mV~GoaAQs!T5+0WqtQ;5SDnD=&IFd2oFds&^FxE6KnANFiP@@X}wHiK;sfD?i zV|Pc18ka|~N?(oS`d_`wIfG}D(Kte^4*Z6$Im&v|4a{e*v>$oyJcA`fJgjISYVWBS zOV#=DD;c)N#!|1JJ8rhr7bakm3c4cSqo;^9Rn*pFRI}~gNzzKaef2=}`ar?%!SSJw zMiv?zlEmL`z)a=dG8O}>iVB;RzNSH>+iZCD$Y1PJ0_Lec?hh)em#q}P*|*6Iq5G#7 zUO2$D+kX6LSn#l~WQkO0pA}~wb};CYAD+(3U)^SRi4TITmTQ>TLv66dFeU4Fj6p7- zAAPW=!%E-V_#|tTf?6|KdG7eA^}%SbgWkGOg^G9v9jsP(Gak4=PT}5vPm1N9Tlq2n zB@$7#uMdZd4qTFvQ<{!M!id=q%I;`CmHiR%(-G8~Dktp`G)up)9H#eu-ucqzeP@td z(2~CVL8*5oG({{Cmq?ZJ&oNew9RHr>d`TJqrV;O5TP%D@GCyg2s7LIWUR<&DP>iKV zO&q_f&#lrM#s(cn{YMTW^F9hKOvzRkV^hgB4!FlYMaFDb6z&w?9IFpOhD-}nJDw|& z7)di&v5*TeTP6jf;ME>+1>V8Z}27LgqrBei=m^2g%cPPbvl>| zHVQH2wzWp=eGR%;EeK5t>e|xIqADzjD_yd+V9~N1SJ}xA0!;&B72xsr@72E-qU~tR zb^o2f>+I5m%>L5^GjY9i)LZ@dl5v#CVs|JQDGQop971*$WOQ9{d{X>dvG!%8Ac!P9 zP5>;}AwF0kgE@ZeLHvxc{vttAWlF*(KgO24UqR9ilF3VU%HC!))| zWl6#4JJ7@R9lkqm!goi&`@PQm-rx(m$+2TO{?{()9hoy0*lBB6IOu)H*BV7Rwvtul z0v*NW(^}E#gC7+IeFfXcYimnfhP>!Do=8G3f|TrS5&q!pc84^RlA5{-!X6xEBP3EZ zH(#Q6q&vqhwXj&EU)FU_$dF4|&yD1Ta8gR--ZiwQ=IdlITg!;V&(OhK&$b9<%{!p5 zFc&@N%D-4;Fy|sU)SBKNvlU=p9lL{(t*8GS-RB+U0R$)?VW7yWFd45QfK6<0 z5&6%N!Ws*PL=ODGNccSdwX2pPA77r?esQ=^%4pq{=Eu%{ z74k;iQpO{|AzM7Vvvwb;{q5F{TGISI5%;GRIURm<+{sO@IXk2t2@`N`0t3@RM;4mo z*IEmb-g^-F#-NEQgPFTB>}*WPspv1x*hr(1hF9EuL1&PA(r(f>Tad|&JVMkhsuT{k zly@r10+7sep1ePxllxMu_gUs;LwRBD*s;|s`^P4?R`GJzojwAnE6JWKc>0%&j3tX3 zf+(5C=3=}trd6gUxmv)$$NDlN5jym-kkWqT@*o@aeUE|Pn+ zDa(V#lJ~w~bO02})0DJVo1d_pM^kn^rqYbGB2X-&aLntWLAu$_`ojvczKW&7K$k`d?jNqW&?|j!hfxWqtj6eiv_ux4Zb_8ap)ik@%XnQ2S*34U5;V9vnLW>N&tt36o2#q zgbJ4X(qY^t>r!vPD10(a1?`~A{R(U@`!&-Ldoh5&VsEd&Ew@#gj>hM7I0*iGo9gHG ziR5N}DDmO{?zg3Ia*Cg2^pU7Rs(<^mOdRx69E*&1j(l&ATm{-!kMthQuEQ*8L6Q2) zpYacgu230_v@0duM#|OXei=5G^V$hR#UF`mgCjVdUTo+ph{7`f2o?bixj=s~@=)!w zBJ@ftLP?=c_FXhV<57qI`O><5`>|lna#s-zsmz`RXe&Z>Lk6g*IKSUIGF+v9?IADrr+qeD zOTSqL#{f5U)eT*&$8 zBi^_e_wXqIb(dC4PWSZ$^5^2PW!V+eqlY3)p{=`Kj_q~V{AhM3oygPp+&g}F^)Ve$8WuE^g3%+N%?^euaYh~E9rSf{;yf|Ey{JR5t&W}*GXs=BbvN3h7u zi6AR>fb;vR)xhRX%$smIJG2qwvDK09437WBHe$_%(yxP~BQ{a0+@aA${diHk@e>?E zerj)-hTg5-t=Rh#Uk5yGuaK3C^T!*p`=YXxGm5vbxB;%=vAsFlciyR=T)?h`tzL=? zMn1(p1&3{mmUc%>AhnOIeqm?+yx5eU;fAWil+duosHWh;HoAVYdzd%aAG}z-jtr0V zdd$A@GTAYFAZMZ4ODP03yp%VlUP;J0|5XxdKm7IjLgXUALIR1w`z6!QPyiF0{m)lM z&oi15!9p!X(Vqsq{K@AAf0FCwq1c|Hi2+`Rv^?IsyR$)fHlN}i2_#>A-Vt}_@s;&a zXN$3+41#bHU?qT+(u;OiDDnyAf{MhZjy~|&bEI44{r4v1wKlFtko&xnjMW&PceS!~ zgc(}}zyY|WCZvx>=JQX>mh_w>+@E}T7#uq5mt%ab-ka`X_v?>!@wlp5*$d$RUIZRt znku(#g0_my3;MO!dhjKQ>(tguT?fjPBr|=VX~3h`ga569-ilE&AmigKCtT{_+E}jP zkK^ZO>{gxLnye47CQ+AG#Go9p0n`asGBvK}3puB0@F{UjC(|JLov7?s*;^9@<7R{D zbfDT=zm4g*3@Y7KmyI_-4%q!|g1@j`t%sM}619Mw9Zs3&F~qqbJp+$cbhI7tQod^` z@K)%Dq)%JrnF{j2vxK=Q_0J1VGeSzZ@Kg7rNh-mbe*1TQpL*~2ore}=7pLD0H{0ig zeA2f1&hfhN`G+anv-Xnpqw+|nmv53nm!G~W=DCM>5&fC%bRd8Xplt$<2$5-}r0|9O znhg&(4_NYsh9ic6#*WiL|Hqzy)QE5)J;FcX^!wpv8_ZlrpCsA;YiQ6 zKTIQZg&{NGGlT~`ChDAK=!q3ZWH{(@^B|(QqDG!9#$$2bcl_*sxw80>hD00#Y03G} zL{h8lGV)8Y)**Eg+)f0JL^{fUo3Z#1LYnWNC-AMIH(u`US$`67Z0^2%jO6C`r(afZ zAFukqz3La*8UGsrhJ>JG?TNB8jyBauIvzG%$@2%q+^OH-d!Iq|BZq|6bfzKud5vT1 znyw+AAn-Ri4Hs?Ac~9Pin0EkJLg+h4&3vVeftZiIdDkL*%JOUM+o()EHh!^z_G6jw z>O3G1RP9-Tgyps=6t+G2MA-wyxSLxkxz8U$2|%gwAA7Wz9EM-@&scKjBpLF+Fv0^9 z&SMC2g<8y_XL;yr#|O7kYG2Dyjp_wzh(iInP)a}J80qqr7Np@NGxmU&ZRtG@Zg?e= zzW9Xv@{EHE`Gv(e0ETCu0c8YFD)3~G>K+6%vdz&)U;f{Lyv}B7xV-Hxh4;}@(%KlR ze%C*efDh{Nm2whxmwaY|U<6lT6Dfo$Q+gI0cbJQoy2vRc19G5mpM2`CO-4JvW|`la zBUh#TYZC(2GzFrsErw3$sekLM^cHPoTXtIbeUqjcbVi&_H&#Zo%CyE)$0^sAJrG@&G4q>OM$GLMU7GUB>%{WcLgkay2eMm@ya6 z@FF)^u?opfriTLbl4Ti^PWPveri~#*p;UA72Q>6W;E9w3=D)f1b%ZW)pAs8gq0J5> zbEnvyBhavSM{x4BOYDj7uRjr<%4fs8?9#2I+U~Ll_W#Ps9B!Uz^U)Hp>ZT5X{3}`|5MOXMDUy%d`UoMRUGws14}eVHgK_` zjfdF@rW!-dZQ`D$l^&1G4qpwllh#^9c%P##f_4AQCgW}Y^Rl0c@g4J*@qMPrNh2*X zZ5i5Eh-=?{SAW}e-}nZx{Q&8@a9npc^3ixYgd;ZG?{Q>k8rjelF{yL;CnKHV zrDct_+D{Ra)88E*WZ=9CtIh zh=c;y{b?@m64!q`Rwz{SEf7bMI#|9p^*^tKEc5^8BAR{{QM__kXnNyhqg&E%853I6 z-T+B-j*wz*(?3coh*)<9@lT0g|L@*EXlt=CvwOWo1&LI=He||nfK&PBhd}r}!Kr(7 zM4o++oIpQzL{4<_^NZHK@80M9X`p=m{^2A7%E4`Gc*~Ee|8R|ePXf`Y{QXB1iXi^f zy>tKaC$9*R2yy?v{}9Q6Yf0`3;&nKvE6g>%@Kg5j>8XiXKFdV*`5k};Ly~(Ejz-W#&G$1)V>X{ZPvW4B9S&rKIz67C?-sh zuA!K^M{s19!tfe8=g1_?za3|(v;nk&`}n{|A#3iTd7n_^p1^w56C%}Ytu-=VxY?H%{8$ZRS_;PQ z#Om!4KNM)rsL*MxTNUMnQ>c)aP$w%7y^9uh5Ze!|!U_{x9ZXi|IG&|GjKRyPWUit_ zmI#UjmsxK(PVWgqT@T;~+6yJ;9q9WK?p%V!moz^vy25MRYhUmdSAQxC-ED2zKDt^J zl|7-#ycvN)xjoKL6fQX)HBT4ua%sI@OV;A96L58#Z3~&*{fD9vZaO-zAkowGMjd7y9ZGx0 z+cVCFMUE@%H|BKBAKc_Xs)nWAhG@mrK>yPP_m8#j?mPXKAN3DD2>txD#Gr-uSlRM> z*AI|Yu@iRc@%2Sl}rOWdt%@kiMptlkTWmqR;pB-8%@|W<0w-l&sK!vRzA*nXj-Xi51+6e@*?PZTtAJ z6~SSc{=s4HMG_5EM|Vc1Nd=@?BC{Bz2?^W3h=K=HVF`Ed=_;%(3T6L|soC|I8;$}b z_AcuogT5JDXy@5dPealtf*chC!9Bmv+$R>O`+9#_prom1s(6jFgbH=ZcecojcB+Vi zH`vOZ9G}RAFXNBCYPtRg@hrI@(-#i%~$1Fd}b!(&c^XB zNhI)P60Sn=M)^{2<<0f}=ptu>;>JUK@KL3dW^d22B7`=c(HAtTRNJb87EZbP$?)(s z#BjDshjoI_*T-H>It*1BKVY=MOEa(cW^w+58o$>_h4s;P8$QeWJca9FMDc*>-2;+x zt&zwdnbG%eX3COzIUL2dx^{#{MD9=2UIP+_`B}T3FvAb*zE8XAoKC?aG9t+TdyGRz z7pzZLIfDwSNwrOiqb#T32X}QmOlyE4o}~2Y52+6)<|ou$O(zo3#nUethHv;ve8A7X zLBeZht-;$L=pk{G%d^_wf-he!sv}kdD_t%FTBB^i>8K_(uhCb!6EReI$?n6>VXU!M zRBtVsnaN_L=#cCD!8fmS-_5i?7STglEM1*nOf$b*L6=gygBpBHalG$aUkW_Vd?!QP zXpVq!YH=}PPV%Wf9K~;q1m0i&r~b)79F@R`-G>v*EN-kaI{yf(&UIukstZ@lSt{(( z3I~_-(k85uLp}Z&d2>I1Ht$5xq;QRVcSH(bP2rj>@gu(Mw(n2dCufpGl~+sCF_Mqo zb@-~%FJvUvS=7IeS5G?C=Se<@AHm&9(lS9euPFgb@QnS*$%21cENw)6w*H8<=$xai zrt&V;`Odn%5fM#>bF7)!1Cwv4{d=W|$mvFv%q=aZa3B^s#Klm&r~5nyYNor%2XT3N z9k|PzF+9Ci1zV!dWUEHpWKOKO!4v`>r#b9=Kh6)5vqq_%{2+ePF8}sjv|`U{Sz}he zqPMY^F?L9kSw{U#jEd7LdjHd*){(rUsHF zuM7u9L^hopWUVR`G+)1)g(#c09*tqGvBM(1x_aW&^|uXu+{fvJC^XT zC@hl&_axi+RrrrM#Vsd&iAi!OV4f8R(b))^USFp>0E1}SZ?Xq(Bx-r|Qp%X!`*Rm; zPY~h+EWa3JUk!Vts1~nw12&O4CBa?c-(4^l@PCmB&owe#|#~{+&xnZvx zRzDMGtzbfgP^M@1dW9Cm-xhgf4$1RHFNg}dx0JdDHasyrN3qB}#oKD*6QlC^E|v*J z7q`*KxRt6)!mGOvQ(%Lmu1!3w>t0jiH>|&R0g*dNdvFB2D`IDQrx7b-ZeFqGiktIb zoJ!N!M&X!m0Ax~j7%v31$iQ(kOoEuDE>g|e*j|lmbiy*3NHQDl55V?v1^3Xxt#R?{ zyqfz{T(`I(AmH$Gvd`b0B5&$HF8KMw-x44itH&nC_y~Rz(f>ux@1g|rV;O)>idydEF;)fQb;N2 ze5bUS){w!fJvkBx8Bi7}*`NWLi*9H@hDjA>Ol=O4ahTWk9|0{Juq%-+!5`$Vwi%}+ zrIiB%RLu{*m#Uvo`yH&u{UoGpl5WG5E)cM3{6dM*n6i*?NnqPq{@&higEg;dnKsyy zfNCf;dnOW=d#X>!exZ}V@Z9LcTEU-J?|^yP`>8EmpqbUCN+~(;wNS+<& z)MG+hPFtPVCIO`7v?kyS7($2;DfgS{e9pxEQ*>9Vun*25xQk=S4q5UdRi9dKud&E` z0hy9OS!3!_MIE^GI?!EzMhzKMc`#v+Q0G*)3`>1Ns@@}A21#t2|8MEF%N z!yAW)K|XwqT(E@UR3AydXp!YHRpP5c{bwgv2NEO3?0AE;oUTFSidmbqfJF4}=Dl;L z_Q=e%r(9K!?n}L=Is*%u1?#71wDUxHfsr_2OI~t;AkBzI8|HXN`#O}PZ5(c4*cyVE zsR`Pok9^PoSABOE&R5AWe330iUv~7*Gw5=Q4ydH@p-mh>5*)i zJi<1z@yt=b1=pmcS2u?@HjZ=N!#f>u>V0|xD6dGLwC`f{b?3`w@5d~6surLfM zJn+1j744^t9kcNx@7;r>lxQ^<`)BtHm3L-Vxse>-`f=quI%M=||hW<)q|B+hAK zxu6ST$?q4JP)+RN@N)&4-mCP|MM{_V$d>i_L@7Z+Wy`b9t7P)$>lrvF+PwsT&en^9 zGdZxV=b`)=GN^;#@u2ekv-eLW9~}O3cuh$kPwmF?*C7LcT_u*1>nT)l%8i~5ZNmEZ zogdRsFkAAxzIZ%12$BJkWYAV2(lP(!1V%{GzvqoMb(c&i)D=zA%8e&E%uJ={7r(-P zEvC3`vPkn(pBoMOsM5SIX#%27JuL>@wLKD%5g8*Ond)@enDo0--dR-q>yLr#W;6Q) zL%7;#>)YVn=)x`~+ph5F*Pm~0upiW#3)$HB__E{dO|u}>kZk=f-w*ph(9|T5nPr-sXb$?W9$Xf#4U=U#E7Y?vlhFxypHMm`pQT+^KyCYl)@GRVK_StBBnnG zV})rV#OIMoltTeyYJL|F%}BTtrV0YhNxAVzJ&)eSj;XlXJ&k*jRFCcZ(a(zS(#+2f z>!tcpS+`r)!81moWUjhzEkgd2nw~nXd{q2=@bg}ya-Hf<9?@uSJj%+LZ}|g9$uKIBsIA&|*r(Y>ouxX@OO`X?a7|`1iJ%ZZ^-I`a z&&Q~#28#uSJc5x8(^#49U_B;6Puw%(kFPNH`2|&^dI_1u7I%L{ z)|&*EtJ@?>h;ifPcX_qQapV4~45O(ro-%tD{n^~#zzonYEWQYPRk`#l{RfT5E1f?< z;9pot>E9IlL@3|F%)y6>gw)(0*L&X~B^JbviXB7q(@5+q> zAZ*kK@jj>NKj+z=oEFl+eN7ZP;o+$0qITyo-GAYs<~rA6x_fphm=K7OSu z4#dwA`=|1ZpWuO=6A|AhG+G#GJ7RPHRi$#Uu0WPBj~YYZfpkh8nK1 zFk2xEJqKpqu+K%t`+kODs<$y0ohOXRjgwjWN58*E@O#F4>O8`^if*X=&oG})BO06e z^h#&cv+zIb639s9Tc6Q{)498cK({Ca6XthpCvq&;qwyTvk%Z4haj>AVurgo1WR#ac zB5G(s0;MRacImjr`v)J1&Z$K)^P`sj#`T|Tk+g|NU!utKm*9ztE>qc69`vX)S`+=0n2Ss^IB)Ul_Q+^G#$WP^)c%T$UT#a5 z#Xz<2eUv0?EkOVqi1G)cQ?r)5fXhQRH2g^* zh7)xshWJmYKx_CV`j>aaDW}<{xOBo+1T_a76^xLimf&>)Pvih@`t9}B+^t+l>xHeGDN?<=PcS!S1_eqk)@U?(U#kp;z7O^X0?(=G6DhRL9Kc zujeF1(ZVCo{(_IGhkom-MyBCGwu3!#$s=C~ay#p@N#Qxu%JHtA73)ln6z_7~SJ5y&>9-^*QE8|@LW-NswH(K^TOhapRe(RSz3?Rz2r_;ZuI(;;VT1N z679Z=TSmS@HuS5v-#MusRTryJ5C=V6oN2X?No+Gas<*SEni&DVuC$k4g?Y-I&z`I6 zT?2pmBF{_HE|$r2Jhr3+Xb#e-Rm!|to!;4yH# zTN>G)mSgaCG0K|+oJtFAXKkedO#SyP2K6qaHYpuVm|O9&!F$U_FYCOZu&wdVBQs=* zgPXJZaEblb*Kk^BgsJS??5s?F{BjRZcRkEQ+nH>+_i7SF?)M(l3c1eTrq~^_5Xeg2 zSqkuP@>esKGh7_*Qx@Aw@_5~}0Q0C|0h%as5}Iq_ugRa8+ewiu4^j$1&phOp z#F8_v(Zd{z!OM;Al>t4>Wz0nwF+51#UoiF)R67*$bp3NSHxxakmz);I3lRD$7%yZX zcn;LN6#iJ+!7?*uL_xq$K|a?1w1PL@}I;Tke-#%f$#C88{tjAnwr>>W%V*)fAM>54{dK*S%PY{l#^oy*L zd3!rMx@j8@c^(DLS}@YE=%}OrF%YA7;?|Q12*0F5?S6OE)Zw>0Vq}U&_lw^UsL_|J zC+pNMiF3-AhAgzF6hq9JS-X6k;YvBncYt<|C@Y@@tEzR)d~tTYJz{v;GJ!;tBB~`5 zAsA|Wg7!Ok3aUAa)K|(Qn9owyzrH2z=@adeEgeraiPzJG4qSGfH_f$|*00v?ve_*z zoj^dX9+@nUizzRJ^HY=@ZEKiH`qny_)Avn;RPNPzbluB7^a(ZR84pio3(7hTpYOdB zlOAZ`sQ;zv(c+0yNo$ET^8`Yg?d(?IoR1X2?jI(rSS3eXN*AwD5Q_ZcRnouRd*W5{ zv~C$A9Xl03I_Dn=$Gqp{#2c*xQ)nmF8` zluX}GbfKdX+{)p_)0vL~HbQTz0+{|3w$5>?tWM|B+>oB z7g2S6$FBL!sJ#rAMTH~@BLue+8qT*n$5-K`9k6skQ<8i#10bnpvyGstE-vftxRH>m zE_?de5M!`<@{=hmW8q0TSk}ZY*jU!cqxDRD?ZiV)Uu5d1{DbTQ%8?a~=QU^Ie=0W( z80G>UvG1&493{i|2yD^81_9Esna|qu$H;lbil@fl5XXKeuwV3elqYmk;(I__2F% zwk{xoGeDBKtGFke>gI&rpa#V+6nrZ97zv5nFF35=6*LP*4I*iDE*WR;C1V4YsO?~a zp+0nFR!FSraA_FU32N_>k(FD_9jw6IBH7B?el$Y})696BV!q|req}MJh8R^qpBiJC z&IM64!A(?MS=!|Oh1ZcLYCht(CbM^!6-zr6_>3+K*o&|Ha4|qWF_R+`b^^W=XwQ6})*~aCW!RZj& zXIg7L{O{0yNB}(hfYe6GX@~JwR6pld0%m<|D)9Gz! z@v;y8%(Ow29fV9`3gO+hHfh^HrU3$haiaUMzEN~QW_H@X*8bww^B$aX$!|w)=!FQ} z1gikiJb9X-w=~(7ZmiT?(z7WuuU7hH&}NF2eV6r^Wu`N}wOt0gRhW4|^oVKEF=e4&ClXlC6HuRW*ZORQ46W*$r8wjz8MB6o z_$H_q{idlq8+SRY{gE(ynxhwg@R2tQHC%M$nR*^^vkuv4oE5eZj0mHxG(jtScUg36 zk~0tcy5)li!@`W%oe{Cf+sPX^vew$=+19Qf@8x_4&%|{6!00J;a4HlQYLQpt+p~u zK{2UI-U^Bj>_#ZYK3G-BdVmT^I_x<-c&%`UEsE%tj;IWGO&>)z{j!PJSl({%p!piv z%lMk}Pk^pHHP71f4fgq&k;-rj>cJe-AH|S?wf?i6h?vTyY>gLKDjdwkHwhC?ee*-3 zRe_y`jO%w>%io%aA-Lt&o?P1q1X1!sIqItezqDtaw@#Ro5rs6oQIl#>&rs9oD0>vr z0R~m|?q5_5Q*LC8HeSykFmqiAZEK3siNbPOBg%zF@NcCNQA{p)ymdKOzNGm(3OO3x z7^u|I$95<{6vfk*4t*Rb&~uFusTe}$V7d!(49Mtiq3AtUoS%q}Fj*N$&3wG)(fk>2 z0zxmsJ6s5Ot@P+M*bUlN#KyE|y$g~3-cq?L>DdBAG;mNaL>R=YF5}M;b{@aVDMN^( zuN|zK49#~j=&M8(`iuiwzx3SHN{QWgCd{Q8imeGLUgY?`nD_mvC*K9>Fo+B2TB4OH zLdJk|s&7hxgZhh+QNIX$<47!oyM#(4@WA+-$Z_22-a7T-bLibAtz7Q6Z@Q zJe?>XWUY&Bt2XFvVOFCr(1niB=ag9Rw04BDYJmBszSr+Htq5cySJZndx+Az7OpYhOLPHtFw<3K$5gL z+D<)_dpUt{R--F4W~_DGy5_5&QX(CwafmP%kG9yptNT8@W7tg3eS$oFA7EBRmapYk zs)V1$u%(-Y>jO_Sm-TS#`xO7UKOjkYXlD~EbfH@Fo4jFgH4&mq-+2H}pB&W%G0tiM zy=YpF)^^1_E}a+Eq=sm8$tB`qNr{|<-PL%;k#?EmIC~S{u-+N0zrd&PhiT0Vh=#NC zM=@S34jN(9h7XnAqZMu)C`L7=J?pVB=Gx_LTRZ6hQ+7AOF-#0wyj&z9pLBr!iZT7Q zdjRd-i`i}n|k1DL%{=$NfqRdJZVI%NqZ6sD=(5= z<%L)#<_P9Ix~*C$XTp)sYzgL&-PLoxylk$)=p*=^@xNn5!$W8GthFE^g;1@K!B}(x znyvvignfWqv0FjB(7=;{ID@Yl!4~Q|HUN3rFv1 z;QB8*?n7XuYfEhuZ7IZd9>!e42Jqa49IFPI`|8sSvGnq9e2-8~QnQ9=@k=CBb35(RI zwAphsr4pUeJui{a>==tdtVj~!AM_pP#%aST% zywos;r3PZn%`zVw-_M5kCk4yntm29acyGQK@%sS}THkIa00bgeWFx2hXxr!Kr*~!d z-uw*bLTpFUtcRwF-Sx_&gSsEBE}`EYhKH@Yn~c_Kuad&s_N>pl{^?p#jlC5!((W?d zV|R*(Z&4%Vk$P^g6+@%{F(S@j!Ov2%;)kfdtY`%mgb+CWeRN%N()axrCs<_e(U-7Zw0gdHdh2nckjvZ z?O9K;UIkYXs%45qyAu}&^;sF+*O=ZX2<;^$-B zhz?N>-OJ3EGWWQq++*mDg*u0#A}RSK-ee{@{shCQd8)x_-$@f=T6K@oBxV~h7_E~d zf*+4Ytpy!^z23Q;!YKr6&7+tC)%VY~NsE+2G*-i8o(-7KuoCts%7Ljzl$#}DUUE~FcCfvK zWM}^EukJQ=)`&~59ujMieqNRtiRNupi6BS|bEOO=0z3zuF6I|V7O1(VixlrGxw25h z#91KGx^{;?LB_j@kXvLM1*`s^zY$LB=L2vap)3={C`(1@A%${tfv-uw82jZ{REr8W z`&dMBbr7V@T$%}UM4#RZefkQ~q4q@jav9`+2wLlwhYaGNsP8}dBtuzUAI|>TpY6SS zE7*2sXPXzv#Tq)}+Wn$CuE*VlK;!&=Ax~r?NDuR`Q4Q zW%~aAJdsmFzc1ao~=~VgGMI4Gn35*9!aoC!>;|Reqy&tXDiiHWmV!0Mtgm z_cl@Hx?^SO@uu7j_PhHaAOn%uics;Dz=1nEmfvhF$N1+rS~Fqm_&3?|q=J!bS8jq} z;f50FoAa3>zCs>?DpM7SH+cqs4pV@1b7b zzVzggo4t_yqgibVoIpbm=oOT^G~bqA{gjBx{gkb5C`c1 zBgwaAds+S&;t8>xasQ1zn9>C=n7R}ywO?_iTgDmjX$wL-(z0^J1t8;l9GL$8Q}R;p zUrd{L4b@%$>XGQZbKSqFS<$wSdY{%vi$u4ur-Sd*(Q? zYL>7esVrGvCR7^N?GJGmG~SNun(Iuq1-+n6xxk|QeaD=LywT_F zARh!b;~YvLNW;HHXFL4i(u`6w@924O^o@^8BuvmmaCy#krV0lQmG&W=LrNFo5a2wB zfQ^}l1DSyz-|-Jdrj@E5vxtIZbFM@t2!Gqkb8;jEX2poWH3!&nSa|OoO%UF@cgh^< z>0672azNkpD)X%AN-+>*AHRN;V1Bf-0l^EW;~3Tsrdhu+GhN7$w&{Ml^*k+FM~Hm( zi=gSnPf`J_YwF@nEMjy1>BIPFXHoX>@0yxB0Ze-?k=KdGhN= zzf(tj9d$jazfQd~aP24Ss@~yam?$$+8rfeqR<3XwS*J^k3&9^fZh2yu@|GZt=ZD%` zWmol`Z<|W>E_dv$BME`bZVy9BnP+ow;1Z2+4cJ7U#9lAK)8vEZPq`Qo2jD zdfr6ixM(`2fVzr=O>st3MlVZcgB_E@RxR}ELg-O14LF{1!UM)i?f}FJ!6*u1tA< z6#QNx9^T+Mp(XL-?yerzvbn`wRhXZiz|TbiGs3MFyX#tjoZV1!`Ih%LXy%()0JVLf z=nwAZZF`yiMGN%;i|;XsHo1nfO+g;yfUePDF7AbKwmwN<E0Y3`<(T0{dmx4MUn^auq3RU)2m?(ep+7Vw4(Hq zhGL7JnnAAD1>w0Qz583r-ynEmd{6KPWsYzG0;BP^0;lT)oZsjQA;MdVfQj9yL<^Y3 zf?)_ zRmse~{>-`TOPGW4c*4jOV3K6zwAKTNfp^jB=S%xjj)e-pLOsM`FkG4=Z@TP9u@S+k zL{NgI60yp#Q|D%~`G}=xvIUwXI#uP3jKG&HoDSD^F zeqjyr+KE=2>3bOK)HCRI`b;cpaAVE^i7yCd9``dBjXl@E&>Xr_Vg~f=iH6E*c)=72 zG|NO;pnn_Qtg{Y##tEd*u!70whxBks9vxGZo!gDQEBHSxUvX2IIuwi~Tv<_gblt|U zwC4U~DT;H#slf1K|HGmBU5MrsKxmX9;N5=<)=Cy?(TO}U$*`%w8pL+I(#G?($0fT< zKG30MbxPG0^CY00A!SGnPhaPQ^6LcSd0J1b2+mwYVkz1oP+rCRp40Ev2`)6NZe7t* z<%7^(P2k(YzXh5uxP^`GK|NGp4oczbWY8G28kQP-W<{b6-uaJP(QI~FWb6=~4#Db* z&SGrMCn_Cv9&TE>-GA)*{GyvQ#mp-E-PlsgwW|djH(^FY@5~m=X{FR(hVlQJP4WcX zfH$?gL`t7D&5`K2*sIXxym_m&29k_kkC`N^lz;t8b>e!g2`)N{<8w?CZnEGS{whWi zmeU3LC1YHbBy;%>u?#5d{J8_H+`A?v>_2I7IX7sAPx)A$#E0q?Bxz5{vN# z2o_EAJMi7{ysP4B%8gOJ#K(;+7`A-4TS@D@qIVMujy}>d{S`z}j_xGn9a@4UZ=95u zEX+LRbVV&5f#V2hhG8+mo?5G4Pt zC(5uO@!9vX_Own5_qR)Teh;eJhp{$Jd}L`skbvGmubfB^nGboS#O`lTe~z4FKdPU~ zdrnVz5)kfIfvu0Sibm8t3EP|UxkZoeM+JpVeb4)x=Xt##b?*N(m5`l~O4W}@ALzZm;qifjPH)dcLkzl5XObhd;^gkeQ-{Chv2N16HGaK$AfVO*R91qf}+&=Rhxpw84zY8H1b7q@Z;9bWu!x zAHF~5M9A)AUWgkA-gXf(d6fT-Rfwl^(^leB?_lv>vS8b(-EAhmQFPpou{Rf+wg1(X zj@`h?2Oe^WKO@IZ^)@|9>3VM*<;e<4e(Mtd%P2)l(3b7$JePT#Vww+J^$UOG!#E@v z%We%C(=gIK_S@OJ$Ji_UtK9CN^C3(sD5p8@_kT`_fS`LQ83oy6mUckM69lzYuLuFm zwUqULxC@wA#VA_8P)FjRINvOM+@k!e8tCD=(bGlYYCRFTFaYrtb-mW8y_V|EV*#g4 zj{WD!Sj%!f)(OlG{*~*;6ZMS_U0iPjNpnA-2kTdbjYIzb_miX62jfIIZ7*C)K@tDo zTT&6(!#9@wQ8 zxw=hjHx^ZwrFS2@zs@Zfshng(SE(skJ|zZ^1^2w1AKOhda{c%OCkbO zy;qOrK1{0>`{Kcd9wuC1KQnllU0Oc`$rdWM(L`SG+bWx6QsSA}qea-Cd6|AcnogNk zJT1^#0bCbEspT4c&I@H|3^+XApjVlL0xpm&9Q7>%=B#K715&4$93Qa?pn-9jqa{y& zEA9DK^KQ`X>643-iVFfp0eFXs|3|v3&e2L(`*KC;TX|QZPI%&@A*rYu*LPR+e0S5) zW){&A*3C9T4A;CxPLseMI*!ZQ88Oc(1i2RWFhi@_U59|x>#zz_Wm;K3*tLz@j@jG3 zZCE=Uytr`7Sab{z=D%R7)G2pR6R!81aYiBlWP54}K(^kOdzl=TVPGkmau)8T&WYq+ z`knc0N^iGkm3IO)5mKe%sOPL9EK))l*GTPGbPXXPv5_eY`UT7WZSqjy^>(@Ok#FJk zKCUOHSC1@dX`*)@^fGZH$fzJ7kn^8_ts&s!jz!IYT|y0>H93T?f{4E>3+xknV4f=~JbI{x10$gVcy| zfMFfTEt?+w+R0yT&oMrp<85OF4)#vo8@N`>)HgqkmH4)C10?d2gd>n9$ti&AfRUX= z?4_I$m4Y9~vm>L^bd!1OX-rDl{H!a$er=wH=*kLNSNx>GyS))Q<~$a>TxIc%+V~bo zHj8-$HL;`e!KB9PaA^{FBW4rUrQPXT;{lR8bb6eDQlX8ck)J0Ny~}uC0G%?puL-7` z^tkuNIWZn(=2cCl)>Bs~c{N|CW&!a=|D5J(a|4xRsgZVqAu z$MPXYu(JFvcrrY|dS#%Gfr~d;!b+J1FW_8zteoDS?|TCLgVULJCchyxSKhh1mpZS} zW%|m8%1^Y~#643iz8XDfh3SNB%Z&(QFG{(q$hAB!+WkrM(Q5KIZtHEZl+K&tqc0@p zm`ie&uq22&A3V={>U^%0G56)1G5brQyvq2jMYX_1tQ*3Tm*)Os2QsBZKu8l z2;}Ywl&W(Pz*vAp!hUSxH6*Wk|N&4MtWyZ-Rf|F;?e!;|5ME6=bC7!@c&Kje;Oq>Nw~3HG zv7m`I1R&v3Ps5m@PPBe4UiQY$fv#VQfN`8o+(4GWFu>j3A#wSzz$ZfkW#l!r#N&EZ zNFZFO&5!oD6$w^&X+z$5f9Gqmz)C;W_t!)qw%gSM5kioG2o~&TVg1UJ@i;k=y;7x^ zS=>?ZM1hJvB<#O_qSnuUz>zV=5>_3V65Ta7odO}sE;Ln?G1lGB$Kdtg*za(|0IB2f)2gHq8of4sL;<qV-uM`M<1ui@RO%LQSAqc( zM(8$`0@bWanN9S9F(kXXF7>{y01mvm!bn~nHx&GeF@@I7&-$R#8EoxhU?A16y2)Yj zVA9Nj%lN=3Q4uq&u5}XiK_fHnSgy|xuPU=h%}s(<3OL!hKs;`3B$Sg`Bg%nm2Fp_aWCKY0XntZsE<-QGI~kBE=lmd}@w z>iPP$Zg@G)*pqJ2MNZD0Z0KW!{%W{d1$AgcrE506kgWrPBkZUO1t#k)WMVT0omudY;LP{5xByD7aCV5^y@Qb$#tl1SB+Isgbn zmttq%C0M@ki#b&$eoD4AI)0Wxw=IyECF%PN>=c1hgITG@u?(O^A?WQ2G@jI-sqB5F5=3x2=)QVSgl<%htlW$x~pOB>wmu*>pWbjsyLM(9J5sRw5zZ>^rGHRCw zvRhQTQr?|a`;F_8zZFYn>>BZ*HJ*R$R%AhBOv~&%r&XA4trIY&BmNlKDSKr_(zr?hbZ(#&_7sN= z!2Bmk=At@Nosl+hmk%HWkn^EERn2ecqjmANQ7xc)8AA?aHYRi2GGt!kBuYadCg@|~ zwADyIFYhv&&=d{5S~ko-_?~Jw&}_qVYD$tz?pm&x-BXL-XsmPwPOuxZtA$fedMcnh zVjWN!M{n*o@D2%PH6uAB=+XG6Wa)R~r{Vfjy)ES0?_TOXdCr6^0P>H`!kce_EM3Jr6YwM<>pfM|*TDHvGlq zy{HZ#+Y&J60lg==)F2m^8I3Op%>}uVUSH5P?%Gw=--o1s&@Vqf@|~L!#?fA>jo9*! z-nD>MS$n`4TVa=Xj_A1?@8n>xL-R-owI+~~P6On(DXV#)3gjLEv)pj`T^6L(f-G=A2?4b=8V z=l*ghggmXUl}hZ{N(~3dvz8cZabkQG?i?HV{Ea#z`23zof~Gi0MxV8SAlK%F9ix#s z|I1HE(ECDVz!^RJ|=J6j;Yx&whCV|*2qtQ(H{vVVz z3g^}Voh1C>k*_2;9t{2eV-l|lUF1IiICL?5t^_iG{Ld*;&Pgwri~lFxn%WVs73G$i zto7iI`+wSC1(5BP-c_gu(S_k^7z@@H@wLw_vo!!=*hl0c`GM7n8oOEW^tVWVSUHl4 zrkVz*^x*gLlQSo~ot{~qEO2{&S}yk2_j#%bbL7-vzwXih41N5Y{(%!^PmETZkWu(w zX7WQKTf_So%Px+*)MpZ@Qhs_RHblIbAnG0MuyS&tJnRqM54%G{F+}x3wzLr>fVkSE@+{?8-3@5zJZLQ*=1ibANdDp8V!% zGZF(Ko9q7=_1!W~3wC3^Vj#|WsxI>HE5=Z_S<$FCZ++Yq!aKAk?ad}=H(2O?L|HT3 z2fU*$=Jfdv+sRy4K!WXc;Ri0V#f+VtuyQcDNqCvoFNhR9Mex@9)*TD$L;|$P{1AJ# zGcYqc?;p0V_IIP43NRU7iCfsv3S>gZ!%RDs?Et-=ylx|K7|FTyekt=VTcn>@$GNgR zAX(f2(76!H*a6T=&C)sGX;76>1hfm|(g6g_{@8)yG9xIcX+W9@nQVf-&SUD~&zj;J zWQw6Kl4XB_#K(Y4K;HMJhXBJ{ELiIf|8P#W*QV-SI9H1YZKD9SJMqI6YBm0`q-XaX zzh2qVk{>Z6av}2qR;Ns?0DMW$s1qO@O0aUAXI)&%NF%kjkKT+7vj=jlsWp}LrD>+B zi(_61g}F%H^s|6E{j?X_XYuPe72?poNLEjnO9(1ktV8hKuVOCWLD5*oK+#@VKpnZC zl3U!&dh2A~-F(PEzv{;MYJ?Y56LQ;&sBY3u+B7aVY!VGPH<3#{1qnKpXMYW3-kwmu zZ@6Cy-@)bRQ*y6bH!O*QCl*%rAYPAWkr~OOY!*7HF%;?3^pI}NiYs7{%z_y0VzSxj z0IZ^LbNNv1$*py}3D&QZ3K2T!aCm|s(m$P!+gx;N>Oa@`OdG_K-Pz{((otHQz+b@n zvJJ+2f~!Qmeb}Z#thL7Kb2Ru~JS)jro5)2NoEprMloo9m<`0=EP;&Ryk(u2642N4X zRVv2^;~IVSLpIbm*>OI9fJIfvhE<-&+<}5Elu~BhpF&G!lh&Tt?JRcaT^cKMceOADHQmf!@!}hML zMA_3crSB{ZFfjnv?$zd3NE6+P`^BT9)nw@gCrBQUtl1xS-n@{oD)&$czYg`XW@qca zrhVD?%xJb*1QrO#>`id zR$^4MG!3^Z^(R)}43py8;00xfa4vX~#c1FCpWLJVzS++mM;k?{raem+JrR>7am&kF zQl~f87ygWz4evZ)ED{EW9e(~m7VU?X$c4R(i#Db_(_x%}9=d|#n7fEk3#E^ZZ=L>> zQ5N?!_BR%n8_a|Z1i_})4pKUe$yx@>kIF&MMw?I zOt<^Gjn|{fXIQbVO+>Dmzu} z=(uMeW)}RVSJu6*MR=g%eW}ai8q3EWyq;FhAZ&QDZeId6a9hGFb-HPPE0cfLfpFG9 z1CqH)X=>oA$Ik%A9!WK+xw><7Lc75Yx$6$ zM0qq)*Q96*;j!)Td(JHEbQE;RV)S~ukMX% zy=Dth(?`8q)oesdSZ9v?n4_@A3yXGiw74P_Bgo|n#=4{aweM=S%14d@Cc&bhBY3W0 z-`7=`?P!uSxwpxEo20418IcGB1^858Rx7-d?OdZIHKtpL) zSb;seEB(uG#&0S)KpYKWh97~$lB7R7Xt3${?s0JE z4#$}kUC%;+s4bjD90W3Aarwj1lk%;0XL%`*MUIk@5wa1&^uEi72X8O7kKJA)XHgM0T-lh7Iu%6d0WXlh4`ZLZDzvT;0o``!AgJ-KHPJ)Qd8-$)@Q)5&)WGbg(*fF0X=hcMDb~l1%apFZz6{{E! zkCG`5OdNbrx9KV4hi;40)?=@I98NZ0L7C-fLuIByACG=g4krs`oXq8zQI5`D?5^E3nK_K%inr1$wdtgI)lrL*H~v)MEI-ZQCZfNPEL zje-|kLu8YYCeIDn^={d!ls8r>L_Yar`c@A3hGQ*?v59)WR1z!tDkP2UuDH8-8ZI6w z6n!b@rSo?WdUB9n-3>k zSh!;(`rC*joqH0rkUa5w<&eu-emRP=zcnimO~4Hn^T@g4u<73y)H2uP&q45$Gn63TCbw)9gfLhrD zweqU5YE?&ndFy@&^|0*u4;7yA6>1S(a1i0E&?$*?0OKdmb0sPBY549VQkb6P!U}efd*o}{?P|qwPC<9 z5@8SZp%(_8{TI!9N`HXzr8k0Ga+ZKZ?J5V$J-+;9i+D+~mj@c|stWcsL9-Qb#uUv9 z0JU}lq3MS-r&~*Yw!Kp#EUaBPqu2TqtJZ}dJ-lGp>g;zEoSsBdl<&6@Q?HL&x!HP* z1M3SvT5(#|h&1z9wHa}BxYXe9(IX8!3q@!(9*vR3Jay$rZ}!Rw;SO^dCBw3S?xr!l=J=W$>W&t^LlZWvg{=!5#&4DpeqXwn1}CpH#0x&F7@O zT`kU=ytA#XLeF9wshQF+x$4{r?~pz9_K2$5{`P8*rRcTcZ)CwuYST%)gGU}<s+ldp^$|1Oepn+K+SeXfy9;)>4dBbcqo!&O%gm`qY=1R|0m2 zE?^wY%h-(F&PoN`&jgqA>**2IP}q2D=1z6Q+rg|i1G~gr1g3vpjyqN;?5%#1ZPgJY z4xz)r4;meRbJy1fy**b3K}Z%obhc5WI+lSHlU|bgECdsp?%5kpPhGlZG+x9S1%wkY zhv@jvXfSJeC4gV=@%MiuyTjj;69beO)y_(OUE58bCuES_gaEAI`Br3(4_ab5$cRB!y!TD6*nj-?RSD(UdA zrSqBuR;65Pt*c_N=mr91swDA>1fXf4?J%Ts+@wtM@*{tl}A}vf-uBOtou}N?% zYtsyBe&QndmB1k3OEcfb4~`&U`@4)jMdgUxIlc;kY#iydn}(V{`DL>|_0zS${(SAP z1Gn>${BZ~2vy$Wh$Dw_he^(;CO+EY^Vj1lXejk>!>xKl!sfO0+xd<6LN(HTyQh@5hnvt$E$VL^T$nank;s51aF{{s z6Ays_A-C7^D{HYkETELidmkC7hgl)0Q%t?Rz?xemoLKPki3b7*wnlH07+fui&}g-b zmJZ?PHaj^)Giu)fl?smgWxl25KFOMU4UW(+Z2qp+w2(|dU_UV{U+)0>@nY@0`#sH{ zCU@}xZWlMAEHRVNsgNhlD-0<{TWPn}Mk5caUJ(({Gg)u(Cb(n;xj!|Bs;o_{#lMcN t%t1yAwHdj^3KERz1nB?&`;W5NF&omt^CF30NghN>!WC{{!)k^Vk3Y literal 0 HcmV?d00001 diff --git a/html/favicon.svg b/html/favicon.svg new file mode 100644 index 0000000..fd9daaf --- /dev/null +++ b/html/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/html/html.meta.json.gz b/html/html.meta.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..7cdf9f2a5487e9df44319dc464c0ccc55c8b968f GIT binary patch literal 9320 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 Wjpjykqi@pa&Hn-rBpYF&OaTC98)P^D literal 0 HcmV?d00001 diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..2a1eb42 --- /dev/null +++ b/html/index.html @@ -0,0 +1,31 @@ + + + + + + + Vitest + + + + + + + + + +

+ + diff --git a/src/index.ts b/src/index.ts index d37cd60..99a22bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,3 @@ +/* v8 ignore next 2 */ export * from "./create-signed-fetcher.js"; export * from "./sign-request.js"; diff --git a/src/parse-request.ts b/src/parse-request.ts index abb6003..fb732e4 100644 --- a/src/parse-request.ts +++ b/src/parse-request.ts @@ -5,33 +5,13 @@ interface ParsedRequest { body?: ArrayBuffer; } -const isObject = (input: unknown): input is Record => { - return typeof input === "object" && input !== null; -}; - -const isHeaders = (input: unknown): input is Headers => { - if (input instanceof Headers) return true; - - if (isObject(input) && "forEach" in input && "get" in input && "has" in input && "set" in input) return true; - - return false; -}; - /** - * Copy the properties of `HeadersInit` to a plain object. + * Copy the properties of `Headers` to a plain object. * Lowercase the keys of the headers. - * `HeadersInit` is a union of `[string, string][]`, `Record`, and `Headers` */ -export const copyHeaders = (headers?: HeadersInit): Record => { +export const copyHeaders = (headers: Headers): Record => { const headersMap = new Map(); - - if (Array.isArray(headers)) { - headers.forEach((header) => headersMap.set(header[0].toLowerCase(), header[1])); - } else if (isHeaders(headers)) { - headers.forEach((value, key) => headersMap.set(key.toLowerCase(), value)); - } else if (isObject(headers)) { - Object.entries(headers).forEach(([key, value]) => headersMap.set(key.toLowerCase(), value)); - } + headers.forEach((value, key) => headersMap.set(key.toLowerCase(), value)); return Object.fromEntries(headersMap.entries()); }; diff --git a/src/sign-request.test.ts b/src/sign-request.test.ts index da0b883..d2da036 100644 --- a/src/sign-request.test.ts +++ b/src/sign-request.test.ts @@ -451,4 +451,33 @@ describe("signRequest", () => { }); }); }); + + describe("Defaults", () => { + it("should use default region us-east-1", async () => { + const signedRequest = await signRequest(url, { ...options, region: undefined }); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + + const authorization = signedHeaders.authorization; + expect(authorization).toBe( + "AWS4-HMAC-SHA256 Credential=foo/20000101/us-east-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=67f6f44fa40ae4a9191fad86c952f4cd2a498ec6d86c57a66609d55cd219cc62", + ); + }); + + it("should use default credentials", async () => { + process.env.AWS_ACCESS_KEY_ID = "alpha"; + process.env.AWS_SECRET_ACCESS_KEY = "beta"; + + const signedRequest = await signRequest(url, { ...options, credentials: undefined }); + + const signedHeaders = getSignedHeaders(signedRequest); + expect(signedHeaders).toEqual(headersSigned); + + const authorization = signedHeaders.authorization; + expect(authorization).toBe( + "AWS4-HMAC-SHA256 Credential=alpha/20000101/us-bar-1/foo/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=aa4d914f9488ac9c9ba7b7fdfd9b9e3d03f87fcaa78718e9bce640b5f134a934", + ); + }); + }); }); diff --git a/vitest.config.ts b/vitest.config.ts index 6475162..06bc5a9 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ include: ["src/**/*.test.{ts,js}"], // https://github.com/sapphi-red/vitest-github-actions-reporter - reporters: process.env.GITHUB_ACTIONS ? ["default", new GithubActionsReporter()] : "default", + reporters: process.env.GITHUB_ACTIONS ? ["default", new GithubActionsReporter()] : ["default", "html"], // https://vitest.dev/guide/coverage.html coverage: { From 0239717d410bf64084fd1e7725589b5ff73c7ca5 Mon Sep 17 00:00:00 2001 From: zirkelc Date: Mon, 30 Dec 2024 08:42:10 +0100 Subject: [PATCH 21/21] remove html dir --- html/assets/index--EAEh9Ei.js | 52 --------------------------------- html/assets/index-C0SwoDYm.css | 1 - html/bg.png | Bin 190939 -> 0 bytes html/favicon.svg | 5 ---- html/html.meta.json.gz | Bin 9320 -> 0 bytes html/index.html | 31 -------------------- vitest.config.ts | 2 +- 7 files changed, 1 insertion(+), 90 deletions(-) delete mode 100644 html/assets/index--EAEh9Ei.js delete mode 100644 html/assets/index-C0SwoDYm.css delete mode 100644 html/bg.png delete mode 100644 html/favicon.svg delete mode 100644 html/html.meta.json.gz delete mode 100644 html/index.html diff --git a/html/assets/index--EAEh9Ei.js b/html/assets/index--EAEh9Ei.js deleted file mode 100644 index ab3867b..0000000 --- a/html/assets/index--EAEh9Ei.js +++ /dev/null @@ -1,52 +0,0 @@ -var H_=Object.defineProperty;var q_=(e,t,r)=>t in e?H_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var ls=(e,t,r)=>q_(e,typeof t!="symbol"?t+"":t,r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const f of c.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&o(f)}).observe(document,{childList:!0,subtree:!0});function r(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function o(s){if(s.ep)return;s.ep=!0;const c=r(s);fetch(s.href,c)}})();/** -* @vue/shared v3.4.33 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function oh(e,t){const r=new Set(e.split(","));return o=>r.has(o)}const St={},ds=[],Jn=()=>{},B_=()=>!1,cu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),sh=e=>e.startsWith("onUpdate:"),Gt=Object.assign,lh=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},W_=Object.prototype.hasOwnProperty,ct=(e,t)=>W_.call(e,t),Ie=Array.isArray,hs=e=>ia(e)==="[object Map]",uu=e=>ia(e)==="[object Set]",cv=e=>ia(e)==="[object Date]",Xe=e=>typeof e=="function",$t=e=>typeof e=="string",Dr=e=>typeof e=="symbol",xt=e=>e!==null&&typeof e=="object",P0=e=>(xt(e)||Xe(e))&&Xe(e.then)&&Xe(e.catch),R0=Object.prototype.toString,ia=e=>R0.call(e),U_=e=>ia(e).slice(8,-1),D0=e=>ia(e)==="[object Object]",ah=e=>$t(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_l=oh(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fu=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},V_=/-(\w)/g,nr=fu(e=>e.replace(V_,(t,r)=>r?r.toUpperCase():"")),j_=/\B([A-Z])/g,ui=fu(e=>e.replace(j_,"-$1").toLowerCase()),du=fu(e=>e.charAt(0).toUpperCase()+e.slice(1)),mc=fu(e=>e?`on${du(e)}`:""),zr=(e,t)=>!Object.is(e,t),yc=(e,...t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:r})},cd=e=>{const t=parseFloat(e);return isNaN(t)?e:t},I0=e=>{const t=$t(e)?Number(e):NaN;return isNaN(t)?e:t};let uv;const F0=()=>uv||(uv=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zt(e){if(Ie(e)){const t={};for(let r=0;r{if(r){const o=r.split(K_);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function lt(e){let t="";if($t(e))t=e;else if(Ie(e))for(let r=0;rhu(r,t))}const B0=e=>!!(e&&e.__v_isRef===!0),qe=e=>$t(e)?e:e==null?"":Ie(e)||xt(e)&&(e.toString===R0||!Xe(e.toString))?B0(e)?qe(e.value):JSON.stringify(e,W0,2):String(e),W0=(e,t)=>B0(t)?W0(e,t.value):hs(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[o,s],c)=>(r[If(o,c)+" =>"]=s,r),{})}:uu(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>If(r))}:Dr(t)?If(t):xt(t)&&!Ie(t)&&!D0(t)?String(t):t,If=(e,t="")=>{var r;return Dr(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/** -* @vue/reactivity v3.4.33 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Wn;class tS{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Wn,!t&&Wn&&(this.index=(Wn.scopes||(Wn.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Wn;try{return Wn=this,t()}finally{Wn=r}}}on(){Wn=this}off(){Wn=this.parent}stop(t){if(this._active){let r,o;for(r=0,o=this.effects.length;r=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),to()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ui,r=Co;try{return Ui=!0,Co=this,this._runnings++,fv(this),this.fn()}finally{dv(this),this._runnings--,Co=r,Ui=t}}stop(){this.active&&(fv(this),dv(this),this.onStop&&this.onStop(),this.active=!1)}}function iS(e){return e.value}function fv(e){e._trackId++,e._depsLength=0}function dv(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const r=new Map;return r.cleanup=e,r.computed=t,r},Pc=new WeakMap,To=Symbol(""),dd=Symbol("");function zn(e,t,r){if(Ui&&Co){let o=Pc.get(e);o||Pc.set(e,o=new Map);let s=o.get(r);s||o.set(r,s=X0(()=>o.delete(r))),G0(Co,s)}}function ni(e,t,r,o,s,c){const f=Pc.get(e);if(!f)return;let d=[];if(t==="clear")d=[...f.values()];else if(r==="length"&&Ie(e)){const h=Number(o);f.forEach((g,v)=>{(v==="length"||!Dr(v)&&v>=h)&&d.push(g)})}else switch(r!==void 0&&d.push(f.get(r)),t){case"add":Ie(e)?ah(r)&&d.push(f.get("length")):(d.push(f.get(To)),hs(e)&&d.push(f.get(dd)));break;case"delete":Ie(e)||(d.push(f.get(To)),hs(e)&&d.push(f.get(dd)));break;case"set":hs(e)&&d.push(f.get(To));break}uh();for(const h of d)h&&K0(h,4);fh()}function oS(e,t){const r=Pc.get(e);return r&&r.get(t)}const sS=oh("__proto__,__v_isRef,__isVue"),Y0=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Dr)),hv=lS();function lS(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const o=pt(this);for(let c=0,f=this.length;c{e[t]=function(...r){eo(),uh();const o=pt(this)[t].apply(this,r);return fh(),to(),o}}),e}function aS(e){Dr(e)||(e=String(e));const t=pt(this);return zn(t,"has",e),t.hasOwnProperty(e)}class Z0{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,o){const s=this._isReadonly,c=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return c;if(r==="__v_raw")return o===(s?c?xS:ty:c?ey:Q0).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const f=Ie(t);if(!s){if(f&&ct(hv,r))return Reflect.get(hv,r,o);if(r==="hasOwnProperty")return aS}const d=Reflect.get(t,r,o);return(Dr(r)?Y0.has(r):sS(r))||(s||zn(t,"get",r),c)?d:Ot(d)?f&&ah(r)?d:d.value:xt(d)?s?oa(d):er(d):d}}class J0 extends Z0{constructor(t=!1){super(!1,t)}set(t,r,o,s){let c=t[r];if(!this._isShallow){const h=Lo(c);if(!_s(o)&&!Lo(o)&&(c=pt(c),o=pt(o)),!Ie(t)&&Ot(c)&&!Ot(o))return h?!1:(c.value=o,!0)}const f=Ie(t)&&ah(r)?Number(r)e,pu=e=>Reflect.getPrototypeOf(e);function Za(e,t,r=!1,o=!1){e=e.__v_raw;const s=pt(e),c=pt(t);r||(zr(t,c)&&zn(s,"get",t),zn(s,"get",c));const{has:f}=pu(s),d=o?dh:r?mh:zl;if(f.call(s,t))return d(e.get(t));if(f.call(s,c))return d(e.get(c));e!==s&&e.get(t)}function Ja(e,t=!1){const r=this.__v_raw,o=pt(r),s=pt(e);return t||(zr(e,s)&&zn(o,"has",e),zn(o,"has",s)),e===s?r.has(e):r.has(e)||r.has(s)}function Qa(e,t=!1){return e=e.__v_raw,!t&&zn(pt(e),"iterate",To),Reflect.get(e,"size",e)}function pv(e,t=!1){!t&&!_s(e)&&!Lo(e)&&(e=pt(e));const r=pt(this);return pu(r).has.call(r,e)||(r.add(e),ni(r,"add",e,e)),this}function gv(e,t,r=!1){!r&&!_s(t)&&!Lo(t)&&(t=pt(t));const o=pt(this),{has:s,get:c}=pu(o);let f=s.call(o,e);f||(e=pt(e),f=s.call(o,e));const d=c.call(o,e);return o.set(e,t),f?zr(t,d)&&ni(o,"set",e,t):ni(o,"add",e,t),this}function vv(e){const t=pt(this),{has:r,get:o}=pu(t);let s=r.call(t,e);s||(e=pt(e),s=r.call(t,e)),o&&o.call(t,e);const c=t.delete(e);return s&&ni(t,"delete",e,void 0),c}function mv(){const e=pt(this),t=e.size!==0,r=e.clear();return t&&ni(e,"clear",void 0,void 0),r}function ec(e,t){return function(o,s){const c=this,f=c.__v_raw,d=pt(f),h=t?dh:e?mh:zl;return!e&&zn(d,"iterate",To),f.forEach((g,v)=>o.call(s,h(g),h(v),c))}}function tc(e,t,r){return function(...o){const s=this.__v_raw,c=pt(s),f=hs(c),d=e==="entries"||e===Symbol.iterator&&f,h=e==="keys"&&f,g=s[e](...o),v=r?dh:t?mh:zl;return!t&&zn(c,"iterate",h?dd:To),{next(){const{value:y,done:b}=g.next();return b?{value:y,done:b}:{value:d?[v(y[0]),v(y[1])]:v(y),done:b}},[Symbol.iterator](){return this}}}}function Ei(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hS(){const e={get(c){return Za(this,c)},get size(){return Qa(this)},has:Ja,add:pv,set:gv,delete:vv,clear:mv,forEach:ec(!1,!1)},t={get(c){return Za(this,c,!1,!0)},get size(){return Qa(this)},has:Ja,add(c){return pv.call(this,c,!0)},set(c,f){return gv.call(this,c,f,!0)},delete:vv,clear:mv,forEach:ec(!1,!0)},r={get(c){return Za(this,c,!0)},get size(){return Qa(this,!0)},has(c){return Ja.call(this,c,!0)},add:Ei("add"),set:Ei("set"),delete:Ei("delete"),clear:Ei("clear"),forEach:ec(!0,!1)},o={get(c){return Za(this,c,!0,!0)},get size(){return Qa(this,!0)},has(c){return Ja.call(this,c,!0)},add:Ei("add"),set:Ei("set"),delete:Ei("delete"),clear:Ei("clear"),forEach:ec(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(c=>{e[c]=tc(c,!1,!1),r[c]=tc(c,!0,!1),t[c]=tc(c,!1,!0),o[c]=tc(c,!0,!0)}),[e,r,t,o]}const[pS,gS,vS,mS]=hS();function hh(e,t){const r=t?e?mS:vS:e?gS:pS;return(o,s,c)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?o:Reflect.get(ct(r,s)&&s in o?r:o,s,c)}const yS={get:hh(!1,!1)},bS={get:hh(!1,!0)},wS={get:hh(!0,!1)};const Q0=new WeakMap,ey=new WeakMap,ty=new WeakMap,xS=new WeakMap;function _S(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function SS(e){return e.__v_skip||!Object.isExtensible(e)?0:_S(U_(e))}function er(e){return Lo(e)?e:gh(e,!1,uS,yS,Q0)}function ph(e){return gh(e,!1,dS,bS,ey)}function oa(e){return gh(e,!0,fS,wS,ty)}function gh(e,t,r,o,s){if(!xt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const c=s.get(e);if(c)return c;const f=SS(e);if(f===0)return e;const d=new Proxy(e,f===2?o:r);return s.set(e,d),d}function Sl(e){return Lo(e)?Sl(e.__v_raw):!!(e&&e.__v_isReactive)}function Lo(e){return!!(e&&e.__v_isReadonly)}function _s(e){return!!(e&&e.__v_isShallow)}function ny(e){return e?!!e.__v_raw:!1}function pt(e){const t=e&&e.__v_raw;return t?pt(t):e}function vh(e){return Object.isExtensible(e)&&z0(e,"__v_skip",!0),e}const zl=e=>xt(e)?er(e):e,mh=e=>xt(e)?oa(e):e;class ry{constructor(t,r,o,s){this.getter=t,this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ch(()=>t(this._value),()=>kl(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=o}get value(){const t=pt(this);return(!t._cacheable||t.effect.dirty)&&zr(t._value,t._value=t.effect.run())&&kl(t,4),yh(t),t.effect._dirtyLevel>=2&&kl(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function kS(e,t,r=!1){let o,s;const c=Xe(e);return c?(o=e,s=Jn):(o=e.get,s=e.set),new ry(o,s,c||!s,r)}function yh(e){var t;Ui&&Co&&(e=pt(e),G0(Co,(t=e.dep)!=null?t:e.dep=X0(()=>e.dep=void 0,e instanceof ry?e:void 0)))}function kl(e,t=4,r,o){e=pt(e);const s=e.dep;s&&K0(s,t)}function Ot(e){return!!(e&&e.__v_isRef===!0)}function Be(e){return iy(e,!1)}function Fr(e){return iy(e,!0)}function iy(e,t){return Ot(e)?e:new CS(e,t)}class CS{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:pt(t),this._value=r?t:zl(t)}get value(){return yh(this),this._value}set value(t){const r=this.__v_isShallow||_s(t)||Lo(t);t=r?t:pt(t),zr(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=r?t:zl(t),kl(this,4))}}function q(e){return Ot(e)?e.value:e}const TS={get:(e,t,r)=>q(Reflect.get(e,t,r)),set:(e,t,r,o)=>{const s=e[t];return Ot(s)&&!Ot(r)?(s.value=r,!0):Reflect.set(e,t,r,o)}};function oy(e){return Sl(e)?e:new Proxy(e,TS)}class ES{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:r,set:o}=t(()=>yh(this),()=>kl(this));this._get=r,this._set=o}get value(){return this._get()}set value(t){this._set(t)}}function sy(e){return new ES(e)}function LS(e){const t=Ie(e)?new Array(e.length):{};for(const r in e)t[r]=ly(e,r);return t}class AS{constructor(t,r,o){this._object=t,this._key=r,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return oS(pt(this._object),this._key)}}class MS{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function gu(e,t,r){return Ot(e)?e:Xe(e)?new MS(e):xt(e)&&arguments.length>1?ly(e,t,r):Be(e)}function ly(e,t,r){const o=e[t];return Ot(o)?o:new AS(e,t,r)}/** -* @vue/runtime-core v3.4.33 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Vi(e,t,r,o){try{return o?e(...o):e()}catch(s){sa(s,t,r)}}function tr(e,t,r,o){if(Xe(e)){const s=Vi(e,t,r,o);return s&&P0(s)&&s.catch(c=>{sa(c,t,r)}),s}if(Ie(e)){const s=[];for(let c=0;c>>1,s=un[o],c=Fl(s);cMr&&un.splice(t,1)}function pd(e){Ie(e)?ps.push(...e):(!Pi||!Pi.includes(e,e.allowRecurse?xo+1:xo))&&ps.push(e),cy()}function yv(e,t,r=Il?Mr+1:0){for(;rFl(r)-Fl(o));if(ps.length=0,Pi){Pi.push(...t);return}for(Pi=t,xo=0;xoe.id==null?1/0:e.id,PS=(e,t)=>{const r=Fl(e)-Fl(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function fy(e){hd=!1,Il=!0,un.sort(PS);try{for(Mr=0;Mrst;function st(e,t=Yt,r){if(!t||e._n)return e;const o=(...s)=>{o._d&&Hc(-1);const c=Rc(t);let f;try{f=e(...s)}finally{Rc(c),o._d&&Hc(1)}return f};return o._n=!0,o._c=!0,o._d=!0,o}function _t(e,t){if(Yt===null)return e;const r=ku(Yt),o=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),yy(()=>{e.isUnmounting=!0}),e}const Yn=[Function,Array],hy={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Yn,onEnter:Yn,onAfterEnter:Yn,onEnterCancelled:Yn,onBeforeLeave:Yn,onLeave:Yn,onAfterLeave:Yn,onLeaveCancelled:Yn,onBeforeAppear:Yn,onAppear:Yn,onAfterAppear:Yn,onAppearCancelled:Yn},py=e=>{const t=e.subTree;return t.component?py(t.component):t},DS={name:"BaseTransition",props:hy,setup(e,{slots:t}){const r=ca(),o=RS();return()=>{const s=t.default&&vy(t.default(),!0);if(!s||!s.length)return;let c=s[0];if(s.length>1){for(const b of s)if(b.type!==fn){c=b;break}}const f=pt(e),{mode:d}=f;if(o.isLeaving)return Ff(c);const h=bv(c);if(!h)return Ff(c);let g=gd(h,f,o,r,b=>g=b);Dc(h,g);const v=r.subTree,y=v&&bv(v);if(y&&y.type!==fn&&!Nr(h,y)&&py(r).type!==fn){const b=gd(y,f,o,r);if(Dc(y,b),d==="out-in"&&h.type!==fn)return o.isLeaving=!0,b.afterLeave=()=>{o.isLeaving=!1,r.update.active!==!1&&(r.effect.dirty=!0,r.update())},Ff(c);d==="in-out"&&h.type!==fn&&(b.delayLeave=(x,T,E)=>{const M=gy(o,y);M[String(y.key)]=y,x[Ri]=()=>{T(),x[Ri]=void 0,delete g.delayedLeave},g.delayedLeave=E})}return c}}},zS=DS;function gy(e,t){const{leavingVNodes:r}=e;let o=r.get(t.type);return o||(o=Object.create(null),r.set(t.type,o)),o}function gd(e,t,r,o,s){const{appear:c,mode:f,persisted:d=!1,onBeforeEnter:h,onEnter:g,onAfterEnter:v,onEnterCancelled:y,onBeforeLeave:b,onLeave:x,onAfterLeave:T,onLeaveCancelled:E,onBeforeAppear:M,onAppear:N,onAfterAppear:L,onAppearCancelled:O}=t,A=String(e.key),H=gy(r,e),z=(te,j)=>{te&&tr(te,o,9,j)},J=(te,j)=>{const ne=j[1];z(te,j),Ie(te)?te.every(K=>K.length<=1)&&ne():te.length<=1&&ne()},re={mode:f,persisted:d,beforeEnter(te){let j=h;if(!r.isMounted)if(c)j=M||h;else return;te[Ri]&&te[Ri](!0);const ne=H[A];ne&&Nr(e,ne)&&ne.el[Ri]&&ne.el[Ri](),z(j,[te])},enter(te){let j=g,ne=v,K=y;if(!r.isMounted)if(c)j=N||g,ne=L||v,K=O||y;else return;let V=!1;const I=te[nc]=k=>{V||(V=!0,k?z(K,[te]):z(ne,[te]),re.delayedLeave&&re.delayedLeave(),te[nc]=void 0)};j?J(j,[te,I]):I()},leave(te,j){const ne=String(e.key);if(te[nc]&&te[nc](!0),r.isUnmounting)return j();z(b,[te]);let K=!1;const V=te[Ri]=I=>{K||(K=!0,j(),I?z(E,[te]):z(T,[te]),te[Ri]=void 0,H[ne]===e&&delete H[ne])};H[ne]=e,x?J(x,[te,V]):V()},clone(te){const j=gd(te,t,r,o,s);return s&&s(j),j}};return re}function Ff(e){if(mu(e))return e=Ki(e),e.children=null,e}function bv(e){if(!mu(e))return e;const{shapeFlag:t,children:r}=e;if(r){if(t&16)return r[0];if(t&32&&Xe(r.default))return r.default()}}function Dc(e,t){e.shapeFlag&6&&e.component?Dc(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function vy(e,t=!1,r){let o=[],s=0;for(let c=0;c1)for(let c=0;c!!e.type.__asyncLoader,mu=e=>e.type.__isKeepAlive;function IS(e,t){my(e,"a",t)}function FS(e,t){my(e,"da",t)}function my(e,t,r=sn){const o=e.__wdc||(e.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(yu(t,o,r),r){let s=r.parent;for(;s&&s.parent;)mu(s.parent.vnode)&&HS(o,t,r,s),s=s.parent}}function HS(e,t,r,o){const s=yu(t,e,o,!0);bu(()=>{lh(o[t],s)},r)}function yu(e,t,r=sn,o=!1){if(r){const s=r[e]||(r[e]=[]),c=t.__weh||(t.__weh=(...f)=>{eo();const d=ua(r),h=tr(t,r,e,f);return d(),to(),h});return o?s.unshift(c):s.push(c),c}}const fi=e=>(t,r=sn)=>{(!Su||e==="sp")&&yu(e,(...o)=>t(...o),r)},qS=fi("bm"),Os=fi("m"),BS=fi("bu"),WS=fi("u"),yy=fi("bum"),bu=fi("um"),US=fi("sp"),VS=fi("rtg"),jS=fi("rtc");function GS(e,t=sn){yu("ec",e,t)}const xh="components",KS="directives";function Ao(e,t){return _h(xh,e,!0,t)||e}const by=Symbol.for("v-ndc");function wv(e){return $t(e)?_h(xh,e,!1)||e:e||by}function Hr(e){return _h(KS,e)}function _h(e,t,r=!0,o=!1){const s=Yt||sn;if(s){const c=s.type;if(e===xh){const d=Wk(c,!1);if(d&&(d===t||d===nr(t)||d===du(nr(t))))return c}const f=xv(s[e]||c[e],t)||xv(s.appContext[e],t);return!f&&o?c:f}}function xv(e,t){return e&&(e[t]||e[nr(t)]||e[du(nr(t))])}function si(e,t,r,o){let s;const c=r;if(Ie(e)||$t(e)){s=new Array(e.length);for(let f=0,d=e.length;ft(f,d,void 0,c));else{const f=Object.keys(e);s=new Array(f.length);for(let d=0,h=f.length;d{const c=o.fn(...s);return c&&(c.key=o.key),c}:o.fn)}return e}function dn(e,t,r={},o,s){if(Yt.isCE||Yt.parent&&Cl(Yt.parent)&&Yt.parent.isCE)return t!=="default"&&(r.name=t),Oe("slot",r,o&&o());let c=e[t];c&&c._c&&(c._d=!1),oe();const f=c&&wy(c(r)),d=ot(ut,{key:(r.key||f&&f.key||`_${t}`)+(!f&&o?"_fb":"")},f||(o?o():[]),f&&e._===1?64:-2);return d.scopeId&&(d.slotScopeIds=[d.scopeId+"-s"]),c&&c._c&&(c._d=!0),d}function wy(e){return e.some(t=>ql(t)?!(t.type===fn||t.type===ut&&!wy(t.children)):!0)?e:null}function YS(e,t){const r={};for(const o in e)r[mc(o)]=e[o];return r}const vd=e=>e?Wy(e)?ku(e):vd(e.parent):null,Tl=Gt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>vd(e.parent),$root:e=>vd(e.root),$emit:e=>e.emit,$options:e=>Sh(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,wh(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>_k.bind(e)}),Hf=(e,t)=>e!==St&&!e.__isScriptSetup&&ct(e,t),ZS={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:o,data:s,props:c,accessCache:f,type:d,appContext:h}=e;let g;if(t[0]!=="$"){const x=f[t];if(x!==void 0)switch(x){case 1:return o[t];case 2:return s[t];case 4:return r[t];case 3:return c[t]}else{if(Hf(o,t))return f[t]=1,o[t];if(s!==St&&ct(s,t))return f[t]=2,s[t];if((g=e.propsOptions[0])&&ct(g,t))return f[t]=3,c[t];if(r!==St&&ct(r,t))return f[t]=4,r[t];md&&(f[t]=0)}}const v=Tl[t];let y,b;if(v)return t==="$attrs"&&zn(e.attrs,"get",""),v(e);if((y=d.__cssModules)&&(y=y[t]))return y;if(r!==St&&ct(r,t))return f[t]=4,r[t];if(b=h.config.globalProperties,ct(b,t))return b[t]},set({_:e},t,r){const{data:o,setupState:s,ctx:c}=e;return Hf(s,t)?(s[t]=r,!0):o!==St&&ct(o,t)?(o[t]=r,!0):ct(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(c[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:o,appContext:s,propsOptions:c}},f){let d;return!!r[f]||e!==St&&ct(e,f)||Hf(t,f)||(d=c[0])&&ct(d,f)||ct(o,f)||ct(Tl,f)||ct(s.config.globalProperties,f)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:ct(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function JS(){return QS().attrs}function QS(){const e=ca();return e.setupContext||(e.setupContext=Vy(e))}function zc(e){return Ie(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}function Ic(e,t){return!e||!t?e||t:Ie(e)&&Ie(t)?e.concat(t):Gt({},zc(e),zc(t))}let md=!0;function ek(e){const t=Sh(e),r=e.proxy,o=e.ctx;md=!1,t.beforeCreate&&_v(t.beforeCreate,e,"bc");const{data:s,computed:c,methods:f,watch:d,provide:h,inject:g,created:v,beforeMount:y,mounted:b,beforeUpdate:x,updated:T,activated:E,deactivated:M,beforeDestroy:N,beforeUnmount:L,destroyed:O,unmounted:A,render:H,renderTracked:z,renderTriggered:J,errorCaptured:re,serverPrefetch:te,expose:j,inheritAttrs:ne,components:K,directives:V,filters:I}=t;if(g&&tk(g,o,null),f)for(const W in f){const ie=f[W];Xe(ie)&&(o[W]=ie.bind(r))}if(s){const W=s.call(r,r);xt(W)&&(e.data=er(W))}if(md=!0,c)for(const W in c){const ie=c[W],ye=Xe(ie)?ie.bind(r,r):Xe(ie.get)?ie.get.bind(r,r):Jn,Ne=!Xe(ie)&&Xe(ie.set)?ie.set.bind(r):Jn,We=Me({get:ye,set:Ne});Object.defineProperty(o,W,{enumerable:!0,configurable:!0,get:()=>We.value,set:je=>We.value=je})}if(d)for(const W in d)xy(d[W],o,r,W);if(h){const W=Xe(h)?h.call(r):h;Reflect.ownKeys(W).forEach(ie=>{bc(ie,W[ie])})}v&&_v(v,e,"c");function B(W,ie){Ie(ie)?ie.forEach(ye=>W(ye.bind(r))):ie&&W(ie.bind(r))}if(B(qS,y),B(Os,b),B(BS,x),B(WS,T),B(IS,E),B(FS,M),B(GS,re),B(jS,z),B(VS,J),B(yy,L),B(bu,A),B(US,te),Ie(j))if(j.length){const W=e.exposed||(e.exposed={});j.forEach(ie=>{Object.defineProperty(W,ie,{get:()=>r[ie],set:ye=>r[ie]=ye})})}else e.exposed||(e.exposed={});H&&e.render===Jn&&(e.render=H),ne!=null&&(e.inheritAttrs=ne),K&&(e.components=K),V&&(e.directives=V)}function tk(e,t,r=Jn){Ie(e)&&(e=yd(e));for(const o in e){const s=e[o];let c;xt(s)?"default"in s?c=ri(s.from||o,s.default,!0):c=ri(s.from||o):c=ri(s),Ot(c)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>c.value,set:f=>c.value=f}):t[o]=c}}function _v(e,t,r){tr(Ie(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,r)}function xy(e,t,r,o){const s=o.includes(".")?Py(r,o):()=>r[o];if($t(e)){const c=t[e];Xe(c)&&Ht(s,c)}else if(Xe(e))Ht(s,e.bind(r));else if(xt(e))if(Ie(e))e.forEach(c=>xy(c,t,r,o));else{const c=Xe(e.handler)?e.handler.bind(r):t[e.handler];Xe(c)&&Ht(s,c,e)}}function Sh(e){const t=e.type,{mixins:r,extends:o}=t,{mixins:s,optionsCache:c,config:{optionMergeStrategies:f}}=e.appContext,d=c.get(t);let h;return d?h=d:!s.length&&!r&&!o?h=t:(h={},s.length&&s.forEach(g=>Fc(h,g,f,!0)),Fc(h,t,f)),xt(t)&&c.set(t,h),h}function Fc(e,t,r,o=!1){const{mixins:s,extends:c}=t;c&&Fc(e,c,r,!0),s&&s.forEach(f=>Fc(e,f,r,!0));for(const f in t)if(!(o&&f==="expose")){const d=nk[f]||r&&r[f];e[f]=d?d(e[f],t[f]):t[f]}return e}const nk={data:Sv,props:kv,emits:kv,methods:yl,computed:yl,beforeCreate:xn,created:xn,beforeMount:xn,mounted:xn,beforeUpdate:xn,updated:xn,beforeDestroy:xn,beforeUnmount:xn,destroyed:xn,unmounted:xn,activated:xn,deactivated:xn,errorCaptured:xn,serverPrefetch:xn,components:yl,directives:yl,watch:ik,provide:Sv,inject:rk};function Sv(e,t){return t?e?function(){return Gt(Xe(e)?e.call(this,this):e,Xe(t)?t.call(this,this):t)}:t:e}function rk(e,t){return yl(yd(e),yd(t))}function yd(e){if(Ie(e)){const t={};for(let r=0;r1)return r&&Xe(t)?t.call(o&&o.proxy):t}}const Sy={},ky=()=>Object.create(Sy),Cy=e=>Object.getPrototypeOf(e)===Sy;function lk(e,t,r,o=!1){const s={},c=ky();e.propsDefaults=Object.create(null),Ty(e,t,s,c);for(const f in e.propsOptions[0])f in s||(s[f]=void 0);r?e.props=o?s:ph(s):e.type.props?e.props=s:e.props=c,e.attrs=c}function ak(e,t,r,o){const{props:s,attrs:c,vnode:{patchFlag:f}}=e,d=pt(s),[h]=e.propsOptions;let g=!1;if((o||f>0)&&!(f&16)){if(f&8){const v=e.vnode.dynamicProps;for(let y=0;y{h=!0;const[b,x]=Ey(y,t,!0);Gt(f,b),x&&d.push(...x)};!r&&t.mixins.length&&t.mixins.forEach(v),e.extends&&v(e.extends),e.mixins&&e.mixins.forEach(v)}if(!c&&!h)return xt(e)&&o.set(e,ds),ds;if(Ie(c))for(let v=0;v-1,x[1]=E<0||T-1||ct(x,"default"))&&d.push(y)}}}const g=[f,d];return xt(e)&&o.set(e,g),g}function Cv(e){return e[0]!=="$"&&!_l(e)}function Tv(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Ev(e,t){return Tv(e)===Tv(t)}function Lv(e,t){return Ie(t)?t.findIndex(r=>Ev(r,e)):Xe(t)&&Ev(t,e)?0:-1}const Ly=e=>e[0]==="_"||e==="$stable",kh=e=>Ie(e)?e.map(mr):[mr(e)],uk=(e,t,r)=>{if(t._n)return t;const o=st((...s)=>kh(t(...s)),r);return o._c=!1,o},Ay=(e,t,r)=>{const o=e._ctx;for(const s in e){if(Ly(s))continue;const c=e[s];if(Xe(c))t[s]=uk(s,c,o);else if(c!=null){const f=kh(c);t[s]=()=>f}}},My=(e,t)=>{const r=kh(t);e.slots.default=()=>r},Ny=(e,t,r)=>{for(const o in t)(r||o!=="_")&&(e[o]=t[o])},fk=(e,t,r)=>{const o=e.slots=ky();if(e.vnode.shapeFlag&32){const s=t._;s?(Ny(o,t,r),r&&z0(o,"_",s,!0)):Ay(t,o)}else t&&My(e,t)},dk=(e,t,r)=>{const{vnode:o,slots:s}=e;let c=!0,f=St;if(o.shapeFlag&32){const d=t._;d?r&&d===1?c=!1:Ny(s,t,r):(c=!t.$stable,Ay(t,s)),f=t}else t&&(My(e,t),f={default:1});if(c)for(const d in s)!Ly(d)&&f[d]==null&&delete s[d]};function wd(e,t,r,o,s=!1){if(Ie(e)){e.forEach((b,x)=>wd(b,t&&(Ie(t)?t[x]:t),r,o,s));return}if(Cl(o)&&!s)return;const c=o.shapeFlag&4?ku(o.component):o.el,f=s?null:c,{i:d,r:h}=e,g=t&&t.r,v=d.refs===St?d.refs={}:d.refs,y=d.setupState;if(g!=null&&g!==h&&($t(g)?(v[g]=null,ct(y,g)&&(y[g]=null)):Ot(g)&&(g.value=null)),Xe(h))Vi(h,d,12,[f,v]);else{const b=$t(h),x=Ot(h);if(b||x){const T=()=>{if(e.f){const E=b?ct(y,h)?y[h]:v[h]:h.value;s?Ie(E)&&lh(E,c):Ie(E)?E.includes(c)||E.push(c):b?(v[h]=[c],ct(y,h)&&(y[h]=v[h])):(h.value=[c],e.k&&(v[e.k]=h.value))}else b?(v[h]=f,ct(y,h)&&(y[h]=f)):x&&(h.value=f,e.k&&(v[e.k]=f))};f?(T.id=-1,Nn(T,r)):T()}}}const hk=Symbol("_vte"),pk=e=>e.__isTeleport,Nn=Pk;function gk(e){return vk(e)}function vk(e,t){const r=F0();r.__VUE__=!0;const{insert:o,remove:s,patchProp:c,createElement:f,createText:d,createComment:h,setText:g,setElementText:v,parentNode:y,nextSibling:b,setScopeId:x=Jn,insertStaticContent:T}=e,E=(P,F,Z,ue=null,le=null,he=null,Se=void 0,fe=null,xe=!!F.dynamicChildren)=>{if(P===F)return;P&&!Nr(P,F)&&(ue=X(P),je(P,le,he,!0),P=null),F.patchFlag===-2&&(xe=!1,F.dynamicChildren=null);const{type:pe,ref:Ae,shapeFlag:ze}=F;switch(pe){case _u:M(P,F,Z,ue);break;case fn:N(P,F,Z,ue);break;case Wf:P==null&&L(F,Z,ue,Se);break;case ut:K(P,F,Z,ue,le,he,Se,fe,xe);break;default:ze&1?H(P,F,Z,ue,le,he,Se,fe,xe):ze&6?V(P,F,Z,ue,le,he,Se,fe,xe):(ze&64||ze&128)&&pe.process(P,F,Z,ue,le,he,Se,fe,xe,$e)}Ae!=null&&le&&wd(Ae,P&&P.ref,he,F||P,!F)},M=(P,F,Z,ue)=>{if(P==null)o(F.el=d(F.children),Z,ue);else{const le=F.el=P.el;F.children!==P.children&&g(le,F.children)}},N=(P,F,Z,ue)=>{P==null?o(F.el=h(F.children||""),Z,ue):F.el=P.el},L=(P,F,Z,ue)=>{[P.el,P.anchor]=T(P.children,F,Z,ue,P.el,P.anchor)},O=({el:P,anchor:F},Z,ue)=>{let le;for(;P&&P!==F;)le=b(P),o(P,Z,ue),P=le;o(F,Z,ue)},A=({el:P,anchor:F})=>{let Z;for(;P&&P!==F;)Z=b(P),s(P),P=Z;s(F)},H=(P,F,Z,ue,le,he,Se,fe,xe)=>{F.type==="svg"?Se="svg":F.type==="math"&&(Se="mathml"),P==null?z(F,Z,ue,le,he,Se,fe,xe):te(P,F,le,he,Se,fe,xe)},z=(P,F,Z,ue,le,he,Se,fe)=>{let xe,pe;const{props:Ae,shapeFlag:ze,transition:Re,dirs:Ue}=P;if(xe=P.el=f(P.type,he,Ae&&Ae.is,Ae),ze&8?v(xe,P.children):ze&16&&re(P.children,xe,null,ue,le,qf(P,he),Se,fe),Ue&&go(P,null,ue,"created"),J(xe,P,P.scopeId,Se,ue),Ae){for(const vt in Ae)vt!=="value"&&!_l(vt)&&c(xe,vt,null,Ae[vt],he,ue);"value"in Ae&&c(xe,"value",null,Ae.value,he),(pe=Ae.onVnodeBeforeMount)&&Ar(pe,ue,P)}Ue&&go(P,null,ue,"beforeMount");const Ge=mk(le,Re);Ge&&Re.beforeEnter(xe),o(xe,F,Z),((pe=Ae&&Ae.onVnodeMounted)||Ge||Ue)&&Nn(()=>{pe&&Ar(pe,ue,P),Ge&&Re.enter(xe),Ue&&go(P,null,ue,"mounted")},le)},J=(P,F,Z,ue,le)=>{if(Z&&x(P,Z),ue)for(let he=0;he{for(let pe=xe;pe{const fe=F.el=P.el;let{patchFlag:xe,dynamicChildren:pe,dirs:Ae}=F;xe|=P.patchFlag&16;const ze=P.props||St,Re=F.props||St;let Ue;if(Z&&vo(Z,!1),(Ue=Re.onVnodeBeforeUpdate)&&Ar(Ue,Z,F,P),Ae&&go(F,P,Z,"beforeUpdate"),Z&&vo(Z,!0),(ze.innerHTML&&Re.innerHTML==null||ze.textContent&&Re.textContent==null)&&v(fe,""),pe?j(P.dynamicChildren,pe,fe,Z,ue,qf(F,le),he):Se||ie(P,F,fe,null,Z,ue,qf(F,le),he,!1),xe>0){if(xe&16)ne(fe,ze,Re,Z,le);else if(xe&2&&ze.class!==Re.class&&c(fe,"class",null,Re.class,le),xe&4&&c(fe,"style",ze.style,Re.style,le),xe&8){const Ge=F.dynamicProps;for(let vt=0;vt{Ue&&Ar(Ue,Z,F,P),Ae&&go(F,P,Z,"updated")},ue)},j=(P,F,Z,ue,le,he,Se)=>{for(let fe=0;fe{if(F!==Z){if(F!==St)for(const he in F)!_l(he)&&!(he in Z)&&c(P,he,F[he],null,le,ue);for(const he in Z){if(_l(he))continue;const Se=Z[he],fe=F[he];Se!==fe&&he!=="value"&&c(P,he,fe,Se,le,ue)}"value"in Z&&c(P,"value",F.value,Z.value,le)}},K=(P,F,Z,ue,le,he,Se,fe,xe)=>{const pe=F.el=P?P.el:d(""),Ae=F.anchor=P?P.anchor:d("");let{patchFlag:ze,dynamicChildren:Re,slotScopeIds:Ue}=F;Ue&&(fe=fe?fe.concat(Ue):Ue),P==null?(o(pe,Z,ue),o(Ae,Z,ue),re(F.children||[],Z,Ae,le,he,Se,fe,xe)):ze>0&&ze&64&&Re&&P.dynamicChildren?(j(P.dynamicChildren,Re,Z,le,he,Se,fe),(F.key!=null||le&&F===le.subTree)&&$y(P,F,!0)):ie(P,F,Z,Ae,le,he,Se,fe,xe)},V=(P,F,Z,ue,le,he,Se,fe,xe)=>{F.slotScopeIds=fe,P==null?F.shapeFlag&512?le.ctx.activate(F,Z,ue,Se,xe):I(F,Z,ue,le,he,Se,xe):k(P,F,xe)},I=(P,F,Z,ue,le,he,Se)=>{const fe=P.component=Fk(P,ue,le);if(mu(P)&&(fe.ctx.renderer=$e),Hk(fe,!1,Se),fe.asyncDep){if(le&&le.registerDep(fe,B,Se),!P.el){const xe=fe.subTree=Oe(fn);N(null,xe,F,Z)}}else B(fe,P,F,Z,le,he,Se)},k=(P,F,Z)=>{const ue=F.component=P.component;if(Ek(P,F,Z))if(ue.asyncDep&&!ue.asyncResolved){W(ue,F,Z);return}else ue.next=F,OS(ue.update),ue.effect.dirty=!0,ue.update();else F.el=P.el,ue.vnode=F},B=(P,F,Z,ue,le,he,Se)=>{const fe=()=>{if(P.isMounted){let{next:Ae,bu:ze,u:Re,parent:Ue,vnode:Ge}=P;{const Jt=Oy(P);if(Jt){Ae&&(Ae.el=Ge.el,W(P,Ae,Se)),Jt.asyncDep.then(()=>{P.isUnmounted||fe()});return}}let vt=Ae,tt;vo(P,!1),Ae?(Ae.el=Ge.el,W(P,Ae,Se)):Ae=Ge,ze&&yc(ze),(tt=Ae.props&&Ae.props.onVnodeBeforeUpdate)&&Ar(tt,Ue,Ae,Ge),vo(P,!0);const nt=Bf(P),It=P.subTree;P.subTree=nt,E(It,nt,y(It.el),X(It),P,le,he),Ae.el=nt.el,vt===null&&Eh(P,nt.el),Re&&Nn(Re,le),(tt=Ae.props&&Ae.props.onVnodeUpdated)&&Nn(()=>Ar(tt,Ue,Ae,Ge),le)}else{let Ae;const{el:ze,props:Re}=F,{bm:Ue,m:Ge,parent:vt}=P,tt=Cl(F);if(vo(P,!1),Ue&&yc(Ue),!tt&&(Ae=Re&&Re.onVnodeBeforeMount)&&Ar(Ae,vt,F),vo(P,!0),ze&&Ye){const nt=()=>{P.subTree=Bf(P),Ye(ze,P.subTree,P,le,null)};tt?F.type.__asyncLoader().then(()=>!P.isUnmounted&&nt()):nt()}else{const nt=P.subTree=Bf(P);E(null,nt,Z,ue,P,le,he),F.el=nt.el}if(Ge&&Nn(Ge,le),!tt&&(Ae=Re&&Re.onVnodeMounted)){const nt=F;Nn(()=>Ar(Ae,vt,nt),le)}(F.shapeFlag&256||vt&&Cl(vt.vnode)&&vt.vnode.shapeFlag&256)&&P.a&&Nn(P.a,le),P.isMounted=!0,F=Z=ue=null}},xe=P.effect=new ch(fe,Jn,()=>wh(pe),P.scope),pe=P.update=()=>{xe.dirty&&xe.run()};pe.i=P,pe.id=P.uid,vo(P,!0),pe()},W=(P,F,Z)=>{F.component=P;const ue=P.vnode.props;P.vnode=F,P.next=null,ak(P,F.props,ue,Z),dk(P,F.children,Z),eo(),yv(P),to()},ie=(P,F,Z,ue,le,he,Se,fe,xe=!1)=>{const pe=P&&P.children,Ae=P?P.shapeFlag:0,ze=F.children,{patchFlag:Re,shapeFlag:Ue}=F;if(Re>0){if(Re&128){Ne(pe,ze,Z,ue,le,he,Se,fe,xe);return}else if(Re&256){ye(pe,ze,Z,ue,le,he,Se,fe,xe);return}}Ue&8?(Ae&16&&Ee(pe,le,he),ze!==pe&&v(Z,ze)):Ae&16?Ue&16?Ne(pe,ze,Z,ue,le,he,Se,fe,xe):Ee(pe,le,he,!0):(Ae&8&&v(Z,""),Ue&16&&re(ze,Z,ue,le,he,Se,fe,xe))},ye=(P,F,Z,ue,le,he,Se,fe,xe)=>{P=P||ds,F=F||ds;const pe=P.length,Ae=F.length,ze=Math.min(pe,Ae);let Re;for(Re=0;ReAe?Ee(P,le,he,!0,!1,ze):re(F,Z,ue,le,he,Se,fe,xe,ze)},Ne=(P,F,Z,ue,le,he,Se,fe,xe)=>{let pe=0;const Ae=F.length;let ze=P.length-1,Re=Ae-1;for(;pe<=ze&&pe<=Re;){const Ue=P[pe],Ge=F[pe]=xe?Di(F[pe]):mr(F[pe]);if(Nr(Ue,Ge))E(Ue,Ge,Z,null,le,he,Se,fe,xe);else break;pe++}for(;pe<=ze&&pe<=Re;){const Ue=P[ze],Ge=F[Re]=xe?Di(F[Re]):mr(F[Re]);if(Nr(Ue,Ge))E(Ue,Ge,Z,null,le,he,Se,fe,xe);else break;ze--,Re--}if(pe>ze){if(pe<=Re){const Ue=Re+1,Ge=UeRe)for(;pe<=ze;)je(P[pe],le,he,!0),pe++;else{const Ue=pe,Ge=pe,vt=new Map;for(pe=Ge;pe<=Re;pe++){const Qt=F[pe]=xe?Di(F[pe]):mr(F[pe]);Qt.key!=null&&vt.set(Qt.key,pe)}let tt,nt=0;const It=Re-Ge+1;let Jt=!1,or=0;const Fn=new Array(It);for(pe=0;pe=It){je(Qt,le,he,!0);continue}let Ve;if(Qt.key!=null)Ve=vt.get(Qt.key);else for(tt=Ge;tt<=Re;tt++)if(Fn[tt-Ge]===0&&Nr(Qt,F[tt])){Ve=tt;break}Ve===void 0?je(Qt,le,he,!0):(Fn[Ve-Ge]=pe+1,Ve>=or?or=Ve:Jt=!0,E(Qt,F[Ve],Z,null,le,he,Se,fe,xe),nt++)}const sr=Jt?yk(Fn):ds;for(tt=sr.length-1,pe=It-1;pe>=0;pe--){const Qt=Ge+pe,Ve=F[Qt],no=Qt+1{const{el:he,type:Se,transition:fe,children:xe,shapeFlag:pe}=P;if(pe&6){We(P.component.subTree,F,Z,ue);return}if(pe&128){P.suspense.move(F,Z,ue);return}if(pe&64){Se.move(P,F,Z,$e);return}if(Se===ut){o(he,F,Z);for(let ze=0;zefe.enter(he),le);else{const{leave:ze,delayLeave:Re,afterLeave:Ue}=fe,Ge=()=>o(he,F,Z),vt=()=>{ze(he,()=>{Ge(),Ue&&Ue()})};Re?Re(he,Ge,vt):vt()}else o(he,F,Z)},je=(P,F,Z,ue=!1,le=!1)=>{const{type:he,props:Se,ref:fe,children:xe,dynamicChildren:pe,shapeFlag:Ae,patchFlag:ze,dirs:Re,cacheIndex:Ue}=P;if(ze===-2&&(le=!1),fe!=null&&wd(fe,null,Z,P,!0),Ue!=null&&(F.renderCache[Ue]=void 0),Ae&256){F.ctx.deactivate(P);return}const Ge=Ae&1&&Re,vt=!Cl(P);let tt;if(vt&&(tt=Se&&Se.onVnodeBeforeUnmount)&&Ar(tt,F,P),Ae&6)Ze(P.component,Z,ue);else{if(Ae&128){P.suspense.unmount(Z,ue);return}Ge&&go(P,null,F,"beforeUnmount"),Ae&64?P.type.remove(P,F,Z,$e,ue):pe&&!pe.hasOnce&&(he!==ut||ze>0&&ze&64)?Ee(pe,F,Z,!1,!0):(he===ut&&ze&384||!le&&Ae&16)&&Ee(xe,F,Z),ue&&it(P)}(vt&&(tt=Se&&Se.onVnodeUnmounted)||Ge)&&Nn(()=>{tt&&Ar(tt,F,P),Ge&&go(P,null,F,"unmounted")},Z)},it=P=>{const{type:F,el:Z,anchor:ue,transition:le}=P;if(F===ut){rt(Z,ue);return}if(F===Wf){A(P);return}const he=()=>{s(Z),le&&!le.persisted&&le.afterLeave&&le.afterLeave()};if(P.shapeFlag&1&&le&&!le.persisted){const{leave:Se,delayLeave:fe}=le,xe=()=>Se(Z,he);fe?fe(P.el,he,xe):xe()}else he()},rt=(P,F)=>{let Z;for(;P!==F;)Z=b(P),s(P),P=Z;s(F)},Ze=(P,F,Z)=>{const{bum:ue,scope:le,update:he,subTree:Se,um:fe,m:xe,a:pe}=P;Av(xe),Av(pe),ue&&yc(ue),le.stop(),he&&(he.active=!1,je(Se,P,F,Z)),fe&&Nn(fe,F),Nn(()=>{P.isUnmounted=!0},F),F&&F.pendingBranch&&!F.isUnmounted&&P.asyncDep&&!P.asyncResolved&&P.suspenseId===F.pendingId&&(F.deps--,F.deps===0&&F.resolve())},Ee=(P,F,Z,ue=!1,le=!1,he=0)=>{for(let Se=he;Se{if(P.shapeFlag&6)return X(P.component.subTree);if(P.shapeFlag&128)return P.suspense.next();const F=b(P.anchor||P.el),Z=F&&F[hk];return Z?b(Z):F};let ae=!1;const de=(P,F,Z)=>{P==null?F._vnode&&je(F._vnode,null,null,!0):E(F._vnode||null,P,F,null,null,null,Z),ae||(ae=!0,yv(),uy(),ae=!1),F._vnode=P},$e={p:E,um:je,m:We,r:it,mt:I,mc:re,pc:ie,pbc:j,n:X,o:e};let Te,Ye;return{render:de,hydrate:Te,createApp:sk(de,Te)}}function qf({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function vo({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function mk(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function $y(e,t,r=!1){const o=e.children,s=t.children;if(Ie(o)&&Ie(s))for(let c=0;c>1,e[r[d]]0&&(t[o]=r[c-1]),r[c]=o)}}for(c=r.length,f=r[c-1];c-- >0;)r[c]=f,f=t[f];return r}function Oy(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Oy(t)}function Av(e){if(e)for(let t=0;tri(bk);function Ch(e,t){return wu(e,null,t)}function xk(e,t){return wu(e,null,{flush:"sync"})}const rc={};function Ht(e,t,r){return wu(e,t,r)}function wu(e,t,{immediate:r,deep:o,flush:s,once:c,onTrack:f,onTrigger:d}=St){if(t&&c){const z=t;t=(...J)=>{z(...J),H()}}const h=sn,g=z=>o===!0?z:Hi(z,o===!1?1:void 0);let v,y=!1,b=!1;if(Ot(e)?(v=()=>e.value,y=_s(e)):Sl(e)?(v=()=>g(e),y=!0):Ie(e)?(b=!0,y=e.some(z=>Sl(z)||_s(z)),v=()=>e.map(z=>{if(Ot(z))return z.value;if(Sl(z))return g(z);if(Xe(z))return Vi(z,h,2)})):Xe(e)?t?v=()=>Vi(e,h,2):v=()=>(x&&x(),tr(e,h,3,[T])):v=Jn,t&&o){const z=v;v=()=>Hi(z())}let x,T=z=>{x=O.onStop=()=>{Vi(z,h,4),x=O.onStop=void 0}},E;if(Su)if(T=Jn,t?r&&tr(t,h,3,[v(),b?[]:void 0,T]):v(),s==="sync"){const z=wk();E=z.__watcherHandles||(z.__watcherHandles=[])}else return Jn;let M=b?new Array(e.length).fill(rc):rc;const N=()=>{if(!(!O.active||!O.dirty))if(t){const z=O.run();(o||y||(b?z.some((J,re)=>zr(J,M[re])):zr(z,M)))&&(x&&x(),tr(t,h,3,[z,M===rc?void 0:b&&M[0]===rc?[]:M,T]),M=z)}else O.run()};N.allowRecurse=!!t;let L;s==="sync"?L=N:s==="post"?L=()=>Nn(N,h&&h.suspense):(N.pre=!0,h&&(N.id=h.uid),L=()=>wh(N));const O=new ch(v,Jn,L),A=U0(),H=()=>{O.stop(),A&&lh(A.effects,O)};return t?r?N():M=O.run():s==="post"?Nn(O.run.bind(O),h&&h.suspense):O.run(),E&&E.push(H),H}function _k(e,t,r){const o=this.proxy,s=$t(e)?e.includes(".")?Py(o,e):()=>o[e]:e.bind(o,o);let c;Xe(t)?c=t:(c=t.handler,r=t);const f=ua(this),d=wu(s,c.bind(o),r);return f(),d}function Py(e,t){const r=t.split(".");return()=>{let o=e;for(let s=0;s{Hi(o,t,r)});else if(D0(e)){for(const o in e)Hi(e[o],t,r);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Hi(e[o],t,r)}return e}function Th(e,t,r=St){const o=ca(),s=nr(t),c=ui(t),f=Ry(e,t),d=sy((h,g)=>{let v,y,b;return xk(()=>{const x=e[t];zr(v,x)&&(v=x,g())}),{get(){return h(),r.get?r.get(v):v},set(x){if(!zr(x,v))return;const T=o.vnode.props;T&&(t in T||s in T||c in T)&&(`onUpdate:${t}`in T||`onUpdate:${s}`in T||`onUpdate:${c}`in T)||(v=x,g());const E=r.set?r.set(x):x;o.emit(`update:${t}`,E),x!==E&&x!==y&&E===b&&g(),y=x,b=E}}});return d[Symbol.iterator]=()=>{let h=0;return{next(){return h<2?{value:h++?f||St:d,done:!1}:{done:!0}}}},d}const Ry=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${nr(t)}Modifiers`]||e[`${ui(t)}Modifiers`];function Sk(e,t,...r){if(e.isUnmounted)return;const o=e.vnode.props||St;let s=r;const c=t.startsWith("update:"),f=c&&Ry(o,t.slice(7));f&&(f.trim&&(s=r.map(v=>$t(v)?v.trim():v)),f.number&&(s=r.map(cd)));let d,h=o[d=mc(t)]||o[d=mc(nr(t))];!h&&c&&(h=o[d=mc(ui(t))]),h&&tr(h,e,6,s);const g=o[d+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[d])return;e.emitted[d]=!0,tr(g,e,6,s)}}function Dy(e,t,r=!1){const o=t.emitsCache,s=o.get(e);if(s!==void 0)return s;const c=e.emits;let f={},d=!1;if(!Xe(e)){const h=g=>{const v=Dy(g,t,!0);v&&(d=!0,Gt(f,v))};!r&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}return!c&&!d?(xt(e)&&o.set(e,null),null):(Ie(c)?c.forEach(h=>f[h]=null):Gt(f,c),xt(e)&&o.set(e,f),f)}function xu(e,t){return!e||!cu(t)?!1:(t=t.slice(2).replace(/Once$/,""),ct(e,t[0].toLowerCase()+t.slice(1))||ct(e,ui(t))||ct(e,t))}function Bf(e){const{type:t,vnode:r,proxy:o,withProxy:s,propsOptions:[c],slots:f,attrs:d,emit:h,render:g,renderCache:v,props:y,data:b,setupState:x,ctx:T,inheritAttrs:E}=e,M=Rc(e);let N,L;try{if(r.shapeFlag&4){const A=s||o,H=A;N=mr(g.call(H,A,v,y,x,b,T)),L=d}else{const A=t;N=mr(A.length>1?A(y,{attrs:d,slots:f,emit:h}):A(y,null)),L=t.props?d:Ck(d)}}catch(A){Ll.length=0,sa(A,e,1),N=Oe(fn)}let O=N;if(L&&E!==!1){const A=Object.keys(L),{shapeFlag:H}=O;A.length&&H&7&&(c&&A.some(sh)&&(L=Tk(L,c)),O=Ki(O,L,!1,!0))}return r.dirs&&(O=Ki(O,null,!1,!0),O.dirs=O.dirs?O.dirs.concat(r.dirs):r.dirs),r.transition&&(O.transition=r.transition),N=O,Rc(M),N}function kk(e,t=!0){let r;for(let o=0;o{let t;for(const r in e)(r==="class"||r==="style"||cu(r))&&((t||(t={}))[r]=e[r]);return t},Tk=(e,t)=>{const r={};for(const o in e)(!sh(o)||!(o.slice(9)in t))&&(r[o]=e[o]);return r};function Ek(e,t,r){const{props:o,children:s,component:c}=e,{props:f,children:d,patchFlag:h}=t,g=c.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&h>=0){if(h&1024)return!0;if(h&16)return o?Mv(o,f,g):!!f;if(h&8){const v=t.dynamicProps;for(let y=0;ye.__isSuspense;let xd=0;const Ak={name:"Suspense",__isSuspense:!0,process(e,t,r,o,s,c,f,d,h,g){if(e==null)Mk(t,r,o,s,c,f,d,h,g);else{if(c&&c.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Nk(e,t,r,o,s,f,d,h,g)}},hydrate:$k,normalize:Ok},zy=Ak;function Hl(e,t){const r=e.props&&e.props[t];Xe(r)&&r()}function Mk(e,t,r,o,s,c,f,d,h){const{p:g,o:{createElement:v}}=h,y=v("div"),b=e.suspense=Iy(e,s,o,t,y,r,c,f,d,h);g(null,b.pendingBranch=e.ssContent,y,null,o,b,c,f),b.deps>0?(Hl(e,"onPending"),Hl(e,"onFallback"),g(null,e.ssFallback,t,r,o,null,c,f),gs(b,e.ssFallback)):b.resolve(!1,!0)}function Nk(e,t,r,o,s,c,f,d,{p:h,um:g,o:{createElement:v}}){const y=t.suspense=e.suspense;y.vnode=t,t.el=e.el;const b=t.ssContent,x=t.ssFallback,{activeBranch:T,pendingBranch:E,isInFallback:M,isHydrating:N}=y;if(E)y.pendingBranch=b,Nr(b,E)?(h(E,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0?y.resolve():M&&(N||(h(T,x,r,o,s,null,c,f,d),gs(y,x)))):(y.pendingId=xd++,N?(y.isHydrating=!1,y.activeBranch=E):g(E,s,y),y.deps=0,y.effects.length=0,y.hiddenContainer=v("div"),M?(h(null,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0?y.resolve():(h(T,x,r,o,s,null,c,f,d),gs(y,x))):T&&Nr(b,T)?(h(T,b,r,o,s,y,c,f,d),y.resolve(!0)):(h(null,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0&&y.resolve()));else if(T&&Nr(b,T))h(T,b,r,o,s,y,c,f,d),gs(y,b);else if(Hl(t,"onPending"),y.pendingBranch=b,b.shapeFlag&512?y.pendingId=b.component.suspenseId:y.pendingId=xd++,h(null,b,y.hiddenContainer,null,s,y,c,f,d),y.deps<=0)y.resolve();else{const{timeout:L,pendingId:O}=y;L>0?setTimeout(()=>{y.pendingId===O&&y.fallback(x)},L):L===0&&y.fallback(x)}}function Iy(e,t,r,o,s,c,f,d,h,g,v=!1){const{p:y,m:b,um:x,n:T,o:{parentNode:E,remove:M}}=g;let N;const L=Rk(e);L&&t&&t.pendingBranch&&(N=t.pendingId,t.deps++);const O=e.props?I0(e.props.timeout):void 0,A=c,H={vnode:e,parent:t,parentComponent:r,namespace:f,container:o,hiddenContainer:s,deps:0,pendingId:xd++,timeout:typeof O=="number"?O:-1,activeBranch:null,pendingBranch:null,isInFallback:!v,isHydrating:v,isUnmounted:!1,effects:[],resolve(z=!1,J=!1){const{vnode:re,activeBranch:te,pendingBranch:j,pendingId:ne,effects:K,parentComponent:V,container:I}=H;let k=!1;H.isHydrating?H.isHydrating=!1:z||(k=te&&j.transition&&j.transition.mode==="out-in",k&&(te.transition.afterLeave=()=>{ne===H.pendingId&&(b(j,I,c===A?T(te):c,0),pd(K))}),te&&(E(te.el)!==H.hiddenContainer&&(c=T(te)),x(te,V,H,!0)),k||b(j,I,c,0)),gs(H,j),H.pendingBranch=null,H.isInFallback=!1;let B=H.parent,W=!1;for(;B;){if(B.pendingBranch){B.effects.push(...K),W=!0;break}B=B.parent}!W&&!k&&pd(K),H.effects=[],L&&t&&t.pendingBranch&&N===t.pendingId&&(t.deps--,t.deps===0&&!J&&t.resolve()),Hl(re,"onResolve")},fallback(z){if(!H.pendingBranch)return;const{vnode:J,activeBranch:re,parentComponent:te,container:j,namespace:ne}=H;Hl(J,"onFallback");const K=T(re),V=()=>{H.isInFallback&&(y(null,z,j,K,te,null,ne,d,h),gs(H,z))},I=z.transition&&z.transition.mode==="out-in";I&&(re.transition.afterLeave=V),H.isInFallback=!0,x(re,te,null,!0),I||V()},move(z,J,re){H.activeBranch&&b(H.activeBranch,z,J,re),H.container=z},next(){return H.activeBranch&&T(H.activeBranch)},registerDep(z,J,re){const te=!!H.pendingBranch;te&&H.deps++;const j=z.vnode.el;z.asyncDep.catch(ne=>{sa(ne,z,0)}).then(ne=>{if(z.isUnmounted||H.isUnmounted||H.pendingId!==z.suspenseId)return;z.asyncResolved=!0;const{vnode:K}=z;Sd(z,ne,!1),j&&(K.el=j);const V=!j&&z.subTree.el;J(z,K,E(j||z.subTree.el),j?null:T(z.subTree),H,f,re),V&&M(V),Eh(z,K.el),te&&--H.deps===0&&H.resolve()})},unmount(z,J){H.isUnmounted=!0,H.activeBranch&&x(H.activeBranch,r,z,J),H.pendingBranch&&x(H.pendingBranch,r,z,J)}};return H}function $k(e,t,r,o,s,c,f,d,h){const g=t.suspense=Iy(t,o,r,e.parentNode,document.createElement("div"),null,s,c,f,d,!0),v=h(e,g.pendingBranch=t.ssContent,r,g,c,f);return g.deps===0&&g.resolve(!1,!0),v}function Ok(e){const{shapeFlag:t,children:r}=e,o=t&32;e.ssContent=Nv(o?r.default:r),e.ssFallback=o?Nv(r.fallback):Oe(fn)}function Nv(e){let t;if(Xe(e)){const r=Ss&&e._c;r&&(e._d=!1,oe()),e=e(),r&&(e._d=!0,t=Rn,Fy())}return Ie(e)&&(e=kk(e)),e=mr(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(r=>r!==e)),e}function Pk(e,t){t&&t.pendingBranch?Ie(e)?t.effects.push(...e):t.effects.push(e):pd(e)}function gs(e,t){e.activeBranch=t;const{vnode:r,parentComponent:o}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;r.el=s,o&&o.subTree===r&&(o.vnode.el=s,Eh(o,s))}function Rk(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ut=Symbol.for("v-fgt"),_u=Symbol.for("v-txt"),fn=Symbol.for("v-cmt"),Wf=Symbol.for("v-stc"),Ll=[];let Rn=null;function oe(e=!1){Ll.push(Rn=e?null:[])}function Fy(){Ll.pop(),Rn=Ll[Ll.length-1]||null}let Ss=1;function Hc(e){Ss+=e,e<0&&Rn&&(Rn.hasOnce=!0)}function Hy(e){return e.dynamicChildren=Ss>0?Rn||ds:null,Fy(),Ss>0&&Rn&&Rn.push(e),e}function me(e,t,r,o,s,c){return Hy(Y(e,t,r,o,s,c,!0))}function ot(e,t,r,o,s){return Hy(Oe(e,t,r,o,s,!0))}function ql(e){return e?e.__v_isVNode===!0:!1}function Nr(e,t){return e.type===t.type&&e.key===t.key}const qy=({key:e})=>e??null,wc=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?$t(e)||Ot(e)||Xe(e)?{i:Yt,r:e,k:t,f:!!r}:e:null);function Y(e,t=null,r=null,o=0,s=null,c=e===ut?0:1,f=!1,d=!1){const h={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qy(t),ref:t&&wc(t),scopeId:vu,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:c,patchFlag:o,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Yt};return d?(Lh(h,r),c&128&&e.normalize(h)):r&&(h.shapeFlag|=$t(r)?8:16),Ss>0&&!f&&Rn&&(h.patchFlag>0||c&6)&&h.patchFlag!==32&&Rn.push(h),h}const Oe=Dk;function Dk(e,t=null,r=null,o=0,s=null,c=!1){if((!e||e===by)&&(e=fn),ql(e)){const d=Ki(e,t,!0);return r&&Lh(d,r),Ss>0&&!c&&Rn&&(d.shapeFlag&6?Rn[Rn.indexOf(e)]=d:Rn.push(d)),d.patchFlag=-2,d}if(Uk(e)&&(e=e.__vccOpts),t){t=By(t);let{class:d,style:h}=t;d&&!$t(d)&&(t.class=lt(d)),xt(h)&&(ny(h)&&!Ie(h)&&(h=Gt({},h)),t.style=Zt(h))}const f=$t(e)?1:Lk(e)?128:pk(e)?64:xt(e)?4:Xe(e)?2:0;return Y(e,t,r,o,s,f,c,!0)}function By(e){return e?ny(e)||Cy(e)?Gt({},e):e:null}function Ki(e,t,r=!1,o=!1){const{props:s,ref:c,patchFlag:f,children:d,transition:h}=e,g=t?ii(s||{},t):s,v={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&qy(g),ref:t&&t.ref?r&&c?Ie(c)?c.concat(wc(t)):[c,wc(t)]:wc(t):c,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:d,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ut?f===-1?16:f|16:f,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:h,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ki(e.ssContent),ssFallback:e.ssFallback&&Ki(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return h&&o&&Dc(v,h.clone(v)),v}function gt(e=" ",t=0){return Oe(_u,null,e,t)}function et(e="",t=!1){return t?(oe(),ot(fn,null,e)):Oe(fn,null,e)}function mr(e){return e==null||typeof e=="boolean"?Oe(fn):Ie(e)?Oe(ut,null,e.slice()):typeof e=="object"?Di(e):Oe(_u,null,String(e))}function Di(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ki(e)}function Lh(e,t){let r=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(Ie(t))r=16;else if(typeof t=="object")if(o&65){const s=t.default;s&&(s._c&&(s._d=!1),Lh(e,s()),s._c&&(s._d=!0));return}else{r=32;const s=t._;!s&&!Cy(t)?t._ctx=Yt:s===3&&Yt&&(Yt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Xe(t)?(t={default:t,_ctx:Yt},r=32):(t=String(t),o&64?(r=16,t=[gt(t)]):r=8);e.children=t,e.shapeFlag|=r}function ii(...e){const t={};for(let r=0;rsn||Yt;let qc,_d;{const e=F0(),t=(r,o)=>{let s;return(s=e[r])||(s=e[r]=[]),s.push(o),c=>{s.length>1?s.forEach(f=>f(c)):s[0](c)}};qc=t("__VUE_INSTANCE_SETTERS__",r=>sn=r),_d=t("__VUE_SSR_SETTERS__",r=>Su=r)}const ua=e=>{const t=sn;return qc(e),e.scope.on(),()=>{e.scope.off(),qc(t)}},$v=()=>{sn&&sn.scope.off(),qc(null)};function Wy(e){return e.vnode.shapeFlag&4}let Su=!1;function Hk(e,t=!1,r=!1){t&&_d(t);const{props:o,children:s}=e.vnode,c=Wy(e);lk(e,o,c,t),fk(e,s,r);const f=c?qk(e,t):void 0;return t&&_d(!1),f}function qk(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ZS);const{setup:o}=r;if(o){const s=e.setupContext=o.length>1?Vy(e):null,c=ua(e);eo();const f=Vi(o,e,0,[e.props,s]);if(to(),c(),P0(f)){if(f.then($v,$v),t)return f.then(d=>{Sd(e,d,t)}).catch(d=>{sa(d,e,0)});e.asyncDep=f}else Sd(e,f,t)}else Uy(e,t)}function Sd(e,t,r){Xe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xt(t)&&(e.setupState=oy(t)),Uy(e,r)}let Ov;function Uy(e,t,r){const o=e.type;if(!e.render){if(!t&&Ov&&!o.render){const s=o.template||Sh(e).template;if(s){const{isCustomElement:c,compilerOptions:f}=e.appContext.config,{delimiters:d,compilerOptions:h}=o,g=Gt(Gt({isCustomElement:c,delimiters:d},f),h);o.render=Ov(s,g)}}e.render=o.render||Jn}{const s=ua(e);eo();try{ek(e)}finally{to(),s()}}}const Bk={get(e,t){return zn(e,"get",""),e[t]}};function Vy(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,Bk),slots:e.slots,emit:e.emit,expose:t}}function ku(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(oy(vh(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Tl)return Tl[r](e)},has(t,r){return r in t||r in Tl}})):e.proxy}function Wk(e,t=!0){return Xe(e)?e.displayName||e.name:e.name||t&&e.__name}function Uk(e){return Xe(e)&&"__vccOpts"in e}const Me=(e,t)=>kS(e,t,Su);function fa(e,t,r){const o=arguments.length;return o===2?xt(t)&&!Ie(t)?ql(t)?Oe(e,null,[t]):Oe(e,t):Oe(e,null,t):(o>3?r=Array.prototype.slice.call(arguments,2):o===3&&ql(r)&&(r=[r]),Oe(e,t,r))}const Vk="3.4.33";/** -* @vue/runtime-dom v3.4.33 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const jk="http://www.w3.org/2000/svg",Gk="http://www.w3.org/1998/Math/MathML",Qr=typeof document<"u"?document:null,Pv=Qr&&Qr.createElement("template"),Kk={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,o)=>{const s=t==="svg"?Qr.createElementNS(jk,e):t==="mathml"?Qr.createElementNS(Gk,e):r?Qr.createElement(e,{is:r}):Qr.createElement(e);return e==="select"&&o&&o.multiple!=null&&s.setAttribute("multiple",o.multiple),s},createText:e=>Qr.createTextNode(e),createComment:e=>Qr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,o,s,c){const f=r?r.previousSibling:t.lastChild;if(s&&(s===c||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),r),!(s===c||!(s=s.nextSibling)););else{Pv.innerHTML=o==="svg"?`${e}`:o==="mathml"?`${e}`:e;const d=Pv.content;if(o==="svg"||o==="mathml"){const h=d.firstChild;for(;h.firstChild;)d.appendChild(h.firstChild);d.removeChild(h)}t.insertBefore(d,r)}return[f?f.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},Li="transition",dl="animation",Bl=Symbol("_vtc"),Ah=(e,{slots:t})=>fa(zS,Xk(e),t);Ah.displayName="Transition";const jy={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ah.props=Gt({},hy,jy);const mo=(e,t=[])=>{Ie(e)?e.forEach(r=>r(...t)):e&&e(...t)},Rv=e=>e?Ie(e)?e.some(t=>t.length>1):e.length>1:!1;function Xk(e){const t={};for(const K in e)K in jy||(t[K]=e[K]);if(e.css===!1)return t;const{name:r="v",type:o,duration:s,enterFromClass:c=`${r}-enter-from`,enterActiveClass:f=`${r}-enter-active`,enterToClass:d=`${r}-enter-to`,appearFromClass:h=c,appearActiveClass:g=f,appearToClass:v=d,leaveFromClass:y=`${r}-leave-from`,leaveActiveClass:b=`${r}-leave-active`,leaveToClass:x=`${r}-leave-to`}=e,T=Yk(s),E=T&&T[0],M=T&&T[1],{onBeforeEnter:N,onEnter:L,onEnterCancelled:O,onLeave:A,onLeaveCancelled:H,onBeforeAppear:z=N,onAppear:J=L,onAppearCancelled:re=O}=t,te=(K,V,I)=>{yo(K,V?v:d),yo(K,V?g:f),I&&I()},j=(K,V)=>{K._isLeaving=!1,yo(K,y),yo(K,x),yo(K,b),V&&V()},ne=K=>(V,I)=>{const k=K?J:L,B=()=>te(V,K,I);mo(k,[V,B]),Dv(()=>{yo(V,K?h:c),Ai(V,K?v:d),Rv(k)||zv(V,o,E,B)})};return Gt(t,{onBeforeEnter(K){mo(N,[K]),Ai(K,c),Ai(K,f)},onBeforeAppear(K){mo(z,[K]),Ai(K,h),Ai(K,g)},onEnter:ne(!1),onAppear:ne(!0),onLeave(K,V){K._isLeaving=!0;const I=()=>j(K,V);Ai(K,y),Ai(K,b),Qk(),Dv(()=>{K._isLeaving&&(yo(K,y),Ai(K,x),Rv(A)||zv(K,o,M,I))}),mo(A,[K,I])},onEnterCancelled(K){te(K,!1),mo(O,[K])},onAppearCancelled(K){te(K,!0),mo(re,[K])},onLeaveCancelled(K){j(K),mo(H,[K])}})}function Yk(e){if(e==null)return null;if(xt(e))return[Uf(e.enter),Uf(e.leave)];{const t=Uf(e);return[t,t]}}function Uf(e){return I0(e)}function Ai(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[Bl]||(e[Bl]=new Set)).add(t)}function yo(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const r=e[Bl];r&&(r.delete(t),r.size||(e[Bl]=void 0))}function Dv(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Zk=0;function zv(e,t,r,o){const s=e._endId=++Zk,c=()=>{s===e._endId&&o()};if(r)return setTimeout(c,r);const{type:f,timeout:d,propCount:h}=Jk(e,t);if(!f)return o();const g=f+"end";let v=0;const y=()=>{e.removeEventListener(g,b),c()},b=x=>{x.target===e&&++v>=h&&y()};setTimeout(()=>{v(r[T]||"").split(", "),s=o(`${Li}Delay`),c=o(`${Li}Duration`),f=Iv(s,c),d=o(`${dl}Delay`),h=o(`${dl}Duration`),g=Iv(d,h);let v=null,y=0,b=0;t===Li?f>0&&(v=Li,y=f,b=c.length):t===dl?g>0&&(v=dl,y=g,b=h.length):(y=Math.max(f,g),v=y>0?f>g?Li:dl:null,b=v?v===Li?c.length:h.length:0);const x=v===Li&&/\b(transform|all)(,|$)/.test(o(`${Li}Property`).toString());return{type:v,timeout:y,propCount:b,hasTransform:x}}function Iv(e,t){for(;e.lengthFv(r)+Fv(e[o])))}function Fv(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Qk(){return document.body.offsetHeight}function eC(e,t,r){const o=e[Bl];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const Bc=Symbol("_vod"),Gy=Symbol("_vsh"),bl={beforeMount(e,{value:t},{transition:r}){e[Bc]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):hl(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:o}){!t!=!r&&(o?t?(o.beforeEnter(e),hl(e,!0),o.enter(e)):o.leave(e,()=>{hl(e,!1)}):hl(e,t))},beforeUnmount(e,{value:t}){hl(e,t)}};function hl(e,t){e.style.display=t?e[Bc]:"none",e[Gy]=!t}const tC=Symbol(""),nC=/(^|;)\s*display\s*:/;function rC(e,t,r){const o=e.style,s=$t(r);let c=!1;if(r&&!s){if(t)if($t(t))for(const f of t.split(";")){const d=f.slice(0,f.indexOf(":")).trim();r[d]==null&&xc(o,d,"")}else for(const f in t)r[f]==null&&xc(o,f,"");for(const f in r)f==="display"&&(c=!0),xc(o,f,r[f])}else if(s){if(t!==r){const f=o[tC];f&&(r+=";"+f),o.cssText=r,c=nC.test(r)}}else t&&e.removeAttribute("style");Bc in e&&(e[Bc]=c?o.display:"",e[Gy]&&(o.display="none"))}const Hv=/\s*!important$/;function xc(e,t,r){if(Ie(r))r.forEach(o=>xc(e,t,o));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const o=iC(e,t);Hv.test(r)?e.setProperty(ui(o),r.replace(Hv,""),"important"):e[o]=r}}const qv=["Webkit","Moz","ms"],Vf={};function iC(e,t){const r=Vf[t];if(r)return r;let o=nr(t);if(o!=="filter"&&o in e)return Vf[t]=o;o=du(o);for(let s=0;sjf||(cC.then(()=>jf=0),jf=Date.now());function fC(e,t){const r=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=r.attached)return;tr(dC(o,r.value),t,5,[o])};return r.value=e,r.attached=uC(),r}function dC(e,t){if(Ie(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(o=>s=>!s._stopped&&o&&o(s))}else return t}const jv=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,hC=(e,t,r,o,s,c)=>{const f=s==="svg";t==="class"?eC(e,o,f):t==="style"?rC(e,r,o):cu(t)?sh(t)||lC(e,t,r,o,c):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):pC(e,t,o,f))?(oC(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Wv(e,t,o,f,c,t!=="value")):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),Wv(e,t,o,f))};function pC(e,t,r,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&jv(t)&&Xe(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return jv(t)&&$t(r)?!1:t in e}const Wc=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Ie(t)?r=>yc(t,r):t};function gC(e){e.target.composing=!0}function Gv(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const vs=Symbol("_assign"),vC={created(e,{modifiers:{lazy:t,trim:r,number:o}},s){e[vs]=Wc(s);const c=o||s.props&&s.props.type==="number";_o(e,t?"change":"input",f=>{if(f.target.composing)return;let d=e.value;r&&(d=d.trim()),c&&(d=cd(d)),e[vs](d)}),r&&_o(e,"change",()=>{e.value=e.value.trim()}),t||(_o(e,"compositionstart",gC),_o(e,"compositionend",Gv),_o(e,"change",Gv))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:o,trim:s,number:c}},f){if(e[vs]=Wc(f),e.composing)return;const d=(c||e.type==="number")&&!/^0\d/.test(e.value)?cd(e.value):e.value,h=t??"";d!==h&&(document.activeElement===e&&e.type!=="range"&&(o&&t===r||s&&e.value.trim()===h)||(e.value=h))}},mC={deep:!0,created(e,t,r){e[vs]=Wc(r),_o(e,"change",()=>{const o=e._modelValue,s=yC(e),c=e.checked,f=e[vs];if(Ie(o)){const d=q0(o,s),h=d!==-1;if(c&&!h)f(o.concat(s));else if(!c&&h){const g=[...o];g.splice(d,1),f(g)}}else if(uu(o)){const d=new Set(o);c?d.add(s):d.delete(s),f(d)}else f(Ky(e,c))})},mounted:Kv,beforeUpdate(e,t,r){e[vs]=Wc(r),Kv(e,t,r)}};function Kv(e,{value:t,oldValue:r},o){e._modelValue=t,Ie(t)?e.checked=q0(t,o.props.value)>-1:uu(t)?e.checked=t.has(o.props.value):t!==r&&(e.checked=hu(t,Ky(e,!0)))}function yC(e){return"_value"in e?e._value:e.value}function Ky(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const bC=["ctrl","shift","alt","meta"],wC={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>bC.some(r=>e[`${r}Key`]&&!t.includes(r))},_c=(e,t)=>{const r=e._withMods||(e._withMods={}),o=t.join(".");return r[o]||(r[o]=(s,...c)=>{for(let f=0;f{const r=e._withKeys||(e._withKeys={}),o=t.join(".");return r[o]||(r[o]=s=>{if(!("key"in s))return;const c=ui(s.key);if(t.some(f=>f===c||xC[f]===c))return e(s)})},_C=Gt({patchProp:hC},Kk);let Xv;function SC(){return Xv||(Xv=gk(_C))}const Xy=(...e)=>{const t=SC().createApp(...e),{mount:r}=t;return t.mount=o=>{const s=CC(o);if(!s)return;const c=t._component;!Xe(c)&&!c.render&&!c.template&&(c.template=s.innerHTML),s.innerHTML="";const f=r(s,!1,kC(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),f},t};function kC(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function CC(e){return $t(e)?document.querySelector(e):e}const di=(e,t)=>{const r=e.__vccOpts||e;for(const[o,s]of t)r[o]=s;return r},TC={};function EC(e,t){const r=Ao("RouterView");return oe(),ot(r)}const LC=di(TC,[["render",EC]]);/*! - * vue-router v4.4.0 - * (c) 2024 Eduardo San Martin Morote - * @license MIT - */const as=typeof document<"u";function AC(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const bt=Object.assign;function Gf(e,t){const r={};for(const o in t){const s=t[o];r[o]=xr(s)?s.map(e):e(s)}return r}const Al=()=>{},xr=Array.isArray,Yy=/#/g,MC=/&/g,NC=/\//g,$C=/=/g,OC=/\?/g,Zy=/\+/g,PC=/%5B/g,RC=/%5D/g,Jy=/%5E/g,DC=/%60/g,Qy=/%7B/g,zC=/%7C/g,eb=/%7D/g,IC=/%20/g;function Mh(e){return encodeURI(""+e).replace(zC,"|").replace(PC,"[").replace(RC,"]")}function FC(e){return Mh(e).replace(Qy,"{").replace(eb,"}").replace(Jy,"^")}function Cd(e){return Mh(e).replace(Zy,"%2B").replace(IC,"+").replace(Yy,"%23").replace(MC,"%26").replace(DC,"`").replace(Qy,"{").replace(eb,"}").replace(Jy,"^")}function HC(e){return Cd(e).replace($C,"%3D")}function qC(e){return Mh(e).replace(Yy,"%23").replace(OC,"%3F")}function BC(e){return e==null?"":qC(e).replace(NC,"%2F")}function Wl(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const WC=/\/$/,UC=e=>e.replace(WC,"");function Kf(e,t,r="/"){let o,s={},c="",f="";const d=t.indexOf("#");let h=t.indexOf("?");return d=0&&(h=-1),h>-1&&(o=t.slice(0,h),c=t.slice(h+1,d>-1?d:t.length),s=e(c)),d>-1&&(o=o||t.slice(0,d),f=t.slice(d,t.length)),o=KC(o??t,r),{fullPath:o+(c&&"?")+c+f,path:o,query:s,hash:Wl(f)}}function VC(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function Yv(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function jC(e,t,r){const o=t.matched.length-1,s=r.matched.length-1;return o>-1&&o===s&&ks(t.matched[o],r.matched[s])&&tb(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function ks(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function tb(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!GC(e[r],t[r]))return!1;return!0}function GC(e,t){return xr(e)?Zv(e,t):xr(t)?Zv(t,e):e===t}function Zv(e,t){return xr(t)?e.length===t.length&&e.every((r,o)=>r===t[o]):e.length===1&&e[0]===t}function KC(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),o=e.split("/"),s=o[o.length-1];(s===".."||s===".")&&o.push("");let c=r.length-1,f,d;for(f=0;f1&&c--;else break;return r.slice(0,c).join("/")+"/"+o.slice(f).join("/")}const Mi={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Ul;(function(e){e.pop="pop",e.push="push"})(Ul||(Ul={}));var Ml;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ml||(Ml={}));function XC(e){if(!e)if(as){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),UC(e)}const YC=/^[^#]+#/;function ZC(e,t){return e.replace(YC,"#")+t}function JC(e,t){const r=document.documentElement.getBoundingClientRect(),o=e.getBoundingClientRect();return{behavior:t.behavior,left:o.left-r.left-(t.left||0),top:o.top-r.top-(t.top||0)}}const Cu=()=>({left:window.scrollX,top:window.scrollY});function QC(e){let t;if("el"in e){const r=e.el,o=typeof r=="string"&&r.startsWith("#"),s=typeof r=="string"?o?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!s)return;t=JC(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Jv(e,t){return(history.state?history.state.position-t:-1)+e}const Td=new Map;function eT(e,t){Td.set(e,t)}function tT(e){const t=Td.get(e);return Td.delete(e),t}let nT=()=>location.protocol+"//"+location.host;function nb(e,t){const{pathname:r,search:o,hash:s}=t,c=e.indexOf("#");if(c>-1){let d=s.includes(e.slice(c))?e.slice(c).length:1,h=s.slice(d);return h[0]!=="/"&&(h="/"+h),Yv(h,"")}return Yv(r,e)+o+s}function rT(e,t,r,o){let s=[],c=[],f=null;const d=({state:b})=>{const x=nb(e,location),T=r.value,E=t.value;let M=0;if(b){if(r.value=x,t.value=b,f&&f===T){f=null;return}M=E?b.position-E.position:0}else o(x);s.forEach(N=>{N(r.value,T,{delta:M,type:Ul.pop,direction:M?M>0?Ml.forward:Ml.back:Ml.unknown})})};function h(){f=r.value}function g(b){s.push(b);const x=()=>{const T=s.indexOf(b);T>-1&&s.splice(T,1)};return c.push(x),x}function v(){const{history:b}=window;b.state&&b.replaceState(bt({},b.state,{scroll:Cu()}),"")}function y(){for(const b of c)b();c=[],window.removeEventListener("popstate",d),window.removeEventListener("beforeunload",v)}return window.addEventListener("popstate",d),window.addEventListener("beforeunload",v,{passive:!0}),{pauseListeners:h,listen:g,destroy:y}}function Qv(e,t,r,o=!1,s=!1){return{back:e,current:t,forward:r,replaced:o,position:window.history.length,scroll:s?Cu():null}}function iT(e){const{history:t,location:r}=window,o={value:nb(e,r)},s={value:t.state};s.value||c(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function c(h,g,v){const y=e.indexOf("#"),b=y>-1?(r.host&&document.querySelector("base")?e:e.slice(y))+h:nT()+e+h;try{t[v?"replaceState":"pushState"](g,"",b),s.value=g}catch(x){console.error(x),r[v?"replace":"assign"](b)}}function f(h,g){const v=bt({},t.state,Qv(s.value.back,h,s.value.forward,!0),g,{position:s.value.position});c(h,v,!0),o.value=h}function d(h,g){const v=bt({},s.value,t.state,{forward:h,scroll:Cu()});c(v.current,v,!0);const y=bt({},Qv(o.value,h,null),{position:v.position+1},g);c(h,y,!1),o.value=h}return{location:o,state:s,push:d,replace:f}}function oT(e){e=XC(e);const t=iT(e),r=rT(e,t.state,t.location,t.replace);function o(c,f=!0){f||r.pauseListeners(),history.go(c)}const s=bt({location:"",base:e,go:o,createHref:ZC.bind(null,e)},t,r);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function sT(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),oT(e)}function lT(e){return typeof e=="string"||e&&typeof e=="object"}function rb(e){return typeof e=="string"||typeof e=="symbol"}const ib=Symbol("");var em;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(em||(em={}));function Cs(e,t){return bt(new Error,{type:e,[ib]:!0},t)}function Yr(e,t){return e instanceof Error&&ib in e&&(t==null||!!(e.type&t))}const tm="[^/]+?",aT={sensitive:!1,strict:!1,start:!0,end:!0},cT=/[.+*?^${}()[\]/\\]/g;function uT(e,t){const r=bt({},aT,t),o=[];let s=r.start?"^":"";const c=[];for(const g of e){const v=g.length?[]:[90];r.strict&&!g.length&&(s+="/");for(let y=0;yt.length?t.length===1&&t[0]===80?1:-1:0}function ob(e,t){let r=0;const o=e.score,s=t.score;for(;r0&&t[t.length-1]<0}const dT={type:0,value:""},hT=/[a-zA-Z0-9_]/;function pT(e){if(!e)return[[]];if(e==="/")return[[dT]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(x){throw new Error(`ERR (${r})/"${g}": ${x}`)}let r=0,o=r;const s=[];let c;function f(){c&&s.push(c),c=[]}let d=0,h,g="",v="";function y(){g&&(r===0?c.push({type:0,value:g}):r===1||r===2||r===3?(c.length>1&&(h==="*"||h==="+")&&t(`A repeatable param (${g}) must be alone in its segment. eg: '/:ids+.`),c.push({type:1,value:g,regexp:v,repeatable:h==="*"||h==="+",optional:h==="*"||h==="?"})):t("Invalid state to consume buffer"),g="")}function b(){g+=h}for(;d{f(O)}:Al}function f(y){if(rb(y)){const b=o.get(y);b&&(o.delete(y),r.splice(r.indexOf(b),1),b.children.forEach(f),b.alias.forEach(f))}else{const b=r.indexOf(y);b>-1&&(r.splice(b,1),y.record.name&&o.delete(y.record.name),y.children.forEach(f),y.alias.forEach(f))}}function d(){return r}function h(y){const b=wT(y,r);r.splice(b,0,y),y.record.name&&!im(y)&&o.set(y.record.name,y)}function g(y,b){let x,T={},E,M;if("name"in y&&y.name){if(x=o.get(y.name),!x)throw Cs(1,{location:y});M=x.record.name,T=bt(rm(b.params,x.keys.filter(O=>!O.optional).concat(x.parent?x.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),y.params&&rm(y.params,x.keys.map(O=>O.name))),E=x.stringify(T)}else if(y.path!=null)E=y.path,x=r.find(O=>O.re.test(E)),x&&(T=x.parse(E),M=x.record.name);else{if(x=b.name?o.get(b.name):r.find(O=>O.re.test(b.path)),!x)throw Cs(1,{location:y,currentLocation:b});M=x.record.name,T=bt({},b.params,y.params),E=x.stringify(T)}const N=[];let L=x;for(;L;)N.unshift(L.record),L=L.parent;return{name:M,path:E,params:T,matched:N,meta:bT(N)}}e.forEach(y=>c(y));function v(){r.length=0,o.clear()}return{addRoute:c,resolve:g,removeRoute:f,clearRoutes:v,getRoutes:d,getRecordMatcher:s}}function rm(e,t){const r={};for(const o of t)o in e&&(r[o]=e[o]);return r}function mT(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:yT(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function yT(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const o in e.components)t[o]=typeof r=="object"?r[o]:r;return t}function im(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function bT(e){return e.reduce((t,r)=>bt(t,r.meta),{})}function om(e,t){const r={};for(const o in e)r[o]=o in t?t[o]:e[o];return r}function wT(e,t){let r=0,o=t.length;for(;r!==o;){const c=r+o>>1;ob(e,t[c])<0?o=c:r=c+1}const s=xT(e);return s&&(o=t.lastIndexOf(s,o-1)),o}function xT(e){let t=e;for(;t=t.parent;)if(sb(t)&&ob(e,t)===0)return t}function sb({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function _T(e){const t={};if(e===""||e==="?")return t;const o=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sc&&Cd(c)):[o&&Cd(o)]).forEach(c=>{c!==void 0&&(t+=(t.length?"&":"")+r,c!=null&&(t+="="+c))})}return t}function ST(e){const t={};for(const r in e){const o=e[r];o!==void 0&&(t[r]=xr(o)?o.map(s=>s==null?null:""+s):o==null?o:""+o)}return t}const kT=Symbol(""),lm=Symbol(""),Nh=Symbol(""),lb=Symbol(""),Ed=Symbol("");function pl(){let e=[];function t(o){return e.push(o),()=>{const s=e.indexOf(o);s>-1&&e.splice(s,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function zi(e,t,r,o,s,c=f=>f()){const f=o&&(o.enterCallbacks[s]=o.enterCallbacks[s]||[]);return()=>new Promise((d,h)=>{const g=b=>{b===!1?h(Cs(4,{from:r,to:t})):b instanceof Error?h(b):lT(b)?h(Cs(2,{from:t,to:b})):(f&&o.enterCallbacks[s]===f&&typeof b=="function"&&f.push(b),d())},v=c(()=>e.call(o&&o.instances[s],t,r,g));let y=Promise.resolve(v);e.length<3&&(y=y.then(g)),y.catch(b=>h(b))})}function Xf(e,t,r,o,s=c=>c()){const c=[];for(const f of e)for(const d in f.components){let h=f.components[d];if(!(t!=="beforeRouteEnter"&&!f.instances[d]))if(CT(h)){const v=(h.__vccOpts||h)[t];v&&c.push(zi(v,r,o,f,d,s))}else{let g=h();c.push(()=>g.then(v=>{if(!v)return Promise.reject(new Error(`Couldn't resolve component "${d}" at "${f.path}"`));const y=AC(v)?v.default:v;f.components[d]=y;const x=(y.__vccOpts||y)[t];return x&&zi(x,r,o,f,d,s)()}))}}return c}function CT(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function am(e){const t=ri(Nh),r=ri(lb),o=Me(()=>{const h=q(e.to);return t.resolve(h)}),s=Me(()=>{const{matched:h}=o.value,{length:g}=h,v=h[g-1],y=r.matched;if(!v||!y.length)return-1;const b=y.findIndex(ks.bind(null,v));if(b>-1)return b;const x=cm(h[g-2]);return g>1&&cm(v)===x&&y[y.length-1].path!==x?y.findIndex(ks.bind(null,h[g-2])):b}),c=Me(()=>s.value>-1&&AT(r.params,o.value.params)),f=Me(()=>s.value>-1&&s.value===r.matched.length-1&&tb(r.params,o.value.params));function d(h={}){return LT(h)?t[q(e.replace)?"replace":"push"](q(e.to)).catch(Al):Promise.resolve()}return{route:o,href:Me(()=>o.value.href),isActive:c,isExactActive:f,navigate:d}}const TT=ft({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:am,setup(e,{slots:t}){const r=er(am(e)),{options:o}=ri(Nh),s=Me(()=>({[um(e.activeClass,o.linkActiveClass,"router-link-active")]:r.isActive,[um(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const c=t.default&&t.default(r);return e.custom?c:fa("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:s.value},c)}}}),ET=TT;function LT(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function AT(e,t){for(const r in t){const o=t[r],s=e[r];if(typeof o=="string"){if(o!==s)return!1}else if(!xr(s)||s.length!==o.length||o.some((c,f)=>c!==s[f]))return!1}return!0}function cm(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const um=(e,t,r)=>e??t??r,MT=ft({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const o=ri(Ed),s=Me(()=>e.route||o.value),c=ri(lm,0),f=Me(()=>{let g=q(c);const{matched:v}=s.value;let y;for(;(y=v[g])&&!y.components;)g++;return g}),d=Me(()=>s.value.matched[f.value]);bc(lm,Me(()=>f.value+1)),bc(kT,d),bc(Ed,s);const h=Be();return Ht(()=>[h.value,d.value,e.name],([g,v,y],[b,x,T])=>{v&&(v.instances[y]=g,x&&x!==v&&g&&g===b&&(v.leaveGuards.size||(v.leaveGuards=x.leaveGuards),v.updateGuards.size||(v.updateGuards=x.updateGuards))),g&&v&&(!x||!ks(v,x)||!b)&&(v.enterCallbacks[y]||[]).forEach(E=>E(g))},{flush:"post"}),()=>{const g=s.value,v=e.name,y=d.value,b=y&&y.components[v];if(!b)return fm(r.default,{Component:b,route:g});const x=y.props[v],T=x?x===!0?g.params:typeof x=="function"?x(g):x:null,M=fa(b,bt({},T,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(y.instances[v]=null)},ref:h}));return fm(r.default,{Component:M,route:g})||M}}});function fm(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const NT=MT;function $T(e){const t=vT(e.routes,e),r=e.parseQuery||_T,o=e.stringifyQuery||sm,s=e.history,c=pl(),f=pl(),d=pl(),h=Fr(Mi);let g=Mi;as&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const v=Gf.bind(null,X=>""+X),y=Gf.bind(null,BC),b=Gf.bind(null,Wl);function x(X,ae){let de,$e;return rb(X)?(de=t.getRecordMatcher(X),$e=ae):$e=X,t.addRoute($e,de)}function T(X){const ae=t.getRecordMatcher(X);ae&&t.removeRoute(ae)}function E(){return t.getRoutes().map(X=>X.record)}function M(X){return!!t.getRecordMatcher(X)}function N(X,ae){if(ae=bt({},ae||h.value),typeof X=="string"){const F=Kf(r,X,ae.path),Z=t.resolve({path:F.path},ae),ue=s.createHref(F.fullPath);return bt(F,Z,{params:b(Z.params),hash:Wl(F.hash),redirectedFrom:void 0,href:ue})}let de;if(X.path!=null)de=bt({},X,{path:Kf(r,X.path,ae.path).path});else{const F=bt({},X.params);for(const Z in F)F[Z]==null&&delete F[Z];de=bt({},X,{params:y(F)}),ae.params=y(ae.params)}const $e=t.resolve(de,ae),Te=X.hash||"";$e.params=v(b($e.params));const Ye=VC(o,bt({},X,{hash:FC(Te),path:$e.path})),P=s.createHref(Ye);return bt({fullPath:Ye,hash:Te,query:o===sm?ST(X.query):X.query||{}},$e,{redirectedFrom:void 0,href:P})}function L(X){return typeof X=="string"?Kf(r,X,h.value.path):bt({},X)}function O(X,ae){if(g!==X)return Cs(8,{from:ae,to:X})}function A(X){return J(X)}function H(X){return A(bt(L(X),{replace:!0}))}function z(X){const ae=X.matched[X.matched.length-1];if(ae&&ae.redirect){const{redirect:de}=ae;let $e=typeof de=="function"?de(X):de;return typeof $e=="string"&&($e=$e.includes("?")||$e.includes("#")?$e=L($e):{path:$e},$e.params={}),bt({query:X.query,hash:X.hash,params:$e.path!=null?{}:X.params},$e)}}function J(X,ae){const de=g=N(X),$e=h.value,Te=X.state,Ye=X.force,P=X.replace===!0,F=z(de);if(F)return J(bt(L(F),{state:typeof F=="object"?bt({},Te,F.state):Te,force:Ye,replace:P}),ae||de);const Z=de;Z.redirectedFrom=ae;let ue;return!Ye&&jC(o,$e,de)&&(ue=Cs(16,{to:Z,from:$e}),We($e,$e,!0,!1)),(ue?Promise.resolve(ue):j(Z,$e)).catch(le=>Yr(le)?Yr(le,2)?le:Ne(le):ie(le,Z,$e)).then(le=>{if(le){if(Yr(le,2))return J(bt({replace:P},L(le.to),{state:typeof le.to=="object"?bt({},Te,le.to.state):Te,force:Ye}),ae||Z)}else le=K(Z,$e,!0,P,Te);return ne(Z,$e,le),le})}function re(X,ae){const de=O(X,ae);return de?Promise.reject(de):Promise.resolve()}function te(X){const ae=rt.values().next().value;return ae&&typeof ae.runWithContext=="function"?ae.runWithContext(X):X()}function j(X,ae){let de;const[$e,Te,Ye]=OT(X,ae);de=Xf($e.reverse(),"beforeRouteLeave",X,ae);for(const F of $e)F.leaveGuards.forEach(Z=>{de.push(zi(Z,X,ae))});const P=re.bind(null,X,ae);return de.push(P),Ee(de).then(()=>{de=[];for(const F of c.list())de.push(zi(F,X,ae));return de.push(P),Ee(de)}).then(()=>{de=Xf(Te,"beforeRouteUpdate",X,ae);for(const F of Te)F.updateGuards.forEach(Z=>{de.push(zi(Z,X,ae))});return de.push(P),Ee(de)}).then(()=>{de=[];for(const F of Ye)if(F.beforeEnter)if(xr(F.beforeEnter))for(const Z of F.beforeEnter)de.push(zi(Z,X,ae));else de.push(zi(F.beforeEnter,X,ae));return de.push(P),Ee(de)}).then(()=>(X.matched.forEach(F=>F.enterCallbacks={}),de=Xf(Ye,"beforeRouteEnter",X,ae,te),de.push(P),Ee(de))).then(()=>{de=[];for(const F of f.list())de.push(zi(F,X,ae));return de.push(P),Ee(de)}).catch(F=>Yr(F,8)?F:Promise.reject(F))}function ne(X,ae,de){d.list().forEach($e=>te(()=>$e(X,ae,de)))}function K(X,ae,de,$e,Te){const Ye=O(X,ae);if(Ye)return Ye;const P=ae===Mi,F=as?history.state:{};de&&($e||P?s.replace(X.fullPath,bt({scroll:P&&F&&F.scroll},Te)):s.push(X.fullPath,Te)),h.value=X,We(X,ae,de,P),Ne()}let V;function I(){V||(V=s.listen((X,ae,de)=>{if(!Ze.listening)return;const $e=N(X),Te=z($e);if(Te){J(bt(Te,{replace:!0}),$e).catch(Al);return}g=$e;const Ye=h.value;as&&eT(Jv(Ye.fullPath,de.delta),Cu()),j($e,Ye).catch(P=>Yr(P,12)?P:Yr(P,2)?(J(P.to,$e).then(F=>{Yr(F,20)&&!de.delta&&de.type===Ul.pop&&s.go(-1,!1)}).catch(Al),Promise.reject()):(de.delta&&s.go(-de.delta,!1),ie(P,$e,Ye))).then(P=>{P=P||K($e,Ye,!1),P&&(de.delta&&!Yr(P,8)?s.go(-de.delta,!1):de.type===Ul.pop&&Yr(P,20)&&s.go(-1,!1)),ne($e,Ye,P)}).catch(Al)}))}let k=pl(),B=pl(),W;function ie(X,ae,de){Ne(X);const $e=B.list();return $e.length?$e.forEach(Te=>Te(X,ae,de)):console.error(X),Promise.reject(X)}function ye(){return W&&h.value!==Mi?Promise.resolve():new Promise((X,ae)=>{k.add([X,ae])})}function Ne(X){return W||(W=!X,I(),k.list().forEach(([ae,de])=>X?de(X):ae()),k.reset()),X}function We(X,ae,de,$e){const{scrollBehavior:Te}=e;if(!as||!Te)return Promise.resolve();const Ye=!de&&tT(Jv(X.fullPath,0))||($e||!de)&&history.state&&history.state.scroll||null;return ln().then(()=>Te(X,ae,Ye)).then(P=>P&&QC(P)).catch(P=>ie(P,X,ae))}const je=X=>s.go(X);let it;const rt=new Set,Ze={currentRoute:h,listening:!0,addRoute:x,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:E,resolve:N,options:e,push:A,replace:H,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:c.add,beforeResolve:f.add,afterEach:d.add,onError:B.add,isReady:ye,install(X){const ae=this;X.component("RouterLink",ET),X.component("RouterView",NT),X.config.globalProperties.$router=ae,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>q(h)}),as&&!it&&h.value===Mi&&(it=!0,A(s.location).catch(Te=>{}));const de={};for(const Te in Mi)Object.defineProperty(de,Te,{get:()=>h.value[Te],enumerable:!0});X.provide(Nh,ae),X.provide(lb,ph(de)),X.provide(Ed,h);const $e=X.unmount;rt.add(X),X.unmount=function(){rt.delete(X),rt.size<1&&(g=Mi,V&&V(),V=null,h.value=Mi,it=!1,W=!1),$e()}}};function Ee(X){return X.reduce((ae,de)=>ae.then(()=>te(de)),Promise.resolve())}return Ze}function OT(e,t){const r=[],o=[],s=[],c=Math.max(t.matched.length,e.matched.length);for(let f=0;fks(g,d))?o.push(d):r.push(d));const h=e.matched[f];h&&(t.matched.find(g=>ks(g,h))||s.push(h))}return[r,o,s]}const PT=["top","right","bottom","left"],dm=["start","end"],hm=PT.reduce((e,t)=>e.concat(t,t+"-"+dm[0],t+"-"+dm[1]),[]),Vl=Math.min,wo=Math.max,RT={left:"right",right:"left",bottom:"top",top:"bottom"},DT={start:"end",end:"start"};function Ld(e,t,r){return wo(e,Vl(t,r))}function Oo(e,t){return typeof e=="function"?e(t):e}function Ir(e){return e.split("-")[0]}function br(e){return e.split("-")[1]}function ab(e){return e==="x"?"y":"x"}function $h(e){return e==="y"?"height":"width"}function da(e){return["top","bottom"].includes(Ir(e))?"y":"x"}function Oh(e){return ab(da(e))}function cb(e,t,r){r===void 0&&(r=!1);const o=br(e),s=Oh(e),c=$h(s);let f=s==="x"?o===(r?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[c]>t.floating[c]&&(f=Vc(f)),[f,Vc(f)]}function zT(e){const t=Vc(e);return[Uc(e),t,Uc(t)]}function Uc(e){return e.replace(/start|end/g,t=>DT[t])}function IT(e,t,r){const o=["left","right"],s=["right","left"],c=["top","bottom"],f=["bottom","top"];switch(e){case"top":case"bottom":return r?t?s:o:t?o:s;case"left":case"right":return t?c:f;default:return[]}}function FT(e,t,r,o){const s=br(e);let c=IT(Ir(e),r==="start",o);return s&&(c=c.map(f=>f+"-"+s),t&&(c=c.concat(c.map(Uc)))),c}function Vc(e){return e.replace(/left|right|bottom|top/g,t=>RT[t])}function HT(e){return{top:0,right:0,bottom:0,left:0,...e}}function ub(e){return typeof e!="number"?HT(e):{top:e,right:e,bottom:e,left:e}}function Nl(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function pm(e,t,r){let{reference:o,floating:s}=e;const c=da(t),f=Oh(t),d=$h(f),h=Ir(t),g=c==="y",v=o.x+o.width/2-s.width/2,y=o.y+o.height/2-s.height/2,b=o[d]/2-s[d]/2;let x;switch(h){case"top":x={x:v,y:o.y-s.height};break;case"bottom":x={x:v,y:o.y+o.height};break;case"right":x={x:o.x+o.width,y};break;case"left":x={x:o.x-s.width,y};break;default:x={x:o.x,y:o.y}}switch(br(t)){case"start":x[f]-=b*(r&&g?-1:1);break;case"end":x[f]+=b*(r&&g?-1:1);break}return x}const qT=async(e,t,r)=>{const{placement:o="bottom",strategy:s="absolute",middleware:c=[],platform:f}=r,d=c.filter(Boolean),h=await(f.isRTL==null?void 0:f.isRTL(t));let g=await f.getElementRects({reference:e,floating:t,strategy:s}),{x:v,y}=pm(g,o,h),b=o,x={},T=0;for(let E=0;E({name:"arrow",options:e,async fn(t){const{x:r,y:o,placement:s,rects:c,platform:f,elements:d,middlewareData:h}=t,{element:g,padding:v=0}=Oo(e,t)||{};if(g==null)return{};const y=ub(v),b={x:r,y:o},x=Oh(s),T=$h(x),E=await f.getDimensions(g),M=x==="y",N=M?"top":"left",L=M?"bottom":"right",O=M?"clientHeight":"clientWidth",A=c.reference[T]+c.reference[x]-b[x]-c.floating[T],H=b[x]-c.reference[x],z=await(f.getOffsetParent==null?void 0:f.getOffsetParent(g));let J=z?z[O]:0;(!J||!await(f.isElement==null?void 0:f.isElement(z)))&&(J=d.floating[O]||c.floating[T]);const re=A/2-H/2,te=J/2-E[T]/2-1,j=Vl(y[N],te),ne=Vl(y[L],te),K=j,V=J-E[T]-ne,I=J/2-E[T]/2+re,k=Ld(K,I,V),B=!h.arrow&&br(s)!=null&&I!==k&&c.reference[T]/2-(Ibr(s)===e),...r.filter(s=>br(s)!==e)]:r.filter(s=>Ir(s)===s)).filter(s=>e?br(s)===e||(t?Uc(s)!==s:!1):!0)}const UT=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var r,o,s;const{rects:c,middlewareData:f,placement:d,platform:h,elements:g}=t,{crossAxis:v=!1,alignment:y,allowedPlacements:b=hm,autoAlignment:x=!0,...T}=Oo(e,t),E=y!==void 0||b===hm?WT(y||null,x,b):b,M=await Tu(t,T),N=((r=f.autoPlacement)==null?void 0:r.index)||0,L=E[N];if(L==null)return{};const O=cb(L,c,await(h.isRTL==null?void 0:h.isRTL(g.floating)));if(d!==L)return{reset:{placement:E[0]}};const A=[M[Ir(L)],M[O[0]],M[O[1]]],H=[...((o=f.autoPlacement)==null?void 0:o.overflows)||[],{placement:L,overflows:A}],z=E[N+1];if(z)return{data:{index:N+1,overflows:H},reset:{placement:z}};const J=H.map(j=>{const ne=br(j.placement);return[j.placement,ne&&v?j.overflows.slice(0,2).reduce((K,V)=>K+V,0):j.overflows[0],j.overflows]}).sort((j,ne)=>j[1]-ne[1]),te=((s=J.filter(j=>j[2].slice(0,br(j[0])?2:3).every(ne=>ne<=0))[0])==null?void 0:s[0])||J[0][0];return te!==d?{data:{index:N+1,overflows:H},reset:{placement:te}}:{}}}},VT=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r,o;const{placement:s,middlewareData:c,rects:f,initialPlacement:d,platform:h,elements:g}=t,{mainAxis:v=!0,crossAxis:y=!0,fallbackPlacements:b,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:T="none",flipAlignment:E=!0,...M}=Oo(e,t);if((r=c.arrow)!=null&&r.alignmentOffset)return{};const N=Ir(s),L=Ir(d)===d,O=await(h.isRTL==null?void 0:h.isRTL(g.floating)),A=b||(L||!E?[Vc(d)]:zT(d));!b&&T!=="none"&&A.push(...FT(d,E,T,O));const H=[d,...A],z=await Tu(t,M),J=[];let re=((o=c.flip)==null?void 0:o.overflows)||[];if(v&&J.push(z[N]),y){const K=cb(s,f,O);J.push(z[K[0]],z[K[1]])}if(re=[...re,{placement:s,overflows:J}],!J.every(K=>K<=0)){var te,j;const K=(((te=c.flip)==null?void 0:te.index)||0)+1,V=H[K];if(V)return{data:{index:K,overflows:re},reset:{placement:V}};let I=(j=re.filter(k=>k.overflows[0]<=0).sort((k,B)=>k.overflows[1]-B.overflows[1])[0])==null?void 0:j.placement;if(!I)switch(x){case"bestFit":{var ne;const k=(ne=re.map(B=>[B.placement,B.overflows.filter(W=>W>0).reduce((W,ie)=>W+ie,0)]).sort((B,W)=>B[1]-W[1])[0])==null?void 0:ne[0];k&&(I=k);break}case"initialPlacement":I=d;break}if(s!==I)return{reset:{placement:I}}}return{}}}};async function jT(e,t){const{placement:r,platform:o,elements:s}=e,c=await(o.isRTL==null?void 0:o.isRTL(s.floating)),f=Ir(r),d=br(r),h=da(r)==="y",g=["left","top"].includes(f)?-1:1,v=c&&h?-1:1,y=Oo(t,e);let{mainAxis:b,crossAxis:x,alignmentAxis:T}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...y};return d&&typeof T=="number"&&(x=d==="end"?T*-1:T),h?{x:x*v,y:b*g}:{x:b*g,y:x*v}}const GT=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,o;const{x:s,y:c,placement:f,middlewareData:d}=t,h=await jT(t,e);return f===((r=d.offset)==null?void 0:r.placement)&&(o=d.arrow)!=null&&o.alignmentOffset?{}:{x:s+h.x,y:c+h.y,data:{...h,placement:f}}}}},KT=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:o,placement:s}=t,{mainAxis:c=!0,crossAxis:f=!1,limiter:d={fn:M=>{let{x:N,y:L}=M;return{x:N,y:L}}},...h}=Oo(e,t),g={x:r,y:o},v=await Tu(t,h),y=da(Ir(s)),b=ab(y);let x=g[b],T=g[y];if(c){const M=b==="y"?"top":"left",N=b==="y"?"bottom":"right",L=x+v[M],O=x-v[N];x=Ld(L,x,O)}if(f){const M=y==="y"?"top":"left",N=y==="y"?"bottom":"right",L=T+v[M],O=T-v[N];T=Ld(L,T,O)}const E=d.fn({...t,[b]:x,[y]:T});return{...E,data:{x:E.x-r,y:E.y-o}}}}},XT=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:o,platform:s,elements:c}=t,{apply:f=()=>{},...d}=Oo(e,t),h=await Tu(t,d),g=Ir(r),v=br(r),y=da(r)==="y",{width:b,height:x}=o.floating;let T,E;g==="top"||g==="bottom"?(T=g,E=v===(await(s.isRTL==null?void 0:s.isRTL(c.floating))?"start":"end")?"left":"right"):(E=g,T=v==="end"?"top":"bottom");const M=x-h[T],N=b-h[E],L=!t.middlewareData.shift;let O=M,A=N;if(y){const z=b-h.left-h.right;A=v||L?Vl(N,z):z}else{const z=x-h.top-h.bottom;O=v||L?Vl(M,z):z}if(L&&!v){const z=wo(h.left,0),J=wo(h.right,0),re=wo(h.top,0),te=wo(h.bottom,0);y?A=b-2*(z!==0||J!==0?z+J:wo(h.left,h.right)):O=x-2*(re!==0||te!==0?re+te:wo(h.top,h.bottom))}await f({...t,availableWidth:A,availableHeight:O});const H=await s.getDimensions(c.floating);return b!==H.width||x!==H.height?{reset:{rects:!0}}:{}}}};function Qn(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function $r(e){return Qn(e).getComputedStyle(e)}const gm=Math.min,$l=Math.max,jc=Math.round;function fb(e){const t=$r(e);let r=parseFloat(t.width),o=parseFloat(t.height);const s=e.offsetWidth,c=e.offsetHeight,f=jc(r)!==s||jc(o)!==c;return f&&(r=s,o=c),{width:r,height:o,fallback:f}}function Xi(e){return hb(e)?(e.nodeName||"").toLowerCase():""}let ic;function db(){if(ic)return ic;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(ic=e.brands.map(t=>t.brand+"/"+t.version).join(" "),ic):navigator.userAgent}function Or(e){return e instanceof Qn(e).HTMLElement}function ji(e){return e instanceof Qn(e).Element}function hb(e){return e instanceof Qn(e).Node}function vm(e){return typeof ShadowRoot>"u"?!1:e instanceof Qn(e).ShadowRoot||e instanceof ShadowRoot}function Eu(e){const{overflow:t,overflowX:r,overflowY:o,display:s}=$r(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+r)&&!["inline","contents"].includes(s)}function YT(e){return["table","td","th"].includes(Xi(e))}function Ad(e){const t=/firefox/i.test(db()),r=$r(e),o=r.backdropFilter||r.WebkitBackdropFilter;return r.transform!=="none"||r.perspective!=="none"||!!o&&o!=="none"||t&&r.willChange==="filter"||t&&!!r.filter&&r.filter!=="none"||["transform","perspective"].some(s=>r.willChange.includes(s))||["paint","layout","strict","content"].some(s=>{const c=r.contain;return c!=null&&c.includes(s)})}function pb(){return!/^((?!chrome|android).)*safari/i.test(db())}function Ph(e){return["html","body","#document"].includes(Xi(e))}function gb(e){return ji(e)?e:e.contextElement}const vb={x:1,y:1};function ms(e){const t=gb(e);if(!Or(t))return vb;const r=t.getBoundingClientRect(),{width:o,height:s,fallback:c}=fb(t);let f=(c?jc(r.width):r.width)/o,d=(c?jc(r.height):r.height)/s;return f&&Number.isFinite(f)||(f=1),d&&Number.isFinite(d)||(d=1),{x:f,y:d}}function jl(e,t,r,o){var s,c;t===void 0&&(t=!1),r===void 0&&(r=!1);const f=e.getBoundingClientRect(),d=gb(e);let h=vb;t&&(o?ji(o)&&(h=ms(o)):h=ms(e));const g=d?Qn(d):window,v=!pb()&&r;let y=(f.left+(v&&((s=g.visualViewport)==null?void 0:s.offsetLeft)||0))/h.x,b=(f.top+(v&&((c=g.visualViewport)==null?void 0:c.offsetTop)||0))/h.y,x=f.width/h.x,T=f.height/h.y;if(d){const E=Qn(d),M=o&&ji(o)?Qn(o):o;let N=E.frameElement;for(;N&&o&&M!==E;){const L=ms(N),O=N.getBoundingClientRect(),A=getComputedStyle(N);O.x+=(N.clientLeft+parseFloat(A.paddingLeft))*L.x,O.y+=(N.clientTop+parseFloat(A.paddingTop))*L.y,y*=L.x,b*=L.y,x*=L.x,T*=L.y,y+=O.x,b+=O.y,N=Qn(N).frameElement}}return{width:x,height:T,top:b,right:y+x,bottom:b+T,left:y,x:y,y:b}}function Gi(e){return((hb(e)?e.ownerDocument:e.document)||window.document).documentElement}function Lu(e){return ji(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function mb(e){return jl(Gi(e)).left+Lu(e).scrollLeft}function Gl(e){if(Xi(e)==="html")return e;const t=e.assignedSlot||e.parentNode||vm(e)&&e.host||Gi(e);return vm(t)?t.host:t}function yb(e){const t=Gl(e);return Ph(t)?t.ownerDocument.body:Or(t)&&Eu(t)?t:yb(t)}function Gc(e,t){var r;t===void 0&&(t=[]);const o=yb(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),c=Qn(o);return s?t.concat(c,c.visualViewport||[],Eu(o)?o:[]):t.concat(o,Gc(o))}function mm(e,t,r){return t==="viewport"?Nl(function(o,s){const c=Qn(o),f=Gi(o),d=c.visualViewport;let h=f.clientWidth,g=f.clientHeight,v=0,y=0;if(d){h=d.width,g=d.height;const b=pb();(b||!b&&s==="fixed")&&(v=d.offsetLeft,y=d.offsetTop)}return{width:h,height:g,x:v,y}}(e,r)):ji(t)?Nl(function(o,s){const c=jl(o,!0,s==="fixed"),f=c.top+o.clientTop,d=c.left+o.clientLeft,h=Or(o)?ms(o):{x:1,y:1};return{width:o.clientWidth*h.x,height:o.clientHeight*h.y,x:d*h.x,y:f*h.y}}(t,r)):Nl(function(o){const s=Gi(o),c=Lu(o),f=o.ownerDocument.body,d=$l(s.scrollWidth,s.clientWidth,f.scrollWidth,f.clientWidth),h=$l(s.scrollHeight,s.clientHeight,f.scrollHeight,f.clientHeight);let g=-c.scrollLeft+mb(o);const v=-c.scrollTop;return $r(f).direction==="rtl"&&(g+=$l(s.clientWidth,f.clientWidth)-d),{width:d,height:h,x:g,y:v}}(Gi(e)))}function ym(e){return Or(e)&&$r(e).position!=="fixed"?e.offsetParent:null}function bm(e){const t=Qn(e);let r=ym(e);for(;r&&YT(r)&&$r(r).position==="static";)r=ym(r);return r&&(Xi(r)==="html"||Xi(r)==="body"&&$r(r).position==="static"&&!Ad(r))?t:r||function(o){let s=Gl(o);for(;Or(s)&&!Ph(s);){if(Ad(s))return s;s=Gl(s)}return null}(e)||t}function ZT(e,t,r){const o=Or(t),s=Gi(t),c=jl(e,!0,r==="fixed",t);let f={scrollLeft:0,scrollTop:0};const d={x:0,y:0};if(o||!o&&r!=="fixed")if((Xi(t)!=="body"||Eu(s))&&(f=Lu(t)),Or(t)){const h=jl(t,!0);d.x=h.x+t.clientLeft,d.y=h.y+t.clientTop}else s&&(d.x=mb(s));return{x:c.left+f.scrollLeft-d.x,y:c.top+f.scrollTop-d.y,width:c.width,height:c.height}}const JT={getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:o,strategy:s}=e;const c=r==="clippingAncestors"?function(g,v){const y=v.get(g);if(y)return y;let b=Gc(g).filter(M=>ji(M)&&Xi(M)!=="body"),x=null;const T=$r(g).position==="fixed";let E=T?Gl(g):g;for(;ji(E)&&!Ph(E);){const M=$r(E),N=Ad(E);(T?N||x:N||M.position!=="static"||!x||!["absolute","fixed"].includes(x.position))?x=M:b=b.filter(L=>L!==E),E=Gl(E)}return v.set(g,b),b}(t,this._c):[].concat(r),f=[...c,o],d=f[0],h=f.reduce((g,v)=>{const y=mm(t,v,s);return g.top=$l(y.top,g.top),g.right=gm(y.right,g.right),g.bottom=gm(y.bottom,g.bottom),g.left=$l(y.left,g.left),g},mm(t,d,s));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:r,strategy:o}=e;const s=Or(r),c=Gi(r);if(r===c)return t;let f={scrollLeft:0,scrollTop:0},d={x:1,y:1};const h={x:0,y:0};if((s||!s&&o!=="fixed")&&((Xi(r)!=="body"||Eu(c))&&(f=Lu(r)),Or(r))){const g=jl(r);d=ms(r),h.x=g.x+r.clientLeft,h.y=g.y+r.clientTop}return{width:t.width*d.x,height:t.height*d.y,x:t.x*d.x-f.scrollLeft*d.x+h.x,y:t.y*d.y-f.scrollTop*d.y+h.y}},isElement:ji,getDimensions:function(e){return Or(e)?fb(e):e.getBoundingClientRect()},getOffsetParent:bm,getDocumentElement:Gi,getScale:ms,async getElementRects(e){let{reference:t,floating:r,strategy:o}=e;const s=this.getOffsetParent||bm,c=this.getDimensions;return{reference:ZT(t,await s(r),o),floating:{x:0,y:0,...await c(r)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>$r(e).direction==="rtl"},QT=(e,t,r)=>{const o=new Map,s={platform:JT,...r},c={...s.platform,_c:o};return qT(e,t,{...s,platform:c})};function bb(e,t){for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(typeof t[r]=="object"&&e[r]?bb(e[r],t[r]):e[r]=t[r])}const wr={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover"],delay:{show:0,hide:400}}}};function Kl(e,t){let r=wr.themes[e]||{},o;do o=r[t],typeof o>"u"?r.$extend?r=wr.themes[r.$extend]||{}:(r=null,o=wr[t]):r=null;while(r);return o}function eE(e){const t=[e];let r=wr.themes[e]||{};do r.$extend&&!r.$resetCss?(t.push(r.$extend),r=wr.themes[r.$extend]||{}):r=null;while(r);return t.map(o=>`v-popper--theme-${o}`)}function wm(e){const t=[e];let r=wr.themes[e]||{};do r.$extend?(t.push(r.$extend),r=wr.themes[r.$extend]||{}):r=null;while(r);return t}let Ts=!1;if(typeof window<"u"){Ts=!1;try{const e=Object.defineProperty({},"passive",{get(){Ts=!0}});window.addEventListener("test",null,e)}catch{}}let wb=!1;typeof window<"u"&&typeof navigator<"u"&&(wb=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const xb=["auto","top","bottom","left","right"].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),xm={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart",pointer:"pointerdown"},_m={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend",pointer:"pointerup"};function Sm(e,t){const r=e.indexOf(t);r!==-1&&e.splice(r,1)}function Yf(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}const Un=[];let bo=null;const km={};function Cm(e){let t=km[e];return t||(t=km[e]=[]),t}let Md=function(){};typeof window<"u"&&(Md=window.Element);function at(e){return function(t){return Kl(t.theme,e)}}const Zf="__floating-vue__popper",_b=()=>ft({name:"VPopper",provide(){return{[Zf]:{parentPopper:this}}},inject:{[Zf]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:at("disabled")},positioningDisabled:{type:Boolean,default:at("positioningDisabled")},placement:{type:String,default:at("placement"),validator:e=>xb.includes(e)},delay:{type:[String,Number,Object],default:at("delay")},distance:{type:[Number,String],default:at("distance")},skidding:{type:[Number,String],default:at("skidding")},triggers:{type:Array,default:at("triggers")},showTriggers:{type:[Array,Function],default:at("showTriggers")},hideTriggers:{type:[Array,Function],default:at("hideTriggers")},popperTriggers:{type:Array,default:at("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:at("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:at("popperHideTriggers")},container:{type:[String,Object,Md,Boolean],default:at("container")},boundary:{type:[String,Md],default:at("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:at("strategy")},autoHide:{type:[Boolean,Function],default:at("autoHide")},handleResize:{type:Boolean,default:at("handleResize")},instantMove:{type:Boolean,default:at("instantMove")},eagerMount:{type:Boolean,default:at("eagerMount")},popperClass:{type:[String,Array,Object],default:at("popperClass")},computeTransformOrigin:{type:Boolean,default:at("computeTransformOrigin")},autoMinSize:{type:Boolean,default:at("autoMinSize")},autoSize:{type:[Boolean,String],default:at("autoSize")},autoMaxSize:{type:Boolean,default:at("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:at("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:at("preventOverflow")},overflowPadding:{type:[Number,String],default:at("overflowPadding")},arrowPadding:{type:[Number,String],default:at("arrowPadding")},arrowOverflow:{type:Boolean,default:at("arrowOverflow")},flip:{type:Boolean,default:at("flip")},shift:{type:Boolean,default:at("shift")},shiftCrossAxis:{type:Boolean,default:at("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:at("noAutoFocus")},disposeTimeout:{type:Number,default:at("disposeTimeout")}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join("_")}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide=="function"?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){var e;return(e=this[Zf])==null?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return((e=this.popperTriggers)==null?void 0:e.includes("hover"))||((t=this.popperShowTriggers)==null?void 0:t.includes("hover"))}},watch:{shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:"$_refreshListeners",deep:!0},positioningDisabled:"$_refreshListeners",...["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce((e,t)=>(e[t]="$_computePosition",e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:r=!1}={}){var o,s;(o=this.parentPopper)!=null&&o.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(r||!this.disabled)&&(((s=this.parentPopper)==null?void 0:s.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1}={}){var r;if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}((r=this.parentPopper)==null?void 0:r.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){var e;this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=((e=this.referenceNode)==null?void 0:e.call(this))??this.$el,this.$_targetNodes=this.targetNodes().filter(t=>t.nodeType===t.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;const e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(GT({mainAxis:this.distance,crossAxis:this.skidding}));const t=this.placement.startsWith("auto");if(t?e.middleware.push(UT({alignment:this.placement.split("-")[1]??""})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(KT({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(VT({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(BT({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:"arrowOverflow",fn:({placement:o,rects:s,middlewareData:c})=>{let f;const{centerOffset:d}=c.arrow;return o.startsWith("top")||o.startsWith("bottom")?f=Math.abs(d)>s.reference.width/2:f=Math.abs(d)>s.reference.height/2,{data:{overflow:f}}}}),this.autoMinSize||this.autoSize){const o=this.autoSize?this.autoSize:this.autoMinSize?"min":null;e.middleware.push({name:"autoSize",fn:({rects:s,placement:c,middlewareData:f})=>{var d;if((d=f.autoSize)!=null&&d.skip)return{};let h,g;return c.startsWith("top")||c.startsWith("bottom")?h=s.reference.width:g=s.reference.height,this.$_innerNode.style[o==="min"?"minWidth":o==="max"?"maxWidth":"width"]=h!=null?`${h}px`:null,this.$_innerNode.style[o==="min"?"minHeight":o==="max"?"maxHeight":"height"]=g!=null?`${g}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(XT({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:o,availableHeight:s})=>{this.$_innerNode.style.maxWidth=o!=null?`${o}px`:null,this.$_innerNode.style.maxHeight=s!=null?`${s}px`:null}})));const r=await QT(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:r.x,y:r.y,placement:r.placement,strategy:r.strategy,arrow:{...r.middlewareData.arrow,...r.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),bo&&this.instantMove&&bo.instantMove&&bo!==this.parentPopper){bo.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(bo=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await Yf(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...Gc(this.$_referenceNode),...Gc(this.$_popperNode)],"scroll",()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const t=this.$_referenceNode.getBoundingClientRect(),r=this.$_popperNode.querySelector(".v-popper__wrapper"),o=r.parentNode.getBoundingClientRect(),s=t.x+t.width/2-(o.left+r.offsetLeft),c=t.y+t.height/2-(o.top+r.offsetTop);this.result.transformOrigin=`${s}px ${c}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let r=0;r0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,Sm(Un,this),Un.length===0&&document.body.classList.remove("v-popper--some-open");for(const r of wm(this.theme)){const o=Cm(r);Sm(o,this),o.length===0&&document.body.classList.remove(`v-popper--some-open--${r}`)}bo===this&&(bo=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await Yf(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e=="string"?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=r=>{this.isShown&&!this.$_hideInProgress||(r.usedByTooltip=!0,!this.$_preventShow&&this.show({event:r}))};this.$_registerTriggerListeners(this.$_targetNodes,xm,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],xm,this.popperTriggers,this.popperShowTriggers,e);const t=r=>{r.usedByTooltip||this.hide({event:r})};this.$_registerTriggerListeners(this.$_targetNodes,_m,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],_m,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,r){this.$_events.push({targetNodes:e,eventType:t,handler:r}),e.forEach(o=>o.addEventListener(t,r,Ts?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,r,o,s){let c=r;o!=null&&(c=typeof o=="function"?o(c):o),c.forEach(f=>{const d=t[f];d&&this.$_registerEventListeners(e,d,s)})},$_removeEventListeners(e){const t=[];this.$_events.forEach(r=>{const{targetNodes:o,eventType:s,handler:c}=r;!e||e===s?o.forEach(f=>f.removeEventListener(s,c)):t.push(r)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const r of this.$_targetNodes){const o=r.getAttribute(e);o&&(r.removeAttribute(e),r.setAttribute(t,o))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const r in e){const o=e[r];o==null?t.removeAttribute(r):t.setAttribute(r,o)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$_referenceNode.getBoundingClientRect();if(Ol>=e.left&&Ol<=e.right&&Pl>=e.top&&Pl<=e.bottom){const t=this.$_popperNode.getBoundingClientRect(),r=Ol-$i,o=Pl-Oi,s=t.left+t.width/2-$i+(t.top+t.height/2)-Oi+t.width+t.height,c=$i+r*s,f=Oi+o*s;return oc($i,Oi,c,f,t.left,t.top,t.left,t.bottom)||oc($i,Oi,c,f,t.left,t.top,t.right,t.top)||oc($i,Oi,c,f,t.right,t.top,t.right,t.bottom)||oc($i,Oi,c,f,t.left,t.bottom,t.right,t.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<"u"&&typeof window<"u"){if(wb){const e=Ts?{passive:!0,capture:!0}:!0;document.addEventListener("touchstart",t=>Tm(t,!0),e),document.addEventListener("touchend",t=>Em(t,!0),e)}else window.addEventListener("mousedown",e=>Tm(e,!1),!0),window.addEventListener("click",e=>Em(e,!1),!0);window.addEventListener("resize",nE)}function Tm(e,t){if(wr.autoHideOnMousedown)Sb(e,t);else for(let r=0;r=0;o--){const s=Un[o];try{const c=s.containsGlobalTarget=s.mouseDownContains||s.popperNode().contains(e.target);s.pendingHide=!1,requestAnimationFrame(()=>{if(s.pendingHide=!1,!r[s.randomId]&&Lm(s,c,e)){if(s.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&c){let d=s.parentPopper;for(;d;)r[d.randomId]=!0,d=d.parentPopper;return}let f=s.parentPopper;for(;f&&Lm(f,f.containsGlobalTarget,e);)f.$_handleGlobalClose(e,t),f=f.parentPopper}})}catch{}}}function Lm(e,t,r){return r.closeAllPopover||r.closePopover&&t||tE(e,r)&&!t}function tE(e,t){if(typeof e.autoHide=="function"){const r=e.autoHide(t);return e.lastAutoHide=r,r}return e.autoHide}function nE(){for(let e=0;e{$i=Ol,Oi=Pl,Ol=e.clientX,Pl=e.clientY},Ts?{passive:!0}:void 0);function oc(e,t,r,o,s,c,f,d){const h=((f-s)*(t-c)-(d-c)*(e-s))/((d-c)*(r-e)-(f-s)*(o-t)),g=((r-e)*(t-c)-(o-t)*(e-s))/((d-c)*(r-e)-(f-s)*(o-t));return h>=0&&h<=1&&g>=0&&g<=1}const rE={extends:_b()},Au=(e,t)=>{const r=e.__vccOpts||e;for(const[o,s]of t)r[o]=s;return r};function iE(e,t,r,o,s,c){return oe(),me("div",{ref:"reference",class:lt(["v-popper",{"v-popper--shown":e.slotData.isShown}])},[dn(e.$slots,"default",Z_(By(e.slotData)))],2)}const oE=Au(rE,[["render",iE]]);function sE(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var r=e.indexOf("Trident/");if(r>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var s=e.indexOf("Edge/");return s>0?parseInt(e.substring(s+5,e.indexOf(".",s)),10):-1}let Sc;function Nd(){Nd.init||(Nd.init=!0,Sc=sE()!==-1)}var Mu={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Nd(),ln(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",Sc&&this.$el.appendChild(e),e.data="about:blank",Sc||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Sc&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const lE=dy();la("data-v-b329ee4c");const aE={class:"resize-observer",tabindex:"-1"};aa();const cE=lE((e,t,r,o,s,c)=>(oe(),ot("div",aE)));Mu.render=cE;Mu.__scopeId="data-v-b329ee4c";Mu.__file="src/components/ResizeObserver.vue";const kb=(e="theme")=>({computed:{themeClass(){return eE(this[e])}}}),uE=ft({name:"VPopperContent",components:{ResizeObserver:Mu},mixins:[kb()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:["hide","resize"],methods:{toPx(e){return e!=null&&!isNaN(e)?`${e}px`:null}}}),fE=["id","aria-hidden","tabindex","data-popper-placement"],dE={ref:"inner",class:"v-popper__inner"},hE=Y("div",{class:"v-popper__arrow-outer"},null,-1),pE=Y("div",{class:"v-popper__arrow-inner"},null,-1),gE=[hE,pE];function vE(e,t,r,o,s,c){const f=Ao("ResizeObserver");return oe(),me("div",{id:e.popperId,ref:"popover",class:lt(["v-popper__popper",[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}]]),style:Zt(e.result?{position:e.result.strategy,transform:`translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`}:void 0),"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0,onKeyup:t[2]||(t[2]=kd(d=>e.autoHide&&e.$emit("hide"),["esc"]))},[Y("div",{class:"v-popper__backdrop",onClick:t[0]||(t[0]=d=>e.autoHide&&e.$emit("hide"))}),Y("div",{class:"v-popper__wrapper",style:Zt(e.result?{transformOrigin:e.result.transformOrigin}:void 0)},[Y("div",dE,[e.mounted?(oe(),me(ut,{key:0},[Y("div",null,[dn(e.$slots,"default")]),e.handleResize?(oe(),ot(f,{key:0,onNotify:t[1]||(t[1]=d=>e.$emit("resize",d))})):et("",!0)],64)):et("",!0)],512),Y("div",{ref:"arrow",class:"v-popper__arrow-container",style:Zt(e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0)},gE,4)],4)],46,fE)}const Cb=Au(uE,[["render",vE]]),Tb={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}};let $d=function(){};typeof window<"u"&&($d=window.Element);const mE=ft({name:"VPopperWrapper",components:{Popper:oE,PopperContent:Cb},mixins:[Tb,kb("finalTheme")],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,$d,Boolean],default:void 0},boundary:{type:[String,$d],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}}});function yE(e,t,r,o,s,c){const f=Ao("PopperContent"),d=Ao("Popper");return oe(),ot(d,ii({ref:"popper"},e.$props,{theme:e.finalTheme,"target-nodes":e.getTargetNodes,"popper-node":()=>e.$refs.popperContent.$el,class:[e.themeClass],onShow:t[0]||(t[0]=()=>e.$emit("show")),onHide:t[1]||(t[1]=()=>e.$emit("hide")),"onUpdate:shown":t[2]||(t[2]=h=>e.$emit("update:shown",h)),onApplyShow:t[3]||(t[3]=()=>e.$emit("apply-show")),onApplyHide:t[4]||(t[4]=()=>e.$emit("apply-hide")),onCloseGroup:t[5]||(t[5]=()=>e.$emit("close-group")),onCloseDirective:t[6]||(t[6]=()=>e.$emit("close-directive")),onAutoHide:t[7]||(t[7]=()=>e.$emit("auto-hide")),onResize:t[8]||(t[8]=()=>e.$emit("resize"))}),{default:st(({popperId:h,isShown:g,shouldMountContent:v,skipTransition:y,autoHide:b,show:x,hide:T,handleResize:E,onResize:M,classes:N,result:L})=>[dn(e.$slots,"default",{shown:g,show:x,hide:T}),Oe(f,{ref:"popperContent","popper-id":h,theme:e.finalTheme,shown:g,mounted:v,"skip-transition":y,"auto-hide":b,"handle-resize":E,classes:N,result:L,onHide:T,onResize:M},{default:st(()=>[dn(e.$slots,"popper",{shown:g,hide:T})]),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:3},16,["theme","target-nodes","popper-node","class"])}const Rh=Au(mE,[["render",yE]]),bE={...Rh,name:"VDropdown",vPopperTheme:"dropdown"},wE={...Rh,name:"VMenu",vPopperTheme:"menu"},Eb={...Rh,name:"VTooltip",vPopperTheme:"tooltip"},xE=ft({name:"VTooltipDirective",components:{Popper:_b(),PopperContent:Cb},mixins:[Tb],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:e=>Kl(e.theme,"html")},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>Kl(e.theme,"loadingContent")},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content=="function"},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content=="function"&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;const t=++this.$_fetchId,r=this.content(this);r.then?r.then(o=>this.onResult(t,o)):this.onResult(t,r)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}}),_E=["innerHTML"],SE=["textContent"];function kE(e,t,r,o,s,c){const f=Ao("PopperContent"),d=Ao("Popper");return oe(),ot(d,ii({ref:"popper"},e.$attrs,{theme:e.theme,"target-nodes":e.targetNodes,"popper-node":()=>e.$refs.popperContent.$el,onApplyShow:e.onShow,onApplyHide:e.onHide}),{default:st(({popperId:h,isShown:g,shouldMountContent:v,skipTransition:y,autoHide:b,hide:x,handleResize:T,onResize:E,classes:M,result:N})=>[Oe(f,{ref:"popperContent",class:lt({"v-popper--tooltip-loading":e.loading}),"popper-id":h,theme:e.theme,shown:g,mounted:v,"skip-transition":y,"auto-hide":b,"handle-resize":T,classes:M,result:N,onHide:x,onResize:E},{default:st(()=>[e.html?(oe(),me("div",{key:0,innerHTML:e.finalContent},null,8,_E)):(oe(),me("div",{key:1,textContent:qe(e.finalContent)},null,8,SE))]),_:2},1032,["class","popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:1},16,["theme","target-nodes","popper-node","onApplyShow","onApplyHide"])}const CE=Au(xE,[["render",kE]]),Lb="v-popper--has-tooltip";function TE(e,t){let r=e.placement;if(!r&&t)for(const o of xb)t[o]&&(r=o);return r||(r=Kl(e.theme||"tooltip","placement")),r}function Ab(e,t,r){let o;const s=typeof t;return s==="string"?o={content:t}:t&&s==="object"?o=t:o={content:!1},o.placement=TE(o,r),o.targetNodes=()=>[e],o.referenceNode=()=>e,o}let Jf,Xl,EE=0;function LE(){if(Jf)return;Xl=Be([]),Jf=Xy({name:"VTooltipDirectiveApp",setup(){return{directives:Xl}},render(){return this.directives.map(t=>fa(CE,{...t.options,shown:t.shown||t.options.shown,key:t.id}))},devtools:{hide:!0}});const e=document.createElement("div");document.body.appendChild(e),Jf.mount(e)}function Mb(e,t,r){LE();const o=Be(Ab(e,t,r)),s=Be(!1),c={id:EE++,options:o,shown:s};return Xl.value.push(c),e.classList&&e.classList.add(Lb),e.$_popper={options:o,item:c,show(){s.value=!0},hide(){s.value=!1}}}function Dh(e){if(e.$_popper){const t=Xl.value.indexOf(e.$_popper.item);t!==-1&&Xl.value.splice(t,1),delete e.$_popper,delete e.$_popperOldShown,delete e.$_popperMountTarget}e.classList&&e.classList.remove(Lb)}function Mm(e,{value:t,modifiers:r}){const o=Ab(e,t,r);if(!o.content||Kl(o.theme||"tooltip","disabled"))Dh(e);else{let s;e.$_popper?(s=e.$_popper,s.options.value=o):s=Mb(e,t,r),typeof t.shown<"u"&&t.shown!==e.$_popperOldShown&&(e.$_popperOldShown=t.shown,t.shown?s.show():s.hide())}}const Nb={beforeMount:Mm,updated:Mm,beforeUnmount(e){Dh(e)}};function Nm(e){e.addEventListener("mousedown",Kc),e.addEventListener("click",Kc),e.addEventListener("touchstart",$b,Ts?{passive:!0}:!1)}function $m(e){e.removeEventListener("mousedown",Kc),e.removeEventListener("click",Kc),e.removeEventListener("touchstart",$b),e.removeEventListener("touchend",Ob),e.removeEventListener("touchcancel",Pb)}function Kc(e){const t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function $b(e){if(e.changedTouches.length===1){const t=e.currentTarget;t.$_vclosepopover_touch=!0;const r=e.changedTouches[0];t.$_vclosepopover_touchPoint=r,t.addEventListener("touchend",Ob),t.addEventListener("touchcancel",Pb)}}function Ob(e){const t=e.currentTarget;if(t.$_vclosepopover_touch=!1,e.changedTouches.length===1){const r=e.changedTouches[0],o=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(r.screenY-o.screenY)<20&&Math.abs(r.screenX-o.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Pb(e){const t=e.currentTarget;t.$_vclosepopover_touch=!1}const AE={beforeMount(e,{value:t,modifiers:r}){e.$_closePopoverModifiers=r,(typeof t>"u"||t)&&Nm(e)},updated(e,{value:t,oldValue:r,modifiers:o}){e.$_closePopoverModifiers=o,t!==r&&(typeof t>"u"||t?Nm(e):$m(e))},beforeUnmount(e){$m(e)}},ME=Nb,Rb=Eb;function NE(e,t={}){e.$_vTooltipInstalled||(e.$_vTooltipInstalled=!0,bb(wr,t),e.directive("tooltip",Nb),e.directive("close-popper",AE),e.component("VTooltip",Eb),e.component("VDropdown",bE),e.component("VMenu",wE))}const Db={version:"5.2.2",install:NE,options:wr},$E=6e4;function zb(e){return e}const OE=zb,{clearTimeout:PE,setTimeout:RE}=globalThis,DE=Math.random.bind(Math);function zE(e,t){const{post:r,on:o,eventNames:s=[],serialize:c=zb,deserialize:f=OE,resolver:d,timeout:h=$E}=t,g=new Map;let v;const y=new Proxy({},{get(b,x){if(x==="$functions")return e;if(x==="then"&&!s.includes("then")&&!("then"in e))return;const T=(...M)=>{r(c({m:x,a:M,t:"q"}))};if(s.includes(x))return T.asEvent=T,T;const E=async(...M)=>(await v,new Promise((N,L)=>{var H;const O=FE();let A;h>=0&&(A=RE(()=>{var z;try{throw(z=t.onTimeoutError)==null||z.call(t,x,M),new Error(`[birpc] timeout on calling "${x}"`)}catch(J){L(J)}g.delete(O)},h),typeof A=="object"&&(A=(H=A.unref)==null?void 0:H.call(A))),g.set(O,{resolve:N,reject:L,timeoutId:A}),r(c({m:x,a:M,i:O,t:"q"}))}));return E.asEvent=T,E}});return v=o(async(b,...x)=>{const T=f(b);if(T.t==="q"){const{m:E,a:M}=T;let N,L;const O=d?d(E,e[E]):e[E];if(!O)L=new Error(`[birpc] function "${E}" not found`);else try{N=await O.apply(y,M)}catch(A){L=A}T.i&&(L&&t.onError&&t.onError(L,E,M),r(c({t:"s",i:T.i,r:N,e:L}),...x))}else{const{i:E,r:M,e:N}=T,L=g.get(E);L&&(PE(L.timeoutId),N?L.reject(N):L.resolve(M)),g.delete(E)}}),y}const IE="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function FE(e=21){let t="",r=e;for(;r--;)t+=IE[DE()*64|0];return t}const{parse:HE,stringify:qE}=JSON,{keys:BE}=Object,Yl=String,Ib="string",Om={},Xc="object",Fb=(e,t)=>t,WE=e=>e instanceof Yl?Yl(e):e,UE=(e,t)=>typeof t===Ib?new Yl(t):t,Hb=(e,t,r,o)=>{const s=[];for(let c=BE(r),{length:f}=c,d=0;d{const o=Yl(t.push(r)-1);return e.set(r,o),o},Od=(e,t)=>{const r=HE(e,UE).map(WE),o=r[0],s=t||Fb,c=typeof o===Xc&&o?Hb(r,new Set,o,s):o;return s.call({"":c},"",c)},VE=(e,t,r)=>{const o=t&&typeof t===Xc?(v,y)=>v===""||-1t.toUpperCase())}const KE=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,Rm=/^\/([A-Za-z]:)?$/;function XE(){return typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replace(/\\/g,"/"):"/"}const Dm=function(...e){e=e.map(o=>GE(o));let t="",r=!1;for(let o=e.length-1;o>=-1&&!r;o--){const s=o>=0?e[o]:XE();!s||s.length===0||(t=`${s}/${t}`,r=zm(s))}return t=YE(t,!r),r&&!zm(t)?`/${t}`:t.length>0?t:"."};function YE(e,t){let r="",o=0,s=-1,c=0,f=null;for(let d=0;d<=e.length;++d){if(d2){const h=r.lastIndexOf("/");h===-1?(r="",o=0):(r=r.slice(0,h),o=r.length-1-r.lastIndexOf("/")),s=d,c=0;continue}else if(r.length>0){r="",o=0,s=d,c=0;continue}}t&&(r+=r.length>0?"/..":"..",o=2)}else r.length>0?r+=`/${e.slice(s+1,d)}`:r=e.slice(s+1,d),o=d-s-1;s=d,c=0}else f==="."&&c!==-1?++c:c=-1}return r}const zm=function(e){return KE.test(e)},ZE=function(e,t){const r=Dm(e).replace(Rm,"$1").split("/"),o=Dm(t).replace(Rm,"$1").split("/");if(o[0][1]===":"&&r[0][1]===":"&&r[0]!==o[0])return o.join("/");const s=[...r];for(const c of s){if(o[0]!==c)break;r.shift(),o.shift()}return[...r.map(()=>".."),...o].join("/")};function JE(e){let t=0;if(e.length===0)return`${t}`;for(let r=0;rEs(t)?[t]:[t,...Ih(t.tasks)])}function QE(e){const t=[e.name];let r=e;for(;r!=null&&r.suite;)r=r.suite,r!=null&&r.name&&t.unshift(r.name);return r!==e.file&&t.unshift(e.file.name),t}class Ub{constructor(){ls(this,"filesMap",new Map);ls(this,"pathsSet",new Set);ls(this,"idMap",new Map)}getPaths(){return Array.from(this.pathsSet)}getFiles(t){return t?t.map(r=>this.filesMap.get(r)).flat().filter(r=>r&&!r.local):Array.from(this.filesMap.values()).flat().filter(r=>!r.local)}getFilepaths(){return Array.from(this.filesMap.keys())}getFailedFilepaths(){return this.getFiles().filter(t=>{var r;return((r=t.result)==null?void 0:r.state)==="fail"}).map(t=>t.filepath)}collectPaths(t=[]){t.forEach(r=>{this.pathsSet.add(r)})}collectFiles(t=[]){t.forEach(r=>{const o=this.filesMap.get(r.filepath)||[],s=o.filter(f=>f.projectName!==r.projectName),c=o.find(f=>f.projectName===r.projectName);c&&(r.logs=c.logs),s.push(r),this.filesMap.set(r.filepath,s),this.updateId(r)})}clearFiles(t,r=[]){const o=t;r.forEach(s=>{const c=this.filesMap.get(s),f=Bb(s,o.config.root,o.config.name||"");if(f.local=!0,this.idMap.set(f.id,f),!c){this.filesMap.set(s,[f]);return}const d=c.filter(h=>h.projectName!==o.config.name);d.length?this.filesMap.set(s,[...d,f]):this.filesMap.set(s,[f])})}updateId(t){this.idMap.get(t.id)!==t&&(this.idMap.set(t.id,t),t.type==="suite"&&t.tasks.forEach(r=>{this.updateId(r)}))}updateTasks(t){for(const[r,o,s]of t){const c=this.idMap.get(r);c&&(c.result=o,c.meta=s,(o==null?void 0:o.state)==="skip"&&(c.mode="skip"))}}updateUserLog(t){const r=t.taskId&&this.idMap.get(t.taskId);r&&(r.logs||(r.logs=[]),r.logs.push(t))}}function Fh(e){return Wb(e).some(t=>{var r,o;return(o=(r=t.result)==null?void 0:r.errors)==null?void 0:o.some(s=>typeof(s==null?void 0:s.message)=="string"&&s.message.match(/Snapshot .* mismatched/))})}function eL(e,t={}){const{handlers:r={},autoReconnect:o=!0,reconnectInterval:s=2e3,reconnectTries:c=10,connectTimeout:f=6e4,reactive:d=L=>L,WebSocketConstructor:h=globalThis.WebSocket}=t;let g=c;const v=d({ws:new h(e),state:new Ub,waitForConnection:N,reconnect:E},"state");v.state.filesMap=d(v.state.filesMap,"filesMap"),v.state.idMap=d(v.state.idMap,"idMap");let y;const b={onSpecsCollected(L){var O;L==null||L.forEach(([A,H])=>{v.state.clearFiles({config:A},[H])}),(O=r.onSpecsCollected)==null||O.call(r,L)},onPathsCollected(L){var O;v.state.collectPaths(L),(O=r.onPathsCollected)==null||O.call(r,L)},onCollected(L){var O;v.state.collectFiles(L),(O=r.onCollected)==null||O.call(r,L)},onTaskUpdate(L){var O;v.state.updateTasks(L),(O=r.onTaskUpdate)==null||O.call(r,L)},onUserConsoleLog(L){var O;v.state.updateUserLog(L),(O=r.onUserConsoleLog)==null||O.call(r,L)},onFinished(L,O){var A;(A=r.onFinished)==null||A.call(r,L,O)},onFinishedReportCoverage(){var L;(L=r.onFinishedReportCoverage)==null||L.call(r)}},x={post:L=>v.ws.send(L),on:L=>y=L,serialize:L=>VE(L,(O,A)=>A instanceof Error?{name:A.name,message:A.message,stack:A.stack}:A),deserialize:Od,onTimeoutError(L){throw new Error(`[vitest-ws-client]: Timeout calling "${L}"`)}};v.rpc=zE(b,x);let T;function E(L=!1){L&&(g=c),v.ws=new h(e),M()}function M(){T=new Promise((L,O)=>{var H,z;const A=(z=(H=setTimeout(()=>{O(new Error(`Cannot connect to the server in ${f/1e3} seconds`))},f))==null?void 0:H.unref)==null?void 0:z.call(H);v.ws.OPEN===v.ws.readyState&&L(),v.ws.addEventListener("open",()=>{g=c,L(),clearTimeout(A)})}),v.ws.addEventListener("message",L=>{y(L.data)}),v.ws.addEventListener("close",()=>{g-=1,o&&g>0&&setTimeout(E,s)})}M();function N(){return T}return v}const tL=location.port,nL=[location.hostname,tL].filter(Boolean).join(":"),rL=`${location.protocol==="https:"?"wss:":"ws:"}//${nL}/__vitest_api__`,Pr=!!window.METADATA_PATH;var Mo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Vb(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var jb={},oi={};const iL="Á",oL="á",sL="Ă",lL="ă",aL="∾",cL="∿",uL="∾̳",fL="Â",dL="â",hL="´",pL="А",gL="а",vL="Æ",mL="æ",yL="⁡",bL="𝔄",wL="𝔞",xL="À",_L="à",SL="ℵ",kL="ℵ",CL="Α",TL="α",EL="Ā",LL="ā",AL="⨿",ML="&",NL="&",$L="⩕",OL="⩓",PL="∧",RL="⩜",DL="⩘",zL="⩚",IL="∠",FL="⦤",HL="∠",qL="⦨",BL="⦩",WL="⦪",UL="⦫",VL="⦬",jL="⦭",GL="⦮",KL="⦯",XL="∡",YL="∟",ZL="⊾",JL="⦝",QL="∢",eA="Å",tA="⍼",nA="Ą",rA="ą",iA="𝔸",oA="𝕒",sA="⩯",lA="≈",aA="⩰",cA="≊",uA="≋",fA="'",dA="⁡",hA="≈",pA="≊",gA="Å",vA="å",mA="𝒜",yA="𝒶",bA="≔",wA="*",xA="≈",_A="≍",SA="Ã",kA="ã",CA="Ä",TA="ä",EA="∳",LA="⨑",AA="≌",MA="϶",NA="‵",$A="∽",OA="⋍",PA="∖",RA="⫧",DA="⊽",zA="⌅",IA="⌆",FA="⌅",HA="⎵",qA="⎶",BA="≌",WA="Б",UA="б",VA="„",jA="∵",GA="∵",KA="∵",XA="⦰",YA="϶",ZA="ℬ",JA="ℬ",QA="Β",eM="β",tM="ℶ",nM="≬",rM="𝔅",iM="𝔟",oM="⋂",sM="◯",lM="⋃",aM="⨀",cM="⨁",uM="⨂",fM="⨆",dM="★",hM="▽",pM="△",gM="⨄",vM="⋁",mM="⋀",yM="⤍",bM="⧫",wM="▪",xM="▴",_M="▾",SM="◂",kM="▸",CM="␣",TM="▒",EM="░",LM="▓",AM="█",MM="=⃥",NM="≡⃥",$M="⫭",OM="⌐",PM="𝔹",RM="𝕓",DM="⊥",zM="⊥",IM="⋈",FM="⧉",HM="┐",qM="╕",BM="╖",WM="╗",UM="┌",VM="╒",jM="╓",GM="╔",KM="─",XM="═",YM="┬",ZM="╤",JM="╥",QM="╦",eN="┴",tN="╧",nN="╨",rN="╩",iN="⊟",oN="⊞",sN="⊠",lN="┘",aN="╛",cN="╜",uN="╝",fN="└",dN="╘",hN="╙",pN="╚",gN="│",vN="║",mN="┼",yN="╪",bN="╫",wN="╬",xN="┤",_N="╡",SN="╢",kN="╣",CN="├",TN="╞",EN="╟",LN="╠",AN="‵",MN="˘",NN="˘",$N="¦",ON="𝒷",PN="ℬ",RN="⁏",DN="∽",zN="⋍",IN="⧅",FN="\\",HN="⟈",qN="•",BN="•",WN="≎",UN="⪮",VN="≏",jN="≎",GN="≏",KN="Ć",XN="ć",YN="⩄",ZN="⩉",JN="⩋",QN="∩",e$="⋒",t$="⩇",n$="⩀",r$="ⅅ",i$="∩︀",o$="⁁",s$="ˇ",l$="ℭ",a$="⩍",c$="Č",u$="č",f$="Ç",d$="ç",h$="Ĉ",p$="ĉ",g$="∰",v$="⩌",m$="⩐",y$="Ċ",b$="ċ",w$="¸",x$="¸",_$="⦲",S$="¢",k$="·",C$="·",T$="𝔠",E$="ℭ",L$="Ч",A$="ч",M$="✓",N$="✓",$$="Χ",O$="χ",P$="ˆ",R$="≗",D$="↺",z$="↻",I$="⊛",F$="⊚",H$="⊝",q$="⊙",B$="®",W$="Ⓢ",U$="⊖",V$="⊕",j$="⊗",G$="○",K$="⧃",X$="≗",Y$="⨐",Z$="⫯",J$="⧂",Q$="∲",eO="”",tO="’",nO="♣",rO="♣",iO=":",oO="∷",sO="⩴",lO="≔",aO="≔",cO=",",uO="@",fO="∁",dO="∘",hO="∁",pO="ℂ",gO="≅",vO="⩭",mO="≡",yO="∮",bO="∯",wO="∮",xO="𝕔",_O="ℂ",SO="∐",kO="∐",CO="©",TO="©",EO="℗",LO="∳",AO="↵",MO="✗",NO="⨯",$O="𝒞",OO="𝒸",PO="⫏",RO="⫑",DO="⫐",zO="⫒",IO="⋯",FO="⤸",HO="⤵",qO="⋞",BO="⋟",WO="↶",UO="⤽",VO="⩈",jO="⩆",GO="≍",KO="∪",XO="⋓",YO="⩊",ZO="⊍",JO="⩅",QO="∪︀",eP="↷",tP="⤼",nP="⋞",rP="⋟",iP="⋎",oP="⋏",sP="¤",lP="↶",aP="↷",cP="⋎",uP="⋏",fP="∲",dP="∱",hP="⌭",pP="†",gP="‡",vP="ℸ",mP="↓",yP="↡",bP="⇓",wP="‐",xP="⫤",_P="⊣",SP="⤏",kP="˝",CP="Ď",TP="ď",EP="Д",LP="д",AP="‡",MP="⇊",NP="ⅅ",$P="ⅆ",OP="⤑",PP="⩷",RP="°",DP="∇",zP="Δ",IP="δ",FP="⦱",HP="⥿",qP="𝔇",BP="𝔡",WP="⥥",UP="⇃",VP="⇂",jP="´",GP="˙",KP="˝",XP="`",YP="˜",ZP="⋄",JP="⋄",QP="⋄",eR="♦",tR="♦",nR="¨",rR="ⅆ",iR="ϝ",oR="⋲",sR="÷",lR="÷",aR="⋇",cR="⋇",uR="Ђ",fR="ђ",dR="⌞",hR="⌍",pR="$",gR="𝔻",vR="𝕕",mR="¨",yR="˙",bR="⃜",wR="≐",xR="≑",_R="≐",SR="∸",kR="∔",CR="⊡",TR="⌆",ER="∯",LR="¨",AR="⇓",MR="⇐",NR="⇔",$R="⫤",OR="⟸",PR="⟺",RR="⟹",DR="⇒",zR="⊨",IR="⇑",FR="⇕",HR="∥",qR="⤓",BR="↓",WR="↓",UR="⇓",VR="⇵",jR="̑",GR="⇊",KR="⇃",XR="⇂",YR="⥐",ZR="⥞",JR="⥖",QR="↽",eD="⥟",tD="⥗",nD="⇁",rD="↧",iD="⊤",oD="⤐",sD="⌟",lD="⌌",aD="𝒟",cD="𝒹",uD="Ѕ",fD="ѕ",dD="⧶",hD="Đ",pD="đ",gD="⋱",vD="▿",mD="▾",yD="⇵",bD="⥯",wD="⦦",xD="Џ",_D="џ",SD="⟿",kD="É",CD="é",TD="⩮",ED="Ě",LD="ě",AD="Ê",MD="ê",ND="≖",$D="≕",OD="Э",PD="э",RD="⩷",DD="Ė",zD="ė",ID="≑",FD="ⅇ",HD="≒",qD="𝔈",BD="𝔢",WD="⪚",UD="È",VD="è",jD="⪖",GD="⪘",KD="⪙",XD="∈",YD="⏧",ZD="ℓ",JD="⪕",QD="⪗",e2="Ē",t2="ē",n2="∅",r2="∅",i2="◻",o2="∅",s2="▫",l2=" ",a2=" ",c2=" ",u2="Ŋ",f2="ŋ",d2=" ",h2="Ę",p2="ę",g2="𝔼",v2="𝕖",m2="⋕",y2="⧣",b2="⩱",w2="ε",x2="Ε",_2="ε",S2="ϵ",k2="≖",C2="≕",T2="≂",E2="⪖",L2="⪕",A2="⩵",M2="=",N2="≂",$2="≟",O2="⇌",P2="≡",R2="⩸",D2="⧥",z2="⥱",I2="≓",F2="ℯ",H2="ℰ",q2="≐",B2="⩳",W2="≂",U2="Η",V2="η",j2="Ð",G2="ð",K2="Ë",X2="ë",Y2="€",Z2="!",J2="∃",Q2="∃",ez="ℰ",tz="ⅇ",nz="ⅇ",rz="≒",iz="Ф",oz="ф",sz="♀",lz="ffi",az="ff",cz="ffl",uz="𝔉",fz="𝔣",dz="fi",hz="◼",pz="▪",gz="fj",vz="♭",mz="fl",yz="▱",bz="ƒ",wz="𝔽",xz="𝕗",_z="∀",Sz="∀",kz="⋔",Cz="⫙",Tz="ℱ",Ez="⨍",Lz="½",Az="⅓",Mz="¼",Nz="⅕",$z="⅙",Oz="⅛",Pz="⅔",Rz="⅖",Dz="¾",zz="⅗",Iz="⅜",Fz="⅘",Hz="⅚",qz="⅝",Bz="⅞",Wz="⁄",Uz="⌢",Vz="𝒻",jz="ℱ",Gz="ǵ",Kz="Γ",Xz="γ",Yz="Ϝ",Zz="ϝ",Jz="⪆",Qz="Ğ",eI="ğ",tI="Ģ",nI="Ĝ",rI="ĝ",iI="Г",oI="г",sI="Ġ",lI="ġ",aI="≥",cI="≧",uI="⪌",fI="⋛",dI="≥",hI="≧",pI="⩾",gI="⪩",vI="⩾",mI="⪀",yI="⪂",bI="⪄",wI="⋛︀",xI="⪔",_I="𝔊",SI="𝔤",kI="≫",CI="⋙",TI="⋙",EI="ℷ",LI="Ѓ",AI="ѓ",MI="⪥",NI="≷",$I="⪒",OI="⪤",PI="⪊",RI="⪊",DI="⪈",zI="≩",II="⪈",FI="≩",HI="⋧",qI="𝔾",BI="𝕘",WI="`",UI="≥",VI="⋛",jI="≧",GI="⪢",KI="≷",XI="⩾",YI="≳",ZI="𝒢",JI="ℊ",QI="≳",eF="⪎",tF="⪐",nF="⪧",rF="⩺",iF=">",oF=">",sF="≫",lF="⋗",aF="⦕",cF="⩼",uF="⪆",fF="⥸",dF="⋗",hF="⋛",pF="⪌",gF="≷",vF="≳",mF="≩︀",yF="≩︀",bF="ˇ",wF=" ",xF="½",_F="ℋ",SF="Ъ",kF="ъ",CF="⥈",TF="↔",EF="⇔",LF="↭",AF="^",MF="ℏ",NF="Ĥ",$F="ĥ",OF="♥",PF="♥",RF="…",DF="⊹",zF="𝔥",IF="ℌ",FF="ℋ",HF="⤥",qF="⤦",BF="⇿",WF="∻",UF="↩",VF="↪",jF="𝕙",GF="ℍ",KF="―",XF="─",YF="𝒽",ZF="ℋ",JF="ℏ",QF="Ħ",eH="ħ",tH="≎",nH="≏",rH="⁃",iH="‐",oH="Í",sH="í",lH="⁣",aH="Î",cH="î",uH="И",fH="и",dH="İ",hH="Е",pH="е",gH="¡",vH="⇔",mH="𝔦",yH="ℑ",bH="Ì",wH="ì",xH="ⅈ",_H="⨌",SH="∭",kH="⧜",CH="℩",TH="IJ",EH="ij",LH="Ī",AH="ī",MH="ℑ",NH="ⅈ",$H="ℐ",OH="ℑ",PH="ı",RH="ℑ",DH="⊷",zH="Ƶ",IH="⇒",FH="℅",HH="∞",qH="⧝",BH="ı",WH="⊺",UH="∫",VH="∬",jH="ℤ",GH="∫",KH="⊺",XH="⋂",YH="⨗",ZH="⨼",JH="⁣",QH="⁢",eq="Ё",tq="ё",nq="Į",rq="į",iq="𝕀",oq="𝕚",sq="Ι",lq="ι",aq="⨼",cq="¿",uq="𝒾",fq="ℐ",dq="∈",hq="⋵",pq="⋹",gq="⋴",vq="⋳",mq="∈",yq="⁢",bq="Ĩ",wq="ĩ",xq="І",_q="і",Sq="Ï",kq="ï",Cq="Ĵ",Tq="ĵ",Eq="Й",Lq="й",Aq="𝔍",Mq="𝔧",Nq="ȷ",$q="𝕁",Oq="𝕛",Pq="𝒥",Rq="𝒿",Dq="Ј",zq="ј",Iq="Є",Fq="є",Hq="Κ",qq="κ",Bq="ϰ",Wq="Ķ",Uq="ķ",Vq="К",jq="к",Gq="𝔎",Kq="𝔨",Xq="ĸ",Yq="Х",Zq="х",Jq="Ќ",Qq="ќ",eB="𝕂",tB="𝕜",nB="𝒦",rB="𝓀",iB="⇚",oB="Ĺ",sB="ĺ",lB="⦴",aB="ℒ",cB="Λ",uB="λ",fB="⟨",dB="⟪",hB="⦑",pB="⟨",gB="⪅",vB="ℒ",mB="«",yB="⇤",bB="⤟",wB="←",xB="↞",_B="⇐",SB="⤝",kB="↩",CB="↫",TB="⤹",EB="⥳",LB="↢",AB="⤙",MB="⤛",NB="⪫",$B="⪭",OB="⪭︀",PB="⤌",RB="⤎",DB="❲",zB="{",IB="[",FB="⦋",HB="⦏",qB="⦍",BB="Ľ",WB="ľ",UB="Ļ",VB="ļ",jB="⌈",GB="{",KB="Л",XB="л",YB="⤶",ZB="“",JB="„",QB="⥧",e3="⥋",t3="↲",n3="≤",r3="≦",i3="⟨",o3="⇤",s3="←",l3="←",a3="⇐",c3="⇆",u3="↢",f3="⌈",d3="⟦",h3="⥡",p3="⥙",g3="⇃",v3="⌊",m3="↽",y3="↼",b3="⇇",w3="↔",x3="↔",_3="⇔",S3="⇆",k3="⇋",C3="↭",T3="⥎",E3="↤",L3="⊣",A3="⥚",M3="⋋",N3="⧏",$3="⊲",O3="⊴",P3="⥑",R3="⥠",D3="⥘",z3="↿",I3="⥒",F3="↼",H3="⪋",q3="⋚",B3="≤",W3="≦",U3="⩽",V3="⪨",j3="⩽",G3="⩿",K3="⪁",X3="⪃",Y3="⋚︀",Z3="⪓",J3="⪅",Q3="⋖",e5="⋚",t5="⪋",n5="⋚",r5="≦",i5="≶",o5="≶",s5="⪡",l5="≲",a5="⩽",c5="≲",u5="⥼",f5="⌊",d5="𝔏",h5="𝔩",p5="≶",g5="⪑",v5="⥢",m5="↽",y5="↼",b5="⥪",w5="▄",x5="Љ",_5="љ",S5="⇇",k5="≪",C5="⋘",T5="⌞",E5="⇚",L5="⥫",A5="◺",M5="Ŀ",N5="ŀ",$5="⎰",O5="⎰",P5="⪉",R5="⪉",D5="⪇",z5="≨",I5="⪇",F5="≨",H5="⋦",q5="⟬",B5="⇽",W5="⟦",U5="⟵",V5="⟵",j5="⟸",G5="⟷",K5="⟷",X5="⟺",Y5="⟼",Z5="⟶",J5="⟶",Q5="⟹",e8="↫",t8="↬",n8="⦅",r8="𝕃",i8="𝕝",o8="⨭",s8="⨴",l8="∗",a8="_",c8="↙",u8="↘",f8="◊",d8="◊",h8="⧫",p8="(",g8="⦓",v8="⇆",m8="⌟",y8="⇋",b8="⥭",w8="‎",x8="⊿",_8="‹",S8="𝓁",k8="ℒ",C8="↰",T8="↰",E8="≲",L8="⪍",A8="⪏",M8="[",N8="‘",$8="‚",O8="Ł",P8="ł",R8="⪦",D8="⩹",z8="<",I8="<",F8="≪",H8="⋖",q8="⋋",B8="⋉",W8="⥶",U8="⩻",V8="◃",j8="⊴",G8="◂",K8="⦖",X8="⥊",Y8="⥦",Z8="≨︀",J8="≨︀",Q8="¯",eW="♂",tW="✠",nW="✠",rW="↦",iW="↦",oW="↧",sW="↤",lW="↥",aW="▮",cW="⨩",uW="М",fW="м",dW="—",hW="∺",pW="∡",gW=" ",vW="ℳ",mW="𝔐",yW="𝔪",bW="℧",wW="µ",xW="*",_W="⫰",SW="∣",kW="·",CW="⊟",TW="−",EW="∸",LW="⨪",AW="∓",MW="⫛",NW="…",$W="∓",OW="⊧",PW="𝕄",RW="𝕞",DW="∓",zW="𝓂",IW="ℳ",FW="∾",HW="Μ",qW="μ",BW="⊸",WW="⊸",UW="∇",VW="Ń",jW="ń",GW="∠⃒",KW="≉",XW="⩰̸",YW="≋̸",ZW="ʼn",JW="≉",QW="♮",e4="ℕ",t4="♮",n4=" ",r4="≎̸",i4="≏̸",o4="⩃",s4="Ň",l4="ň",a4="Ņ",c4="ņ",u4="≇",f4="⩭̸",d4="⩂",h4="Н",p4="н",g4="–",v4="⤤",m4="↗",y4="⇗",b4="↗",w4="≠",x4="≐̸",_4="​",S4="​",k4="​",C4="​",T4="≢",E4="⤨",L4="≂̸",A4="≫",M4="≪",N4=` -`,$4="∄",O4="∄",P4="𝔑",R4="𝔫",D4="≧̸",z4="≱",I4="≱",F4="≧̸",H4="⩾̸",q4="⩾̸",B4="⋙̸",W4="≵",U4="≫⃒",V4="≯",j4="≯",G4="≫̸",K4="↮",X4="⇎",Y4="⫲",Z4="∋",J4="⋼",Q4="⋺",eU="∋",tU="Њ",nU="њ",rU="↚",iU="⇍",oU="‥",sU="≦̸",lU="≰",aU="↚",cU="⇍",uU="↮",fU="⇎",dU="≰",hU="≦̸",pU="⩽̸",gU="⩽̸",vU="≮",mU="⋘̸",yU="≴",bU="≪⃒",wU="≮",xU="⋪",_U="⋬",SU="≪̸",kU="∤",CU="⁠",TU=" ",EU="𝕟",LU="ℕ",AU="⫬",MU="¬",NU="≢",$U="≭",OU="∦",PU="∉",RU="≠",DU="≂̸",zU="∄",IU="≯",FU="≱",HU="≧̸",qU="≫̸",BU="≹",WU="⩾̸",UU="≵",VU="≎̸",jU="≏̸",GU="∉",KU="⋵̸",XU="⋹̸",YU="∉",ZU="⋷",JU="⋶",QU="⧏̸",e6="⋪",t6="⋬",n6="≮",r6="≰",i6="≸",o6="≪̸",s6="⩽̸",l6="≴",a6="⪢̸",c6="⪡̸",u6="∌",f6="∌",d6="⋾",h6="⋽",p6="⊀",g6="⪯̸",v6="⋠",m6="∌",y6="⧐̸",b6="⋫",w6="⋭",x6="⊏̸",_6="⋢",S6="⊐̸",k6="⋣",C6="⊂⃒",T6="⊈",E6="⊁",L6="⪰̸",A6="⋡",M6="≿̸",N6="⊃⃒",$6="⊉",O6="≁",P6="≄",R6="≇",D6="≉",z6="∤",I6="∦",F6="∦",H6="⫽⃥",q6="∂̸",B6="⨔",W6="⊀",U6="⋠",V6="⊀",j6="⪯̸",G6="⪯̸",K6="⤳̸",X6="↛",Y6="⇏",Z6="↝̸",J6="↛",Q6="⇏",eV="⋫",tV="⋭",nV="⊁",rV="⋡",iV="⪰̸",oV="𝒩",sV="𝓃",lV="∤",aV="∦",cV="≁",uV="≄",fV="≄",dV="∤",hV="∦",pV="⋢",gV="⋣",vV="⊄",mV="⫅̸",yV="⊈",bV="⊂⃒",wV="⊈",xV="⫅̸",_V="⊁",SV="⪰̸",kV="⊅",CV="⫆̸",TV="⊉",EV="⊃⃒",LV="⊉",AV="⫆̸",MV="≹",NV="Ñ",$V="ñ",OV="≸",PV="⋪",RV="⋬",DV="⋫",zV="⋭",IV="Ν",FV="ν",HV="#",qV="№",BV=" ",WV="≍⃒",UV="⊬",VV="⊭",jV="⊮",GV="⊯",KV="≥⃒",XV=">⃒",YV="⤄",ZV="⧞",JV="⤂",QV="≤⃒",ej="<⃒",tj="⊴⃒",nj="⤃",rj="⊵⃒",ij="∼⃒",oj="⤣",sj="↖",lj="⇖",aj="↖",cj="⤧",uj="Ó",fj="ó",dj="⊛",hj="Ô",pj="ô",gj="⊚",vj="О",mj="о",yj="⊝",bj="Ő",wj="ő",xj="⨸",_j="⊙",Sj="⦼",kj="Œ",Cj="œ",Tj="⦿",Ej="𝔒",Lj="𝔬",Aj="˛",Mj="Ò",Nj="ò",$j="⧁",Oj="⦵",Pj="Ω",Rj="∮",Dj="↺",zj="⦾",Ij="⦻",Fj="‾",Hj="⧀",qj="Ō",Bj="ō",Wj="Ω",Uj="ω",Vj="Ο",jj="ο",Gj="⦶",Kj="⊖",Xj="𝕆",Yj="𝕠",Zj="⦷",Jj="“",Qj="‘",eG="⦹",tG="⊕",nG="↻",rG="⩔",iG="∨",oG="⩝",sG="ℴ",lG="ℴ",aG="ª",cG="º",uG="⊶",fG="⩖",dG="⩗",hG="⩛",pG="Ⓢ",gG="𝒪",vG="ℴ",mG="Ø",yG="ø",bG="⊘",wG="Õ",xG="õ",_G="⨶",SG="⨷",kG="⊗",CG="Ö",TG="ö",EG="⌽",LG="‾",AG="⏞",MG="⎴",NG="⏜",$G="¶",OG="∥",PG="∥",RG="⫳",DG="⫽",zG="∂",IG="∂",FG="П",HG="п",qG="%",BG=".",WG="‰",UG="⊥",VG="‱",jG="𝔓",GG="𝔭",KG="Φ",XG="φ",YG="ϕ",ZG="ℳ",JG="☎",QG="Π",e9="π",t9="⋔",n9="ϖ",r9="ℏ",i9="ℎ",o9="ℏ",s9="⨣",l9="⊞",a9="⨢",c9="+",u9="∔",f9="⨥",d9="⩲",h9="±",p9="±",g9="⨦",v9="⨧",m9="±",y9="ℌ",b9="⨕",w9="𝕡",x9="ℙ",_9="£",S9="⪷",k9="⪻",C9="≺",T9="≼",E9="⪷",L9="≺",A9="≼",M9="≺",N9="⪯",$9="≼",O9="≾",P9="⪯",R9="⪹",D9="⪵",z9="⋨",I9="⪯",F9="⪳",H9="≾",q9="′",B9="″",W9="ℙ",U9="⪹",V9="⪵",j9="⋨",G9="∏",K9="∏",X9="⌮",Y9="⌒",Z9="⌓",J9="∝",Q9="∝",e7="∷",t7="∝",n7="≾",r7="⊰",i7="𝒫",o7="𝓅",s7="Ψ",l7="ψ",a7=" ",c7="𝔔",u7="𝔮",f7="⨌",d7="𝕢",h7="ℚ",p7="⁗",g7="𝒬",v7="𝓆",m7="ℍ",y7="⨖",b7="?",w7="≟",x7='"',_7='"',S7="⇛",k7="∽̱",C7="Ŕ",T7="ŕ",E7="√",L7="⦳",A7="⟩",M7="⟫",N7="⦒",$7="⦥",O7="⟩",P7="»",R7="⥵",D7="⇥",z7="⤠",I7="⤳",F7="→",H7="↠",q7="⇒",B7="⤞",W7="↪",U7="↬",V7="⥅",j7="⥴",G7="⤖",K7="↣",X7="↝",Y7="⤚",Z7="⤜",J7="∶",Q7="ℚ",eK="⤍",tK="⤏",nK="⤐",rK="❳",iK="}",oK="]",sK="⦌",lK="⦎",aK="⦐",cK="Ř",uK="ř",fK="Ŗ",dK="ŗ",hK="⌉",pK="}",gK="Р",vK="р",mK="⤷",yK="⥩",bK="”",wK="”",xK="↳",_K="ℜ",SK="ℛ",kK="ℜ",CK="ℝ",TK="ℜ",EK="▭",LK="®",AK="®",MK="∋",NK="⇋",$K="⥯",OK="⥽",PK="⌋",RK="𝔯",DK="ℜ",zK="⥤",IK="⇁",FK="⇀",HK="⥬",qK="Ρ",BK="ρ",WK="ϱ",UK="⟩",VK="⇥",jK="→",GK="→",KK="⇒",XK="⇄",YK="↣",ZK="⌉",JK="⟧",QK="⥝",eX="⥕",tX="⇂",nX="⌋",rX="⇁",iX="⇀",oX="⇄",sX="⇌",lX="⇉",aX="↝",cX="↦",uX="⊢",fX="⥛",dX="⋌",hX="⧐",pX="⊳",gX="⊵",vX="⥏",mX="⥜",yX="⥔",bX="↾",wX="⥓",xX="⇀",_X="˚",SX="≓",kX="⇄",CX="⇌",TX="‏",EX="⎱",LX="⎱",AX="⫮",MX="⟭",NX="⇾",$X="⟧",OX="⦆",PX="𝕣",RX="ℝ",DX="⨮",zX="⨵",IX="⥰",FX=")",HX="⦔",qX="⨒",BX="⇉",WX="⇛",UX="›",VX="𝓇",jX="ℛ",GX="↱",KX="↱",XX="]",YX="’",ZX="’",JX="⋌",QX="⋊",eY="▹",tY="⊵",nY="▸",rY="⧎",iY="⧴",oY="⥨",sY="℞",lY="Ś",aY="ś",cY="‚",uY="⪸",fY="Š",dY="š",hY="⪼",pY="≻",gY="≽",vY="⪰",mY="⪴",yY="Ş",bY="ş",wY="Ŝ",xY="ŝ",_Y="⪺",SY="⪶",kY="⋩",CY="⨓",TY="≿",EY="С",LY="с",AY="⊡",MY="⋅",NY="⩦",$Y="⤥",OY="↘",PY="⇘",RY="↘",DY="§",zY=";",IY="⤩",FY="∖",HY="∖",qY="✶",BY="𝔖",WY="𝔰",UY="⌢",VY="♯",jY="Щ",GY="щ",KY="Ш",XY="ш",YY="↓",ZY="←",JY="∣",QY="∥",eZ="→",tZ="↑",nZ="­",rZ="Σ",iZ="σ",oZ="ς",sZ="ς",lZ="∼",aZ="⩪",cZ="≃",uZ="≃",fZ="⪞",dZ="⪠",hZ="⪝",pZ="⪟",gZ="≆",vZ="⨤",mZ="⥲",yZ="←",bZ="∘",wZ="∖",xZ="⨳",_Z="⧤",SZ="∣",kZ="⌣",CZ="⪪",TZ="⪬",EZ="⪬︀",LZ="Ь",AZ="ь",MZ="⌿",NZ="⧄",$Z="/",OZ="𝕊",PZ="𝕤",RZ="♠",DZ="♠",zZ="∥",IZ="⊓",FZ="⊓︀",HZ="⊔",qZ="⊔︀",BZ="√",WZ="⊏",UZ="⊑",VZ="⊏",jZ="⊑",GZ="⊐",KZ="⊒",XZ="⊐",YZ="⊒",ZZ="□",JZ="□",QZ="⊓",eJ="⊏",tJ="⊑",nJ="⊐",rJ="⊒",iJ="⊔",oJ="▪",sJ="□",lJ="▪",aJ="→",cJ="𝒮",uJ="𝓈",fJ="∖",dJ="⌣",hJ="⋆",pJ="⋆",gJ="☆",vJ="★",mJ="ϵ",yJ="ϕ",bJ="¯",wJ="⊂",xJ="⋐",_J="⪽",SJ="⫅",kJ="⊆",CJ="⫃",TJ="⫁",EJ="⫋",LJ="⊊",AJ="⪿",MJ="⥹",NJ="⊂",$J="⋐",OJ="⊆",PJ="⫅",RJ="⊆",DJ="⊊",zJ="⫋",IJ="⫇",FJ="⫕",HJ="⫓",qJ="⪸",BJ="≻",WJ="≽",UJ="≻",VJ="⪰",jJ="≽",GJ="≿",KJ="⪰",XJ="⪺",YJ="⪶",ZJ="⋩",JJ="≿",QJ="∋",eQ="∑",tQ="∑",nQ="♪",rQ="¹",iQ="²",oQ="³",sQ="⊃",lQ="⋑",aQ="⪾",cQ="⫘",uQ="⫆",fQ="⊇",dQ="⫄",hQ="⊃",pQ="⊇",gQ="⟉",vQ="⫗",mQ="⥻",yQ="⫂",bQ="⫌",wQ="⊋",xQ="⫀",_Q="⊃",SQ="⋑",kQ="⊇",CQ="⫆",TQ="⊋",EQ="⫌",LQ="⫈",AQ="⫔",MQ="⫖",NQ="⤦",$Q="↙",OQ="⇙",PQ="↙",RQ="⤪",DQ="ß",zQ=" ",IQ="⌖",FQ="Τ",HQ="τ",qQ="⎴",BQ="Ť",WQ="ť",UQ="Ţ",VQ="ţ",jQ="Т",GQ="т",KQ="⃛",XQ="⌕",YQ="𝔗",ZQ="𝔱",JQ="∴",QQ="∴",eee="∴",tee="Θ",nee="θ",ree="ϑ",iee="ϑ",oee="≈",see="∼",lee="  ",aee=" ",cee=" ",uee="≈",fee="∼",dee="Þ",hee="þ",pee="˜",gee="∼",vee="≃",mee="≅",yee="≈",bee="⨱",wee="⊠",xee="×",_ee="⨰",See="∭",kee="⤨",Cee="⌶",Tee="⫱",Eee="⊤",Lee="𝕋",Aee="𝕥",Mee="⫚",Nee="⤩",$ee="‴",Oee="™",Pee="™",Ree="▵",Dee="▿",zee="◃",Iee="⊴",Fee="≜",Hee="▹",qee="⊵",Bee="◬",Wee="≜",Uee="⨺",Vee="⃛",jee="⨹",Gee="⧍",Kee="⨻",Xee="⏢",Yee="𝒯",Zee="𝓉",Jee="Ц",Qee="ц",ete="Ћ",tte="ћ",nte="Ŧ",rte="ŧ",ite="≬",ote="↞",ste="↠",lte="Ú",ate="ú",cte="↑",ute="↟",fte="⇑",dte="⥉",hte="Ў",pte="ў",gte="Ŭ",vte="ŭ",mte="Û",yte="û",bte="У",wte="у",xte="⇅",_te="Ű",Ste="ű",kte="⥮",Cte="⥾",Tte="𝔘",Ete="𝔲",Lte="Ù",Ate="ù",Mte="⥣",Nte="↿",$te="↾",Ote="▀",Pte="⌜",Rte="⌜",Dte="⌏",zte="◸",Ite="Ū",Fte="ū",Hte="¨",qte="_",Bte="⏟",Wte="⎵",Ute="⏝",Vte="⋃",jte="⊎",Gte="Ų",Kte="ų",Xte="𝕌",Yte="𝕦",Zte="⤒",Jte="↑",Qte="↑",ene="⇑",tne="⇅",nne="↕",rne="↕",ine="⇕",one="⥮",sne="↿",lne="↾",ane="⊎",cne="↖",une="↗",fne="υ",dne="ϒ",hne="ϒ",pne="Υ",gne="υ",vne="↥",mne="⊥",yne="⇈",bne="⌝",wne="⌝",xne="⌎",_ne="Ů",Sne="ů",kne="◹",Cne="𝒰",Tne="𝓊",Ene="⋰",Lne="Ũ",Ane="ũ",Mne="▵",Nne="▴",$ne="⇈",One="Ü",Pne="ü",Rne="⦧",Dne="⦜",zne="ϵ",Ine="ϰ",Fne="∅",Hne="ϕ",qne="ϖ",Bne="∝",Wne="↕",Une="⇕",Vne="ϱ",jne="ς",Gne="⊊︀",Kne="⫋︀",Xne="⊋︀",Yne="⫌︀",Zne="ϑ",Jne="⊲",Qne="⊳",ere="⫨",tre="⫫",nre="⫩",rre="В",ire="в",ore="⊢",sre="⊨",lre="⊩",are="⊫",cre="⫦",ure="⊻",fre="∨",dre="⋁",hre="≚",pre="⋮",gre="|",vre="‖",mre="|",yre="‖",bre="∣",wre="|",xre="❘",_re="≀",Sre=" ",kre="𝔙",Cre="𝔳",Tre="⊲",Ere="⊂⃒",Lre="⊃⃒",Are="𝕍",Mre="𝕧",Nre="∝",$re="⊳",Ore="𝒱",Pre="𝓋",Rre="⫋︀",Dre="⊊︀",zre="⫌︀",Ire="⊋︀",Fre="⊪",Hre="⦚",qre="Ŵ",Bre="ŵ",Wre="⩟",Ure="∧",Vre="⋀",jre="≙",Gre="℘",Kre="𝔚",Xre="𝔴",Yre="𝕎",Zre="𝕨",Jre="℘",Qre="≀",eie="≀",tie="𝒲",nie="𝓌",rie="⋂",iie="◯",oie="⋃",sie="▽",lie="𝔛",aie="𝔵",cie="⟷",uie="⟺",fie="Ξ",die="ξ",hie="⟵",pie="⟸",gie="⟼",vie="⋻",mie="⨀",yie="𝕏",bie="𝕩",wie="⨁",xie="⨂",_ie="⟶",Sie="⟹",kie="𝒳",Cie="𝓍",Tie="⨆",Eie="⨄",Lie="△",Aie="⋁",Mie="⋀",Nie="Ý",$ie="ý",Oie="Я",Pie="я",Rie="Ŷ",Die="ŷ",zie="Ы",Iie="ы",Fie="¥",Hie="𝔜",qie="𝔶",Bie="Ї",Wie="ї",Uie="𝕐",Vie="𝕪",jie="𝒴",Gie="𝓎",Kie="Ю",Xie="ю",Yie="ÿ",Zie="Ÿ",Jie="Ź",Qie="ź",eoe="Ž",toe="ž",noe="З",roe="з",ioe="Ż",ooe="ż",soe="ℨ",loe="​",aoe="Ζ",coe="ζ",uoe="𝔷",foe="ℨ",doe="Ж",hoe="ж",poe="⇝",goe="𝕫",voe="ℤ",moe="𝒵",yoe="𝓏",boe="‍",woe="‌",Gb={Aacute:iL,aacute:oL,Abreve:sL,abreve:lL,ac:aL,acd:cL,acE:uL,Acirc:fL,acirc:dL,acute:hL,Acy:pL,acy:gL,AElig:vL,aelig:mL,af:yL,Afr:bL,afr:wL,Agrave:xL,agrave:_L,alefsym:SL,aleph:kL,Alpha:CL,alpha:TL,Amacr:EL,amacr:LL,amalg:AL,amp:ML,AMP:NL,andand:$L,And:OL,and:PL,andd:RL,andslope:DL,andv:zL,ang:IL,ange:FL,angle:HL,angmsdaa:qL,angmsdab:BL,angmsdac:WL,angmsdad:UL,angmsdae:VL,angmsdaf:jL,angmsdag:GL,angmsdah:KL,angmsd:XL,angrt:YL,angrtvb:ZL,angrtvbd:JL,angsph:QL,angst:eA,angzarr:tA,Aogon:nA,aogon:rA,Aopf:iA,aopf:oA,apacir:sA,ap:lA,apE:aA,ape:cA,apid:uA,apos:fA,ApplyFunction:dA,approx:hA,approxeq:pA,Aring:gA,aring:vA,Ascr:mA,ascr:yA,Assign:bA,ast:wA,asymp:xA,asympeq:_A,Atilde:SA,atilde:kA,Auml:CA,auml:TA,awconint:EA,awint:LA,backcong:AA,backepsilon:MA,backprime:NA,backsim:$A,backsimeq:OA,Backslash:PA,Barv:RA,barvee:DA,barwed:zA,Barwed:IA,barwedge:FA,bbrk:HA,bbrktbrk:qA,bcong:BA,Bcy:WA,bcy:UA,bdquo:VA,becaus:jA,because:GA,Because:KA,bemptyv:XA,bepsi:YA,bernou:ZA,Bernoullis:JA,Beta:QA,beta:eM,beth:tM,between:nM,Bfr:rM,bfr:iM,bigcap:oM,bigcirc:sM,bigcup:lM,bigodot:aM,bigoplus:cM,bigotimes:uM,bigsqcup:fM,bigstar:dM,bigtriangledown:hM,bigtriangleup:pM,biguplus:gM,bigvee:vM,bigwedge:mM,bkarow:yM,blacklozenge:bM,blacksquare:wM,blacktriangle:xM,blacktriangledown:_M,blacktriangleleft:SM,blacktriangleright:kM,blank:CM,blk12:TM,blk14:EM,blk34:LM,block:AM,bne:MM,bnequiv:NM,bNot:$M,bnot:OM,Bopf:PM,bopf:RM,bot:DM,bottom:zM,bowtie:IM,boxbox:FM,boxdl:HM,boxdL:qM,boxDl:BM,boxDL:WM,boxdr:UM,boxdR:VM,boxDr:jM,boxDR:GM,boxh:KM,boxH:XM,boxhd:YM,boxHd:ZM,boxhD:JM,boxHD:QM,boxhu:eN,boxHu:tN,boxhU:nN,boxHU:rN,boxminus:iN,boxplus:oN,boxtimes:sN,boxul:lN,boxuL:aN,boxUl:cN,boxUL:uN,boxur:fN,boxuR:dN,boxUr:hN,boxUR:pN,boxv:gN,boxV:vN,boxvh:mN,boxvH:yN,boxVh:bN,boxVH:wN,boxvl:xN,boxvL:_N,boxVl:SN,boxVL:kN,boxvr:CN,boxvR:TN,boxVr:EN,boxVR:LN,bprime:AN,breve:MN,Breve:NN,brvbar:$N,bscr:ON,Bscr:PN,bsemi:RN,bsim:DN,bsime:zN,bsolb:IN,bsol:FN,bsolhsub:HN,bull:qN,bullet:BN,bump:WN,bumpE:UN,bumpe:VN,Bumpeq:jN,bumpeq:GN,Cacute:KN,cacute:XN,capand:YN,capbrcup:ZN,capcap:JN,cap:QN,Cap:e$,capcup:t$,capdot:n$,CapitalDifferentialD:r$,caps:i$,caret:o$,caron:s$,Cayleys:l$,ccaps:a$,Ccaron:c$,ccaron:u$,Ccedil:f$,ccedil:d$,Ccirc:h$,ccirc:p$,Cconint:g$,ccups:v$,ccupssm:m$,Cdot:y$,cdot:b$,cedil:w$,Cedilla:x$,cemptyv:_$,cent:S$,centerdot:k$,CenterDot:C$,cfr:T$,Cfr:E$,CHcy:L$,chcy:A$,check:M$,checkmark:N$,Chi:$$,chi:O$,circ:P$,circeq:R$,circlearrowleft:D$,circlearrowright:z$,circledast:I$,circledcirc:F$,circleddash:H$,CircleDot:q$,circledR:B$,circledS:W$,CircleMinus:U$,CirclePlus:V$,CircleTimes:j$,cir:G$,cirE:K$,cire:X$,cirfnint:Y$,cirmid:Z$,cirscir:J$,ClockwiseContourIntegral:Q$,CloseCurlyDoubleQuote:eO,CloseCurlyQuote:tO,clubs:nO,clubsuit:rO,colon:iO,Colon:oO,Colone:sO,colone:lO,coloneq:aO,comma:cO,commat:uO,comp:fO,compfn:dO,complement:hO,complexes:pO,cong:gO,congdot:vO,Congruent:mO,conint:yO,Conint:bO,ContourIntegral:wO,copf:xO,Copf:_O,coprod:SO,Coproduct:kO,copy:CO,COPY:TO,copysr:EO,CounterClockwiseContourIntegral:LO,crarr:AO,cross:MO,Cross:NO,Cscr:$O,cscr:OO,csub:PO,csube:RO,csup:DO,csupe:zO,ctdot:IO,cudarrl:FO,cudarrr:HO,cuepr:qO,cuesc:BO,cularr:WO,cularrp:UO,cupbrcap:VO,cupcap:jO,CupCap:GO,cup:KO,Cup:XO,cupcup:YO,cupdot:ZO,cupor:JO,cups:QO,curarr:eP,curarrm:tP,curlyeqprec:nP,curlyeqsucc:rP,curlyvee:iP,curlywedge:oP,curren:sP,curvearrowleft:lP,curvearrowright:aP,cuvee:cP,cuwed:uP,cwconint:fP,cwint:dP,cylcty:hP,dagger:pP,Dagger:gP,daleth:vP,darr:mP,Darr:yP,dArr:bP,dash:wP,Dashv:xP,dashv:_P,dbkarow:SP,dblac:kP,Dcaron:CP,dcaron:TP,Dcy:EP,dcy:LP,ddagger:AP,ddarr:MP,DD:NP,dd:$P,DDotrahd:OP,ddotseq:PP,deg:RP,Del:DP,Delta:zP,delta:IP,demptyv:FP,dfisht:HP,Dfr:qP,dfr:BP,dHar:WP,dharl:UP,dharr:VP,DiacriticalAcute:jP,DiacriticalDot:GP,DiacriticalDoubleAcute:KP,DiacriticalGrave:XP,DiacriticalTilde:YP,diam:ZP,diamond:JP,Diamond:QP,diamondsuit:eR,diams:tR,die:nR,DifferentialD:rR,digamma:iR,disin:oR,div:sR,divide:lR,divideontimes:aR,divonx:cR,DJcy:uR,djcy:fR,dlcorn:dR,dlcrop:hR,dollar:pR,Dopf:gR,dopf:vR,Dot:mR,dot:yR,DotDot:bR,doteq:wR,doteqdot:xR,DotEqual:_R,dotminus:SR,dotplus:kR,dotsquare:CR,doublebarwedge:TR,DoubleContourIntegral:ER,DoubleDot:LR,DoubleDownArrow:AR,DoubleLeftArrow:MR,DoubleLeftRightArrow:NR,DoubleLeftTee:$R,DoubleLongLeftArrow:OR,DoubleLongLeftRightArrow:PR,DoubleLongRightArrow:RR,DoubleRightArrow:DR,DoubleRightTee:zR,DoubleUpArrow:IR,DoubleUpDownArrow:FR,DoubleVerticalBar:HR,DownArrowBar:qR,downarrow:BR,DownArrow:WR,Downarrow:UR,DownArrowUpArrow:VR,DownBreve:jR,downdownarrows:GR,downharpoonleft:KR,downharpoonright:XR,DownLeftRightVector:YR,DownLeftTeeVector:ZR,DownLeftVectorBar:JR,DownLeftVector:QR,DownRightTeeVector:eD,DownRightVectorBar:tD,DownRightVector:nD,DownTeeArrow:rD,DownTee:iD,drbkarow:oD,drcorn:sD,drcrop:lD,Dscr:aD,dscr:cD,DScy:uD,dscy:fD,dsol:dD,Dstrok:hD,dstrok:pD,dtdot:gD,dtri:vD,dtrif:mD,duarr:yD,duhar:bD,dwangle:wD,DZcy:xD,dzcy:_D,dzigrarr:SD,Eacute:kD,eacute:CD,easter:TD,Ecaron:ED,ecaron:LD,Ecirc:AD,ecirc:MD,ecir:ND,ecolon:$D,Ecy:OD,ecy:PD,eDDot:RD,Edot:DD,edot:zD,eDot:ID,ee:FD,efDot:HD,Efr:qD,efr:BD,eg:WD,Egrave:UD,egrave:VD,egs:jD,egsdot:GD,el:KD,Element:XD,elinters:YD,ell:ZD,els:JD,elsdot:QD,Emacr:e2,emacr:t2,empty:n2,emptyset:r2,EmptySmallSquare:i2,emptyv:o2,EmptyVerySmallSquare:s2,emsp13:l2,emsp14:a2,emsp:c2,ENG:u2,eng:f2,ensp:d2,Eogon:h2,eogon:p2,Eopf:g2,eopf:v2,epar:m2,eparsl:y2,eplus:b2,epsi:w2,Epsilon:x2,epsilon:_2,epsiv:S2,eqcirc:k2,eqcolon:C2,eqsim:T2,eqslantgtr:E2,eqslantless:L2,Equal:A2,equals:M2,EqualTilde:N2,equest:$2,Equilibrium:O2,equiv:P2,equivDD:R2,eqvparsl:D2,erarr:z2,erDot:I2,escr:F2,Escr:H2,esdot:q2,Esim:B2,esim:W2,Eta:U2,eta:V2,ETH:j2,eth:G2,Euml:K2,euml:X2,euro:Y2,excl:Z2,exist:J2,Exists:Q2,expectation:ez,exponentiale:tz,ExponentialE:nz,fallingdotseq:rz,Fcy:iz,fcy:oz,female:sz,ffilig:lz,fflig:az,ffllig:cz,Ffr:uz,ffr:fz,filig:dz,FilledSmallSquare:hz,FilledVerySmallSquare:pz,fjlig:gz,flat:vz,fllig:mz,fltns:yz,fnof:bz,Fopf:wz,fopf:xz,forall:_z,ForAll:Sz,fork:kz,forkv:Cz,Fouriertrf:Tz,fpartint:Ez,frac12:Lz,frac13:Az,frac14:Mz,frac15:Nz,frac16:$z,frac18:Oz,frac23:Pz,frac25:Rz,frac34:Dz,frac35:zz,frac38:Iz,frac45:Fz,frac56:Hz,frac58:qz,frac78:Bz,frasl:Wz,frown:Uz,fscr:Vz,Fscr:jz,gacute:Gz,Gamma:Kz,gamma:Xz,Gammad:Yz,gammad:Zz,gap:Jz,Gbreve:Qz,gbreve:eI,Gcedil:tI,Gcirc:nI,gcirc:rI,Gcy:iI,gcy:oI,Gdot:sI,gdot:lI,ge:aI,gE:cI,gEl:uI,gel:fI,geq:dI,geqq:hI,geqslant:pI,gescc:gI,ges:vI,gesdot:mI,gesdoto:yI,gesdotol:bI,gesl:wI,gesles:xI,Gfr:_I,gfr:SI,gg:kI,Gg:CI,ggg:TI,gimel:EI,GJcy:LI,gjcy:AI,gla:MI,gl:NI,glE:$I,glj:OI,gnap:PI,gnapprox:RI,gne:DI,gnE:zI,gneq:II,gneqq:FI,gnsim:HI,Gopf:qI,gopf:BI,grave:WI,GreaterEqual:UI,GreaterEqualLess:VI,GreaterFullEqual:jI,GreaterGreater:GI,GreaterLess:KI,GreaterSlantEqual:XI,GreaterTilde:YI,Gscr:ZI,gscr:JI,gsim:QI,gsime:eF,gsiml:tF,gtcc:nF,gtcir:rF,gt:iF,GT:oF,Gt:sF,gtdot:lF,gtlPar:aF,gtquest:cF,gtrapprox:uF,gtrarr:fF,gtrdot:dF,gtreqless:hF,gtreqqless:pF,gtrless:gF,gtrsim:vF,gvertneqq:mF,gvnE:yF,Hacek:bF,hairsp:wF,half:xF,hamilt:_F,HARDcy:SF,hardcy:kF,harrcir:CF,harr:TF,hArr:EF,harrw:LF,Hat:AF,hbar:MF,Hcirc:NF,hcirc:$F,hearts:OF,heartsuit:PF,hellip:RF,hercon:DF,hfr:zF,Hfr:IF,HilbertSpace:FF,hksearow:HF,hkswarow:qF,hoarr:BF,homtht:WF,hookleftarrow:UF,hookrightarrow:VF,hopf:jF,Hopf:GF,horbar:KF,HorizontalLine:XF,hscr:YF,Hscr:ZF,hslash:JF,Hstrok:QF,hstrok:eH,HumpDownHump:tH,HumpEqual:nH,hybull:rH,hyphen:iH,Iacute:oH,iacute:sH,ic:lH,Icirc:aH,icirc:cH,Icy:uH,icy:fH,Idot:dH,IEcy:hH,iecy:pH,iexcl:gH,iff:vH,ifr:mH,Ifr:yH,Igrave:bH,igrave:wH,ii:xH,iiiint:_H,iiint:SH,iinfin:kH,iiota:CH,IJlig:TH,ijlig:EH,Imacr:LH,imacr:AH,image:MH,ImaginaryI:NH,imagline:$H,imagpart:OH,imath:PH,Im:RH,imof:DH,imped:zH,Implies:IH,incare:FH,in:"∈",infin:HH,infintie:qH,inodot:BH,intcal:WH,int:UH,Int:VH,integers:jH,Integral:GH,intercal:KH,Intersection:XH,intlarhk:YH,intprod:ZH,InvisibleComma:JH,InvisibleTimes:QH,IOcy:eq,iocy:tq,Iogon:nq,iogon:rq,Iopf:iq,iopf:oq,Iota:sq,iota:lq,iprod:aq,iquest:cq,iscr:uq,Iscr:fq,isin:dq,isindot:hq,isinE:pq,isins:gq,isinsv:vq,isinv:mq,it:yq,Itilde:bq,itilde:wq,Iukcy:xq,iukcy:_q,Iuml:Sq,iuml:kq,Jcirc:Cq,jcirc:Tq,Jcy:Eq,jcy:Lq,Jfr:Aq,jfr:Mq,jmath:Nq,Jopf:$q,jopf:Oq,Jscr:Pq,jscr:Rq,Jsercy:Dq,jsercy:zq,Jukcy:Iq,jukcy:Fq,Kappa:Hq,kappa:qq,kappav:Bq,Kcedil:Wq,kcedil:Uq,Kcy:Vq,kcy:jq,Kfr:Gq,kfr:Kq,kgreen:Xq,KHcy:Yq,khcy:Zq,KJcy:Jq,kjcy:Qq,Kopf:eB,kopf:tB,Kscr:nB,kscr:rB,lAarr:iB,Lacute:oB,lacute:sB,laemptyv:lB,lagran:aB,Lambda:cB,lambda:uB,lang:fB,Lang:dB,langd:hB,langle:pB,lap:gB,Laplacetrf:vB,laquo:mB,larrb:yB,larrbfs:bB,larr:wB,Larr:xB,lArr:_B,larrfs:SB,larrhk:kB,larrlp:CB,larrpl:TB,larrsim:EB,larrtl:LB,latail:AB,lAtail:MB,lat:NB,late:$B,lates:OB,lbarr:PB,lBarr:RB,lbbrk:DB,lbrace:zB,lbrack:IB,lbrke:FB,lbrksld:HB,lbrkslu:qB,Lcaron:BB,lcaron:WB,Lcedil:UB,lcedil:VB,lceil:jB,lcub:GB,Lcy:KB,lcy:XB,ldca:YB,ldquo:ZB,ldquor:JB,ldrdhar:QB,ldrushar:e3,ldsh:t3,le:n3,lE:r3,LeftAngleBracket:i3,LeftArrowBar:o3,leftarrow:s3,LeftArrow:l3,Leftarrow:a3,LeftArrowRightArrow:c3,leftarrowtail:u3,LeftCeiling:f3,LeftDoubleBracket:d3,LeftDownTeeVector:h3,LeftDownVectorBar:p3,LeftDownVector:g3,LeftFloor:v3,leftharpoondown:m3,leftharpoonup:y3,leftleftarrows:b3,leftrightarrow:w3,LeftRightArrow:x3,Leftrightarrow:_3,leftrightarrows:S3,leftrightharpoons:k3,leftrightsquigarrow:C3,LeftRightVector:T3,LeftTeeArrow:E3,LeftTee:L3,LeftTeeVector:A3,leftthreetimes:M3,LeftTriangleBar:N3,LeftTriangle:$3,LeftTriangleEqual:O3,LeftUpDownVector:P3,LeftUpTeeVector:R3,LeftUpVectorBar:D3,LeftUpVector:z3,LeftVectorBar:I3,LeftVector:F3,lEg:H3,leg:q3,leq:B3,leqq:W3,leqslant:U3,lescc:V3,les:j3,lesdot:G3,lesdoto:K3,lesdotor:X3,lesg:Y3,lesges:Z3,lessapprox:J3,lessdot:Q3,lesseqgtr:e5,lesseqqgtr:t5,LessEqualGreater:n5,LessFullEqual:r5,LessGreater:i5,lessgtr:o5,LessLess:s5,lesssim:l5,LessSlantEqual:a5,LessTilde:c5,lfisht:u5,lfloor:f5,Lfr:d5,lfr:h5,lg:p5,lgE:g5,lHar:v5,lhard:m5,lharu:y5,lharul:b5,lhblk:w5,LJcy:x5,ljcy:_5,llarr:S5,ll:k5,Ll:C5,llcorner:T5,Lleftarrow:E5,llhard:L5,lltri:A5,Lmidot:M5,lmidot:N5,lmoustache:$5,lmoust:O5,lnap:P5,lnapprox:R5,lne:D5,lnE:z5,lneq:I5,lneqq:F5,lnsim:H5,loang:q5,loarr:B5,lobrk:W5,longleftarrow:U5,LongLeftArrow:V5,Longleftarrow:j5,longleftrightarrow:G5,LongLeftRightArrow:K5,Longleftrightarrow:X5,longmapsto:Y5,longrightarrow:Z5,LongRightArrow:J5,Longrightarrow:Q5,looparrowleft:e8,looparrowright:t8,lopar:n8,Lopf:r8,lopf:i8,loplus:o8,lotimes:s8,lowast:l8,lowbar:a8,LowerLeftArrow:c8,LowerRightArrow:u8,loz:f8,lozenge:d8,lozf:h8,lpar:p8,lparlt:g8,lrarr:v8,lrcorner:m8,lrhar:y8,lrhard:b8,lrm:w8,lrtri:x8,lsaquo:_8,lscr:S8,Lscr:k8,lsh:C8,Lsh:T8,lsim:E8,lsime:L8,lsimg:A8,lsqb:M8,lsquo:N8,lsquor:$8,Lstrok:O8,lstrok:P8,ltcc:R8,ltcir:D8,lt:z8,LT:I8,Lt:F8,ltdot:H8,lthree:q8,ltimes:B8,ltlarr:W8,ltquest:U8,ltri:V8,ltrie:j8,ltrif:G8,ltrPar:K8,lurdshar:X8,luruhar:Y8,lvertneqq:Z8,lvnE:J8,macr:Q8,male:eW,malt:tW,maltese:nW,Map:"⤅",map:rW,mapsto:iW,mapstodown:oW,mapstoleft:sW,mapstoup:lW,marker:aW,mcomma:cW,Mcy:uW,mcy:fW,mdash:dW,mDDot:hW,measuredangle:pW,MediumSpace:gW,Mellintrf:vW,Mfr:mW,mfr:yW,mho:bW,micro:wW,midast:xW,midcir:_W,mid:SW,middot:kW,minusb:CW,minus:TW,minusd:EW,minusdu:LW,MinusPlus:AW,mlcp:MW,mldr:NW,mnplus:$W,models:OW,Mopf:PW,mopf:RW,mp:DW,mscr:zW,Mscr:IW,mstpos:FW,Mu:HW,mu:qW,multimap:BW,mumap:WW,nabla:UW,Nacute:VW,nacute:jW,nang:GW,nap:KW,napE:XW,napid:YW,napos:ZW,napprox:JW,natural:QW,naturals:e4,natur:t4,nbsp:n4,nbump:r4,nbumpe:i4,ncap:o4,Ncaron:s4,ncaron:l4,Ncedil:a4,ncedil:c4,ncong:u4,ncongdot:f4,ncup:d4,Ncy:h4,ncy:p4,ndash:g4,nearhk:v4,nearr:m4,neArr:y4,nearrow:b4,ne:w4,nedot:x4,NegativeMediumSpace:_4,NegativeThickSpace:S4,NegativeThinSpace:k4,NegativeVeryThinSpace:C4,nequiv:T4,nesear:E4,nesim:L4,NestedGreaterGreater:A4,NestedLessLess:M4,NewLine:N4,nexist:$4,nexists:O4,Nfr:P4,nfr:R4,ngE:D4,nge:z4,ngeq:I4,ngeqq:F4,ngeqslant:H4,nges:q4,nGg:B4,ngsim:W4,nGt:U4,ngt:V4,ngtr:j4,nGtv:G4,nharr:K4,nhArr:X4,nhpar:Y4,ni:Z4,nis:J4,nisd:Q4,niv:eU,NJcy:tU,njcy:nU,nlarr:rU,nlArr:iU,nldr:oU,nlE:sU,nle:lU,nleftarrow:aU,nLeftarrow:cU,nleftrightarrow:uU,nLeftrightarrow:fU,nleq:dU,nleqq:hU,nleqslant:pU,nles:gU,nless:vU,nLl:mU,nlsim:yU,nLt:bU,nlt:wU,nltri:xU,nltrie:_U,nLtv:SU,nmid:kU,NoBreak:CU,NonBreakingSpace:TU,nopf:EU,Nopf:LU,Not:AU,not:MU,NotCongruent:NU,NotCupCap:$U,NotDoubleVerticalBar:OU,NotElement:PU,NotEqual:RU,NotEqualTilde:DU,NotExists:zU,NotGreater:IU,NotGreaterEqual:FU,NotGreaterFullEqual:HU,NotGreaterGreater:qU,NotGreaterLess:BU,NotGreaterSlantEqual:WU,NotGreaterTilde:UU,NotHumpDownHump:VU,NotHumpEqual:jU,notin:GU,notindot:KU,notinE:XU,notinva:YU,notinvb:ZU,notinvc:JU,NotLeftTriangleBar:QU,NotLeftTriangle:e6,NotLeftTriangleEqual:t6,NotLess:n6,NotLessEqual:r6,NotLessGreater:i6,NotLessLess:o6,NotLessSlantEqual:s6,NotLessTilde:l6,NotNestedGreaterGreater:a6,NotNestedLessLess:c6,notni:u6,notniva:f6,notnivb:d6,notnivc:h6,NotPrecedes:p6,NotPrecedesEqual:g6,NotPrecedesSlantEqual:v6,NotReverseElement:m6,NotRightTriangleBar:y6,NotRightTriangle:b6,NotRightTriangleEqual:w6,NotSquareSubset:x6,NotSquareSubsetEqual:_6,NotSquareSuperset:S6,NotSquareSupersetEqual:k6,NotSubset:C6,NotSubsetEqual:T6,NotSucceeds:E6,NotSucceedsEqual:L6,NotSucceedsSlantEqual:A6,NotSucceedsTilde:M6,NotSuperset:N6,NotSupersetEqual:$6,NotTilde:O6,NotTildeEqual:P6,NotTildeFullEqual:R6,NotTildeTilde:D6,NotVerticalBar:z6,nparallel:I6,npar:F6,nparsl:H6,npart:q6,npolint:B6,npr:W6,nprcue:U6,nprec:V6,npreceq:j6,npre:G6,nrarrc:K6,nrarr:X6,nrArr:Y6,nrarrw:Z6,nrightarrow:J6,nRightarrow:Q6,nrtri:eV,nrtrie:tV,nsc:nV,nsccue:rV,nsce:iV,Nscr:oV,nscr:sV,nshortmid:lV,nshortparallel:aV,nsim:cV,nsime:uV,nsimeq:fV,nsmid:dV,nspar:hV,nsqsube:pV,nsqsupe:gV,nsub:vV,nsubE:mV,nsube:yV,nsubset:bV,nsubseteq:wV,nsubseteqq:xV,nsucc:_V,nsucceq:SV,nsup:kV,nsupE:CV,nsupe:TV,nsupset:EV,nsupseteq:LV,nsupseteqq:AV,ntgl:MV,Ntilde:NV,ntilde:$V,ntlg:OV,ntriangleleft:PV,ntrianglelefteq:RV,ntriangleright:DV,ntrianglerighteq:zV,Nu:IV,nu:FV,num:HV,numero:qV,numsp:BV,nvap:WV,nvdash:UV,nvDash:VV,nVdash:jV,nVDash:GV,nvge:KV,nvgt:XV,nvHarr:YV,nvinfin:ZV,nvlArr:JV,nvle:QV,nvlt:ej,nvltrie:tj,nvrArr:nj,nvrtrie:rj,nvsim:ij,nwarhk:oj,nwarr:sj,nwArr:lj,nwarrow:aj,nwnear:cj,Oacute:uj,oacute:fj,oast:dj,Ocirc:hj,ocirc:pj,ocir:gj,Ocy:vj,ocy:mj,odash:yj,Odblac:bj,odblac:wj,odiv:xj,odot:_j,odsold:Sj,OElig:kj,oelig:Cj,ofcir:Tj,Ofr:Ej,ofr:Lj,ogon:Aj,Ograve:Mj,ograve:Nj,ogt:$j,ohbar:Oj,ohm:Pj,oint:Rj,olarr:Dj,olcir:zj,olcross:Ij,oline:Fj,olt:Hj,Omacr:qj,omacr:Bj,Omega:Wj,omega:Uj,Omicron:Vj,omicron:jj,omid:Gj,ominus:Kj,Oopf:Xj,oopf:Yj,opar:Zj,OpenCurlyDoubleQuote:Jj,OpenCurlyQuote:Qj,operp:eG,oplus:tG,orarr:nG,Or:rG,or:iG,ord:oG,order:sG,orderof:lG,ordf:aG,ordm:cG,origof:uG,oror:fG,orslope:dG,orv:hG,oS:pG,Oscr:gG,oscr:vG,Oslash:mG,oslash:yG,osol:bG,Otilde:wG,otilde:xG,otimesas:_G,Otimes:SG,otimes:kG,Ouml:CG,ouml:TG,ovbar:EG,OverBar:LG,OverBrace:AG,OverBracket:MG,OverParenthesis:NG,para:$G,parallel:OG,par:PG,parsim:RG,parsl:DG,part:zG,PartialD:IG,Pcy:FG,pcy:HG,percnt:qG,period:BG,permil:WG,perp:UG,pertenk:VG,Pfr:jG,pfr:GG,Phi:KG,phi:XG,phiv:YG,phmmat:ZG,phone:JG,Pi:QG,pi:e9,pitchfork:t9,piv:n9,planck:r9,planckh:i9,plankv:o9,plusacir:s9,plusb:l9,pluscir:a9,plus:c9,plusdo:u9,plusdu:f9,pluse:d9,PlusMinus:h9,plusmn:p9,plussim:g9,plustwo:v9,pm:m9,Poincareplane:y9,pointint:b9,popf:w9,Popf:x9,pound:_9,prap:S9,Pr:k9,pr:C9,prcue:T9,precapprox:E9,prec:L9,preccurlyeq:A9,Precedes:M9,PrecedesEqual:N9,PrecedesSlantEqual:$9,PrecedesTilde:O9,preceq:P9,precnapprox:R9,precneqq:D9,precnsim:z9,pre:I9,prE:F9,precsim:H9,prime:q9,Prime:B9,primes:W9,prnap:U9,prnE:V9,prnsim:j9,prod:G9,Product:K9,profalar:X9,profline:Y9,profsurf:Z9,prop:J9,Proportional:Q9,Proportion:e7,propto:t7,prsim:n7,prurel:r7,Pscr:i7,pscr:o7,Psi:s7,psi:l7,puncsp:a7,Qfr:c7,qfr:u7,qint:f7,qopf:d7,Qopf:h7,qprime:p7,Qscr:g7,qscr:v7,quaternions:m7,quatint:y7,quest:b7,questeq:w7,quot:x7,QUOT:_7,rAarr:S7,race:k7,Racute:C7,racute:T7,radic:E7,raemptyv:L7,rang:A7,Rang:M7,rangd:N7,range:$7,rangle:O7,raquo:P7,rarrap:R7,rarrb:D7,rarrbfs:z7,rarrc:I7,rarr:F7,Rarr:H7,rArr:q7,rarrfs:B7,rarrhk:W7,rarrlp:U7,rarrpl:V7,rarrsim:j7,Rarrtl:G7,rarrtl:K7,rarrw:X7,ratail:Y7,rAtail:Z7,ratio:J7,rationals:Q7,rbarr:eK,rBarr:tK,RBarr:nK,rbbrk:rK,rbrace:iK,rbrack:oK,rbrke:sK,rbrksld:lK,rbrkslu:aK,Rcaron:cK,rcaron:uK,Rcedil:fK,rcedil:dK,rceil:hK,rcub:pK,Rcy:gK,rcy:vK,rdca:mK,rdldhar:yK,rdquo:bK,rdquor:wK,rdsh:xK,real:_K,realine:SK,realpart:kK,reals:CK,Re:TK,rect:EK,reg:LK,REG:AK,ReverseElement:MK,ReverseEquilibrium:NK,ReverseUpEquilibrium:$K,rfisht:OK,rfloor:PK,rfr:RK,Rfr:DK,rHar:zK,rhard:IK,rharu:FK,rharul:HK,Rho:qK,rho:BK,rhov:WK,RightAngleBracket:UK,RightArrowBar:VK,rightarrow:jK,RightArrow:GK,Rightarrow:KK,RightArrowLeftArrow:XK,rightarrowtail:YK,RightCeiling:ZK,RightDoubleBracket:JK,RightDownTeeVector:QK,RightDownVectorBar:eX,RightDownVector:tX,RightFloor:nX,rightharpoondown:rX,rightharpoonup:iX,rightleftarrows:oX,rightleftharpoons:sX,rightrightarrows:lX,rightsquigarrow:aX,RightTeeArrow:cX,RightTee:uX,RightTeeVector:fX,rightthreetimes:dX,RightTriangleBar:hX,RightTriangle:pX,RightTriangleEqual:gX,RightUpDownVector:vX,RightUpTeeVector:mX,RightUpVectorBar:yX,RightUpVector:bX,RightVectorBar:wX,RightVector:xX,ring:_X,risingdotseq:SX,rlarr:kX,rlhar:CX,rlm:TX,rmoustache:EX,rmoust:LX,rnmid:AX,roang:MX,roarr:NX,robrk:$X,ropar:OX,ropf:PX,Ropf:RX,roplus:DX,rotimes:zX,RoundImplies:IX,rpar:FX,rpargt:HX,rppolint:qX,rrarr:BX,Rrightarrow:WX,rsaquo:UX,rscr:VX,Rscr:jX,rsh:GX,Rsh:KX,rsqb:XX,rsquo:YX,rsquor:ZX,rthree:JX,rtimes:QX,rtri:eY,rtrie:tY,rtrif:nY,rtriltri:rY,RuleDelayed:iY,ruluhar:oY,rx:sY,Sacute:lY,sacute:aY,sbquo:cY,scap:uY,Scaron:fY,scaron:dY,Sc:hY,sc:pY,sccue:gY,sce:vY,scE:mY,Scedil:yY,scedil:bY,Scirc:wY,scirc:xY,scnap:_Y,scnE:SY,scnsim:kY,scpolint:CY,scsim:TY,Scy:EY,scy:LY,sdotb:AY,sdot:MY,sdote:NY,searhk:$Y,searr:OY,seArr:PY,searrow:RY,sect:DY,semi:zY,seswar:IY,setminus:FY,setmn:HY,sext:qY,Sfr:BY,sfr:WY,sfrown:UY,sharp:VY,SHCHcy:jY,shchcy:GY,SHcy:KY,shcy:XY,ShortDownArrow:YY,ShortLeftArrow:ZY,shortmid:JY,shortparallel:QY,ShortRightArrow:eZ,ShortUpArrow:tZ,shy:nZ,Sigma:rZ,sigma:iZ,sigmaf:oZ,sigmav:sZ,sim:lZ,simdot:aZ,sime:cZ,simeq:uZ,simg:fZ,simgE:dZ,siml:hZ,simlE:pZ,simne:gZ,simplus:vZ,simrarr:mZ,slarr:yZ,SmallCircle:bZ,smallsetminus:wZ,smashp:xZ,smeparsl:_Z,smid:SZ,smile:kZ,smt:CZ,smte:TZ,smtes:EZ,SOFTcy:LZ,softcy:AZ,solbar:MZ,solb:NZ,sol:$Z,Sopf:OZ,sopf:PZ,spades:RZ,spadesuit:DZ,spar:zZ,sqcap:IZ,sqcaps:FZ,sqcup:HZ,sqcups:qZ,Sqrt:BZ,sqsub:WZ,sqsube:UZ,sqsubset:VZ,sqsubseteq:jZ,sqsup:GZ,sqsupe:KZ,sqsupset:XZ,sqsupseteq:YZ,square:ZZ,Square:JZ,SquareIntersection:QZ,SquareSubset:eJ,SquareSubsetEqual:tJ,SquareSuperset:nJ,SquareSupersetEqual:rJ,SquareUnion:iJ,squarf:oJ,squ:sJ,squf:lJ,srarr:aJ,Sscr:cJ,sscr:uJ,ssetmn:fJ,ssmile:dJ,sstarf:hJ,Star:pJ,star:gJ,starf:vJ,straightepsilon:mJ,straightphi:yJ,strns:bJ,sub:wJ,Sub:xJ,subdot:_J,subE:SJ,sube:kJ,subedot:CJ,submult:TJ,subnE:EJ,subne:LJ,subplus:AJ,subrarr:MJ,subset:NJ,Subset:$J,subseteq:OJ,subseteqq:PJ,SubsetEqual:RJ,subsetneq:DJ,subsetneqq:zJ,subsim:IJ,subsub:FJ,subsup:HJ,succapprox:qJ,succ:BJ,succcurlyeq:WJ,Succeeds:UJ,SucceedsEqual:VJ,SucceedsSlantEqual:jJ,SucceedsTilde:GJ,succeq:KJ,succnapprox:XJ,succneqq:YJ,succnsim:ZJ,succsim:JJ,SuchThat:QJ,sum:eQ,Sum:tQ,sung:nQ,sup1:rQ,sup2:iQ,sup3:oQ,sup:sQ,Sup:lQ,supdot:aQ,supdsub:cQ,supE:uQ,supe:fQ,supedot:dQ,Superset:hQ,SupersetEqual:pQ,suphsol:gQ,suphsub:vQ,suplarr:mQ,supmult:yQ,supnE:bQ,supne:wQ,supplus:xQ,supset:_Q,Supset:SQ,supseteq:kQ,supseteqq:CQ,supsetneq:TQ,supsetneqq:EQ,supsim:LQ,supsub:AQ,supsup:MQ,swarhk:NQ,swarr:$Q,swArr:OQ,swarrow:PQ,swnwar:RQ,szlig:DQ,Tab:zQ,target:IQ,Tau:FQ,tau:HQ,tbrk:qQ,Tcaron:BQ,tcaron:WQ,Tcedil:UQ,tcedil:VQ,Tcy:jQ,tcy:GQ,tdot:KQ,telrec:XQ,Tfr:YQ,tfr:ZQ,there4:JQ,therefore:QQ,Therefore:eee,Theta:tee,theta:nee,thetasym:ree,thetav:iee,thickapprox:oee,thicksim:see,ThickSpace:lee,ThinSpace:aee,thinsp:cee,thkap:uee,thksim:fee,THORN:dee,thorn:hee,tilde:pee,Tilde:gee,TildeEqual:vee,TildeFullEqual:mee,TildeTilde:yee,timesbar:bee,timesb:wee,times:xee,timesd:_ee,tint:See,toea:kee,topbot:Cee,topcir:Tee,top:Eee,Topf:Lee,topf:Aee,topfork:Mee,tosa:Nee,tprime:$ee,trade:Oee,TRADE:Pee,triangle:Ree,triangledown:Dee,triangleleft:zee,trianglelefteq:Iee,triangleq:Fee,triangleright:Hee,trianglerighteq:qee,tridot:Bee,trie:Wee,triminus:Uee,TripleDot:Vee,triplus:jee,trisb:Gee,tritime:Kee,trpezium:Xee,Tscr:Yee,tscr:Zee,TScy:Jee,tscy:Qee,TSHcy:ete,tshcy:tte,Tstrok:nte,tstrok:rte,twixt:ite,twoheadleftarrow:ote,twoheadrightarrow:ste,Uacute:lte,uacute:ate,uarr:cte,Uarr:ute,uArr:fte,Uarrocir:dte,Ubrcy:hte,ubrcy:pte,Ubreve:gte,ubreve:vte,Ucirc:mte,ucirc:yte,Ucy:bte,ucy:wte,udarr:xte,Udblac:_te,udblac:Ste,udhar:kte,ufisht:Cte,Ufr:Tte,ufr:Ete,Ugrave:Lte,ugrave:Ate,uHar:Mte,uharl:Nte,uharr:$te,uhblk:Ote,ulcorn:Pte,ulcorner:Rte,ulcrop:Dte,ultri:zte,Umacr:Ite,umacr:Fte,uml:Hte,UnderBar:qte,UnderBrace:Bte,UnderBracket:Wte,UnderParenthesis:Ute,Union:Vte,UnionPlus:jte,Uogon:Gte,uogon:Kte,Uopf:Xte,uopf:Yte,UpArrowBar:Zte,uparrow:Jte,UpArrow:Qte,Uparrow:ene,UpArrowDownArrow:tne,updownarrow:nne,UpDownArrow:rne,Updownarrow:ine,UpEquilibrium:one,upharpoonleft:sne,upharpoonright:lne,uplus:ane,UpperLeftArrow:cne,UpperRightArrow:une,upsi:fne,Upsi:dne,upsih:hne,Upsilon:pne,upsilon:gne,UpTeeArrow:vne,UpTee:mne,upuparrows:yne,urcorn:bne,urcorner:wne,urcrop:xne,Uring:_ne,uring:Sne,urtri:kne,Uscr:Cne,uscr:Tne,utdot:Ene,Utilde:Lne,utilde:Ane,utri:Mne,utrif:Nne,uuarr:$ne,Uuml:One,uuml:Pne,uwangle:Rne,vangrt:Dne,varepsilon:zne,varkappa:Ine,varnothing:Fne,varphi:Hne,varpi:qne,varpropto:Bne,varr:Wne,vArr:Une,varrho:Vne,varsigma:jne,varsubsetneq:Gne,varsubsetneqq:Kne,varsupsetneq:Xne,varsupsetneqq:Yne,vartheta:Zne,vartriangleleft:Jne,vartriangleright:Qne,vBar:ere,Vbar:tre,vBarv:nre,Vcy:rre,vcy:ire,vdash:ore,vDash:sre,Vdash:lre,VDash:are,Vdashl:cre,veebar:ure,vee:fre,Vee:dre,veeeq:hre,vellip:pre,verbar:gre,Verbar:vre,vert:mre,Vert:yre,VerticalBar:bre,VerticalLine:wre,VerticalSeparator:xre,VerticalTilde:_re,VeryThinSpace:Sre,Vfr:kre,vfr:Cre,vltri:Tre,vnsub:Ere,vnsup:Lre,Vopf:Are,vopf:Mre,vprop:Nre,vrtri:$re,Vscr:Ore,vscr:Pre,vsubnE:Rre,vsubne:Dre,vsupnE:zre,vsupne:Ire,Vvdash:Fre,vzigzag:Hre,Wcirc:qre,wcirc:Bre,wedbar:Wre,wedge:Ure,Wedge:Vre,wedgeq:jre,weierp:Gre,Wfr:Kre,wfr:Xre,Wopf:Yre,wopf:Zre,wp:Jre,wr:Qre,wreath:eie,Wscr:tie,wscr:nie,xcap:rie,xcirc:iie,xcup:oie,xdtri:sie,Xfr:lie,xfr:aie,xharr:cie,xhArr:uie,Xi:fie,xi:die,xlarr:hie,xlArr:pie,xmap:gie,xnis:vie,xodot:mie,Xopf:yie,xopf:bie,xoplus:wie,xotime:xie,xrarr:_ie,xrArr:Sie,Xscr:kie,xscr:Cie,xsqcup:Tie,xuplus:Eie,xutri:Lie,xvee:Aie,xwedge:Mie,Yacute:Nie,yacute:$ie,YAcy:Oie,yacy:Pie,Ycirc:Rie,ycirc:Die,Ycy:zie,ycy:Iie,yen:Fie,Yfr:Hie,yfr:qie,YIcy:Bie,yicy:Wie,Yopf:Uie,yopf:Vie,Yscr:jie,yscr:Gie,YUcy:Kie,yucy:Xie,yuml:Yie,Yuml:Zie,Zacute:Jie,zacute:Qie,Zcaron:eoe,zcaron:toe,Zcy:noe,zcy:roe,Zdot:ioe,zdot:ooe,zeetrf:soe,ZeroWidthSpace:loe,Zeta:aoe,zeta:coe,zfr:uoe,Zfr:foe,ZHcy:doe,zhcy:hoe,zigrarr:poe,zopf:goe,Zopf:voe,Zscr:moe,zscr:yoe,zwj:boe,zwnj:woe},xoe="Á",_oe="á",Soe="Â",koe="â",Coe="´",Toe="Æ",Eoe="æ",Loe="À",Aoe="à",Moe="&",Noe="&",$oe="Å",Ooe="å",Poe="Ã",Roe="ã",Doe="Ä",zoe="ä",Ioe="¦",Foe="Ç",Hoe="ç",qoe="¸",Boe="¢",Woe="©",Uoe="©",Voe="¤",joe="°",Goe="÷",Koe="É",Xoe="é",Yoe="Ê",Zoe="ê",Joe="È",Qoe="è",ese="Ð",tse="ð",nse="Ë",rse="ë",ise="½",ose="¼",sse="¾",lse=">",ase=">",cse="Í",use="í",fse="Î",dse="î",hse="¡",pse="Ì",gse="ì",vse="¿",mse="Ï",yse="ï",bse="«",wse="<",xse="<",_se="¯",Sse="µ",kse="·",Cse=" ",Tse="¬",Ese="Ñ",Lse="ñ",Ase="Ó",Mse="ó",Nse="Ô",$se="ô",Ose="Ò",Pse="ò",Rse="ª",Dse="º",zse="Ø",Ise="ø",Fse="Õ",Hse="õ",qse="Ö",Bse="ö",Wse="¶",Use="±",Vse="£",jse='"',Gse='"',Kse="»",Xse="®",Yse="®",Zse="§",Jse="­",Qse="¹",ele="²",tle="³",nle="ß",rle="Þ",ile="þ",ole="×",sle="Ú",lle="ú",ale="Û",cle="û",ule="Ù",fle="ù",dle="¨",hle="Ü",ple="ü",gle="Ý",vle="ý",mle="¥",yle="ÿ",ble={Aacute:xoe,aacute:_oe,Acirc:Soe,acirc:koe,acute:Coe,AElig:Toe,aelig:Eoe,Agrave:Loe,agrave:Aoe,amp:Moe,AMP:Noe,Aring:$oe,aring:Ooe,Atilde:Poe,atilde:Roe,Auml:Doe,auml:zoe,brvbar:Ioe,Ccedil:Foe,ccedil:Hoe,cedil:qoe,cent:Boe,copy:Woe,COPY:Uoe,curren:Voe,deg:joe,divide:Goe,Eacute:Koe,eacute:Xoe,Ecirc:Yoe,ecirc:Zoe,Egrave:Joe,egrave:Qoe,ETH:ese,eth:tse,Euml:nse,euml:rse,frac12:ise,frac14:ose,frac34:sse,gt:lse,GT:ase,Iacute:cse,iacute:use,Icirc:fse,icirc:dse,iexcl:hse,Igrave:pse,igrave:gse,iquest:vse,Iuml:mse,iuml:yse,laquo:bse,lt:wse,LT:xse,macr:_se,micro:Sse,middot:kse,nbsp:Cse,not:Tse,Ntilde:Ese,ntilde:Lse,Oacute:Ase,oacute:Mse,Ocirc:Nse,ocirc:$se,Ograve:Ose,ograve:Pse,ordf:Rse,ordm:Dse,Oslash:zse,oslash:Ise,Otilde:Fse,otilde:Hse,Ouml:qse,ouml:Bse,para:Wse,plusmn:Use,pound:Vse,quot:jse,QUOT:Gse,raquo:Kse,reg:Xse,REG:Yse,sect:Zse,shy:Jse,sup1:Qse,sup2:ele,sup3:tle,szlig:nle,THORN:rle,thorn:ile,times:ole,Uacute:sle,uacute:lle,Ucirc:ale,ucirc:cle,Ugrave:ule,ugrave:fle,uml:dle,Uuml:hle,uuml:ple,Yacute:gle,yacute:vle,yen:mle,yuml:yle},wle="&",xle="'",_le=">",Sle="<",kle='"',Kb={amp:wle,apos:xle,gt:_le,lt:Sle,quot:kle};var Hh={};const Cle={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var Tle=Mo&&Mo.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hh,"__esModule",{value:!0});var Im=Tle(Cle),Ele=String.fromCodePoint||function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function Lle(e){return e>=55296&&e<=57343||e>1114111?"�":(e in Im.default&&(e=Im.default[e]),Ele(e))}Hh.default=Lle;var Nu=Mo&&Mo.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(oi,"__esModule",{value:!0});oi.decodeHTML=oi.decodeHTMLStrict=oi.decodeXML=void 0;var Pd=Nu(Gb),Ale=Nu(ble),Mle=Nu(Kb),Fm=Nu(Hh),Nle=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;oi.decodeXML=Xb(Mle.default);oi.decodeHTMLStrict=Xb(Pd.default);function Xb(e){var t=Yb(e);return function(r){return String(r).replace(Nle,t)}}var Hm=function(e,t){return e1?Rle(e):e.charCodeAt(0)).toString(16).toUpperCase()+";"}function Dle(e,t){return function(r){return r.replace(t,function(o){return e[o]}).replace(nw,$u)}}var rw=new RegExp(Qb.source+"|"+nw.source,"g");function zle(e){return e.replace(rw,$u)}Vn.escape=zle;function Ile(e){return e.replace(Qb,$u)}Vn.escapeUTF8=Ile;function iw(e){return function(t){return t.replace(rw,function(r){return e[r]||$u(r)})}}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXMLStrict=e.decodeHTML5Strict=e.decodeHTML4Strict=e.decodeHTML5=e.decodeHTML4=e.decodeHTMLStrict=e.decodeHTML=e.decodeXML=e.encodeHTML5=e.encodeHTML4=e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=e.encode=e.decodeStrict=e.decode=void 0;var t=oi,r=Vn;function o(h,g){return(!g||g<=0?t.decodeXML:t.decodeHTML)(h)}e.decode=o;function s(h,g){return(!g||g<=0?t.decodeXML:t.decodeHTMLStrict)(h)}e.decodeStrict=s;function c(h,g){return(!g||g<=0?r.encodeXML:r.encodeHTML)(h)}e.encode=c;var f=Vn;Object.defineProperty(e,"encodeXML",{enumerable:!0,get:function(){return f.encodeXML}}),Object.defineProperty(e,"encodeHTML",{enumerable:!0,get:function(){return f.encodeHTML}}),Object.defineProperty(e,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return f.encodeNonAsciiHTML}}),Object.defineProperty(e,"escape",{enumerable:!0,get:function(){return f.escape}}),Object.defineProperty(e,"escapeUTF8",{enumerable:!0,get:function(){return f.escapeUTF8}}),Object.defineProperty(e,"encodeHTML4",{enumerable:!0,get:function(){return f.encodeHTML}}),Object.defineProperty(e,"encodeHTML5",{enumerable:!0,get:function(){return f.encodeHTML}});var d=oi;Object.defineProperty(e,"decodeXML",{enumerable:!0,get:function(){return d.decodeXML}}),Object.defineProperty(e,"decodeHTML",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(e,"decodeHTMLStrict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML4",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(e,"decodeHTML5",{enumerable:!0,get:function(){return d.decodeHTML}}),Object.defineProperty(e,"decodeHTML4Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML5Strict",{enumerable:!0,get:function(){return d.decodeHTMLStrict}}),Object.defineProperty(e,"decodeXMLStrict",{enumerable:!0,get:function(){return d.decodeXML}})})(jb);function Fle(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Hle(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(g){throw g},f:s}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,f=!1,d;return{s:function(){r=r.call(e)},n:function(){var g=r.next();return c=g.done,g},e:function(g){f=!0,d=g},f:function(){try{!c&&r.return!=null&&r.return()}finally{if(f)throw d}}}}function Ble(e,t){if(e){if(typeof e=="string")return qm(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return qm(e,t)}}function qm(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r0?e*40+55:0,f=t>0?t*40+55:0,d=r>0?r*40+55:0;o[s]=jle([c,f,d])}function sw(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t}function jle(e){var t=[],r=ow(e),o;try{for(r.s();!(o=r.n()).done;){var s=o.value;t.push(sw(s))}}catch(c){r.e(c)}finally{r.f()}return"#"+t.join("")}function Wm(e,t,r,o){var s;return t==="text"?s=Yle(r,o):t==="display"?s=Kle(e,r,o):t==="xterm256Foreground"?s=Cc(e,o.colors[r]):t==="xterm256Background"?s=Tc(e,o.colors[r]):t==="rgb"&&(s=Gle(e,r)),s}function Gle(e,t){t=t.substring(2).slice(0,-1);var r=+t.substr(0,2),o=t.substring(5).split(";"),s=o.map(function(c){return("0"+Number(c).toString(16)).substr(-2)}).join("");return kc(e,(r===38?"color:#":"background-color:#")+s)}function Kle(e,t,r){t=parseInt(t,10);var o={"-1":function(){return"
"},0:function(){return e.length&&lw(e)},1:function(){return qi(e,"b")},3:function(){return qi(e,"i")},4:function(){return qi(e,"u")},8:function(){return kc(e,"display:none")},9:function(){return qi(e,"strike")},22:function(){return kc(e,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return Vm(e,"i")},24:function(){return Vm(e,"u")},39:function(){return Cc(e,r.fg)},49:function(){return Tc(e,r.bg)},53:function(){return kc(e,"text-decoration:overline")}},s;return o[t]?s=o[t]():4"}).join("")}function sc(e,t){for(var r=[],o=e;o<=t;o++)r.push(o);return r}function Xle(e){return function(t){return(e===null||t.category!==e)&&e!=="all"}}function Um(e){e=parseInt(e,10);var t=null;return e===0?t="all":e===1?t="bold":2")}function kc(e,t){return qi(e,"span",t)}function Cc(e,t){return qi(e,"span","color:"+t)}function Tc(e,t){return qi(e,"span","background-color:"+t)}function Vm(e,t){var r;if(e.slice(-1)[0]===t&&(r=e.pop()),r)return""}function Zle(e,t,r){var o=!1,s=3;function c(){return""}function f(H,z){return r("xterm256Foreground",z),""}function d(H,z){return r("xterm256Background",z),""}function h(H){return t.newline?r("display",-1):r("text",H),""}function g(H,z){o=!0,z.trim().length===0&&(z="0"),z=z.trimRight(";").split(";");var J=ow(z),re;try{for(J.s();!(re=J.n()).done;){var te=re.value;r("display",te)}}catch(j){J.e(j)}finally{J.f()}return""}function v(H){return r("text",H),""}function y(H){return r("rgb",H),""}var b=[{pattern:/^\x08+/,sub:c},{pattern:/^\x1b\[[012]?K/,sub:c},{pattern:/^\x1b\[\(B/,sub:c},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:y},{pattern:/^\x1b\[38;5;(\d+)m/,sub:f},{pattern:/^\x1b\[48;5;(\d+)m/,sub:d},{pattern:/^\n/,sub:h},{pattern:/^\r+\n/,sub:h},{pattern:/^\r/,sub:h},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:g},{pattern:/^\x1b\[\d?J/,sub:c},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:c},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:c},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:v}];function x(H,z){z>s&&o||(o=!1,e=e.replace(H.pattern,H.sub))}var T=[],E=e,M=E.length;e:for(;M>0;){for(var N=0,L=0,O=b.length;Lt.toUpperCase())}const iae=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;function oae(){return typeof process<"u"&&typeof process.cwd=="function"?process.cwd().replace(/\\/g,"/"):"/"}const sae=function(...e){e=e.map(o=>rae(o));let t="",r=!1;for(let o=e.length-1;o>=-1&&!r;o--){const s=o>=0?e[o]:oae();!s||s.length===0||(t=`${s}/${t}`,r=jm(s))}return t=lae(t,!r),r&&!jm(t)?`/${t}`:t.length>0?t:"."};function lae(e,t){let r="",o=0,s=-1,c=0,f=null;for(let d=0;d<=e.length;++d){if(d2){const h=r.lastIndexOf("/");h===-1?(r="",o=0):(r=r.slice(0,h),o=r.length-1-r.lastIndexOf("/")),s=d,c=0;continue}else if(r.length>0){r="",o=0,s=d,c=0;continue}}t&&(r+=r.length>0?"/..":"..",o=2)}else r.length>0?r+=`/${e.slice(s+1,d)}`:r=e.slice(s+1,d),o=d-s-1;s=d,c=0}else f==="."&&c!==-1?++c:c=-1}return r}const jm=function(e){return iae.test(e)},aae=44,Gm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cae=new Uint8Array(64),aw=new Uint8Array(128);for(let e=0;e>>=1,d&&(s=-2147483648|-s),r[o]+=s,t}function Km(e,t,r){return t>=r?!1:e.charCodeAt(t)!==aae}function dae(e){e.sort(hae)}function hae(e,t){return e[0]-t[0]}const pae=/^[\w+.-]+:\/\//,gae=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,vae=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;var zt;(function(e){e[e.Empty=1]="Empty",e[e.Hash=2]="Hash",e[e.Query=3]="Query",e[e.RelativePath=4]="RelativePath",e[e.AbsolutePath=5]="AbsolutePath",e[e.SchemeRelative=6]="SchemeRelative",e[e.Absolute=7]="Absolute"})(zt||(zt={}));function mae(e){return pae.test(e)}function yae(e){return e.startsWith("//")}function cw(e){return e.startsWith("/")}function bae(e){return e.startsWith("file:")}function Xm(e){return/^[.?#]/.test(e)}function lc(e){const t=gae.exec(e);return uw(t[1],t[2]||"",t[3],t[4]||"",t[5]||"/",t[6]||"",t[7]||"")}function wae(e){const t=vae.exec(e),r=t[2];return uw("file:","",t[1]||"","",cw(r)?r:"/"+r,t[3]||"",t[4]||"")}function uw(e,t,r,o,s,c,f){return{scheme:e,user:t,host:r,port:o,path:s,query:c,hash:f,type:zt.Absolute}}function Ym(e){if(yae(e)){const r=lc("http:"+e);return r.scheme="",r.type=zt.SchemeRelative,r}if(cw(e)){const r=lc("http://foo.com"+e);return r.scheme="",r.host="",r.type=zt.AbsolutePath,r}if(bae(e))return wae(e);if(mae(e))return lc(e);const t=lc("http://foo.com/"+e);return t.scheme="",t.host="",t.type=e?e.startsWith("?")?zt.Query:e.startsWith("#")?zt.Hash:zt.RelativePath:zt.Empty,t}function xae(e){if(e.endsWith("/.."))return e;const t=e.lastIndexOf("/");return e.slice(0,t+1)}function _ae(e,t){fw(t,t.type),e.path==="/"?e.path=t.path:e.path=xae(t.path)+e.path}function fw(e,t){const r=t<=zt.RelativePath,o=e.path.split("/");let s=1,c=0,f=!1;for(let h=1;ho&&(o=f)}fw(r,o);const s=r.query+r.hash;switch(o){case zt.Hash:case zt.Query:return s;case zt.RelativePath:{const c=r.path.slice(1);return c?Xm(t||e)&&!Xm(c)?"./"+c+s:c+s:s||"."}case zt.AbsolutePath:return r.path+s;default:return r.scheme+"//"+r.user+r.host+r.port+r.path+s}}function Zm(e,t){return t&&!t.endsWith("/")&&(t+="/"),Sae(e,t)}function kae(e){if(!e)return"";const t=e.lastIndexOf("/");return e.slice(0,t+1)}const Yi=0,Cae=1,Tae=2,Eae=3,Lae=4;function Aae(e,t){const r=Jm(e,0);if(r===e.length)return e;t||(e=e.slice());for(let o=r;o>1),c=e[s][Yi]-t;if(c===0)return Yc=!0,s;c<0?r=s+1:o=s-1}return Yc=!1,r-1}function Pae(e,t,r){for(let o=r+1;o=0&&e[o][Yi]===t;r=o--);return r}function Dae(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function zae(e,t,r,o){const{lastKey:s,lastNeedle:c,lastIndex:f}=r;let d=0,h=e.length-1;if(o===s){if(t===c)return Yc=f!==-1&&e[f][Yi]===t,f;t>=c?d=f===-1?0:f:h=f}return r.lastKey=o,r.lastNeedle=t,r.lastIndex=Oae(e,t,d,h)}const Iae="`line` must be greater than 0 (lines start at line 1)",Fae="`column` must be greater than or equal to 0 (columns start at column 0)",Qm=-1,Hae=1;class qae{constructor(t,r){const o=typeof t=="string";if(!o&&t._decodedMemo)return t;const s=o?JSON.parse(t):t,{version:c,file:f,names:d,sourceRoot:h,sources:g,sourcesContent:v}=s;this.version=c,this.file=f,this.names=d||[],this.sourceRoot=h,this.sources=g,this.sourcesContent=v,this.ignoreList=s.ignoreList||s.x_google_ignoreList||void 0;const y=Zm(h||"",kae(r));this.resolvedSources=g.map(x=>Zm(x||"",y));const{mappings:b}=s;typeof b=="string"?(this._encoded=b,this._decoded=void 0):(this._encoded=void 0,this._decoded=Aae(b,o)),this._decodedMemo=Dae(),this._bySources=void 0,this._bySourceMemos=void 0}}function Bae(e){var t;return(t=e)._decoded||(t._decoded=uae(e._encoded))}function Wae(e,t){let{line:r,column:o,bias:s}=t;if(r--,r<0)throw new Error(Iae);if(o<0)throw new Error(Fae);const c=Bae(e);if(r>=c.length)return ac(null,null,null,null);const f=c[r],d=Uae(f,e._decodedMemo,r,o,s||Hae);if(d===-1)return ac(null,null,null,null);const h=f[d];if(h.length===1)return ac(null,null,null,null);const{names:g,resolvedSources:v}=e;return ac(v[h[Cae]],h[Tae]+1,h[Eae],h.length===5?g[h[Lae]]:null)}function ac(e,t,r,o){return{source:e,line:t,column:r,name:o}}function Uae(e,t,r,o,s){let c=zae(e,o,t,r);return Yc?c=(s===Qm?Pae:Rae)(e,o,c):s===Qm&&c++,c===-1||c===e.length?-1:c}const dw=/^\s*at .*(?:\S:\d+|\(native\))/m,Vae=/^(?:eval@)?(?:\[native code\])?$/,jae=["node:internal",/\/packages\/\w+\/dist\//,/\/@vitest\/\w+\/dist\//,"/vitest/dist/","/vitest/src/","/vite-node/dist/","/vite-node/src/","/node_modules/chai/","/node_modules/tinypool/","/node_modules/tinyspy/","/deps/chunk-","/deps/@vitest","/deps/loupe","/deps/chai",/node:\w+/,/__vitest_test__/,/__vitest_browser__/,/\/deps\/vitest_/];function hw(e){if(!e.includes(":"))return[e];const r=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/^\(|\)$/g,""));if(!r)return[e];let o=r[1];if(o.startsWith("async ")&&(o=o.slice(6)),(o.startsWith("http:")||o.startsWith("https:"))&&(o=new URL(o).pathname),o.startsWith("/@fs/")){const s=/^\/@fs\/[a-zA-Z]:\//.test(o);o=o.slice(s?5:4)}return[o,r[2]||void 0,r[3]||void 0]}function Gae(e){let t=e.trim();if(Vae.test(t)||(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),!t.includes("@")&&!t.includes(":")))return null;const r=/((.*".+"[^@]*)?[^@]*)(@)/,o=t.match(r),s=o&&o[1]?o[1]:void 0,[c,f,d]=hw(t.replace(r,""));return!c||!f||!d?null:{file:c,method:s||"",line:Number.parseInt(f),column:Number.parseInt(d)}}function Kae(e){let t=e.trim();if(!dw.test(t))return null;t.includes("(eval ")&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));let r=t.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,"");const o=r.match(/ (\(.+\)$)/);r=o?r.replace(o[0],""):r;const[s,c,f]=hw(o?o[1]:r);let d=o&&r||"",h=s&&["eval",""].includes(s)?void 0:s;return!h||!c||!f?null:(d.startsWith("async ")&&(d=d.slice(6)),h.startsWith("file://")&&(h=h.slice(7)),h=sae(h),d&&(d=d.replace(/__vite_ssr_import_\d+__\./g,"")),{method:d,file:h,line:Number.parseInt(c),column:Number.parseInt(f)})}function Xae(e,t={}){const{ignoreStackEntries:r=jae}=t;let o=dw.test(e)?Zae(e):Yae(e);return r.length&&(o=o.filter(s=>!r.some(c=>s.file.match(c)))),o.map(s=>{var c;t.getFileName&&(s.file=t.getFileName(s.file));const f=(c=t.getSourceMap)==null?void 0:c.call(t,s.file);if(!f||typeof f!="object"||!f.version)return s;const d=new qae(f),{line:h,column:g}=Wae(d,s);return h!=null&&g!=null?{...s,line:h,column:g}:s})}function Yae(e){return e.split(` -`).map(t=>Gae(t)).filter(qb)}function Zae(e){return e.split(` -`).map(t=>Kae(t)).filter(qb)}function Jae(e,t){return t&&e.endsWith(t)}async function pw(e,t,r){const o=encodeURI(`${e}:${t}:${r}`);await fetch(`/__open-in-editor?file=${o}`)}function Bh(e){return new tae({fg:e?"#FFF":"#000",bg:e?"#000":"#FFF"})}function Qae(e){return e===null||typeof e!="function"&&typeof e!="object"}function gw(e){let t=e;if(Qae(e)&&(t={message:String(t).split(/\n/g)[0],stack:String(t),name:""}),!e){const r=new Error("unknown error");t={message:r.message,stack:r.stack,name:""}}return t.stacks=Xae(t.stack||t.stackStr||"",{ignoreStackEntries:[]}),t}function Ou(e){return U0()?(rS(e),!0):!1}function li(e){return typeof e=="function"?e():q(e)}const ece=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const tce=Object.prototype.toString,nce=e=>tce.call(e)==="[object Object]",Zl=()=>{};function vw(e,t){function r(...o){return new Promise((s,c)=>{Promise.resolve(e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})).then(s).catch(c)})}return r}const mw=e=>e();function yw(e,t={}){let r,o,s=Zl;const c=d=>{clearTimeout(d),s(),s=Zl};return d=>{const h=li(e),g=li(t.maxWait);return r&&c(r),h<=0||g!==void 0&&g<=0?(o&&(c(o),o=null),Promise.resolve(d())):new Promise((v,y)=>{s=t.rejectOnCancel?y:v,g&&!o&&(o=setTimeout(()=>{r&&c(r),o=null,v(d())},g)),r=setTimeout(()=>{o&&c(o),o=null,v(d())},h)})}}function rce(e=mw){const t=Be(!0);function r(){t.value=!1}function o(){t.value=!0}const s=(...c)=>{t.value&&e(...c)};return{isActive:oa(t),pause:r,resume:o,eventFilter:s}}function ice(e){return ca()}function oce(...e){if(e.length!==1)return gu(...e);const t=e[0];return typeof t=="function"?oa(sy(()=>({get:t,set:Zl}))):Be(t)}function e0(e,t=200,r={}){return vw(yw(t,r),e)}function bw(e,t,r={}){const{eventFilter:o=mw,...s}=r;return Ht(e,vw(o,t),s)}function ww(e,t,r={}){const{eventFilter:o,...s}=r,{eventFilter:c,pause:f,resume:d,isActive:h}=rce(o);return{stop:bw(e,t,{...s,eventFilter:c}),pause:f,resume:d,isActive:h}}function Wh(e,t=!0,r){ice()?Os(e,r):t?e():ln(e)}function sce(e=!1,t={}){const{truthyValue:r=!0,falsyValue:o=!1}=t,s=Ot(e),c=Be(e);function f(d){if(arguments.length)return c.value=d,c.value;{const h=li(r);return c.value=c.value===h?li(o):h,c.value}}return s?f:[c,f]}function xw(e,t,r={}){const{debounce:o=0,maxWait:s=void 0,...c}=r;return bw(e,t,{...c,eventFilter:yw(o,{maxWait:s})})}function lce(e,t,r){const o=Ht(e,(...s)=>(ln(()=>o()),t(...s)),r);return o}function ace(e,t,r){let o;Ot(r)?o={evaluating:r}:o={};const{lazy:s=!1,evaluating:c=void 0,shallow:f=!0,onError:d=Zl}=o,h=Be(!s),g=f?Fr(t):Be(t);let v=0;return Ch(async y=>{if(!h.value)return;v++;const b=v;let x=!1;c&&Promise.resolve().then(()=>{c.value=!0});try{const T=await e(E=>{y(()=>{c&&(c.value=!1),x||E()})});b===v&&(g.value=T)}catch(T){d(T)}finally{c&&b===v&&(c.value=!1),x=!0}}),s?Me(()=>(h.value=!0,g.value)):g}function Zc(e){var t;const r=li(e);return(t=r==null?void 0:r.$el)!=null?t:r}const rr=ece?window:void 0;function Ls(...e){let t,r,o,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([r,o,s]=e,t=rr):[t,r,o,s]=e,!t)return Zl;Array.isArray(r)||(r=[r]),Array.isArray(o)||(o=[o]);const c=[],f=()=>{c.forEach(v=>v()),c.length=0},d=(v,y,b,x)=>(v.addEventListener(y,b,x),()=>v.removeEventListener(y,b,x)),h=Ht(()=>[Zc(t),li(s)],([v,y])=>{if(f(),!v)return;const b=nce(y)?{...y}:y;c.push(...r.flatMap(x=>o.map(T=>d(v,x,T,b))))},{immediate:!0,flush:"post"}),g=()=>{h(),f()};return Ou(g),g}function cce(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function _w(...e){let t,r,o={};e.length===3?(t=e[0],r=e[1],o=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,r=e[0],o=e[1]):(t=e[0],r=e[1]):(t=!0,r=e[0]);const{target:s=rr,eventName:c="keydown",passive:f=!1,dedupe:d=!1}=o,h=cce(t);return Ls(s,c,v=>{v.repeat&&li(d)||h(v)&&r(v)},f)}function uce(){const e=Be(!1),t=ca();return t&&Os(()=>{e.value=!0},t),e}function Sw(e){const t=uce();return Me(()=>(t.value,!!e()))}function fce(e,t={}){const{immediate:r=!0,fpsLimit:o=void 0,window:s=rr}=t,c=Be(!1),f=o?1e3/o:null;let d=0,h=null;function g(b){if(!c.value||!s)return;d||(d=b);const x=b-d;if(f&&xr&&"matchMedia"in r&&typeof r.matchMedia=="function");let s;const c=Be(!1),f=g=>{c.value=g.matches},d=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",f):s.removeListener(f))},h=Ch(()=>{o.value&&(d(),s=r.matchMedia(li(e)),"addEventListener"in s?s.addEventListener("change",f):s.addListener(f),c.value=s.matches)});return Ou(()=>{h(),d(),s=void 0}),c}const cc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},uc="__vueuse_ssr_handlers__",dce=hce();function hce(){return uc in cc||(cc[uc]=cc[uc]||{}),cc[uc]}function Cw(e,t){return dce[e]||t}function pce(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const gce={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},t0="vueuse-storage";function Tw(e,t,r,o={}){var s;const{flush:c="pre",deep:f=!0,listenToStorageChanges:d=!0,writeDefaults:h=!0,mergeDefaults:g=!1,shallow:v,window:y=rr,eventFilter:b,onError:x=j=>{console.error(j)},initOnMounted:T}=o,E=(v?Fr:Be)(typeof t=="function"?t():t);if(!r)try{r=Cw("getDefaultStorage",()=>{var j;return(j=rr)==null?void 0:j.localStorage})()}catch(j){x(j)}if(!r)return E;const M=li(t),N=pce(M),L=(s=o.serializer)!=null?s:gce[N],{pause:O,resume:A}=ww(E,()=>z(E.value),{flush:c,deep:f,eventFilter:b});y&&d&&Wh(()=>{Ls(y,"storage",re),Ls(y,t0,te),T&&re()}),T||re();function H(j,ne){y&&y.dispatchEvent(new CustomEvent(t0,{detail:{key:e,oldValue:j,newValue:ne,storageArea:r}}))}function z(j){try{const ne=r.getItem(e);if(j==null)H(ne,null),r.removeItem(e);else{const K=L.write(j);ne!==K&&(r.setItem(e,K),H(ne,K))}}catch(ne){x(ne)}}function J(j){const ne=j?j.newValue:r.getItem(e);if(ne==null)return h&&M!=null&&r.setItem(e,L.write(M)),M;if(!j&&g){const K=L.read(ne);return typeof g=="function"?g(K,M):N==="object"&&!Array.isArray(K)?{...M,...K}:K}else return typeof ne!="string"?ne:L.read(ne)}function re(j){if(!(j&&j.storageArea!==r)){if(j&&j.key==null){E.value=M;return}if(!(j&&j.key!==e)){O();try{(j==null?void 0:j.newValue)!==L.write(E.value)&&(E.value=J(j))}catch(ne){x(ne)}finally{j?ln(A):A()}}}}function te(j){re(j.detail)}return E}function Ew(e){return kw("(prefers-color-scheme: dark)",e)}function vce(e={}){const{selector:t="html",attribute:r="class",initialValue:o="auto",window:s=rr,storage:c,storageKey:f="vueuse-color-scheme",listenToStorageChanges:d=!0,storageRef:h,emitAuto:g,disableTransition:v=!0}=e,y={auto:"",light:"light",dark:"dark",...e.modes||{}},b=Ew({window:s}),x=Me(()=>b.value?"dark":"light"),T=h||(f==null?oce(o):Tw(f,o,c,{window:s,listenToStorageChanges:d})),E=Me(()=>T.value==="auto"?x.value:T.value),M=Cw("updateHTMLAttrs",(A,H,z)=>{const J=typeof A=="string"?s==null?void 0:s.document.querySelector(A):Zc(A);if(!J)return;let re;if(v&&(re=s.document.createElement("style"),re.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(re)),H==="class"){const te=z.split(/\s/g);Object.values(y).flatMap(j=>(j||"").split(/\s/g)).filter(Boolean).forEach(j=>{te.includes(j)?J.classList.add(j):J.classList.remove(j)})}else J.setAttribute(H,z);v&&(s.getComputedStyle(re).opacity,document.head.removeChild(re))});function N(A){var H;M(t,r,(H=y[A])!=null?H:A)}function L(A){e.onChanged?e.onChanged(A,N):N(A)}Ht(E,L,{flush:"post",immediate:!0}),Wh(()=>L(E.value));const O=Me({get(){return g?T.value:E.value},set(A){T.value=A}});try{return Object.assign(O,{store:T,system:x,state:E})}catch{return O}}function mce(e={}){const{valueDark:t="dark",valueLight:r="",window:o=rr}=e,s=vce({...e,onChanged:(d,h)=>{var g;e.onChanged?(g=e.onChanged)==null||g.call(e,d==="dark",h,d):h(d)},modes:{dark:t,light:r}}),c=Me(()=>s.system?s.system.value:Ew({window:o}).value?"dark":"light");return Me({get(){return s.value==="dark"},set(d){const h=d?"dark":"light";c.value===h?s.value="auto":s.value=h}})}function Lw(e,t,r={}){const{window:o=rr,...s}=r;let c;const f=Sw(()=>o&&"ResizeObserver"in o),d=()=>{c&&(c.disconnect(),c=void 0)},h=Me(()=>Array.isArray(e)?e.map(y=>Zc(y)):[Zc(e)]),g=Ht(h,y=>{if(d(),f.value&&o){c=new ResizeObserver(t);for(const b of y)b&&c.observe(b,s)}},{immediate:!0,flush:"post"}),v=()=>{d(),g()};return Ou(v),{isSupported:f,stop:v}}function Pu(e,t,r={}){const{window:o=rr}=r;return Tw(e,t,o==null?void 0:o.localStorage,r)}function yce(e="history",t={}){const{initialValue:r={},removeNullishValues:o=!0,removeFalsyValues:s=!1,write:c=!0,window:f=rr}=t;if(!f)return er(r);const d=er({});function h(){if(e==="history")return f.location.search||"";if(e==="hash"){const N=f.location.hash||"",L=N.indexOf("?");return L>0?N.slice(L):""}else return(f.location.hash||"").replace(/^#/,"")}function g(N){const L=N.toString();if(e==="history")return`${L?`?${L}`:""}${f.location.hash||""}`;if(e==="hash-params")return`${f.location.search||""}${L?`#${L}`:""}`;const O=f.location.hash||"#",A=O.indexOf("?");return A>0?`${O.slice(0,A)}${L?`?${L}`:""}`:`${O}${L?`?${L}`:""}`}function v(){return new URLSearchParams(h())}function y(N){const L=new Set(Object.keys(d));for(const O of N.keys()){const A=N.getAll(O);d[O]=A.length>1?A:N.get(O)||"",L.delete(O)}Array.from(L).forEach(O=>delete d[O])}const{pause:b,resume:x}=ww(d,()=>{const N=new URLSearchParams("");Object.keys(d).forEach(L=>{const O=d[L];Array.isArray(O)?O.forEach(A=>N.append(L,A)):o&&O==null||s&&!O?N.delete(L):N.set(L,O)}),T(N)},{deep:!0});function T(N,L){b(),L&&y(N),f.history.replaceState(f.history.state,f.document.title,f.location.pathname+g(N)),x()}function E(){c&&T(v(),!0)}Ls(f,"popstate",E,!1),e!=="history"&&Ls(f,"hashchange",E,!1);const M=v();return M.keys().next().value?y(M):Object.assign(d,r),d}function bce(e={}){const{window:t=rr,initialWidth:r=Number.POSITIVE_INFINITY,initialHeight:o=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:c=!0}=e,f=Be(r),d=Be(o),h=()=>{t&&(c?(f.value=t.innerWidth,d.value=t.innerHeight):(f.value=t.document.documentElement.clientWidth,d.value=t.document.documentElement.clientHeight))};if(h(),Wh(h),Ls("resize",h,{passive:!0}),s){const g=kw("(orientation: portrait)");Ht(g,()=>h())}return{width:f,height:d}}const Uh=yce("hash",{initialValue:{file:"",view:null,line:null}}),Zi=gu(Uh,"file"),Bn=gu(Uh,"view"),Rd=gu(Uh,"line");var jn=Uint8Array,cs=Uint16Array,wce=Int32Array,Aw=new jn([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Mw=new jn([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),xce=new jn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Nw=function(e,t){for(var r=new cs(31),o=0;o<31;++o)r[o]=t+=1<>1|(Ct&21845)<<1;Ni=(Ni&52428)>>2|(Ni&13107)<<2,Ni=(Ni&61680)>>4|(Ni&3855)<<4,Dd[Ct]=((Ni&65280)>>8|(Ni&255)<<8)>>1}var Rl=function(e,t,r){for(var o=e.length,s=0,c=new cs(t);s>h]=g}else for(d=new cs(o),s=0;s>15-e[s]);return d},ha=new jn(288);for(var Ct=0;Ct<144;++Ct)ha[Ct]=8;for(var Ct=144;Ct<256;++Ct)ha[Ct]=9;for(var Ct=256;Ct<280;++Ct)ha[Ct]=7;for(var Ct=280;Ct<288;++Ct)ha[Ct]=8;var Pw=new jn(32);for(var Ct=0;Ct<32;++Ct)Pw[Ct]=5;var Cce=Rl(ha,9,1),Tce=Rl(Pw,5,1),Qf=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},vr=function(e,t,r){var o=t/8|0;return(e[o]|e[o+1]<<8)>>(t&7)&r},ed=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(t&7)},Ece=function(e){return(e+7)/8|0},Rw=function(e,t,r){return(t==null||t<0)&&(t=0),(r==null||r>e.length)&&(r=e.length),new jn(e.subarray(t,r))},Lce=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],$n=function(e,t,r){var o=new Error(t||Lce[e]);if(o.code=e,Error.captureStackTrace&&Error.captureStackTrace(o,$n),!r)throw o;return o},Vh=function(e,t,r,o){var s=e.length,c=0;if(!s||t.f&&!t.l)return r||new jn(0);var f=!r,d=f||t.i!=2,h=t.i;f&&(r=new jn(s*3));var g=function(Te){var Ye=r.length;if(Te>Ye){var P=new jn(Math.max(Ye*2,Te));P.set(r),r=P}},v=t.f||0,y=t.p||0,b=t.b||0,x=t.l,T=t.d,E=t.m,M=t.n,N=s*8;do{if(!x){v=vr(e,y,1);var L=vr(e,y+1,3);if(y+=3,L)if(L==1)x=Cce,T=Tce,E=9,M=5;else if(L==2){var z=vr(e,y,31)+257,J=vr(e,y+10,15)+4,re=z+vr(e,y+5,31)+1;y+=14;for(var te=new jn(re),j=new jn(19),ne=0;ne>4;if(O<16)te[ne++]=O;else{var B=0,W=0;for(O==16?(W=3+vr(e,y,3),y+=2,B=te[ne-1]):O==17?(W=3+vr(e,y,7),y+=3):O==18&&(W=11+vr(e,y,127),y+=7);W--;)te[ne++]=B}}var ie=te.subarray(0,z),ye=te.subarray(z);E=Qf(ie),M=Qf(ye),x=Rl(ie,E,1),T=Rl(ye,M,1)}else $n(1);else{var O=Ece(y)+4,A=e[O-4]|e[O-3]<<8,H=O+A;if(H>s){h&&$n(0);break}d&&g(b+A),r.set(e.subarray(O,H),b),t.b=b+=A,t.p=y=H*8,t.f=v;continue}if(y>N){h&&$n(0);break}}d&&g(b+131072);for(var Ne=(1<>4;if(y+=B&15,y>N){h&&$n(0);break}if(B||$n(2),it<256)r[b++]=it;else if(it==256){je=y,x=null;break}else{var rt=it-254;if(it>264){var ne=it-257,Ze=Aw[ne];rt=vr(e,y,(1<>4;Ee||$n(3),y+=Ee&15;var ye=kce[X];if(X>3){var Ze=Mw[X];ye+=ed(e,y)&(1<N){h&&$n(0);break}d&&g(b+131072);var ae=b+rt;if(b>3&1)+(t>>4&1);o>0;o-=!e[r++]);return r+(t&2)},Nce=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},$ce=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&$n(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&$n(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function Oce(e,t){return Vh(e,{i:2},t,t)}function Pce(e,t){var r=Mce(e);return r+8>e.length&&$n(6,"invalid gzip data"),Vh(e.subarray(r,-8),{i:2},new jn(Nce(e)),t)}function Rce(e,t){return Vh(e.subarray($ce(e,t),-4),{i:2},t,t)}function Dce(e,t){return e[0]==31&&e[1]==139&&e[2]==8?Pce(e,t):(e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31?Oce(e,t):Rce(e,t)}var zd=typeof TextDecoder<"u"&&new TextDecoder,zce=0;try{zd.decode(Ace,{stream:!0}),zce=1}catch{}var Ice=function(e){for(var t="",r=0;;){var o=e[r++],s=(o>127)+(o>223)+(o>239);if(r+s>e.length)return{s:t,r:Rw(e,r-1)};s?s==3?(o=((o&15)<<18|(e[r++]&63)<<12|(e[r++]&63)<<6|e[r++]&63)-65536,t+=String.fromCharCode(55296|o>>10,56320|o&1023)):s&1?t+=String.fromCharCode((o&31)<<6|e[r++]&63):t+=String.fromCharCode((o&15)<<12|(e[r++]&63)<<6|e[r++]&63):t+=String.fromCharCode(o)}};function Fce(e,t){var r;if(zd)return zd.decode(e);var o=Ice(e),s=o.s,r=o.r;return r.length&&$n(8),s}const td=()=>{},wn=()=>Promise.resolve();function Hce(){const e=er({state:new Ub,waitForConnection:f,reconnect:s,ws:new EventTarget});e.state.filesMap=er(e.state.filesMap),e.state.idMap=er(e.state.idMap);let t;const r={getFiles:()=>t.files,getPaths:()=>t.paths,getConfig:()=>t.config,getModuleGraph:async(d,h)=>{var g;return(g=t.moduleGraph[d])==null?void 0:g[h]},getUnhandledErrors:()=>t.unhandledErrors,getTransformResult:wn,onDone:td,onTaskUpdate:td,writeFile:wn,rerun:wn,updateSnapshot:wn,resolveSnapshotPath:wn,snapshotSaved:wn,onAfterSuiteRun:wn,onCancel:wn,getCountOfFailedTests:()=>0,sendLog:wn,resolveSnapshotRawPath:wn,readSnapshotFile:wn,saveSnapshotFile:wn,readTestFile:async d=>t.sources[d],removeSnapshotFile:wn,onUnhandledError:td,saveTestFile:wn,getProvidedContext:()=>({}),getTestFiles:wn};e.rpc=r;let o;function s(){c()}async function c(){var v;const d=await fetch(window.METADATA_PATH),h=((v=d.headers.get("content-type"))==null?void 0:v.toLowerCase())||"";if(h.includes("application/gzip")||h.includes("application/x-gzip")){const y=new Uint8Array(await d.arrayBuffer()),b=Fce(Dce(y));t=Od(b)}else t=Od(await d.text());const g=new Event("open");e.ws.dispatchEvent(g)}c();function f(){return o}return e}const Jc=Be("idle"),qce=Me(()=>Jc.value==="idle"),Ii=Be([]),Id=Fr([]),In=Fr([]),_r=Pu("vitest-ui_task-tree-opened",[],{shallow:!0}),Qc=Me(()=>new Set(_r.value)),on=Pu("vitest-ui_task-tree-filter",{expandAll:void 0,failed:!1,success:!1,skipped:!1,onlyTests:!1,search:""}),On=Be(on.value.search),Bce={"&":"&","<":"<",">":">",'"':""","'":"'"};function Dw(e){return e.replace(/[&<>"']/g,t=>Bce[t])}const Wce=Me(()=>{const e=On.value.toLowerCase();return e.length?new RegExp(`(${Dw(e)})`,"gi"):null}),zw=Me(()=>On.value.trim()!==""),Qe=er({failed:on.value.failed,success:on.value.success,skipped:on.value.skipped,onlyTests:on.value.onlyTests}),Fd=Me(()=>!!(Qe.failed||Qe.success||Qe.skipped)),Ru=Fr([]),As=Be(!1),n0=Me(()=>{const e=on.value.expandAll;return _r.value.length>0?e!==!0:e!==!1}),Uce=Me(()=>{const e=zw.value,t=Fd.value,r=Qe.onlyTests,o=Ce.summary.filesFailed,s=Ce.summary.filesSuccess,c=Ce.summary.filesSkipped,f=Ce.summary.filesRunning,d=Ru.value;return Ce.collectTestsTotal(e||t,r,d,{failed:o,success:s,skipped:c,running:f})});function Du(e){return Object.hasOwnProperty.call(e,"tasks")}function Vce(e,t){return typeof e!="string"||typeof t!="string"?!1:e.toLowerCase().includes(t.toLowerCase())}function Iw(e){if(!e)return"";const t=e.split("").reduce((o,s,c)=>o+s.charCodeAt(0)+c,0),r=["blue","yellow","cyan","green","magenta"];return r[t%r.length]}function jce(e){return e.type==="test"||e.type==="custom"}function Gce(e){return e.mode==="run"&&(e.type==="test"||e.type==="custom")}function kn(e){return e.type==="file"}function Kce(e){return e.type==="suite"}function ai(e){return e.type==="file"||e.type==="suite"}function Xce(e=Ce.root.tasks){return e.sort((t,r)=>`${t.filepath}:${t.projectName}`.localeCompare(`${r.filepath}:${r.projectName}`))}function Jl(e,t=!1){var o,s,c,f;let r=Ce.nodes.get(e.id);if(r?(r.state=(o=e.result)==null?void 0:o.state,r.mode=e.mode,r.duration=(s=e.result)==null?void 0:s.duration,r.collectDuration=e.collectDuration,r.setupDuration=e.setupDuration,r.environmentLoad=e.environmentLoad,r.prepareDuration=e.prepareDuration):(r={id:e.id,parentId:"root",name:e.name,mode:e.mode,expandable:!0,expanded:Qc.value.size>0&&Qc.value.has(e.id),type:"file",children:new Set,tasks:[],indent:0,duration:(c=e.result)==null?void 0:c.duration,filepath:e.filepath,projectName:e.projectName||"",projectNameColor:Iw(e.projectName),collectDuration:e.collectDuration,setupDuration:e.setupDuration,environmentLoad:e.environmentLoad,prepareDuration:e.prepareDuration,state:(f=e.result)==null?void 0:f.state},Ce.nodes.set(e.id,r),Ce.root.tasks.push(r)),t)for(let d=0;d0),[r,o]}function Yce(e){const t=Ce.nodes.get(e);if(!t)return;const r=yt.state.idMap.get(e);!r||!Es(r)||pa(t.parentId,r,!1)}function pa(e,t,r){var c,f,d,h,g,v;const o=Ce.nodes.get(e);let s;if(o&&(s=Ce.nodes.get(t.id),s?(o.children.has(t.id)||(o.tasks.push(s),o.children.add(t.id)),s.mode=t.mode,s.duration=(c=t.result)==null?void 0:c.duration,s.state=(f=t.result)==null?void 0:f.state,Kce(s)&&(s.typecheck=!!t.meta&&"typecheck"in t.meta)):(Es(t)?s={id:t.id,fileId:t.file.id,parentId:e,name:t.name,mode:t.mode,type:t.type,expandable:!1,expanded:!1,indent:o.indent+1,duration:(d=t.result)==null?void 0:d.duration,state:(h=t.result)==null?void 0:h.state}:s={id:t.id,fileId:t.file.id,parentId:e,name:t.name,mode:t.mode,typecheck:!!t.meta&&"typecheck"in t.meta,type:"suite",expandable:!0,expanded:Qc.value.size>0&&Qc.value.has(t.id),children:new Set,tasks:[],indent:o.indent+1,duration:(g=t.result)==null?void 0:g.duration,state:(v=t.result)==null?void 0:v.state},Ce.nodes.set(t.id,s),o.tasks.push(s),o.children.add(t.id)),s&&r&&Du(t)))for(let y=0;yir(o.id))}function*Hw(e,t){for(const r of Xce())yield*qw(r,e,t)}function*qw(e,t,r){const o=new Set,s=new Map,c=[];let f;if(r.onlyTests)for(const[y,b]of Hd(e,o,x=>r0(x,t,r)))c.push([y,b]);else{for(const[y,b]of Hd(e,o,x=>r0(x,t,r)))ai(b)?(s.set(b.id,y),kn(b)?(y&&(f=b.id),c.push([y,b])):c.push([y||s.get(b.parentId)===!0,b])):c.push([y||s.get(b.parentId)===!0,b]);!f&&!kn(e)&&"fileId"in e&&(f=e.fileId)}const d=new Set,h=[...Qce(c,r.onlyTests,o,d,f)].reverse(),g=Ce.nodes,v=new Set(h.filter(y=>{var b;return kn(y)||ai(y)&&((b=g.get(y.parentId))==null?void 0:b.expanded)}).map(y=>y.id));yield*h.filter(y=>{var b;return kn(y)||v.has(y.parentId)&&((b=g.get(y.parentId))==null?void 0:b.expanded)})}function Jce(e,t,r,o,s){if(o){if(kn(t))return s.has(t.id)?t:void 0;if(r.has(t.id)){const c=Ce.nodes.get(t.parentId);return c&&kn(c)&&s.add(c.id),t}}else if(e||r.has(t.id)||s.has(t.id)){const c=Ce.nodes.get(t.parentId);return c&&kn(c)&&s.add(c.id),t}}function*Qce(e,t,r,o,s){for(let c=e.length-1;c>=0;c--){const[f,d]=e[c],h=ai(d);if(!t&&s&&r.has(s)&&"fileId"in d&&d.fileId===s){h&&r.add(d.id);let g=Ce.nodes.get(d.parentId);for(;g;)r.add(g.id),kn(g)&&o.add(g.id),g=Ce.nodes.get(g.parentId);yield d;continue}if(h){const g=Jce(f,d,r,t,o);g&&(yield g)}else if(f){const g=Ce.nodes.get(d.parentId);g&&kn(g)&&o.add(g.id),yield d}}}function eue(e,t){var r,o;return(t.success||t.failed)&&"result"in e&&(t.success&&((r=e.result)==null?void 0:r.state)==="pass"||t.failed&&((o=e.result)==null?void 0:o.state)==="fail")?!0:t.skipped&&"mode"in e?e.mode==="skip"||e.mode==="todo":!1}function Bw(e,t,r){if(t.length===0||Vce(e.name,t))if(r.success||r.failed||r.skipped){if(eue(e,r))return!0}else return!0;return!1}function*Hd(e,t,r){const o=r(e);if(o)if(jce(e)){let s=Ce.nodes.get(e.parentId);for(;s;)t.add(s.id),s=Ce.nodes.get(s.parentId)}else if(kn(e))t.add(e.id);else{t.add(e.id);let s=Ce.nodes.get(e.parentId);for(;s;)t.add(s.id),s=Ce.nodes.get(s.parentId)}if(yield[o,e],ai(e))for(let s=0;sir(o.id))}function rue(e,t){if(e.size)for(const r of In.value)e.has(r.id)&&(r.expanded=!0);else t&&Gh(In.value.filter(kn),!0)}function Gh(e,t){for(const r of e)ai(r)&&(r.expanded=!0,Gh(r.tasks,!1));t&&(on.value.expandAll=!1,_r.value=[])}function*iue(e,t){const r=e.id,o=new Set(Array.from(t).map(s=>s.id));for(const s of In.value)s.id===r?(s.expanded=!0,o.has(s.id)||(yield e),yield*t):o.has(s.id)||(yield s)}function oue(e,t,r,o){e.map(s=>[`${s.filepath}:${s.projectName||""}`,s]).sort(([s],[c])=>s.localeCompare(c)).map(([,s])=>Jl(s,t)),Id.value=[...Ce.root.tasks],jh(r.trim(),{failed:o.failed,success:o.success,skipped:o.skipped,onlyTests:o.onlyTests})}function sue(e){queueMicrotask(()=>{const t=Ce.pendingTasks,r=yt.state.idMap;for(const o of e)if(o[1]){const c=r.get(o[0]);if(c){let f=t.get(c.file.id);f||(f=new Set,t.set(c.file.id,f)),f.add(c.id)}}})}function i0(e,t,r,o,s){e&&due(r);const c=!e;queueMicrotask(()=>{t?cue(c):uue(c)}),queueMicrotask(()=>{hue(r)}),queueMicrotask(()=>{t&&(r.failedSnapshot=Id.value&&Fh(Id.value.map(f=>ir(f.id))),r.failedSnapshotEnabled=!0)}),queueMicrotask(()=>{fue(o,s,t)})}function*lue(){yield*In.value.filter(Gce)}function aue(){const e=yt.state.idMap;let t;for(const r of lue())t=e.get(r.parentId),t&&Du(t)&&t.mode==="todo"&&(t=e.get(r.id),t&&(t.mode="todo"))}function cue(e){const t=yt.state.getFiles(),r=Ce.nodes,o=t.filter(c=>!r.has(c.id));for(let c=0;c!r.has(d)).map(d=>ir(d)).filter(Boolean);let s;for(let d=0;dc.get(y)).filter(Boolean)))}}function fue(e,t,r=!1){const o=on.value.expandAll,s=o!==!0,c=new Set(_r.value),f=c.size>0&&o===!1||s;queueMicrotask(()=>{o0(e,t,r)}),As.value||queueMicrotask(()=>{(In.value.length||r)&&(As.value=!0)}),f&&(queueMicrotask(()=>{rue(c,r),s&&(on.value.expandAll=!1)}),queueMicrotask(()=>{o0(e,t,r)}))}function o0(e,t,r){jh(e,t),r&&aue()}function eu(e){let t;for(let r=0;rt.has(y.id)).map(y=>[y.id,y])),o=Array.from(r.values()).map(y=>[y.id,ir(y.id)]),s={files:r.size,time:"",filesFailed:0,filesSuccess:0,filesIgnore:0,filesRunning:0,filesSkipped:0,filesTodo:0,filesSnapshotFailed:0,testsFailed:0,testsSuccess:0,testsIgnore:0,testsSkipped:0,testsTodo:0,totalTests:0,failedSnapshot:!1,failedSnapshotEnabled:!1};let c=0;for(const[y,b]of o){if(!b)continue;const x=r.get(y);x&&(x.mode=b.mode,x.setupDuration=b.setupDuration,x.prepareDuration=b.prepareDuration,x.environmentLoad=b.environmentLoad,x.collectDuration=b.collectDuration,x.duration=(f=b.result)==null?void 0:f.duration,x.state=(d=b.result)==null?void 0:d.state),c+=Math.max(0,b.collectDuration||0),c+=Math.max(0,b.setupDuration||0),c+=Math.max(0,((h=b.result)==null?void 0:h.duration)||0),c+=Math.max(0,b.environmentLoad||0),c+=Math.max(0,b.prepareDuration||0),s.time=c>1e3?`${(c/1e3).toFixed(2)}s`:`${Math.round(c)}ms`,((g=b.result)==null?void 0:g.state)==="fail"?s.filesFailed++:((v=b.result)==null?void 0:v.state)==="pass"?s.filesSuccess++:b.mode==="skip"?(s.filesIgnore++,s.filesSkipped++):b.mode==="todo"?(s.filesIgnore++,s.filesTodo++):s.filesRunning++;const{failed:T,success:E,skipped:M,total:N,ignored:L,todo:O}=Ww(b);s.totalTests+=N,s.testsFailed+=T,s.testsSuccess+=E,s.testsSkipped+=M,s.testsTodo+=O,s.testsIgnore+=L}e.files=s.files,e.time=s.time,e.filesFailed=s.filesFailed,e.filesSuccess=s.filesSuccess,e.filesIgnore=s.filesIgnore,e.filesRunning=s.filesRunning,e.filesSkipped=s.filesSkipped,e.filesTodo=s.filesTodo,e.testsFailed=s.testsFailed,e.testsSuccess=s.testsSuccess,e.testsFailed=s.testsFailed,e.testsTodo=s.testsTodo,e.testsIgnore=s.testsIgnore,e.testsSkipped=s.testsSkipped,e.totalTests=s.totalTests}function Ww(e,t="",r){var s,c;const o={failed:0,success:0,skipped:0,running:0,total:0,ignored:0,todo:0};for(const f of Uw(e))(!r||Zce(f,t,r))&&(o.total++,((s=f.result)==null?void 0:s.state)==="fail"?o.failed++:((c=f.result)==null?void 0:c.state)==="pass"?o.success++:f.mode==="skip"?(o.ignored++,o.skipped++):f.mode==="todo"&&(o.ignored++,o.todo++));return o.running=o.total-o.failed-o.success-o.ignored,o}function pue(e,t,r,o,s,c){var f,d;if(t)return r.map(h=>Ww(h,s,c)).reduce((h,{failed:g,success:v,ignored:y,running:b})=>(h.failed+=g,h.success+=v,h.skipped+=y,h.running+=b,h),{failed:0,success:0,skipped:0,running:0});if(e){const h={failed:0,success:0,skipped:0,running:0},g=!c.success&&!c.failed,v=c.failed||g,y=c.success||g;for(const b of r)((f=b.result)==null?void 0:f.state)==="fail"?h.failed+=v?1:0:((d=b.result)==null?void 0:d.state)==="pass"?h.success+=y?1:0:b.mode==="skip"||b.mode==="todo"||h.running++;return h}return o}function*Uw(e){const t=zh(e);let r;for(let o=0;othis.endRun(),this.resumeEndTimeout),this.collect(!0,!1)}resumeRun(t){sue(t),this.onTaskUpdateCalled||(clearTimeout(this.resumeEndRunId),this.onTaskUpdateCalled=!0,this.collect(!0,!1,!1),this.rafCollector.resume())}endRun(){this.rafCollector.pause(),this.onTaskUpdateCalled=!1,this.collect(!1,!0)}runCollect(){this.collect(!1,!1)}collect(t,r,o=!0){o?queueMicrotask(()=>{i0(t,r,this.summary,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})}):i0(t,r,this.summary,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})}collectTestsTotal(t,r,o,s){return pue(t,r,o,s,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})}collapseNode(t){queueMicrotask(()=>{gue(t)})}expandNode(t){queueMicrotask(()=>{tue(t,On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})})}collapseAllNodes(){queueMicrotask(()=>{vue()})}expandAllNodes(){queueMicrotask(()=>{nue(On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})})}filterNodes(){queueMicrotask(()=>{jh(On.value.trim(),{failed:Qe.failed,success:Qe.success,skipped:Qe.skipped,onlyTests:Qe.onlyTests})})}}const Ce=new yue,yt=function(){return Pr?Hce():eL(rL,{reactive:(t,r)=>r==="state"?er(t):Fr(t),handlers:{onTaskUpdate(t){Ce.resumeRun(t),Jc.value="running"},onFinished(t,r){Ce.endRun(),Jc.value="idle",Ii.value=(r||[]).map(gw)},onFinishedReportCoverage(){const t=document.querySelector("iframe#vitest-ui-coverage");t instanceof HTMLIFrameElement&&t.contentWindow&&t.contentWindow.location.reload()}}})}(),zu=Fr({}),So=Be("CONNECTING"),Xt=Me(()=>{const e=Zi.value;return e?ir(e):void 0}),jw=Me(()=>Ih(Xt.value).map(e=>(e==null?void 0:e.logs)||[]).flat()||[]);function ir(e){const t=yt.state.idMap.get(e);return t||void 0}const bue=Me(()=>So.value==="OPEN"),nd=Me(()=>So.value==="CONNECTING");Me(()=>So.value==="CLOSED");function wue(){return Kh(yt.state.getFiles())}function xue(e){const t=Ce.nodes;e.forEach(r=>{delete r.result,Ih(r).forEach(s=>{if(delete s.result,t.has(s.id)){const c=t.get(s.id);c&&(c.state=void 0,c.duration=void 0)}});const o=t.get(r.id);o&&(o.state=void 0,o.duration=void 0,kn(o)&&(o.collectDuration=void 0))})}function Kh(e){return xue(e),Ce.startRun(),yt.rpc.rerun(e.map(t=>t.filepath))}const No=window.__vitest_browser_runner__;Ht(()=>yt.ws,e=>{So.value=Pr?"OPEN":"CONNECTING",e.addEventListener("open",async()=>{So.value="OPEN",yt.state.filesMap.clear();const[t,r,o]=await Promise.all([yt.rpc.getFiles(),yt.rpc.getConfig(),yt.rpc.getUnhandledErrors()]);if(r.standalone){const c=(await yt.rpc.getTestFiles()).map(([{name:f,root:d},h])=>Bb(h,d,f));yt.state.collectFiles(c)}else Ce.loadFiles(t),yt.state.collectFiles(t),Ce.startRun();Ii.value=(o||[]).map(gw),zu.value=r}),e.addEventListener("close",()=>{setTimeout(()=>{So.value==="CONNECTING"&&(So.value="CLOSED")},1e3)})},{immediate:!0});const _ue={"text-2xl":""},Sue={"text-lg":"",op50:""},kue=ft({__name:"ConnectionOverlay",setup(e){return(t,r)=>q(bue)?et("",!0):(oe(),me("div",{key:0,fixed:"","inset-0":"",p2:"","z-10":"","select-none":"",text:"center sm",bg:"overlay","backdrop-blur-sm":"","backdrop-saturate-0":"",onClick:r[0]||(r[0]=(...o)=>q(yt).reconnect&&q(yt).reconnect(...o))},[Y("div",{"h-full":"",flex:"~ col gap-2","items-center":"","justify-center":"",class:lt(q(nd)?"animate-pulse":"")},[Y("div",{text:"5xl",class:lt(q(nd)?"i-carbon:renew animate-spin animate-reverse":"i-carbon-wifi-off")},null,2),Y("div",_ue,qe(q(nd)?"Connecting...":"Disconnected"),1),Y("div",Sue," Check your terminal or start a new server with `"+qe(q(No)?`vitest --browser=${q(No).config.browser.name}`:"vitest --ui")+"` ",1)],2)]))}}),Cue=["aria-label","opacity","disabled","hover"],hi=ft({__name:"IconButton",props:{icon:{},title:{},disabled:{type:Boolean},active:{type:Boolean}},setup(e){return(t,r)=>(oe(),me("button",{"aria-label":t.title,role:"button",opacity:t.disabled?10:70,rounded:"",disabled:t.disabled,hover:t.disabled||t.active?"":"bg-active op100",class:lt(["w-1.4em h-1.4em flex",[{"bg-gray-500:35 op100":t.active}]])},[dn(t.$slots,"default",{},()=>[Y("span",{class:lt(t.icon),ma:"",block:""},null,2)])],10,Cue))}}),Jr=Be("full"),Bd=Be();function rd(e){const t=document.querySelector("#tester-ui");t&&(t.style.pointerEvents=e?"none":"")}const Ms=Be(),ys=Be(!0),Ji=Be(!1),tu=Be(!0),us=Me(()=>{var e;return(e=zu.value)==null?void 0:e.coverage}),Wd=Me(()=>{var e;return(e=us.value)==null?void 0:e.enabled}),fs=Me(()=>Wd.value&&!!us.value.htmlReporter),Ec=Pu("vitest-ui_splitpanes-detailSizes",[33,67],{initOnMounted:!0}),s0=Me(()=>{var e;if(fs.value){const t=us.value.reportsDirectory.lastIndexOf("/"),r=(e=us.value.htmlReporter)==null?void 0:e.subdir;return r?`/${us.value.reportsDirectory.slice(t+1)}/${r}/index.html`:`/${us.value.reportsDirectory.slice(t+1)}/index.html`}});Ht(Jc,e=>{tu.value=e==="running"},{immediate:!0});function Tue(){const e=Zi.value;if(e&&e.length>0){const t=ir(e);t?(Ms.value=t,ys.value=!1,Ji.value=!1):lce(()=>yt.state.getFiles(),()=>{Ms.value=ir(e),ys.value=!1,Ji.value=!1})}return ys}function nu(e){ys.value=e,Ji.value=!1,e&&(Ms.value=void 0,Zi.value="")}function Gw(e,t=null){Zi.value=e.file.id,Rd.value=null,t!=null&&(ln(()=>{Rd.value=t}),Bn.value="editor"),Ms.value=ir(e.file.id),nu(!1)}function Eue(){Ji.value=!0,ys.value=!1,Ms.value=void 0,Zi.value=""}const Lue={setCurrentFileId(e){Zi.value=e,Ms.value=ir(e),nu(!1)},async setIframeViewport(e,t){Jr.value="custom",Bd.value=[e,t],await Kw(e,t)}};window.__vitest_ui_api__=Lue;function Aue(){const e=Xh(),r=document.querySelector("#details-splitpanes").clientWidth,o=e.clientWidth,s=Math.min(o/r*100,95),c=100-s;Ec.value=[s,c]}function Xh(){return document.querySelector("#tester-ui iframe[data-vitest]")}async function Kw(e,t){const r=Xh();r.style.width=typeof e=="string"?e:`${e}px`,r.style.height=typeof t=="string"?t:`${t}px`,await new Promise(o=>requestAnimationFrame(o)),Aue()}const Mue={h:"full",flex:"~ col"},Nue=Y("div",{p:"3","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},[Y("div",{class:"i-carbon-content-delivery-network"}),Y("span",{"pl-1":"","font-bold":"","text-sm":"","flex-auto":"","ws-nowrap":"","overflow-hidden":"",truncate:""},"Browser UI")],-1),$ue={p:"l3 y2 r2",flex:"~ gap-2","items-center":"","bg-header":"",border:"b-2 base"},Oue=Y("div",{"flex-auto":"",class:"scrolls"},[Y("div",{id:"tester-ui",class:"flex h-full justify-center items-center font-light op70",style:{overflow:"auto",width:"100%",height:"100%"}}," Select a test to run ")],-1),Pue=ft({__name:"BrowserIframe",setup(e){const t={"small-mobile":["320px","568px"],"large-mobile":["414px","896px"],tablet:["834px","1112px"],full:["100%","100%"],custom:null};async function r(o){if(Jr.value===o?Jr.value=Bd.value?"custom":"full":Jr.value=o,!Xh()){console.warn("Iframe not found");return}const[c,f]=t[Jr.value]||Bd.value||t.full;await Kw(c,f)}return(o,s)=>{const c=hi,f=Hr("tooltip");return oe(),me("div",Mue,[Nue,Y("div",$ue,[_t(Oe(c,{title:"Flexible",icon:"i-carbon:fit-to-screen",active:q(Jr)==="full",onClick:s[0]||(s[0]=d=>r("full"))},null,8,["active"]),[[f,"Flexible",void 0,{bottom:!0}]]),_t(Oe(c,{title:"Small mobile",icon:"i-carbon:mobile",active:q(Jr)==="small-mobile",onClick:s[1]||(s[1]=d=>r("small-mobile"))},null,8,["active"]),[[f,"Small mobile",void 0,{bottom:!0}]]),_t(Oe(c,{title:"Large mobile",icon:"i-carbon:mobile-add",active:q(Jr)==="large-mobile",onClick:s[2]||(s[2]=d=>r("large-mobile"))},null,8,["active"]),[[f,"Large mobile",void 0,{bottom:!0}]]),_t(Oe(c,{title:"Tablet",icon:"i-carbon:tablet",active:q(Jr)==="tablet",onClick:s[3]||(s[3]=d=>r("tablet"))},null,8,["active"]),[[f,"Tablet",void 0,{bottom:!0}]])]),Oue])}}}),Xw=ft({__name:"Modal",props:Ic({direction:{default:"bottom"}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Th(e,"modelValue"),r=Me(()=>{switch(e.direction){case"bottom":return"bottom-0 left-0 right-0 border-t";case"top":return"top-0 left-0 right-0 border-b";case"left":return"bottom-0 left-0 top-0 border-r";case"right":return"bottom-0 top-0 right-0 border-l";default:return""}}),o=Me(()=>{switch(e.direction){case"bottom":return"translateY(100%)";case"top":return"translateY(-100%)";case"left":return"translateX(-100%)";case"right":return"translateX(100%)";default:return""}}),s=()=>t.value=!1;return(c,f)=>(oe(),me("div",{class:lt(["fixed inset-0 z-40",t.value?"":"pointer-events-none"])},[Y("div",{class:lt(["bg-base inset-0 absolute transition-opacity duration-500 ease-out",t.value?"opacity-50":"opacity-0"]),onClick:s},null,2),Y("div",{class:lt(["bg-base border-base absolute transition-all duration-200 ease-out scrolls",[q(r)]]),style:Zt(t.value?{}:{transform:q(o)})},[dn(c.$slots,"default")],6)],2))}}),Rue=e=>(la("data-v-93900314"),e=e(),aa(),e),Due={"w-350":"","max-w-screen":"","h-full":"",flex:"","flex-col":""},zue={"p-4":"",relative:"",border:"base b"},Iue=Rue(()=>Y("p",null,"Screenshot error",-1)),Fue={op50:"","font-mono":"","text-sm":""},Hue={op50:"","font-mono":"","text-sm":""},que={class:"scrolls",grid:"~ cols-1 rows-[min-content]","p-4":""},Bue=["src","alt"],Wue={key:1},Uue=ft({__name:"ScreenshotError",props:{file:{},name:{},url:{}},emits:["close"],setup(e,{emit:t}){const r=t;return _w("Escape",()=>{r("close")}),(o,s)=>{const c=hi;return oe(),me("div",Due,[Y("div",zue,[Iue,Y("p",Fue,qe(o.file),1),Y("p",Hue,qe(o.name),1),Oe(c,{icon:"i-carbon:close",title:"Close",absolute:"","top-5px":"","right-5px":"","text-2xl":"",onClick:s[0]||(s[0]=f=>r("close"))})]),Y("div",que,[o.url?(oe(),me("img",{key:0,src:o.url,alt:`Screenshot error for '${o.name}' test in file '${o.file}'`,border:"base t r b l dotted red-500"},null,8,Bue)):(oe(),me("div",Wue," Something was wrong, the image cannot be resolved. "))])])}}}),Vue=di(Uue,[["__scopeId","data-v-93900314"]]);function Dl(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const ga=mce(),jue=sce(ga),Gue={class:"scrolls scrolls-rounded task-error"},Kue=["onClickPassive"],Xue=["innerHTML"],Yue=ft({__name:"ViewReportError",props:{root:{},filename:{},error:{}},setup(e){const t=e;function r(f){return f.startsWith(t.root)?f.slice(t.root.length):f}const o=Me(()=>Bh(ga.value)),s=Me(()=>{var f;return!!((f=t.error)!=null&&f.diff)}),c=Me(()=>t.error.diff?o.value.toHtml(Dl(t.error.diff)):void 0);return(f,d)=>{const h=Hr("tooltip");return oe(),me("div",Gue,[Y("pre",null,[Y("b",null,qe(f.error.name||f.error.nameStr),1),gt(": "+qe(f.error.message),1)]),(oe(!0),me(ut,null,si(f.error.stacks,(g,v)=>(oe(),me("div",{key:v,class:"op80 flex gap-x-2 items-center","data-testid":"stack"},[Y("pre",null," - "+qe(r(g.file))+":"+qe(g.line)+":"+qe(g.column),1),q(Jae)(g.file,f.filename)?_t((oe(),me("div",{key:0,class:"i-carbon-launch c-red-600 dark:c-red-400 hover:cursor-pointer min-w-1em min-h-1em",tabindex:"0","aria-label":"Open in Editor",onClickPassive:y=>q(pw)(g.file,g.line,g.column)},null,40,Kue)),[[h,"Open in Editor",void 0,{bottom:!0}]]):et("",!0)]))),128)),q(s)?(oe(),me("pre",{key:0,"data-testid":"diff",innerHTML:q(c)},null,8,Xue)):et("",!0)])}}}),Zue=di(Yue,[["__scopeId","data-v-9dd6eaea"]]),Jue={"h-full":"",class:"scrolls"},Que={flex:"~ gap-2 items-center"},efe={key:0,class:"scrolls scrolls-rounded task-error","data-testid":"task-error"},tfe=["innerHTML"],nfe={key:1,bg:"green-500/10",text:"green-500 sm",p:"x4 y2","m-2":"",rounded:""},rfe=ft({__name:"ViewReport",props:{file:{}},setup(e){const t=e;function r(b,x){var T;return((T=b.result)==null?void 0:T.state)!=="fail"?[]:b.type==="test"||b.type==="custom"?[{...b,level:x}]:[{...b,level:x},...b.tasks.flatMap(E=>r(E,x+1))]}function o(b,x){var M,N,L;let T="";(M=x.message)!=null&&M.includes("\x1B")&&(T=`${x.nameStr||x.name}: ${b.toHtml(Dl(x.message))}`);const E=(N=x.stackStr)==null?void 0:N.includes("\x1B");return(E||(L=x.stack)!=null&&L.includes("\x1B"))&&(T.length>0?T+=b.toHtml(Dl(E?x.stackStr:x.stack)):T=`${x.nameStr||x.name}: ${x.message}${b.toHtml(Dl(E?x.stackStr:x.stack))}`),T.length>0?T:null}function s(b,x){const T=Bh(b);return x.map(E=>{var L;const M=E.result;if(!M)return E;const N=(L=M.errors)==null?void 0:L.map(O=>o(T,O)).filter(O=>O!=null).join("

");return N!=null&&N.length&&(M.htmlError=N),E})}const c=Me(()=>{var M,N;const b=t.file,x=((M=b==null?void 0:b.tasks)==null?void 0:M.flatMap(L=>r(L,0)))??[],T=b==null?void 0:b.result;if((N=T==null?void 0:T.errors)==null?void 0:N[0]){const L={id:b.id,file:b,name:b.name,level:0,type:"suite",mode:"run",meta:{},tasks:[],result:T};x.unshift(L)}return x.length>0?s(ga.value,x):x});function f(b){var T;const x=(T=b.meta)==null?void 0:T.failScreenshotPath;x&&fetch(`/__open-in-editor?file=${encodeURIComponent(x)}`)}const d=Be(!1),h=Be(Date.now()),g=Be(),v=Me(()=>{var T;const b=(T=g.value)==null?void 0:T.meta.failScreenshotPath,x=h.value;return b?`/__screenshot-error?file=${encodeURIComponent(b)}&t=${x}`:void 0});function y(b){g.value=b,h.value=Date.now(),d.value=!0}return(b,x)=>{const T=hi,E=Zue,M=Vue,N=Xw,L=Hr("tooltip");return oe(),me("div",Jue,[q(c).length?(oe(!0),me(ut,{key:0},si(q(c),O=>{var A,H,z,J;return oe(),me("div",{key:O.id},[Y("div",{bg:"red-500/10",text:"red-500 sm",p:"x3 y2","m-2":"",rounded:"",style:Zt({"margin-left":`${(A=O.result)!=null&&A.htmlError?.5:2*O.level+.5}rem`})},[Y("div",Que,[Y("span",null,qe(O.name),1),q(No)&&((H=O.meta)!=null&&H.failScreenshotPath)?(oe(),me(ut,{key:0},[_t(Oe(T,{class:"!op-100",icon:"i-carbon:image",title:"View screenshot error",onClick:re=>y(O)},null,8,["onClick"]),[[L,"View screenshot error",void 0,{bottom:!0}]]),_t(Oe(T,{class:"!op-100",icon:"i-carbon:image-reference",title:"Open screenshot error in editor",onClick:re=>f(O)},null,8,["onClick"]),[[L,"Open screenshot error in editor",void 0,{bottom:!0}]])],64)):et("",!0)]),(z=O.result)!=null&&z.htmlError?(oe(),me("div",efe,[Y("pre",{innerHTML:O.result.htmlError},null,8,tfe)])):(J=O.result)!=null&&J.errors?(oe(!0),me(ut,{key:1},si(O.result.errors,(re,te)=>{var j;return oe(),ot(E,{key:te,error:re,filename:(j=b.file)==null?void 0:j.name,root:q(zu).root},null,8,["error","filename","root"])}),128)):et("",!0)],4)])}),128)):(oe(),me("div",nfe," All tests passed in this file ")),q(No)?(oe(),ot(N,{key:2,modelValue:q(d),"onUpdate:modelValue":x[1]||(x[1]=O=>Ot(d)?d.value=O:null),direction:"right"},{default:st(()=>[q(g)?(oe(),ot(zy,{key:0},{default:st(()=>[Oe(M,{file:q(g).file.filepath,name:q(g).name,url:q(v),onClose:x[0]||(x[0]=O=>d.value=!1)},null,8,["file","name","url"])]),_:1})):et("",!0)]),_:1},8,["modelValue"])):et("",!0)])}}}),ife=di(rfe,[["__scopeId","data-v-8f3dbcaa"]]),ofe={border:"b base","p-4":""},sfe=["innerHTML"],lfe=ft({__name:"ViewConsoleOutputEntry",props:{taskName:{},type:{},time:{},content:{}},setup(e){function t(r){return new Date(r).toLocaleTimeString()}return(r,o)=>(oe(),me("div",ofe,[Y("div",{"text-xs":"","mb-1":"",class:lt(r.type==="stderr"?"text-red-600 dark:text-red-300":"op30")},qe(t(r.time))+" | "+qe(r.taskName)+" | "+qe(r.type),3),Y("pre",{"data-type":"html",innerHTML:r.content},null,8,sfe)]))}}),afe={key:0,"h-full":"",class:"scrolls",flex:"","flex-col":"","data-testid":"logs"},cfe={key:1,p6:""},ufe=Y("pre",{inline:""},"console.log(foo)",-1),ffe=ft({__name:"ViewConsoleOutput",setup(e){const t=Me(()=>{const o=jw.value;if(o){const s=Bh(ga.value);return o.map(({taskId:c,type:f,time:d,content:h})=>({taskId:c,type:f,time:d,content:s.toHtml(Dl(h))}))}});function r(o){const s=o&&yt.state.idMap.get(o);return s&&"filepath"in s?s.name:(s?QE(s).slice(1).join(" > "):"-")||"-"}return(o,s)=>{var f;const c=lfe;return(f=q(t))!=null&&f.length?(oe(),me("div",afe,[(oe(!0),me(ut,null,si(q(t),({taskId:d,type:h,time:g,content:v})=>(oe(),me("div",{key:d,"font-mono":""},[Oe(c,{"task-name":r(d),type:h,time:g,content:v},null,8,["task-name","type","time","content"])]))),128))])):(oe(),me("p",cfe,[gt(" Log something in your test and it would print here. (e.g. "),ufe,gt(") ")]))}}});var Yw={exports:{}};(function(e,t){(function(r,o){e.exports=o()})(Mo,function(){var r=navigator.userAgent,o=navigator.platform,s=/gecko\/\d/i.test(r),c=/MSIE \d/.test(r),f=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(r),d=/Edge\/(\d+)/.exec(r),h=c||f||d,g=h&&(c?document.documentMode||6:+(d||f)[1]),v=!d&&/WebKit\//.test(r),y=v&&/Qt\/\d+\.\d+/.test(r),b=!d&&/Chrome\/(\d+)/.exec(r),x=b&&+b[1],T=/Opera\//.test(r),E=/Apple Computer/.test(navigator.vendor),M=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(r),N=/PhantomJS/.test(r),L=E&&(/Mobile\/\w+/.test(r)||navigator.maxTouchPoints>2),O=/Android/.test(r),A=L||O||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(r),H=L||/Mac/.test(o),z=/\bCrOS\b/.test(r),J=/win/i.test(o),re=T&&r.match(/Version\/(\d*\.\d*)/);re&&(re=Number(re[1])),re&&re>=15&&(T=!1,v=!0);var te=H&&(y||T&&(re==null||re<12.11)),j=s||h&&g>=9;function ne(n){return new RegExp("(^|\\s)"+n+"(?:$|\\s)\\s*")}var K=function(n,i){var a=n.className,l=ne(i).exec(a);if(l){var u=a.slice(l.index+l[0].length);n.className=a.slice(0,l.index)+(u?l[1]+u:"")}};function V(n){for(var i=n.childNodes.length;i>0;--i)n.removeChild(n.firstChild);return n}function I(n,i){return V(n).appendChild(i)}function k(n,i,a,l){var u=document.createElement(n);if(a&&(u.className=a),l&&(u.style.cssText=l),typeof i=="string")u.appendChild(document.createTextNode(i));else if(i)for(var p=0;p=i)return m+(i-p);m+=w-p,m+=a-m%a,p=w+1}}var $e=function(){this.id=null,this.f=null,this.time=0,this.handler=X(this.onTimeout,this)};$e.prototype.onTimeout=function(n){n.id=0,n.time<=+new Date?n.f():setTimeout(n.handler,n.time-+new Date)},$e.prototype.set=function(n,i){this.f=i;var a=+new Date+n;(!this.id||a=i)return l+Math.min(m,i-u);if(u+=p-l,u+=a-u%a,l=p+1,u>=i)return l}}var he=[""];function Se(n){for(;he.length<=n;)he.push(fe(he)+" ");return he[n]}function fe(n){return n[n.length-1]}function xe(n,i){for(var a=[],l=0;l"€"&&(n.toUpperCase()!=n.toLowerCase()||Re.test(n))}function Ge(n,i){return i?i.source.indexOf("\\w")>-1&&Ue(n)?!0:i.test(n):Ue(n)}function vt(n){for(var i in n)if(n.hasOwnProperty(i)&&n[i])return!1;return!0}var tt=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function nt(n){return n.charCodeAt(0)>=768&&tt.test(n)}function It(n,i,a){for(;(a<0?i>0:ia?-1:1;;){if(i==a)return i;var u=(i+a)/2,p=l<0?Math.ceil(u):Math.floor(u);if(p==i)return n(p)?i:a;n(p)?a=p:i=p+l}}function or(n,i,a,l){if(!n)return l(i,a,"ltr",0);for(var u=!1,p=0;pi||i==a&&m.to==i)&&(l(Math.max(m.from,i),Math.min(m.to,a),m.level==1?"rtl":"ltr",p),u=!0)}u||l(i,a,"ltr")}var Fn=null;function sr(n,i,a){var l;Fn=null;for(var u=0;ui)return u;p.to==i&&(p.from!=p.to&&a=="before"?l=u:Fn=u),p.from==i&&(p.from!=p.to&&a!="before"?l=u:Fn=u)}return l??Fn}var Qt=function(){var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",i="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function a(S){return S<=247?n.charAt(S):1424<=S&&S<=1524?"R":1536<=S&&S<=1785?i.charAt(S-1536):1774<=S&&S<=2220?"r":8192<=S&&S<=8203?"w":S==8204?"b":"L"}var l=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,u=/[stwN]/,p=/[LRr]/,m=/[Lb1n]/,w=/[1n]/;function _(S,$,D){this.level=S,this.from=$,this.to=D}return function(S,$){var D=$=="ltr"?"L":"R";if(S.length==0||$=="ltr"&&!l.test(S))return!1;for(var G=S.length,U=[],ee=0;ee-1&&(l[i]=u.slice(0,p).concat(u.slice(p+1)))}}}function Et(n,i){var a=Br(n,i);if(a.length)for(var l=Array.prototype.slice.call(arguments,2),u=0;u0}function lr(n){n.prototype.on=function(i,a){Fe(this,i,a)},n.prototype.off=function(i,a){en(this,i,a)}}function tn(n){n.preventDefault?n.preventDefault():n.returnValue=!1}function Po(n){n.stopPropagation?n.stopPropagation():n.cancelBubble=!0}function hn(n){return n.defaultPrevented!=null?n.defaultPrevented:n.returnValue==!1}function pi(n){tn(n),Po(n)}function Rs(n){return n.target||n.srcElement}function ar(n){var i=n.which;return i==null&&(n.button&1?i=1:n.button&2?i=3:n.button&4&&(i=2)),H&&n.ctrlKey&&i==1&&(i=3),i}var Bu=function(){if(h&&g<9)return!1;var n=k("div");return"draggable"in n||"dragDrop"in n}(),Ro;function ba(n){if(Ro==null){var i=k("span","​");I(n,k("span",[i,document.createTextNode("x")])),n.firstChild.offsetHeight!=0&&(Ro=i.offsetWidth<=1&&i.offsetHeight>2&&!(h&&g<8))}var a=Ro?k("span","​"):k("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return a.setAttribute("cm-text",""),a}var Ds;function gi(n){if(Ds!=null)return Ds;var i=I(n,document.createTextNode("AخA")),a=W(i,0,1).getBoundingClientRect(),l=W(i,1,2).getBoundingClientRect();return V(n),!a||a.left==a.right?!1:Ds=l.right-a.right<3}var Xn=` - -b`.split(/\n/).length!=3?function(n){for(var i=0,a=[],l=n.length;i<=l;){var u=n.indexOf(` -`,i);u==-1&&(u=n.length);var p=n.slice(i,n.charAt(u-1)=="\r"?u-1:u),m=p.indexOf("\r");m!=-1?(a.push(p.slice(0,m)),i+=m+1):(a.push(p),i=u+1)}return a}:function(n){return n.split(/\r\n?|\n/)},vi=window.getSelection?function(n){try{return n.selectionStart!=n.selectionEnd}catch{return!1}}:function(n){var i;try{i=n.ownerDocument.selection.createRange()}catch{}return!i||i.parentElement()!=n?!1:i.compareEndPoints("StartToEnd",i)!=0},wa=function(){var n=k("div");return"oncopy"in n?!0:(n.setAttribute("oncopy","return;"),typeof n.oncopy=="function")}(),cr=null;function Wu(n){if(cr!=null)return cr;var i=I(n,k("span","x")),a=i.getBoundingClientRect(),l=W(i,0,1).getBoundingClientRect();return cr=Math.abs(a.left-l.left)>1}var Do={},ur={};function fr(n,i){arguments.length>2&&(i.dependencies=Array.prototype.slice.call(arguments,2)),Do[n]=i}function ro(n,i){ur[n]=i}function zo(n){if(typeof n=="string"&&ur.hasOwnProperty(n))n=ur[n];else if(n&&typeof n.name=="string"&&ur.hasOwnProperty(n.name)){var i=ur[n.name];typeof i=="string"&&(i={name:i}),n=ze(i,n),n.name=i.name}else{if(typeof n=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(n))return zo("application/xml");if(typeof n=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(n))return zo("application/json")}return typeof n=="string"?{name:n}:n||{name:"null"}}function Io(n,i){i=zo(i);var a=Do[i.name];if(!a)return Io(n,"text/plain");var l=a(n,i);if(mi.hasOwnProperty(i.name)){var u=mi[i.name];for(var p in u)u.hasOwnProperty(p)&&(l.hasOwnProperty(p)&&(l["_"+p]=l[p]),l[p]=u[p])}if(l.name=i.name,i.helperType&&(l.helperType=i.helperType),i.modeProps)for(var m in i.modeProps)l[m]=i.modeProps[m];return l}var mi={};function Fo(n,i){var a=mi.hasOwnProperty(n)?mi[n]:mi[n]={};ae(i,a)}function kr(n,i){if(i===!0)return i;if(n.copyState)return n.copyState(i);var a={};for(var l in i){var u=i[l];u instanceof Array&&(u=u.concat([])),a[l]=u}return a}function zs(n,i){for(var a;n.innerMode&&(a=n.innerMode(i),!(!a||a.mode==n));)i=a.state,n=a.mode;return a||{mode:n,state:i}}function Ho(n,i,a){return n.startState?n.startState(i,a):!0}var At=function(n,i,a){this.pos=this.start=0,this.string=n,this.tabSize=i||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=a};At.prototype.eol=function(){return this.pos>=this.string.length},At.prototype.sol=function(){return this.pos==this.lineStart},At.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},At.prototype.next=function(){if(this.posi},At.prototype.eatSpace=function(){for(var n=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>n},At.prototype.skipToEnd=function(){this.pos=this.string.length},At.prototype.skipTo=function(n){var i=this.string.indexOf(n,this.pos);if(i>-1)return this.pos=i,!0},At.prototype.backUp=function(n){this.pos-=n},At.prototype.column=function(){return this.lastColumnPos0?null:(p&&i!==!1&&(this.pos+=p[0].length),p)}},At.prototype.current=function(){return this.string.slice(this.start,this.pos)},At.prototype.hideFirstChars=function(n,i){this.lineStart+=n;try{return i()}finally{this.lineStart-=n}},At.prototype.lookAhead=function(n){var i=this.lineOracle;return i&&i.lookAhead(n)},At.prototype.baseToken=function(){var n=this.lineOracle;return n&&n.baseToken(this.pos)};function Pe(n,i){if(i-=n.first,i<0||i>=n.size)throw new Error("There is no line "+(i+n.first)+" in the document.");for(var a=n;!a.lines;)for(var l=0;;++l){var u=a.children[l],p=u.chunkSize();if(i=n.first&&ia?Q(a,Pe(n,a).text.length):q1(i,Pe(n,i.line).text.length)}function q1(n,i){var a=n.ch;return a==null||a>i?Q(n.line,i):a<0?Q(n.line,0):n}function fp(n,i){for(var a=[],l=0;lthis.maxLookAhead&&(this.maxLookAhead=n),i},Cr.prototype.baseToken=function(n){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=n;)this.baseTokenPos+=2;var i=this.baseTokens[this.baseTokenPos+1];return{type:i&&i.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-n}},Cr.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Cr.fromSaved=function(n,i,a){return i instanceof xa?new Cr(n,kr(n.mode,i.state),a,i.lookAhead):new Cr(n,kr(n.mode,i),a)},Cr.prototype.save=function(n){var i=n!==!1?kr(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new xa(i,this.maxLookAhead):i};function dp(n,i,a,l){var u=[n.state.modeGen],p={};yp(n,i.text,n.doc.mode,a,function(S,$){return u.push(S,$)},p,l);for(var m=a.state,w=function(S){a.baseTokens=u;var $=n.state.overlays[S],D=1,G=0;a.state=!0,yp(n,i.text,$.mode,a,function(U,ee){for(var ce=D;GU&&u.splice(D,1,U,u[D+1],ve),D+=2,G=Math.min(U,ve)}if(ee)if($.opaque)u.splice(ce,D-ce,U,"overlay "+ee),D=ce+2;else for(;cen.options.maxHighlightLength&&kr(n.doc.mode,l.state),p=dp(n,i,l);u&&(l.state=u),i.stateAfter=l.save(!u),i.styles=p.styles,p.classes?i.styleClasses=p.classes:i.styleClasses&&(i.styleClasses=null),a===n.doc.highlightFrontier&&(n.doc.modeFrontier=Math.max(n.doc.modeFrontier,++n.doc.highlightFrontier))}return i.styles}function Fs(n,i,a){var l=n.doc,u=n.display;if(!l.mode.startState)return new Cr(l,!0,i);var p=B1(n,i,a),m=p>l.first&&Pe(l,p-1).stateAfter,w=m?Cr.fromSaved(l,m,p):new Cr(l,Ho(l.mode),p);return l.iter(p,i,function(_){Uu(n,_.text,w);var S=w.line;_.stateAfter=S==i-1||S%5==0||S>=u.viewFrom&&Si.start)return p}throw new Error("Mode "+n.name+" failed to advance stream.")}var gp=function(n,i,a){this.start=n.start,this.end=n.pos,this.string=n.current(),this.type=i||null,this.state=a};function vp(n,i,a,l){var u=n.doc,p=u.mode,m;i=Ke(u,i);var w=Pe(u,i.line),_=Fs(n,i.line,a),S=new At(w.text,n.options.tabSize,_),$;for(l&&($=[]);(l||S.posn.options.maxHighlightLength?(w=!1,m&&Uu(n,i,l,$.pos),$.pos=i.length,D=null):D=mp(Vu(a,$,l.state,G),p),G){var U=G[0].name;U&&(D="m-"+(D?U+" "+D:U))}if(!w||S!=D){for(;_<$.start;)_=Math.min($.start,_+5e3),u(_,S);S=D}$.start=$.pos}for(;_<$.pos;){var ee=Math.min($.pos,_+5e3);u(ee,S),_=ee}}function B1(n,i,a){for(var l,u,p=n.doc,m=a?-1:i-(n.doc.mode.innerMode?1e3:100),w=i;w>m;--w){if(w<=p.first)return p.first;var _=Pe(p,w-1),S=_.stateAfter;if(S&&(!a||w+(S instanceof xa?S.lookAhead:0)<=p.modeFrontier))return w;var $=de(_.text,null,n.options.tabSize);(u==null||l>$)&&(u=w-1,l=$)}return u}function W1(n,i){if(n.modeFrontier=Math.min(n.modeFrontier,i),!(n.highlightFrontiera;l--){var u=Pe(n,l).stateAfter;if(u&&(!(u instanceof xa)||l+u.lookAhead=i:p.to>i);(l||(l=[])).push(new _a(m,p.from,_?null:p.to))}}return l}function X1(n,i,a){var l;if(n)for(var u=0;u=i:p.to>i);if(w||p.from==i&&m.type=="bookmark"&&(!a||p.marker.insertLeft)){var _=p.from==null||(m.inclusiveLeft?p.from<=i:p.from0&&w)for(var Le=0;Le0)){var $=[_,1],D=_e(S.from,w.from),G=_e(S.to,w.to);(D<0||!m.inclusiveLeft&&!D)&&$.push({from:S.from,to:w.from}),(G>0||!m.inclusiveRight&&!G)&&$.push({from:w.to,to:S.to}),u.splice.apply(u,$),_+=$.length-3}}return u}function xp(n){var i=n.markedSpans;if(i){for(var a=0;ai)&&(!l||Gu(l,p.marker)<0)&&(l=p.marker)}return l}function Cp(n,i,a,l,u){var p=Pe(n,i),m=Ur&&p.markedSpans;if(m)for(var w=0;w=0&&D<=0||$<=0&&D>=0)&&($<=0&&(_.marker.inclusiveRight&&u.inclusiveLeft?_e(S.to,a)>=0:_e(S.to,a)>0)||$>=0&&(_.marker.inclusiveRight&&u.inclusiveLeft?_e(S.from,l)<=0:_e(S.from,l)<0)))return!0}}}function dr(n){for(var i;i=kp(n);)n=i.find(-1,!0).line;return n}function J1(n){for(var i;i=Ca(n);)n=i.find(1,!0).line;return n}function Q1(n){for(var i,a;i=Ca(n);)n=i.find(1,!0).line,(a||(a=[])).push(n);return a}function Ku(n,i){var a=Pe(n,i),l=dr(a);return a==l?i:C(l)}function Tp(n,i){if(i>n.lastLine())return i;var a=Pe(n,i),l;if(!yi(n,a))return i;for(;l=Ca(a);)a=l.find(1,!0).line;return C(a)+1}function yi(n,i){var a=Ur&&i.markedSpans;if(a){for(var l=void 0,u=0;ui.maxLineLength&&(i.maxLineLength=u,i.maxLine=l)})}var Bo=function(n,i,a){this.text=n,_p(this,i),this.height=a?a(this):1};Bo.prototype.lineNo=function(){return C(this)},lr(Bo);function ex(n,i,a,l){n.text=i,n.stateAfter&&(n.stateAfter=null),n.styles&&(n.styles=null),n.order!=null&&(n.order=null),xp(n),_p(n,a);var u=l?l(n):1;u!=n.height&&Hn(n,u)}function tx(n){n.parent=null,xp(n)}var nx={},rx={};function Ep(n,i){if(!n||/^\s*$/.test(n))return null;var a=i.addModeClass?rx:nx;return a[n]||(a[n]=n.replace(/\S+/g,"cm-$&"))}function Lp(n,i){var a=B("span",null,null,v?"padding-right: .1px":null),l={pre:B("pre",[a],"CodeMirror-line"),content:a,col:0,pos:0,cm:n,trailingSpace:!1,splitSpaces:n.getOption("lineWrapping")};i.measure={};for(var u=0;u<=(i.rest?i.rest.length:0);u++){var p=u?i.rest[u-1]:i.line,m=void 0;l.pos=0,l.addToken=ox,gi(n.display.measure)&&(m=Ve(p,n.doc.direction))&&(l.addToken=lx(l.addToken,m)),l.map=[];var w=i!=n.display.externalMeasured&&C(p);ax(p,l,hp(n,p,w)),p.styleClasses&&(p.styleClasses.bgClass&&(l.bgClass=We(p.styleClasses.bgClass,l.bgClass||"")),p.styleClasses.textClass&&(l.textClass=We(p.styleClasses.textClass,l.textClass||""))),l.map.length==0&&l.map.push(0,0,l.content.appendChild(ba(n.display.measure))),u==0?(i.measure.map=l.map,i.measure.cache={}):((i.measure.maps||(i.measure.maps=[])).push(l.map),(i.measure.caches||(i.measure.caches=[])).push({}))}if(v){var _=l.content.lastChild;(/\bcm-tab\b/.test(_.className)||_.querySelector&&_.querySelector(".cm-tab"))&&(l.content.className="cm-tab-wrap-hack")}return Et(n,"renderLine",n,i.line,l.pre),l.pre.className&&(l.textClass=We(l.pre.className,l.textClass||"")),l}function ix(n){var i=k("span","•","cm-invalidchar");return i.title="\\u"+n.charCodeAt(0).toString(16),i.setAttribute("aria-label",i.title),i}function ox(n,i,a,l,u,p,m){if(i){var w=n.splitSpaces?sx(i,n.trailingSpace):i,_=n.cm.state.specialChars,S=!1,$;if(!_.test(i))n.col+=i.length,$=document.createTextNode(w),n.map.push(n.pos,n.pos+i.length,$),h&&g<9&&(S=!0),n.pos+=i.length;else{$=document.createDocumentFragment();for(var D=0;;){_.lastIndex=D;var G=_.exec(i),U=G?G.index-D:i.length-D;if(U){var ee=document.createTextNode(w.slice(D,D+U));h&&g<9?$.appendChild(k("span",[ee])):$.appendChild(ee),n.map.push(n.pos,n.pos+U,ee),n.col+=U,n.pos+=U}if(!G)break;D+=U+1;var ce=void 0;if(G[0]==" "){var ve=n.cm.options.tabSize,be=ve-n.col%ve;ce=$.appendChild(k("span",Se(be),"cm-tab")),ce.setAttribute("role","presentation"),ce.setAttribute("cm-text"," "),n.col+=be}else G[0]=="\r"||G[0]==` -`?(ce=$.appendChild(k("span",G[0]=="\r"?"␍":"␤","cm-invalidchar")),ce.setAttribute("cm-text",G[0]),n.col+=1):(ce=n.cm.options.specialCharPlaceholder(G[0]),ce.setAttribute("cm-text",G[0]),h&&g<9?$.appendChild(k("span",[ce])):$.appendChild(ce),n.col+=1);n.map.push(n.pos,n.pos+1,ce),n.pos++}}if(n.trailingSpace=w.charCodeAt(i.length-1)==32,a||l||u||S||p||m){var ke=a||"";l&&(ke+=l),u&&(ke+=u);var we=k("span",[$],ke,p);if(m)for(var Le in m)m.hasOwnProperty(Le)&&Le!="style"&&Le!="class"&&we.setAttribute(Le,m[Le]);return n.content.appendChild(we)}n.content.appendChild($)}}function sx(n,i){if(n.length>1&&!/ /.test(n))return n;for(var a=i,l="",u=0;uS&&D.from<=S));G++);if(D.to>=$)return n(a,l,u,p,m,w,_);n(a,l.slice(0,D.to-S),u,p,null,w,_),p=null,l=l.slice(D.to-S),S=D.to}}}function Ap(n,i,a,l){var u=!l&&a.widgetNode;u&&n.map.push(n.pos,n.pos+i,u),!l&&n.cm.display.input.needsContentAttribute&&(u||(u=n.content.appendChild(document.createElement("span"))),u.setAttribute("cm-marker",a.id)),u&&(n.cm.display.input.setUneditable(u),n.content.appendChild(u)),n.pos+=i,n.trailingSpace=!1}function ax(n,i,a){var l=n.markedSpans,u=n.text,p=0;if(!l){for(var m=1;m_||Je.collapsed&&De.to==_&&De.from==_)){if(De.to!=null&&De.to!=_&&U>De.to&&(U=De.to,ce=""),Je.className&&(ee+=" "+Je.className),Je.css&&(G=(G?G+";":"")+Je.css),Je.startStyle&&De.from==_&&(ve+=" "+Je.startStyle),Je.endStyle&&De.to==U&&(Le||(Le=[])).push(Je.endStyle,De.to),Je.title&&((ke||(ke={})).title=Je.title),Je.attributes)for(var wt in Je.attributes)(ke||(ke={}))[wt]=Je.attributes[wt];Je.collapsed&&(!be||Gu(be.marker,Je)<0)&&(be=De)}else De.from>_&&U>De.from&&(U=De.from)}if(Le)for(var Vt=0;Vt=w)break;for(var Mn=Math.min(w,U);;){if($){var mn=_+$.length;if(!be){var Pt=mn>Mn?$.slice(0,Mn-_):$;i.addToken(i,Pt,D?D+ee:ee,ve,_+Pt.length==U?ce:"",G,ke)}if(mn>=Mn){$=$.slice(Mn-_),_=Mn;break}_=mn,ve=""}$=u.slice(p,p=a[S++]),D=Ep(a[S++],i.cm.options)}}}function Mp(n,i,a){this.line=i,this.rest=Q1(i),this.size=this.rest?C(fe(this.rest))-a+1:1,this.node=this.text=null,this.hidden=yi(n,i)}function Ea(n,i,a){for(var l=[],u,p=i;p2&&p.push((_.bottom+S.top)/2-a.top)}}p.push(a.bottom-a.top)}}function zp(n,i,a){if(n.line==i)return{map:n.measure.map,cache:n.measure.cache};if(n.rest){for(var l=0;la)return{map:n.measure.maps[u],cache:n.measure.caches[u],before:!0}}}function bx(n,i){i=dr(i);var a=C(i),l=n.display.externalMeasured=new Mp(n.doc,i,a);l.lineN=a;var u=l.built=Lp(n,l);return l.text=u.pre,I(n.display.lineMeasure,u.pre),l}function Ip(n,i,a,l){return Er(n,Uo(n,i),a,l)}function ef(n,i){if(i>=n.display.viewFrom&&i=a.lineN&&ii)&&(p=_-w,u=p-1,i>=_&&(m="right")),u!=null){if(l=n[S+2],w==_&&a==(l.insertLeft?"left":"right")&&(m=a),a=="left"&&u==0)for(;S&&n[S-2]==n[S-3]&&n[S-1].insertLeft;)l=n[(S-=3)+2],m="left";if(a=="right"&&u==_-w)for(;S=0&&(a=n[u]).left==a.right;u--);return a}function xx(n,i,a,l){var u=Hp(i.map,a,l),p=u.node,m=u.start,w=u.end,_=u.collapse,S;if(p.nodeType==3){for(var $=0;$<4;$++){for(;m&&nt(i.line.text.charAt(u.coverStart+m));)--m;for(;u.coverStart+w0&&(_=l="right");var D;n.options.lineWrapping&&(D=p.getClientRects()).length>1?S=D[l=="right"?D.length-1:0]:S=p.getBoundingClientRect()}if(h&&g<9&&!m&&(!S||!S.left&&!S.right)){var G=p.parentNode.getClientRects()[0];G?S={left:G.left,right:G.left+jo(n.display),top:G.top,bottom:G.bottom}:S=Fp}for(var U=S.top-i.rect.top,ee=S.bottom-i.rect.top,ce=(U+ee)/2,ve=i.view.measure.heights,be=0;be=l.text.length?(_=l.text.length,S="before"):_<=0&&(_=0,S="after"),!w)return m(S=="before"?_-1:_,S=="before");function $(ee,ce,ve){var be=w[ce],ke=be.level==1;return m(ve?ee-1:ee,ke!=ve)}var D=sr(w,_,S),G=Fn,U=$(_,D,S=="before");return G!=null&&(U.other=$(_,G,S!="before")),U}function jp(n,i){var a=0;i=Ke(n.doc,i),n.options.lineWrapping||(a=jo(n.display)*i.ch);var l=Pe(n.doc,i.line),u=Vr(l)+La(n.display);return{left:a,right:a,top:u,bottom:u+l.height}}function nf(n,i,a,l,u){var p=Q(n,i,a);return p.xRel=u,l&&(p.outside=l),p}function rf(n,i,a){var l=n.doc;if(a+=n.display.viewOffset,a<0)return nf(l.first,0,null,-1,-1);var u=R(l,a),p=l.first+l.size-1;if(u>p)return nf(l.first+l.size-1,Pe(l,p).text.length,null,1,1);i<0&&(i=0);for(var m=Pe(l,u);;){var w=Sx(n,m,u,i,a),_=Z1(m,w.ch+(w.xRel>0||w.outside>0?1:0));if(!_)return w;var S=_.find(1);if(S.line==u)return S;m=Pe(l,u=S.line)}}function Gp(n,i,a,l){l-=tf(i);var u=i.text.length,p=Jt(function(m){return Er(n,a,m-1).bottom<=l},u,0);return u=Jt(function(m){return Er(n,a,m).top>l},p,u),{begin:p,end:u}}function Kp(n,i,a,l){a||(a=Uo(n,i));var u=Aa(n,i,Er(n,a,l),"line").top;return Gp(n,i,a,u)}function of(n,i,a,l){return n.bottom<=a?!1:n.top>a?!0:(l?n.left:n.right)>i}function Sx(n,i,a,l,u){u-=Vr(i);var p=Uo(n,i),m=tf(i),w=0,_=i.text.length,S=!0,$=Ve(i,n.doc.direction);if($){var D=(n.options.lineWrapping?Cx:kx)(n,i,a,p,$,l,u);S=D.level!=1,w=S?D.from:D.to-1,_=S?D.to:D.from-1}var G=null,U=null,ee=Jt(function(He){var De=Er(n,p,He);return De.top+=m,De.bottom+=m,of(De,l,u,!1)?(De.top<=u&&De.left<=l&&(G=He,U=De),!0):!1},w,_),ce,ve,be=!1;if(U){var ke=l-U.left=Le.bottom?1:0}return ee=It(i.text,ee,1),nf(a,ee,ve,be,l-ce)}function kx(n,i,a,l,u,p,m){var w=Jt(function(D){var G=u[D],U=G.level!=1;return of(hr(n,Q(a,U?G.to:G.from,U?"before":"after"),"line",i,l),p,m,!0)},0,u.length-1),_=u[w];if(w>0){var S=_.level!=1,$=hr(n,Q(a,S?_.from:_.to,S?"after":"before"),"line",i,l);of($,p,m,!0)&&$.top>m&&(_=u[w-1])}return _}function Cx(n,i,a,l,u,p,m){var w=Gp(n,i,l,m),_=w.begin,S=w.end;/\s/.test(i.text.charAt(S-1))&&S--;for(var $=null,D=null,G=0;G=S||U.to<=_)){var ee=U.level!=1,ce=Er(n,l,ee?Math.min(S,U.to)-1:Math.max(_,U.from)).right,ve=ceve)&&($=U,D=ve)}}return $||($=u[u.length-1]),$.from<_&&($={from:_,to:$.to,level:$.level}),$.to>S&&($={from:$.from,to:S,level:$.level}),$}var oo;function Vo(n){if(n.cachedTextHeight!=null)return n.cachedTextHeight;if(oo==null){oo=k("pre",null,"CodeMirror-line-like");for(var i=0;i<49;++i)oo.appendChild(document.createTextNode("x")),oo.appendChild(k("br"));oo.appendChild(document.createTextNode("x"))}I(n.measure,oo);var a=oo.offsetHeight/50;return a>3&&(n.cachedTextHeight=a),V(n.measure),a||1}function jo(n){if(n.cachedCharWidth!=null)return n.cachedCharWidth;var i=k("span","xxxxxxxxxx"),a=k("pre",[i],"CodeMirror-line-like");I(n.measure,a);var l=i.getBoundingClientRect(),u=(l.right-l.left)/10;return u>2&&(n.cachedCharWidth=u),u||10}function sf(n){for(var i=n.display,a={},l={},u=i.gutters.clientLeft,p=i.gutters.firstChild,m=0;p;p=p.nextSibling,++m){var w=n.display.gutterSpecs[m].className;a[w]=p.offsetLeft+p.clientLeft+u,l[w]=p.clientWidth}return{fixedPos:lf(i),gutterTotalWidth:i.gutters.offsetWidth,gutterLeft:a,gutterWidth:l,wrapperWidth:i.wrapper.clientWidth}}function lf(n){return n.scroller.getBoundingClientRect().left-n.sizer.getBoundingClientRect().left}function Xp(n){var i=Vo(n.display),a=n.options.lineWrapping,l=a&&Math.max(5,n.display.scroller.clientWidth/jo(n.display)-3);return function(u){if(yi(n.doc,u))return 0;var p=0;if(u.widgets)for(var m=0;m0&&(S=Pe(n.doc,_.line).text).length==_.ch){var $=de(S,S.length,n.options.tabSize)-S.length;_=Q(_.line,Math.max(0,Math.round((p-Dp(n.display).left)/jo(n.display))-$))}return _}function lo(n,i){if(i>=n.display.viewTo||(i-=n.display.viewFrom,i<0))return null;for(var a=n.display.view,l=0;li)&&(u.updateLineNumbers=i),n.curOp.viewChanged=!0,i>=u.viewTo)Ur&&Ku(n.doc,i)u.viewFrom?wi(n):(u.viewFrom+=l,u.viewTo+=l);else if(i<=u.viewFrom&&a>=u.viewTo)wi(n);else if(i<=u.viewFrom){var p=Na(n,a,a+l,1);p?(u.view=u.view.slice(p.index),u.viewFrom=p.lineN,u.viewTo+=l):wi(n)}else if(a>=u.viewTo){var m=Na(n,i,i,-1);m?(u.view=u.view.slice(0,m.index),u.viewTo=m.lineN):wi(n)}else{var w=Na(n,i,i,-1),_=Na(n,a,a+l,1);w&&_?(u.view=u.view.slice(0,w.index).concat(Ea(n,w.lineN,_.lineN)).concat(u.view.slice(_.index)),u.viewTo+=l):wi(n)}var S=u.externalMeasured;S&&(a=u.lineN&&i=l.viewTo)){var p=l.view[lo(n,i)];if(p.node!=null){var m=p.changes||(p.changes=[]);Te(m,a)==-1&&m.push(a)}}}function wi(n){n.display.viewFrom=n.display.viewTo=n.doc.first,n.display.view=[],n.display.viewOffset=0}function Na(n,i,a,l){var u=lo(n,i),p,m=n.display.view;if(!Ur||a==n.doc.first+n.doc.size)return{index:u,lineN:a};for(var w=n.display.viewFrom,_=0;_0){if(u==m.length-1)return null;p=w+m[u].size-i,u++}else p=w-i;i+=p,a+=p}for(;Ku(n.doc,a)!=a;){if(u==(l<0?0:m.length-1))return null;a+=l*m[u-(l<0?1:0)].size,u+=l}return{index:u,lineN:a}}function Tx(n,i,a){var l=n.display,u=l.view;u.length==0||i>=l.viewTo||a<=l.viewFrom?(l.view=Ea(n,i,a),l.viewFrom=i):(l.viewFrom>i?l.view=Ea(n,i,l.viewFrom).concat(l.view):l.viewFroma&&(l.view=l.view.slice(0,lo(n,a)))),l.viewTo=a}function Yp(n){for(var i=n.display.view,a=0,l=0;l=n.display.viewTo||_.to().line0?m:n.defaultCharWidth())+"px"}if(l.other){var w=a.appendChild(k("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));w.style.display="",w.style.left=l.other.left+"px",w.style.top=l.other.top+"px",w.style.height=(l.other.bottom-l.other.top)*.85+"px"}}function $a(n,i){return n.top-i.top||n.left-i.left}function Ex(n,i,a){var l=n.display,u=n.doc,p=document.createDocumentFragment(),m=Dp(n.display),w=m.left,_=Math.max(l.sizerWidth,io(n)-l.sizer.offsetLeft)-m.right,S=u.direction=="ltr";function $(we,Le,He,De){Le<0&&(Le=0),Le=Math.round(Le),De=Math.round(De),p.appendChild(k("div",null,"CodeMirror-selected","position: absolute; left: "+we+`px; - top: `+Le+"px; width: "+(He??_-we)+`px; - height: `+(De-Le)+"px"))}function D(we,Le,He){var De=Pe(u,we),Je=De.text.length,wt,Vt;function Tt(Pt,yn){return Ma(n,Q(we,Pt),"div",De,yn)}function Mn(Pt,yn,Kt){var Ft=Kp(n,De,null,Pt),Rt=yn=="ltr"==(Kt=="after")?"left":"right",Mt=Kt=="after"?Ft.begin:Ft.end-(/\s/.test(De.text.charAt(Ft.end-1))?2:1);return Tt(Mt,Rt)[Rt]}var mn=Ve(De,u.direction);return or(mn,Le||0,He??Je,function(Pt,yn,Kt,Ft){var Rt=Kt=="ltr",Mt=Tt(Pt,Rt?"left":"right"),bn=Tt(yn-1,Rt?"right":"left"),os=Le==null&&Pt==0,Ti=He==null&&yn==Je,rn=Ft==0,Lr=!mn||Ft==mn.length-1;if(bn.top-Mt.top<=3){var jt=(S?os:Ti)&&rn,Df=(S?Ti:os)&&Lr,Xr=jt?w:(Rt?Mt:bn).left,ho=Df?_:(Rt?bn:Mt).right;$(Xr,Mt.top,ho-Xr,Mt.bottom)}else{var po,cn,ss,zf;Rt?(po=S&&os&&rn?w:Mt.left,cn=S?_:Mn(Pt,Kt,"before"),ss=S?w:Mn(yn,Kt,"after"),zf=S&&Ti&&Lr?_:bn.right):(po=S?Mn(Pt,Kt,"before"):w,cn=!S&&os&&rn?_:Mt.right,ss=!S&&Ti&&Lr?w:bn.left,zf=S?Mn(yn,Kt,"after"):_),$(po,Mt.top,cn-po,Mt.bottom),Mt.bottom0?i.blinker=setInterval(function(){n.hasFocus()||Go(n),i.cursorDiv.style.visibility=(a=!a)?"":"hidden"},n.options.cursorBlinkRate):n.options.cursorBlinkRate<0&&(i.cursorDiv.style.visibility="hidden")}}function Jp(n){n.hasFocus()||(n.display.input.focus(),n.state.focused||df(n))}function ff(n){n.state.delayingBlurEvent=!0,setTimeout(function(){n.state.delayingBlurEvent&&(n.state.delayingBlurEvent=!1,n.state.focused&&Go(n))},100)}function df(n,i){n.state.delayingBlurEvent&&!n.state.draggingText&&(n.state.delayingBlurEvent=!1),n.options.readOnly!="nocursor"&&(n.state.focused||(Et(n,"focus",n,i),n.state.focused=!0,Ne(n.display.wrapper,"CodeMirror-focused"),!n.curOp&&n.display.selForContextMenu!=n.doc.sel&&(n.display.input.reset(),v&&setTimeout(function(){return n.display.input.reset(!0)},20)),n.display.input.receivedFocus()),uf(n))}function Go(n,i){n.state.delayingBlurEvent||(n.state.focused&&(Et(n,"blur",n,i),n.state.focused=!1,K(n.display.wrapper,"CodeMirror-focused")),clearInterval(n.display.blinker),setTimeout(function(){n.state.focused||(n.display.shift=!1)},150))}function Oa(n){for(var i=n.display,a=i.lineDiv.offsetTop,l=Math.max(0,i.scroller.getBoundingClientRect().top),u=i.lineDiv.getBoundingClientRect().top,p=0,m=0;m.005||U<-.005)&&(un.display.sizerWidth){var ce=Math.ceil($/jo(n.display));ce>n.display.maxLineLength&&(n.display.maxLineLength=ce,n.display.maxLine=w.line,n.display.maxLineChanged=!0)}}}Math.abs(p)>2&&(i.scroller.scrollTop+=p)}function Qp(n){if(n.widgets)for(var i=0;i=m&&(p=R(i,Vr(Pe(i,_))-n.wrapper.clientHeight),m=_)}return{from:p,to:Math.max(m,p+1)}}function Lx(n,i){if(!Lt(n,"scrollCursorIntoView")){var a=n.display,l=a.sizer.getBoundingClientRect(),u=null,p=a.wrapper.ownerDocument;if(i.top+l.top<0?u=!0:i.bottom+l.top>(p.defaultView.innerHeight||p.documentElement.clientHeight)&&(u=!1),u!=null&&!N){var m=k("div","​",null,`position: absolute; - top: `+(i.top-a.viewOffset-La(n.display))+`px; - height: `+(i.bottom-i.top+Tr(n)+a.barHeight)+`px; - left: `+i.left+"px; width: "+Math.max(2,i.right-i.left)+"px;");n.display.lineSpace.appendChild(m),m.scrollIntoView(u),n.display.lineSpace.removeChild(m)}}}function Ax(n,i,a,l){l==null&&(l=0);var u;!n.options.lineWrapping&&i==a&&(a=i.sticky=="before"?Q(i.line,i.ch+1,"before"):i,i=i.ch?Q(i.line,i.sticky=="before"?i.ch-1:i.ch,"after"):i);for(var p=0;p<5;p++){var m=!1,w=hr(n,i),_=!a||a==i?w:hr(n,a);u={left:Math.min(w.left,_.left),top:Math.min(w.top,_.top)-l,right:Math.max(w.left,_.left),bottom:Math.max(w.bottom,_.bottom)+l};var S=hf(n,u),$=n.doc.scrollTop,D=n.doc.scrollLeft;if(S.scrollTop!=null&&(Gs(n,S.scrollTop),Math.abs(n.doc.scrollTop-$)>1&&(m=!0)),S.scrollLeft!=null&&(ao(n,S.scrollLeft),Math.abs(n.doc.scrollLeft-D)>1&&(m=!0)),!m)break}return u}function Mx(n,i){var a=hf(n,i);a.scrollTop!=null&&Gs(n,a.scrollTop),a.scrollLeft!=null&&ao(n,a.scrollLeft)}function hf(n,i){var a=n.display,l=Vo(n.display);i.top<0&&(i.top=0);var u=n.curOp&&n.curOp.scrollTop!=null?n.curOp.scrollTop:a.scroller.scrollTop,p=Qu(n),m={};i.bottom-i.top>p&&(i.bottom=i.top+p);var w=n.doc.height+Ju(a),_=i.topw-l;if(i.topu+p){var $=Math.min(i.top,(S?w:i.bottom)-p);$!=u&&(m.scrollTop=$)}var D=n.options.fixedGutter?0:a.gutters.offsetWidth,G=n.curOp&&n.curOp.scrollLeft!=null?n.curOp.scrollLeft:a.scroller.scrollLeft-D,U=io(n)-a.gutters.offsetWidth,ee=i.right-i.left>U;return ee&&(i.right=i.left+U),i.left<10?m.scrollLeft=0:i.leftU+G-3&&(m.scrollLeft=i.right+(ee?0:10)-U),m}function pf(n,i){i!=null&&(Ra(n),n.curOp.scrollTop=(n.curOp.scrollTop==null?n.doc.scrollTop:n.curOp.scrollTop)+i)}function Ko(n){Ra(n);var i=n.getCursor();n.curOp.scrollToPos={from:i,to:i,margin:n.options.cursorScrollMargin}}function js(n,i,a){(i!=null||a!=null)&&Ra(n),i!=null&&(n.curOp.scrollLeft=i),a!=null&&(n.curOp.scrollTop=a)}function Nx(n,i){Ra(n),n.curOp.scrollToPos=i}function Ra(n){var i=n.curOp.scrollToPos;if(i){n.curOp.scrollToPos=null;var a=jp(n,i.from),l=jp(n,i.to);eg(n,a,l,i.margin)}}function eg(n,i,a,l){var u=hf(n,{left:Math.min(i.left,a.left),top:Math.min(i.top,a.top)-l,right:Math.max(i.right,a.right),bottom:Math.max(i.bottom,a.bottom)+l});js(n,u.scrollLeft,u.scrollTop)}function Gs(n,i){Math.abs(n.doc.scrollTop-i)<2||(s||vf(n,{top:i}),tg(n,i,!0),s&&vf(n),Ys(n,100))}function tg(n,i,a){i=Math.max(0,Math.min(n.display.scroller.scrollHeight-n.display.scroller.clientHeight,i)),!(n.display.scroller.scrollTop==i&&!a)&&(n.doc.scrollTop=i,n.display.scrollbars.setScrollTop(i),n.display.scroller.scrollTop!=i&&(n.display.scroller.scrollTop=i))}function ao(n,i,a,l){i=Math.max(0,Math.min(i,n.display.scroller.scrollWidth-n.display.scroller.clientWidth)),!((a?i==n.doc.scrollLeft:Math.abs(n.doc.scrollLeft-i)<2)&&!l)&&(n.doc.scrollLeft=i,sg(n),n.display.scroller.scrollLeft!=i&&(n.display.scroller.scrollLeft=i),n.display.scrollbars.setScrollLeft(i))}function Ks(n){var i=n.display,a=i.gutters.offsetWidth,l=Math.round(n.doc.height+Ju(n.display));return{clientHeight:i.scroller.clientHeight,viewHeight:i.wrapper.clientHeight,scrollWidth:i.scroller.scrollWidth,clientWidth:i.scroller.clientWidth,viewWidth:i.wrapper.clientWidth,barLeft:n.options.fixedGutter?a:0,docHeight:l,scrollHeight:l+Tr(n)+i.barHeight,nativeBarWidth:i.nativeBarWidth,gutterWidth:a}}var co=function(n,i,a){this.cm=a;var l=this.vert=k("div",[k("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),u=this.horiz=k("div",[k("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");l.tabIndex=u.tabIndex=-1,n(l),n(u),Fe(l,"scroll",function(){l.clientHeight&&i(l.scrollTop,"vertical")}),Fe(u,"scroll",function(){u.clientWidth&&i(u.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,h&&g<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};co.prototype.update=function(n){var i=n.scrollWidth>n.clientWidth+1,a=n.scrollHeight>n.clientHeight+1,l=n.nativeBarWidth;if(a){this.vert.style.display="block",this.vert.style.bottom=i?l+"px":"0";var u=n.viewHeight-(i?l:0);this.vert.firstChild.style.height=Math.max(0,n.scrollHeight-n.clientHeight+u)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(i){this.horiz.style.display="block",this.horiz.style.right=a?l+"px":"0",this.horiz.style.left=n.barLeft+"px";var p=n.viewWidth-n.barLeft-(a?l:0);this.horiz.firstChild.style.width=Math.max(0,n.scrollWidth-n.clientWidth+p)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&n.clientHeight>0&&(l==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:a?l:0,bottom:i?l:0}},co.prototype.setScrollLeft=function(n){this.horiz.scrollLeft!=n&&(this.horiz.scrollLeft=n),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},co.prototype.setScrollTop=function(n){this.vert.scrollTop!=n&&(this.vert.scrollTop=n),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},co.prototype.zeroWidthHack=function(){var n=H&&!M?"12px":"18px";this.horiz.style.height=this.vert.style.width=n,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new $e,this.disableVert=new $e},co.prototype.enableZeroWidthBar=function(n,i,a){n.style.visibility="";function l(){var u=n.getBoundingClientRect(),p=a=="vert"?document.elementFromPoint(u.right-1,(u.top+u.bottom)/2):document.elementFromPoint((u.right+u.left)/2,u.bottom-1);p!=n?n.style.visibility="hidden":i.set(1e3,l)}i.set(1e3,l)},co.prototype.clear=function(){var n=this.horiz.parentNode;n.removeChild(this.horiz),n.removeChild(this.vert)};var Xs=function(){};Xs.prototype.update=function(){return{bottom:0,right:0}},Xs.prototype.setScrollLeft=function(){},Xs.prototype.setScrollTop=function(){},Xs.prototype.clear=function(){};function Xo(n,i){i||(i=Ks(n));var a=n.display.barWidth,l=n.display.barHeight;ng(n,i);for(var u=0;u<4&&a!=n.display.barWidth||l!=n.display.barHeight;u++)a!=n.display.barWidth&&n.options.lineWrapping&&Oa(n),ng(n,Ks(n)),a=n.display.barWidth,l=n.display.barHeight}function ng(n,i){var a=n.display,l=a.scrollbars.update(i);a.sizer.style.paddingRight=(a.barWidth=l.right)+"px",a.sizer.style.paddingBottom=(a.barHeight=l.bottom)+"px",a.heightForcer.style.borderBottom=l.bottom+"px solid transparent",l.right&&l.bottom?(a.scrollbarFiller.style.display="block",a.scrollbarFiller.style.height=l.bottom+"px",a.scrollbarFiller.style.width=l.right+"px"):a.scrollbarFiller.style.display="",l.bottom&&n.options.coverGutterNextToScrollbar&&n.options.fixedGutter?(a.gutterFiller.style.display="block",a.gutterFiller.style.height=l.bottom+"px",a.gutterFiller.style.width=i.gutterWidth+"px"):a.gutterFiller.style.display=""}var rg={native:co,null:Xs};function ig(n){n.display.scrollbars&&(n.display.scrollbars.clear(),n.display.scrollbars.addClass&&K(n.display.wrapper,n.display.scrollbars.addClass)),n.display.scrollbars=new rg[n.options.scrollbarStyle](function(i){n.display.wrapper.insertBefore(i,n.display.scrollbarFiller),Fe(i,"mousedown",function(){n.state.focused&&setTimeout(function(){return n.display.input.focus()},0)}),i.setAttribute("cm-not-content","true")},function(i,a){a=="horizontal"?ao(n,i):Gs(n,i)},n),n.display.scrollbars.addClass&&Ne(n.display.wrapper,n.display.scrollbars.addClass)}var $x=0;function uo(n){n.curOp={cm:n,viewChanged:!1,startHeight:n.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++$x,markArrays:null},cx(n.curOp)}function fo(n){var i=n.curOp;i&&fx(i,function(a){for(var l=0;l=a.viewTo)||a.maxLineChanged&&i.options.lineWrapping,n.update=n.mustUpdate&&new Da(i,n.mustUpdate&&{top:n.scrollTop,ensure:n.scrollToPos},n.forceUpdate)}function Rx(n){n.updatedDisplay=n.mustUpdate&&gf(n.cm,n.update)}function Dx(n){var i=n.cm,a=i.display;n.updatedDisplay&&Oa(i),n.barMeasure=Ks(i),a.maxLineChanged&&!i.options.lineWrapping&&(n.adjustWidthTo=Ip(i,a.maxLine,a.maxLine.text.length).left+3,i.display.sizerWidth=n.adjustWidthTo,n.barMeasure.scrollWidth=Math.max(a.scroller.clientWidth,a.sizer.offsetLeft+n.adjustWidthTo+Tr(i)+i.display.barWidth),n.maxScrollLeft=Math.max(0,a.sizer.offsetLeft+n.adjustWidthTo-io(i))),(n.updatedDisplay||n.selectionChanged)&&(n.preparedSelection=a.input.prepareSelection())}function zx(n){var i=n.cm;n.adjustWidthTo!=null&&(i.display.sizer.style.minWidth=n.adjustWidthTo+"px",n.maxScrollLeft=n.display.viewTo)){var a=+new Date+n.options.workTime,l=Fs(n,i.highlightFrontier),u=[];i.iter(l.line,Math.min(i.first+i.size,n.display.viewTo+500),function(p){if(l.line>=n.display.viewFrom){var m=p.styles,w=p.text.length>n.options.maxHighlightLength?kr(i.mode,l.state):null,_=dp(n,p,l,!0);w&&(l.state=w),p.styles=_.styles;var S=p.styleClasses,$=_.classes;$?p.styleClasses=$:S&&(p.styleClasses=null);for(var D=!m||m.length!=p.styles.length||S!=$&&(!S||!$||S.bgClass!=$.bgClass||S.textClass!=$.textClass),G=0;!D&&Ga)return Ys(n,n.options.workDelay),!0}),i.highlightFrontier=l.line,i.modeFrontier=Math.max(i.modeFrontier,l.line),u.length&&An(n,function(){for(var p=0;p=a.viewFrom&&i.visible.to<=a.viewTo&&(a.updateLineNumbers==null||a.updateLineNumbers>=a.viewTo)&&a.renderedView==a.view&&Yp(n)==0)return!1;lg(n)&&(wi(n),i.dims=sf(n));var u=l.first+l.size,p=Math.max(i.visible.from-n.options.viewportMargin,l.first),m=Math.min(u,i.visible.to+n.options.viewportMargin);a.viewFromm&&a.viewTo-m<20&&(m=Math.min(u,a.viewTo)),Ur&&(p=Ku(n.doc,p),m=Tp(n.doc,m));var w=p!=a.viewFrom||m!=a.viewTo||a.lastWrapHeight!=i.wrapperHeight||a.lastWrapWidth!=i.wrapperWidth;Tx(n,p,m),a.viewOffset=Vr(Pe(n.doc,a.viewFrom)),n.display.mover.style.top=a.viewOffset+"px";var _=Yp(n);if(!w&&_==0&&!i.force&&a.renderedView==a.view&&(a.updateLineNumbers==null||a.updateLineNumbers>=a.viewTo))return!1;var S=qx(n);return _>4&&(a.lineDiv.style.display="none"),Wx(n,a.updateLineNumbers,i.dims),_>4&&(a.lineDiv.style.display=""),a.renderedView=a.view,Bx(S),V(a.cursorDiv),V(a.selectionDiv),a.gutters.style.height=a.sizer.style.minHeight=0,w&&(a.lastWrapHeight=i.wrapperHeight,a.lastWrapWidth=i.wrapperWidth,Ys(n,400)),a.updateLineNumbers=null,!0}function og(n,i){for(var a=i.viewport,l=!0;;l=!1){if(!l||!n.options.lineWrapping||i.oldDisplayWidth==io(n)){if(a&&a.top!=null&&(a={top:Math.min(n.doc.height+Ju(n.display)-Qu(n),a.top)}),i.visible=Pa(n.display,n.doc,a),i.visible.from>=n.display.viewFrom&&i.visible.to<=n.display.viewTo)break}else l&&(i.visible=Pa(n.display,n.doc,a));if(!gf(n,i))break;Oa(n);var u=Ks(n);Vs(n),Xo(n,u),yf(n,u),i.force=!1}i.signal(n,"update",n),(n.display.viewFrom!=n.display.reportedViewFrom||n.display.viewTo!=n.display.reportedViewTo)&&(i.signal(n,"viewportChange",n,n.display.viewFrom,n.display.viewTo),n.display.reportedViewFrom=n.display.viewFrom,n.display.reportedViewTo=n.display.viewTo)}function vf(n,i){var a=new Da(n,i);if(gf(n,a)){Oa(n),og(n,a);var l=Ks(n);Vs(n),Xo(n,l),yf(n,l),a.finish()}}function Wx(n,i,a){var l=n.display,u=n.options.lineNumbers,p=l.lineDiv,m=p.firstChild;function w(ee){var ce=ee.nextSibling;return v&&H&&n.display.currentWheelTarget==ee?ee.style.display="none":ee.parentNode.removeChild(ee),ce}for(var _=l.view,S=l.viewFrom,$=0;$<_.length;$++){var D=_[$];if(!D.hidden)if(!D.node||D.node.parentNode!=p){var G=vx(n,D,S,a);p.insertBefore(G,m)}else{for(;m!=D.node;)m=w(m);var U=u&&i!=null&&i<=S&&D.lineNumber;D.changes&&(Te(D.changes,"gutter")>-1&&(U=!1),Np(n,D,S,a)),U&&(V(D.lineNumber),D.lineNumber.appendChild(document.createTextNode(ge(n.options,S)))),m=D.node.nextSibling}S+=D.size}for(;m;)m=w(m)}function mf(n){var i=n.gutters.offsetWidth;n.sizer.style.marginLeft=i+"px",Bt(n,"gutterChanged",n)}function yf(n,i){n.display.sizer.style.minHeight=i.docHeight+"px",n.display.heightForcer.style.top=i.docHeight+"px",n.display.gutters.style.height=i.docHeight+n.display.barHeight+Tr(n)+"px"}function sg(n){var i=n.display,a=i.view;if(!(!i.alignWidgets&&(!i.gutters.firstChild||!n.options.fixedGutter))){for(var l=lf(i)-i.scroller.scrollLeft+n.doc.scrollLeft,u=i.gutters.offsetWidth,p=l+"px",m=0;m=105&&(u.wrapper.style.clipPath="inset(0px)"),u.wrapper.setAttribute("translate","no"),h&&g<8&&(u.gutters.style.zIndex=-1,u.scroller.style.paddingRight=0),!v&&!(s&&A)&&(u.scroller.draggable=!0),n&&(n.appendChild?n.appendChild(u.wrapper):n(u.wrapper)),u.viewFrom=u.viewTo=i.first,u.reportedViewFrom=u.reportedViewTo=i.first,u.view=[],u.renderedView=null,u.externalMeasured=null,u.viewOffset=0,u.lastWrapHeight=u.lastWrapWidth=0,u.updateLineNumbers=null,u.nativeBarWidth=u.barHeight=u.barWidth=0,u.scrollbarsClipped=!1,u.lineNumWidth=u.lineNumInnerWidth=u.lineNumChars=null,u.alignWidgets=!1,u.cachedCharWidth=u.cachedTextHeight=u.cachedPaddingH=null,u.maxLine=null,u.maxLineLength=0,u.maxLineChanged=!1,u.wheelDX=u.wheelDY=u.wheelStartX=u.wheelStartY=null,u.shift=!1,u.selForContextMenu=null,u.activeTouch=null,u.gutterSpecs=bf(l.gutters,l.lineNumbers),ag(u),a.init(u)}var za=0,Gr=null;h?Gr=-.53:s?Gr=15:b?Gr=-.7:E&&(Gr=-1/3);function cg(n){var i=n.wheelDeltaX,a=n.wheelDeltaY;return i==null&&n.detail&&n.axis==n.HORIZONTAL_AXIS&&(i=n.detail),a==null&&n.detail&&n.axis==n.VERTICAL_AXIS?a=n.detail:a==null&&(a=n.wheelDelta),{x:i,y:a}}function Vx(n){var i=cg(n);return i.x*=Gr,i.y*=Gr,i}function ug(n,i){b&&x==102&&(n.display.chromeScrollHack==null?n.display.sizer.style.pointerEvents="none":clearTimeout(n.display.chromeScrollHack),n.display.chromeScrollHack=setTimeout(function(){n.display.chromeScrollHack=null,n.display.sizer.style.pointerEvents=""},100));var a=cg(i),l=a.x,u=a.y,p=Gr;i.deltaMode===0&&(l=i.deltaX,u=i.deltaY,p=1);var m=n.display,w=m.scroller,_=w.scrollWidth>w.clientWidth,S=w.scrollHeight>w.clientHeight;if(l&&_||u&&S){if(u&&H&&v){e:for(var $=i.target,D=m.view;$!=w;$=$.parentNode)for(var G=0;G=0&&_e(n,l.to())<=0)return a}return-1};var ht=function(n,i){this.anchor=n,this.head=i};ht.prototype.from=function(){return qo(this.anchor,this.head)},ht.prototype.to=function(){return pn(this.anchor,this.head)},ht.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function pr(n,i,a){var l=n&&n.options.selectionsMayTouch,u=i[a];i.sort(function(G,U){return _e(G.from(),U.from())}),a=Te(i,u);for(var p=1;p0:_>=0){var S=qo(w.from(),m.from()),$=pn(w.to(),m.to()),D=w.empty()?m.from()==m.head:w.from()==w.head;p<=a&&--a,i.splice(--p,2,new ht(D?$:S,D?S:$))}}return new qn(i,a)}function xi(n,i){return new qn([new ht(n,i||n)],0)}function _i(n){return n.text?Q(n.from.line+n.text.length-1,fe(n.text).length+(n.text.length==1?n.from.ch:0)):n.to}function fg(n,i){if(_e(n,i.from)<0)return n;if(_e(n,i.to)<=0)return _i(i);var a=n.line+i.text.length-(i.to.line-i.from.line)-1,l=n.ch;return n.line==i.to.line&&(l+=_i(i).ch-i.to.ch),Q(a,l)}function wf(n,i){for(var a=[],l=0;l1&&n.remove(w.line+1,ee-1),n.insert(w.line+1,be)}Bt(n,"change",n,i)}function Si(n,i,a){function l(u,p,m){if(u.linked)for(var w=0;w1&&!n.done[n.done.length-2].ranges)return n.done.pop(),fe(n.done)}function mg(n,i,a,l){var u=n.history;u.undone.length=0;var p=+new Date,m,w;if((u.lastOp==l||u.lastOrigin==i.origin&&i.origin&&(i.origin.charAt(0)=="+"&&u.lastModTime>p-(n.cm?n.cm.options.historyEventDelay:500)||i.origin.charAt(0)=="*"))&&(m=Kx(u,u.lastOp==l)))w=fe(m.changes),_e(i.from,i.to)==0&&_e(i.from,w.to)==0?w.to=_i(i):m.changes.push(Sf(n,i));else{var _=fe(u.done);for((!_||!_.ranges)&&Fa(n.sel,u.done),m={changes:[Sf(n,i)],generation:u.generation},u.done.push(m);u.done.length>u.undoDepth;)u.done.shift(),u.done[0].ranges||u.done.shift()}u.done.push(a),u.generation=++u.maxGeneration,u.lastModTime=u.lastSelTime=p,u.lastOp=u.lastSelOp=l,u.lastOrigin=u.lastSelOrigin=i.origin,w||Et(n,"historyAdded")}function Xx(n,i,a,l){var u=i.charAt(0);return u=="*"||u=="+"&&a.ranges.length==l.ranges.length&&a.somethingSelected()==l.somethingSelected()&&new Date-n.history.lastSelTime<=(n.cm?n.cm.options.historyEventDelay:500)}function Yx(n,i,a,l){var u=n.history,p=l&&l.origin;a==u.lastSelOp||p&&u.lastSelOrigin==p&&(u.lastModTime==u.lastSelTime&&u.lastOrigin==p||Xx(n,p,fe(u.done),i))?u.done[u.done.length-1]=i:Fa(i,u.done),u.lastSelTime=+new Date,u.lastSelOrigin=p,u.lastSelOp=a,l&&l.clearRedo!==!1&&vg(u.undone)}function Fa(n,i){var a=fe(i);a&&a.ranges&&a.equals(n)||i.push(n)}function yg(n,i,a,l){var u=i["spans_"+n.id],p=0;n.iter(Math.max(n.first,a),Math.min(n.first+n.size,l),function(m){m.markedSpans&&((u||(u=i["spans_"+n.id]={}))[p]=m.markedSpans),++p})}function Zx(n){if(!n)return null;for(var i,a=0;a-1&&(fe(w)[D]=S[D],delete S[D])}}return l}function kf(n,i,a,l){if(l){var u=n.anchor;if(a){var p=_e(i,u)<0;p!=_e(a,u)<0?(u=i,i=a):p!=_e(i,a)<0&&(i=a)}return new ht(u,i)}else return new ht(a||i,i)}function Ha(n,i,a,l,u){u==null&&(u=n.cm&&(n.cm.display.shift||n.extend)),nn(n,new qn([kf(n.sel.primary(),i,a,u)],0),l)}function wg(n,i,a){for(var l=[],u=n.cm&&(n.cm.display.shift||n.extend),p=0;p=i.ch:w.to>i.ch))){if(u&&(Et(_,"beforeCursorEnter"),_.explicitlyCleared))if(p.markedSpans){--m;continue}else break;if(!_.atomic)continue;if(a){var D=_.find(l<0?1:-1),G=void 0;if((l<0?$:S)&&(D=Tg(n,D,-l,D&&D.line==i.line?p:null)),D&&D.line==i.line&&(G=_e(D,a))&&(l<0?G<0:G>0))return Zo(n,D,i,l,u)}var U=_.find(l<0?-1:1);return(l<0?S:$)&&(U=Tg(n,U,l,U.line==i.line?p:null)),U?Zo(n,U,i,l,u):null}}return i}function Ba(n,i,a,l,u){var p=l||1,m=Zo(n,i,a,p,u)||!u&&Zo(n,i,a,p,!0)||Zo(n,i,a,-p,u)||!u&&Zo(n,i,a,-p,!0);return m||(n.cantEdit=!0,Q(n.first,0))}function Tg(n,i,a,l){return a<0&&i.ch==0?i.line>n.first?Ke(n,Q(i.line-1)):null:a>0&&i.ch==(l||Pe(n,i.line)).text.length?i.line=0;--u)Ag(n,{from:l[u].from,to:l[u].to,text:u?[""]:i.text,origin:i.origin});else Ag(n,i)}}function Ag(n,i){if(!(i.text.length==1&&i.text[0]==""&&_e(i.from,i.to)==0)){var a=wf(n,i);mg(n,i,a,n.cm?n.cm.curOp.id:NaN),Qs(n,i,a,ju(n,i));var l=[];Si(n,function(u,p){!p&&Te(l,u.history)==-1&&(Og(u.history,i),l.push(u.history)),Qs(u,i,null,ju(u,i))})}}function Wa(n,i,a){var l=n.cm&&n.cm.state.suppressEdits;if(!(l&&!a)){for(var u=n.history,p,m=n.sel,w=i=="undo"?u.done:u.undone,_=i=="undo"?u.undone:u.done,S=0;S=0;--U){var ee=G(U);if(ee)return ee.v}}}}function Mg(n,i){if(i!=0&&(n.first+=i,n.sel=new qn(xe(n.sel.ranges,function(u){return new ht(Q(u.anchor.line+i,u.anchor.ch),Q(u.head.line+i,u.head.ch))}),n.sel.primIndex),n.cm)){gn(n.cm,n.first,n.first-i,i);for(var a=n.cm.display,l=a.viewFrom;ln.lastLine())){if(i.from.linep&&(i={from:i.from,to:Q(p,Pe(n,p).text.length),text:[i.text[0]],origin:i.origin}),i.removed=Wr(n,i.from,i.to),a||(a=wf(n,i)),n.cm?e_(n.cm,i,l):_f(n,i,l),qa(n,a,F),n.cantEdit&&Ba(n,Q(n.firstLine(),0))&&(n.cantEdit=!1)}}function e_(n,i,a){var l=n.doc,u=n.display,p=i.from,m=i.to,w=!1,_=p.line;n.options.lineWrapping||(_=C(dr(Pe(l,p.line))),l.iter(_,m.line+1,function(U){if(U==u.maxLine)return w=!0,!0})),l.sel.contains(i.from,i.to)>-1&&Kn(n),_f(l,i,a,Xp(n)),n.options.lineWrapping||(l.iter(_,p.line+i.text.length,function(U){var ee=Ta(U);ee>u.maxLineLength&&(u.maxLine=U,u.maxLineLength=ee,u.maxLineChanged=!0,w=!1)}),w&&(n.curOp.updateMaxLine=!0)),W1(l,p.line),Ys(n,400);var S=i.text.length-(m.line-p.line)-1;i.full?gn(n):p.line==m.line&&i.text.length==1&&!hg(n.doc,i)?bi(n,p.line,"text"):gn(n,p.line,m.line+1,S);var $=Ln(n,"changes"),D=Ln(n,"change");if(D||$){var G={from:p,to:m,text:i.text,removed:i.removed,origin:i.origin};D&&Bt(n,"change",n,G),$&&(n.curOp.changeObjs||(n.curOp.changeObjs=[])).push(G)}n.display.selForContextMenu=null}function Qo(n,i,a,l,u){var p;l||(l=a),_e(l,a)<0&&(p=[l,a],a=p[0],l=p[1]),typeof i=="string"&&(i=n.splitLines(i)),Jo(n,{from:a,to:l,text:i,origin:u})}function Ng(n,i,a,l){a1||!(this.children[0]instanceof tl))){var w=[];this.collapse(w),this.children=[new tl(w)],this.children[0].parent=this}},collapse:function(n){for(var i=0;i50){for(var m=u.lines.length%25+25,w=m;w10);n.parent.maybeSpill()}},iterN:function(n,i,a){for(var l=0;ln.display.maxLineLength&&(n.display.maxLine=S,n.display.maxLineLength=$,n.display.maxLineChanged=!0)}l!=null&&n&&this.collapsed&&gn(n,l,u+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,n&&kg(n.doc)),n&&Bt(n,"markerCleared",n,this,l,u),i&&fo(n),this.parent&&this.parent.clear()}},ki.prototype.find=function(n,i){n==null&&this.type=="bookmark"&&(n=1);for(var a,l,u=0;u0||m==0&&p.clearWhenEmpty!==!1)return p;if(p.replacedWith&&(p.collapsed=!0,p.widgetNode=B("span",[p.replacedWith],"CodeMirror-widget"),l.handleMouseEvents||p.widgetNode.setAttribute("cm-ignore-events","true"),l.insertLeft&&(p.widgetNode.insertLeft=!0)),p.collapsed){if(Cp(n,i.line,i,a,p)||i.line!=a.line&&Cp(n,a.line,i,a,p))throw new Error("Inserting collapsed marker partially overlapping an existing one");V1()}p.addToHistory&&mg(n,{from:i,to:a,origin:"markText"},n.sel,NaN);var w=i.line,_=n.cm,S;if(n.iter(w,a.line+1,function(D){_&&p.collapsed&&!_.options.lineWrapping&&dr(D)==_.display.maxLine&&(S=!0),p.collapsed&&w!=i.line&&Hn(D,0),G1(D,new _a(p,w==i.line?i.ch:null,w==a.line?a.ch:null),n.cm&&n.cm.curOp),++w}),p.collapsed&&n.iter(i.line,a.line+1,function(D){yi(n,D)&&Hn(D,0)}),p.clearOnEnter&&Fe(p,"beforeCursorEnter",function(){return p.clear()}),p.readOnly&&(U1(),(n.history.done.length||n.history.undone.length)&&n.clearHistory()),p.collapsed&&(p.id=++Rg,p.atomic=!0),_){if(S&&(_.curOp.updateMaxLine=!0),p.collapsed)gn(_,i.line,a.line+1);else if(p.className||p.startStyle||p.endStyle||p.css||p.attributes||p.title)for(var $=i.line;$<=a.line;$++)bi(_,$,"text");p.atomic&&kg(_.doc),Bt(_,"markerAdded",_,p)}return p}var il=function(n,i){this.markers=n,this.primary=i;for(var a=0;a=0;_--)Jo(this,l[_]);w?_g(this,w):this.cm&&Ko(this.cm)}),undo:Ut(function(){Wa(this,"undo")}),redo:Ut(function(){Wa(this,"redo")}),undoSelection:Ut(function(){Wa(this,"undo",!0)}),redoSelection:Ut(function(){Wa(this,"redo",!0)}),setExtending:function(n){this.extend=n},getExtending:function(){return this.extend},historySize:function(){for(var n=this.history,i=0,a=0,l=0;l=n.ch)&&i.push(u.marker.parent||u.marker)}return i},findMarks:function(n,i,a){n=Ke(this,n),i=Ke(this,i);var l=[],u=n.line;return this.iter(n.line,i.line+1,function(p){var m=p.markedSpans;if(m)for(var w=0;w=_.to||_.from==null&&u!=n.line||_.from!=null&&u==i.line&&_.from>=i.ch)&&(!a||a(_.marker))&&l.push(_.marker.parent||_.marker)}++u}),l},getAllMarks:function(){var n=[];return this.iter(function(i){var a=i.markedSpans;if(a)for(var l=0;ln)return i=n,!0;n-=p,++a}),Ke(this,Q(a,i))},indexFromPos:function(n){n=Ke(this,n);var i=n.ch;if(n.linei&&(i=n.from),n.to!=null&&n.to-1){i.state.draggingText(n),setTimeout(function(){return i.display.input.focus()},20);return}try{var $=n.dataTransfer.getData("Text");if($){var D;if(i.state.draggingText&&!i.state.draggingText.copy&&(D=i.listSelections()),qa(i.doc,xi(a,a)),D)for(var G=0;G=0;w--)Qo(n.doc,"",l[w].from,l[w].to,"+delete");Ko(n)})}function Tf(n,i,a){var l=It(n.text,i+a,a);return l<0||l>n.text.length?null:l}function Ef(n,i,a){var l=Tf(n,i.ch,a);return l==null?null:new Q(i.line,l,a<0?"after":"before")}function Lf(n,i,a,l,u){if(n){i.doc.direction=="rtl"&&(u=-u);var p=Ve(a,i.doc.direction);if(p){var m=u<0?fe(p):p[0],w=u<0==(m.level==1),_=w?"after":"before",S;if(m.level>0||i.doc.direction=="rtl"){var $=Uo(i,a);S=u<0?a.text.length-1:0;var D=Er(i,$,S).top;S=Jt(function(G){return Er(i,$,G).top==D},u<0==(m.level==1)?m.from:m.to-1,S),_=="before"&&(S=Tf(a,S,1))}else S=u<0?m.to:m.from;return new Q(l,S,_)}}return new Q(l,u<0?a.text.length:0,u<0?"before":"after")}function p_(n,i,a,l){var u=Ve(i,n.doc.direction);if(!u)return Ef(i,a,l);a.ch>=i.text.length?(a.ch=i.text.length,a.sticky="before"):a.ch<=0&&(a.ch=0,a.sticky="after");var p=sr(u,a.ch,a.sticky),m=u[p];if(n.doc.direction=="ltr"&&m.level%2==0&&(l>0?m.to>a.ch:m.from=m.from&&G>=$.begin)){var U=D?"before":"after";return new Q(a.line,G,U)}}var ee=function(be,ke,we){for(var Le=function(wt,Vt){return Vt?new Q(a.line,w(wt,1),"before"):new Q(a.line,wt,"after")};be>=0&&be0==(He.level!=1),Je=De?we.begin:w(we.end,-1);if(He.from<=Je&&Je0?$.end:w($.begin,-1);return ve!=null&&!(l>0&&ve==i.text.length)&&(ce=ee(l>0?0:u.length-1,l,S(ve)),ce)?ce:null}var ll={selectAll:Eg,singleSelection:function(n){return n.setSelection(n.getCursor("anchor"),n.getCursor("head"),F)},killLine:function(n){return ns(n,function(i){if(i.empty()){var a=Pe(n.doc,i.head.line).text.length;return i.head.ch==a&&i.head.line0)u=new Q(u.line,u.ch+1),n.replaceRange(p.charAt(u.ch-1)+p.charAt(u.ch-2),Q(u.line,u.ch-2),u,"+transpose");else if(u.line>n.doc.first){var m=Pe(n.doc,u.line-1).text;m&&(u=new Q(u.line,1),n.replaceRange(p.charAt(0)+n.doc.lineSeparator()+m.charAt(m.length-1),Q(u.line-1,m.length-1),u,"+transpose"))}}a.push(new ht(u,u))}n.setSelections(a)})},newlineAndIndent:function(n){return An(n,function(){for(var i=n.listSelections(),a=i.length-1;a>=0;a--)n.replaceRange(n.doc.lineSeparator(),i[a].anchor,i[a].head,"+input");i=n.listSelections();for(var l=0;ln&&_e(i,this.pos)==0&&a==this.button};var cl,ul;function x_(n,i){var a=+new Date;return ul&&ul.compare(a,n,i)?(cl=ul=null,"triple"):cl&&cl.compare(a,n,i)?(ul=new Mf(a,n,i),cl=null,"double"):(cl=new Mf(a,n,i),ul=null,"single")}function Zg(n){var i=this,a=i.display;if(!(Lt(i,n)||a.activeTouch&&a.input.supportsTouch())){if(a.input.ensurePolled(),a.shift=n.shiftKey,jr(a,n)){v||(a.scroller.draggable=!1,setTimeout(function(){return a.scroller.draggable=!0},100));return}if(!Nf(i,n)){var l=so(i,n),u=ar(n),p=l?x_(l,u):"single";Ee(i).focus(),u==1&&i.state.selectingText&&i.state.selectingText(n),!(l&&__(i,u,l,p,n))&&(u==1?l?k_(i,l,p,n):Rs(n)==a.scroller&&tn(n):u==2?(l&&Ha(i.doc,l),setTimeout(function(){return a.input.focus()},20)):u==3&&(j?i.display.input.onContextMenu(n):ff(i)))}}}function __(n,i,a,l,u){var p="Click";return l=="double"?p="Double"+p:l=="triple"&&(p="Triple"+p),p=(i==1?"Left":i==2?"Middle":"Right")+p,al(n,Bg(p,u),u,function(m){if(typeof m=="string"&&(m=ll[m]),!m)return!1;var w=!1;try{n.isReadOnly()&&(n.state.suppressEdits=!0),w=m(n,a)!=P}finally{n.state.suppressEdits=!1}return w})}function S_(n,i,a){var l=n.getOption("configureMouse"),u=l?l(n,i,a):{};if(u.unit==null){var p=z?a.shiftKey&&a.metaKey:a.altKey;u.unit=p?"rectangle":i=="single"?"char":i=="double"?"word":"line"}return(u.extend==null||n.doc.extend)&&(u.extend=n.doc.extend||a.shiftKey),u.addNew==null&&(u.addNew=H?a.metaKey:a.ctrlKey),u.moveOnDrag==null&&(u.moveOnDrag=!(H?a.altKey:a.ctrlKey)),u}function k_(n,i,a,l){h?setTimeout(X(Jp,n),0):n.curOp.focus=ye(rt(n));var u=S_(n,a,l),p=n.doc.sel,m;n.options.dragDrop&&Bu&&!n.isReadOnly()&&a=="single"&&(m=p.contains(i))>-1&&(_e((m=p.ranges[m]).from(),i)<0||i.xRel>0)&&(_e(m.to(),i)>0||i.xRel<0)?C_(n,l,i,u):T_(n,l,i,u)}function C_(n,i,a,l){var u=n.display,p=!1,m=Wt(n,function(S){v&&(u.scroller.draggable=!1),n.state.draggingText=!1,n.state.delayingBlurEvent&&(n.hasFocus()?n.state.delayingBlurEvent=!1:ff(n)),en(u.wrapper.ownerDocument,"mouseup",m),en(u.wrapper.ownerDocument,"mousemove",w),en(u.scroller,"dragstart",_),en(u.scroller,"drop",m),p||(tn(S),l.addNew||Ha(n.doc,a,null,null,l.extend),v&&!E||h&&g==9?setTimeout(function(){u.wrapper.ownerDocument.body.focus({preventScroll:!0}),u.input.focus()},20):u.input.focus())}),w=function(S){p=p||Math.abs(i.clientX-S.clientX)+Math.abs(i.clientY-S.clientY)>=10},_=function(){return p=!0};v&&(u.scroller.draggable=!0),n.state.draggingText=m,m.copy=!l.moveOnDrag,Fe(u.wrapper.ownerDocument,"mouseup",m),Fe(u.wrapper.ownerDocument,"mousemove",w),Fe(u.scroller,"dragstart",_),Fe(u.scroller,"drop",m),n.state.delayingBlurEvent=!0,setTimeout(function(){return u.input.focus()},20),u.scroller.dragDrop&&u.scroller.dragDrop()}function Jg(n,i,a){if(a=="char")return new ht(i,i);if(a=="word")return n.findWordAt(i);if(a=="line")return new ht(Q(i.line,0),Ke(n.doc,Q(i.line+1,0)));var l=a(n,i);return new ht(l.from,l.to)}function T_(n,i,a,l){h&&ff(n);var u=n.display,p=n.doc;tn(i);var m,w,_=p.sel,S=_.ranges;if(l.addNew&&!l.extend?(w=p.sel.contains(a),w>-1?m=S[w]:m=new ht(a,a)):(m=p.sel.primary(),w=p.sel.primIndex),l.unit=="rectangle")l.addNew||(m=new ht(a,a)),a=so(n,i,!0,!0),w=-1;else{var $=Jg(n,a,l.unit);l.extend?m=kf(m,$.anchor,$.head,l.extend):m=$}l.addNew?w==-1?(w=S.length,nn(p,pr(n,S.concat([m]),w),{scroll:!1,origin:"*mouse"})):S.length>1&&S[w].empty()&&l.unit=="char"&&!l.extend?(nn(p,pr(n,S.slice(0,w).concat(S.slice(w+1)),0),{scroll:!1,origin:"*mouse"}),_=p.sel):Cf(p,w,m,Z):(w=0,nn(p,new qn([m],0),Z),_=p.sel);var D=a;function G(we){if(_e(D,we)!=0)if(D=we,l.unit=="rectangle"){for(var Le=[],He=n.options.tabSize,De=de(Pe(p,a.line).text,a.ch,He),Je=de(Pe(p,we.line).text,we.ch,He),wt=Math.min(De,Je),Vt=Math.max(De,Je),Tt=Math.min(a.line,we.line),Mn=Math.min(n.lastLine(),Math.max(a.line,we.line));Tt<=Mn;Tt++){var mn=Pe(p,Tt).text,Pt=le(mn,wt,He);wt==Vt?Le.push(new ht(Q(Tt,Pt),Q(Tt,Pt))):mn.length>Pt&&Le.push(new ht(Q(Tt,Pt),Q(Tt,le(mn,Vt,He))))}Le.length||Le.push(new ht(a,a)),nn(p,pr(n,_.ranges.slice(0,w).concat(Le),w),{origin:"*mouse",scroll:!1}),n.scrollIntoView(we)}else{var yn=m,Kt=Jg(n,we,l.unit),Ft=yn.anchor,Rt;_e(Kt.anchor,Ft)>0?(Rt=Kt.head,Ft=qo(yn.from(),Kt.anchor)):(Rt=Kt.anchor,Ft=pn(yn.to(),Kt.head));var Mt=_.ranges.slice(0);Mt[w]=E_(n,new ht(Ke(p,Ft),Rt)),nn(p,pr(n,Mt,w),Z)}}var U=u.wrapper.getBoundingClientRect(),ee=0;function ce(we){var Le=++ee,He=so(n,we,!0,l.unit=="rectangle");if(He)if(_e(He,D)!=0){n.curOp.focus=ye(rt(n)),G(He);var De=Pa(u,p);(He.line>=De.to||He.lineU.bottom?20:0;Je&&setTimeout(Wt(n,function(){ee==Le&&(u.scroller.scrollTop+=Je,ce(we))}),50)}}function ve(we){n.state.selectingText=!1,ee=1/0,we&&(tn(we),u.input.focus()),en(u.wrapper.ownerDocument,"mousemove",be),en(u.wrapper.ownerDocument,"mouseup",ke),p.history.lastSelOrigin=null}var be=Wt(n,function(we){we.buttons===0||!ar(we)?ve(we):ce(we)}),ke=Wt(n,ve);n.state.selectingText=ke,Fe(u.wrapper.ownerDocument,"mousemove",be),Fe(u.wrapper.ownerDocument,"mouseup",ke)}function E_(n,i){var a=i.anchor,l=i.head,u=Pe(n.doc,a.line);if(_e(a,l)==0&&a.sticky==l.sticky)return i;var p=Ve(u);if(!p)return i;var m=sr(p,a.ch,a.sticky),w=p[m];if(w.from!=a.ch&&w.to!=a.ch)return i;var _=m+(w.from==a.ch==(w.level!=1)?0:1);if(_==0||_==p.length)return i;var S;if(l.line!=a.line)S=(l.line-a.line)*(n.doc.direction=="ltr"?1:-1)>0;else{var $=sr(p,l.ch,l.sticky),D=$-m||(l.ch-a.ch)*(w.level==1?-1:1);$==_-1||$==_?S=D<0:S=D>0}var G=p[_+(S?-1:0)],U=S==(G.level==1),ee=U?G.from:G.to,ce=U?"after":"before";return a.ch==ee&&a.sticky==ce?i:new ht(new Q(a.line,ee,ce),l)}function Qg(n,i,a,l){var u,p;if(i.touches)u=i.touches[0].clientX,p=i.touches[0].clientY;else try{u=i.clientX,p=i.clientY}catch{return!1}if(u>=Math.floor(n.display.gutters.getBoundingClientRect().right))return!1;l&&tn(i);var m=n.display,w=m.lineDiv.getBoundingClientRect();if(p>w.bottom||!Ln(n,a))return hn(i);p-=w.top-m.viewOffset;for(var _=0;_=u){var $=R(n.doc,p),D=n.display.gutterSpecs[_];return Et(n,a,n,$,D.className,i),hn(i)}}}function Nf(n,i){return Qg(n,i,"gutterClick",!0)}function ev(n,i){jr(n.display,i)||L_(n,i)||Lt(n,i,"contextmenu")||j||n.display.input.onContextMenu(i)}function L_(n,i){return Ln(n,"gutterContextMenu")?Qg(n,i,"gutterContextMenu",!1):!1}function tv(n){n.display.wrapper.className=n.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+n.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Us(n)}var rs={toString:function(){return"CodeMirror.Init"}},nv={},Ga={};function A_(n){var i=n.optionHandlers;function a(l,u,p,m){n.defaults[l]=u,p&&(i[l]=m?function(w,_,S){S!=rs&&p(w,_,S)}:p)}n.defineOption=a,n.Init=rs,a("value","",function(l,u){return l.setValue(u)},!0),a("mode",null,function(l,u){l.doc.modeOption=u,xf(l)},!0),a("indentUnit",2,xf,!0),a("indentWithTabs",!1),a("smartIndent",!0),a("tabSize",4,function(l){Js(l),Us(l),gn(l)},!0),a("lineSeparator",null,function(l,u){if(l.doc.lineSep=u,!!u){var p=[],m=l.doc.first;l.doc.iter(function(_){for(var S=0;;){var $=_.text.indexOf(u,S);if($==-1)break;S=$+u.length,p.push(Q(m,$))}m++});for(var w=p.length-1;w>=0;w--)Qo(l.doc,u,p[w],Q(p[w].line,p[w].ch+u.length))}}),a("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(l,u,p){l.state.specialChars=new RegExp(u.source+(u.test(" ")?"":"| "),"g"),p!=rs&&l.refresh()}),a("specialCharPlaceholder",ix,function(l){return l.refresh()},!0),a("electricChars",!0),a("inputStyle",A?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),a("spellcheck",!1,function(l,u){return l.getInputField().spellcheck=u},!0),a("autocorrect",!1,function(l,u){return l.getInputField().autocorrect=u},!0),a("autocapitalize",!1,function(l,u){return l.getInputField().autocapitalize=u},!0),a("rtlMoveVisually",!J),a("wholeLineUpdateBefore",!0),a("theme","default",function(l){tv(l),Zs(l)},!0),a("keyMap","default",function(l,u,p){var m=Va(u),w=p!=rs&&Va(p);w&&w.detach&&w.detach(l,m),m.attach&&m.attach(l,w||null)}),a("extraKeys",null),a("configureMouse",null),a("lineWrapping",!1,N_,!0),a("gutters",[],function(l,u){l.display.gutterSpecs=bf(u,l.options.lineNumbers),Zs(l)},!0),a("fixedGutter",!0,function(l,u){l.display.gutters.style.left=u?lf(l.display)+"px":"0",l.refresh()},!0),a("coverGutterNextToScrollbar",!1,function(l){return Xo(l)},!0),a("scrollbarStyle","native",function(l){ig(l),Xo(l),l.display.scrollbars.setScrollTop(l.doc.scrollTop),l.display.scrollbars.setScrollLeft(l.doc.scrollLeft)},!0),a("lineNumbers",!1,function(l,u){l.display.gutterSpecs=bf(l.options.gutters,u),Zs(l)},!0),a("firstLineNumber",1,Zs,!0),a("lineNumberFormatter",function(l){return l},Zs,!0),a("showCursorWhenSelecting",!1,Vs,!0),a("resetSelectionOnContextMenu",!0),a("lineWiseCopyCut",!0),a("pasteLinesPerSelection",!0),a("selectionsMayTouch",!1),a("readOnly",!1,function(l,u){u=="nocursor"&&(Go(l),l.display.input.blur()),l.display.input.readOnlyChanged(u)}),a("screenReaderLabel",null,function(l,u){u=u===""?null:u,l.display.input.screenReaderLabelChanged(u)}),a("disableInput",!1,function(l,u){u||l.display.input.reset()},!0),a("dragDrop",!0,M_),a("allowDropFileTypes",null),a("cursorBlinkRate",530),a("cursorScrollMargin",0),a("cursorHeight",1,Vs,!0),a("singleCursorHeightPerLine",!0,Vs,!0),a("workTime",100),a("workDelay",100),a("flattenSpans",!0,Js,!0),a("addModeClass",!1,Js,!0),a("pollInterval",100),a("undoDepth",200,function(l,u){return l.doc.history.undoDepth=u}),a("historyEventDelay",1250),a("viewportMargin",10,function(l){return l.refresh()},!0),a("maxHighlightLength",1e4,Js,!0),a("moveInputWithCursor",!0,function(l,u){u||l.display.input.resetPosition()}),a("tabindex",null,function(l,u){return l.display.input.getField().tabIndex=u||""}),a("autofocus",null),a("direction","ltr",function(l,u){return l.doc.setDirection(u)},!0),a("phrases",null)}function M_(n,i,a){var l=a&&a!=rs;if(!i!=!l){var u=n.display.dragFunctions,p=i?Fe:en;p(n.display.scroller,"dragstart",u.start),p(n.display.scroller,"dragenter",u.enter),p(n.display.scroller,"dragover",u.over),p(n.display.scroller,"dragleave",u.leave),p(n.display.scroller,"drop",u.drop)}}function N_(n){n.options.lineWrapping?(Ne(n.display.wrapper,"CodeMirror-wrap"),n.display.sizer.style.minWidth="",n.display.sizerWidth=null):(K(n.display.wrapper,"CodeMirror-wrap"),Yu(n)),af(n),gn(n),Us(n),setTimeout(function(){return Xo(n)},100)}function kt(n,i){var a=this;if(!(this instanceof kt))return new kt(n,i);this.options=i=i?ae(i):{},ae(nv,i,!1);var l=i.value;typeof l=="string"?l=new vn(l,i.mode,null,i.lineSeparator,i.direction):i.mode&&(l.modeOption=i.mode),this.doc=l;var u=new kt.inputStyles[i.inputStyle](this),p=this.display=new Ux(n,l,u,i);p.wrapper.CodeMirror=this,tv(this),i.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ig(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new $e,keySeq:null,specialChars:null},i.autofocus&&!A&&p.input.focus(),h&&g<11&&setTimeout(function(){return a.display.input.reset(!0)},20),$_(this),c_(),uo(this),this.curOp.forceUpdate=!0,pg(this,l),i.autofocus&&!A||this.hasFocus()?setTimeout(function(){a.hasFocus()&&!a.state.focused&&df(a)},20):Go(this);for(var m in Ga)Ga.hasOwnProperty(m)&&Ga[m](this,i[m],rs);lg(this),i.finishInit&&i.finishInit(this);for(var w=0;w<$f.length;++w)$f[w](this);fo(this),v&&i.lineWrapping&&getComputedStyle(p.lineDiv).textRendering=="optimizelegibility"&&(p.lineDiv.style.textRendering="auto")}kt.defaults=nv,kt.optionHandlers=Ga;function $_(n){var i=n.display;Fe(i.scroller,"mousedown",Wt(n,Zg)),h&&g<11?Fe(i.scroller,"dblclick",Wt(n,function(_){if(!Lt(n,_)){var S=so(n,_);if(!(!S||Nf(n,_)||jr(n.display,_))){tn(_);var $=n.findWordAt(S);Ha(n.doc,$.anchor,$.head)}}})):Fe(i.scroller,"dblclick",function(_){return Lt(n,_)||tn(_)}),Fe(i.scroller,"contextmenu",function(_){return ev(n,_)}),Fe(i.input.getField(),"contextmenu",function(_){i.scroller.contains(_.target)||ev(n,_)});var a,l={end:0};function u(){i.activeTouch&&(a=setTimeout(function(){return i.activeTouch=null},1e3),l=i.activeTouch,l.end=+new Date)}function p(_){if(_.touches.length!=1)return!1;var S=_.touches[0];return S.radiusX<=1&&S.radiusY<=1}function m(_,S){if(S.left==null)return!0;var $=S.left-_.left,D=S.top-_.top;return $*$+D*D>20*20}Fe(i.scroller,"touchstart",function(_){if(!Lt(n,_)&&!p(_)&&!Nf(n,_)){i.input.ensurePolled(),clearTimeout(a);var S=+new Date;i.activeTouch={start:S,moved:!1,prev:S-l.end<=300?l:null},_.touches.length==1&&(i.activeTouch.left=_.touches[0].pageX,i.activeTouch.top=_.touches[0].pageY)}}),Fe(i.scroller,"touchmove",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),Fe(i.scroller,"touchend",function(_){var S=i.activeTouch;if(S&&!jr(i,_)&&S.left!=null&&!S.moved&&new Date-S.start<300){var $=n.coordsChar(i.activeTouch,"page"),D;!S.prev||m(S,S.prev)?D=new ht($,$):!S.prev.prev||m(S,S.prev.prev)?D=n.findWordAt($):D=new ht(Q($.line,0),Ke(n.doc,Q($.line+1,0))),n.setSelection(D.anchor,D.head),n.focus(),tn(_)}u()}),Fe(i.scroller,"touchcancel",u),Fe(i.scroller,"scroll",function(){i.scroller.clientHeight&&(Gs(n,i.scroller.scrollTop),ao(n,i.scroller.scrollLeft,!0),Et(n,"scroll",n))}),Fe(i.scroller,"mousewheel",function(_){return ug(n,_)}),Fe(i.scroller,"DOMMouseScroll",function(_){return ug(n,_)}),Fe(i.wrapper,"scroll",function(){return i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(_){Lt(n,_)||pi(_)},over:function(_){Lt(n,_)||(a_(n,_),pi(_))},start:function(_){return l_(n,_)},drop:Wt(n,s_),leave:function(_){Lt(n,_)||Ig(n)}};var w=i.input.getField();Fe(w,"keyup",function(_){return Xg.call(n,_)}),Fe(w,"keydown",Wt(n,Kg)),Fe(w,"keypress",Wt(n,Yg)),Fe(w,"focus",function(_){return df(n,_)}),Fe(w,"blur",function(_){return Go(n,_)})}var $f=[];kt.defineInitHook=function(n){return $f.push(n)};function fl(n,i,a,l){var u=n.doc,p;a==null&&(a="add"),a=="smart"&&(u.mode.indent?p=Fs(n,i).state:a="prev");var m=n.options.tabSize,w=Pe(u,i),_=de(w.text,null,m);w.stateAfter&&(w.stateAfter=null);var S=w.text.match(/^\s*/)[0],$;if(!l&&!/\S/.test(w.text))$=0,a="not";else if(a=="smart"&&($=u.mode.indent(p,w.text.slice(S.length),w.text),$==P||$>150)){if(!l)return;a="prev"}a=="prev"?i>u.first?$=de(Pe(u,i-1).text,null,m):$=0:a=="add"?$=_+n.options.indentUnit:a=="subtract"?$=_-n.options.indentUnit:typeof a=="number"&&($=_+a),$=Math.max(0,$);var D="",G=0;if(n.options.indentWithTabs)for(var U=Math.floor($/m);U;--U)G+=m,D+=" ";if(G<$&&(D+=Se($-G)),D!=S)return Qo(u,D,Q(i,0),Q(i,S.length),"+input"),w.stateAfter=null,!0;for(var ee=0;eem,_=Xn(i),S=null;if(w&&l.ranges.length>1)if(gr&&gr.text.join(` -`)==i){if(l.ranges.length%gr.text.length==0){S=[];for(var $=0;$=0;G--){var U=l.ranges[G],ee=U.from(),ce=U.to();U.empty()&&(a&&a>0?ee=Q(ee.line,ee.ch-a):n.state.overwrite&&!w?ce=Q(ce.line,Math.min(Pe(p,ce.line).text.length,ce.ch+fe(_).length)):w&&gr&&gr.lineWise&&gr.text.join(` -`)==_.join(` -`)&&(ee=ce=Q(ee.line,0)));var ve={from:ee,to:ce,text:S?S[G%S.length]:_,origin:u||(w?"paste":n.state.cutIncoming>m?"cut":"+input")};Jo(n.doc,ve),Bt(n,"inputRead",n,ve)}i&&!w&&iv(n,i),Ko(n),n.curOp.updateInput<2&&(n.curOp.updateInput=D),n.curOp.typing=!0,n.state.pasteIncoming=n.state.cutIncoming=-1}function rv(n,i){var a=n.clipboardData&&n.clipboardData.getData("Text");if(a)return n.preventDefault(),!i.isReadOnly()&&!i.options.disableInput&&i.hasFocus()&&An(i,function(){return Of(i,a,0,null,"paste")}),!0}function iv(n,i){if(!(!n.options.electricChars||!n.options.smartIndent))for(var a=n.doc.sel,l=a.ranges.length-1;l>=0;l--){var u=a.ranges[l];if(!(u.head.ch>100||l&&a.ranges[l-1].head.line==u.head.line)){var p=n.getModeAt(u.head),m=!1;if(p.electricChars){for(var w=0;w-1){m=fl(n,u.head.line,"smart");break}}else p.electricInput&&p.electricInput.test(Pe(n.doc,u.head.line).text.slice(0,u.head.ch))&&(m=fl(n,u.head.line,"smart"));m&&Bt(n,"electricInput",n,u.head.line)}}}function ov(n){for(var i=[],a=[],l=0;lp&&(fl(this,w.head.line,l,!0),p=w.head.line,m==this.doc.sel.primIndex&&Ko(this));else{var _=w.from(),S=w.to(),$=Math.max(p,_.line);p=Math.min(this.lastLine(),S.line-(S.ch?0:1))+1;for(var D=$;D0&&Cf(this.doc,m,new ht(_,G[m].to()),F)}}}),getTokenAt:function(l,u){return vp(this,l,u)},getLineTokens:function(l,u){return vp(this,Q(l),u,!0)},getTokenTypeAt:function(l){l=Ke(this.doc,l);var u=hp(this,Pe(this.doc,l.line)),p=0,m=(u.length-1)/2,w=l.ch,_;if(w==0)_=u[2];else for(;;){var S=p+m>>1;if((S?u[S*2-1]:0)>=w)m=S;else if(u[S*2+1]_&&(l=_,m=!0),w=Pe(this.doc,l)}else w=l;return Aa(this,w,{top:0,left:0},u||"page",p||m).top+(m?this.doc.height-Vr(w):0)},defaultTextHeight:function(){return Vo(this.display)},defaultCharWidth:function(){return jo(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(l,u,p,m,w){var _=this.display;l=hr(this,Ke(this.doc,l));var S=l.bottom,$=l.left;if(u.style.position="absolute",u.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(u),_.sizer.appendChild(u),m=="over")S=l.top;else if(m=="above"||m=="near"){var D=Math.max(_.wrapper.clientHeight,this.doc.height),G=Math.max(_.sizer.clientWidth,_.lineSpace.clientWidth);(m=="above"||l.bottom+u.offsetHeight>D)&&l.top>u.offsetHeight?S=l.top-u.offsetHeight:l.bottom+u.offsetHeight<=D&&(S=l.bottom),$+u.offsetWidth>G&&($=G-u.offsetWidth)}u.style.top=S+"px",u.style.left=u.style.right="",w=="right"?($=_.sizer.clientWidth-u.offsetWidth,u.style.right="0px"):(w=="left"?$=0:w=="middle"&&($=(_.sizer.clientWidth-u.offsetWidth)/2),u.style.left=$+"px"),p&&Mx(this,{left:$,top:S,right:$+u.offsetWidth,bottom:S+u.offsetHeight})},triggerOnKeyDown:an(Kg),triggerOnKeyPress:an(Yg),triggerOnKeyUp:Xg,triggerOnMouseDown:an(Zg),execCommand:function(l){if(ll.hasOwnProperty(l))return ll[l].call(null,this)},triggerElectric:an(function(l){iv(this,l)}),findPosH:function(l,u,p,m){var w=1;u<0&&(w=-1,u=-u);for(var _=Ke(this.doc,l),S=0;S0&&$(p.charAt(m-1));)--m;for(;w.5||this.options.lineWrapping)&&af(this),Et(this,"refresh",this)}),swapDoc:an(function(l){var u=this.doc;return u.cm=null,this.state.selectingText&&this.state.selectingText(),pg(this,l),Us(this),this.display.input.reset(),js(this,l.scrollLeft,l.scrollTop),this.curOp.forceScroll=!0,Bt(this,"swapDoc",this,u),u}),phrase:function(l){var u=this.options.phrases;return u&&Object.prototype.hasOwnProperty.call(u,l)?u[l]:l},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},lr(n),n.registerHelper=function(l,u,p){a.hasOwnProperty(l)||(a[l]=n[l]={_global:[]}),a[l][u]=p},n.registerGlobalHelper=function(l,u,p,m){n.registerHelper(l,u,m),a[l]._global.push({pred:p,val:m})}}function Rf(n,i,a,l,u){var p=i,m=a,w=Pe(n,i.line),_=u&&n.direction=="rtl"?-a:a;function S(){var ke=i.line+_;return ke=n.first+n.size?!1:(i=new Q(ke,i.ch,i.sticky),w=Pe(n,ke))}function $(ke){var we;if(l=="codepoint"){var Le=w.text.charCodeAt(i.ch+(a>0?0:-1));if(isNaN(Le))we=null;else{var He=a>0?Le>=55296&&Le<56320:Le>=56320&&Le<57343;we=new Q(i.line,Math.max(0,Math.min(w.text.length,i.ch+a*(He?2:1))),-a)}}else u?we=p_(n.cm,w,i,a):we=Ef(w,i,a);if(we==null)if(!ke&&S())i=Lf(u,n.cm,w,i.line,_);else return!1;else i=we;return!0}if(l=="char"||l=="codepoint")$();else if(l=="column")$(!0);else if(l=="word"||l=="group")for(var D=null,G=l=="group",U=n.cm&&n.cm.getHelper(i,"wordChars"),ee=!0;!(a<0&&!$(!ee));ee=!1){var ce=w.text.charAt(i.ch)||` -`,ve=Ge(ce,U)?"w":G&&ce==` -`?"n":!G||/\s/.test(ce)?null:"p";if(G&&!ee&&!ve&&(ve="s"),D&&D!=ve){a<0&&(a=1,$(),i.sticky="after");break}if(ve&&(D=ve),a>0&&!$(!ee))break}var be=Ba(n,i,p,m,!0);return dt(p,be)&&(be.hitSide=!0),be}function lv(n,i,a,l){var u=n.doc,p=i.left,m;if(l=="page"){var w=Math.min(n.display.wrapper.clientHeight,Ee(n).innerHeight||u(n).documentElement.clientHeight),_=Math.max(w-.5*Vo(n.display),3);m=(a>0?i.bottom:i.top)+a*_}else l=="line"&&(m=a>0?i.bottom+3:i.top-3);for(var S;S=rf(n,p,m),!!S.outside;){if(a<0?m<=0:m>=u.height){S.hitSide=!0;break}m+=a*5}return S}var mt=function(n){this.cm=n,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new $e,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};mt.prototype.init=function(n){var i=this,a=this,l=a.cm,u=a.div=n.lineDiv;u.contentEditable=!0,Pf(u,l.options.spellcheck,l.options.autocorrect,l.options.autocapitalize);function p(w){for(var _=w.target;_;_=_.parentNode){if(_==u)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(_.className))break}return!1}Fe(u,"paste",function(w){!p(w)||Lt(l,w)||rv(w,l)||g<=11&&setTimeout(Wt(l,function(){return i.updateFromDOM()}),20)}),Fe(u,"compositionstart",function(w){i.composing={data:w.data,done:!1}}),Fe(u,"compositionupdate",function(w){i.composing||(i.composing={data:w.data,done:!1})}),Fe(u,"compositionend",function(w){i.composing&&(w.data!=i.composing.data&&i.readFromDOMSoon(),i.composing.done=!0)}),Fe(u,"touchstart",function(){return a.forceCompositionEnd()}),Fe(u,"input",function(){i.composing||i.readFromDOMSoon()});function m(w){if(!(!p(w)||Lt(l,w))){if(l.somethingSelected())Ka({lineWise:!1,text:l.getSelections()}),w.type=="cut"&&l.replaceSelection("",null,"cut");else if(l.options.lineWiseCopyCut){var _=ov(l);Ka({lineWise:!0,text:_.text}),w.type=="cut"&&l.operation(function(){l.setSelections(_.ranges,0,F),l.replaceSelection("",null,"cut")})}else return;if(w.clipboardData){w.clipboardData.clearData();var S=gr.text.join(` -`);if(w.clipboardData.setData("Text",S),w.clipboardData.getData("Text")==S){w.preventDefault();return}}var $=sv(),D=$.firstChild;Pf(D),l.display.lineSpace.insertBefore($,l.display.lineSpace.firstChild),D.value=gr.text.join(` -`);var G=ye(Ze(u));je(D),setTimeout(function(){l.display.lineSpace.removeChild($),G.focus(),G==u&&a.showPrimarySelection()},50)}}Fe(u,"copy",m),Fe(u,"cut",m)},mt.prototype.screenReaderLabelChanged=function(n){n?this.div.setAttribute("aria-label",n):this.div.removeAttribute("aria-label")},mt.prototype.prepareSelection=function(){var n=Zp(this.cm,!1);return n.focus=ye(Ze(this.div))==this.div,n},mt.prototype.showSelection=function(n,i){!n||!this.cm.display.view.length||((n.focus||i)&&this.showPrimarySelection(),this.showMultipleSelections(n))},mt.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},mt.prototype.showPrimarySelection=function(){var n=this.getSelection(),i=this.cm,a=i.doc.sel.primary(),l=a.from(),u=a.to();if(i.display.viewTo==i.display.viewFrom||l.line>=i.display.viewTo||u.line=i.display.viewFrom&&av(i,l)||{node:w[0].measure.map[2],offset:0},S=u.linen.firstLine()&&(l=Q(l.line-1,Pe(n.doc,l.line-1).length)),u.ch==Pe(n.doc,u.line).text.length&&u.linei.viewTo-1)return!1;var p,m,w;l.line==i.viewFrom||(p=lo(n,l.line))==0?(m=C(i.view[0].line),w=i.view[0].node):(m=C(i.view[p].line),w=i.view[p-1].node.nextSibling);var _=lo(n,u.line),S,$;if(_==i.view.length-1?(S=i.viewTo-1,$=i.lineDiv.lastChild):(S=C(i.view[_+1].line)-1,$=i.view[_+1].node.previousSibling),!w)return!1;for(var D=n.doc.splitLines(R_(n,w,$,m,S)),G=Wr(n.doc,Q(m,0),Q(S,Pe(n.doc,S).text.length));D.length>1&&G.length>1;)if(fe(D)==fe(G))D.pop(),G.pop(),S--;else if(D[0]==G[0])D.shift(),G.shift(),m++;else break;for(var U=0,ee=0,ce=D[0],ve=G[0],be=Math.min(ce.length,ve.length);Ul.ch&&ke.charCodeAt(ke.length-ee-1)==we.charCodeAt(we.length-ee-1);)U--,ee++;D[D.length-1]=ke.slice(0,ke.length-ee).replace(/^\u200b+/,""),D[0]=D[0].slice(U).replace(/\u200b+$/,"");var He=Q(m,U),De=Q(S,G.length?fe(G).length-ee:0);if(D.length>1||D[0]||_e(He,De))return Qo(n.doc,D,He,De,"+input"),!0},mt.prototype.ensurePolled=function(){this.forceCompositionEnd()},mt.prototype.reset=function(){this.forceCompositionEnd()},mt.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},mt.prototype.readFromDOMSoon=function(){var n=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(n.readDOMTimeout=null,n.composing)if(n.composing.done)n.composing=null;else return;n.updateFromDOM()},80))},mt.prototype.updateFromDOM=function(){var n=this;(this.cm.isReadOnly()||!this.pollContent())&&An(this.cm,function(){return gn(n.cm)})},mt.prototype.setUneditable=function(n){n.contentEditable="false"},mt.prototype.onKeyPress=function(n){n.charCode==0||this.composing||(n.preventDefault(),this.cm.isReadOnly()||Wt(this.cm,Of)(this.cm,String.fromCharCode(n.charCode==null?n.keyCode:n.charCode),0))},mt.prototype.readOnlyChanged=function(n){this.div.contentEditable=String(n!="nocursor")},mt.prototype.onContextMenu=function(){},mt.prototype.resetPosition=function(){},mt.prototype.needsContentAttribute=!0;function av(n,i){var a=ef(n,i.line);if(!a||a.hidden)return null;var l=Pe(n.doc,i.line),u=zp(a,l,i.line),p=Ve(l,n.doc.direction),m="left";if(p){var w=sr(p,i.ch);m=w%2?"right":"left"}var _=Hp(u.map,i.ch,m);return _.offset=_.collapse=="right"?_.end:_.start,_}function P_(n){for(var i=n;i;i=i.parentNode)if(/CodeMirror-gutter-wrapper/.test(i.className))return!0;return!1}function is(n,i){return i&&(n.bad=!0),n}function R_(n,i,a,l,u){var p="",m=!1,w=n.doc.lineSeparator(),_=!1;function S(U){return function(ee){return ee.id==U}}function $(){m&&(p+=w,_&&(p+=w),m=_=!1)}function D(U){U&&($(),p+=U)}function G(U){if(U.nodeType==1){var ee=U.getAttribute("cm-text");if(ee){D(ee);return}var ce=U.getAttribute("cm-marker"),ve;if(ce){var be=n.findMarks(Q(l,0),Q(u+1,0),S(+ce));be.length&&(ve=be[0].find(0))&&D(Wr(n.doc,ve.from,ve.to).join(w));return}if(U.getAttribute("contenteditable")=="false")return;var ke=/^(pre|div|p|li|table|br)$/i.test(U.nodeName);if(!/^br$/i.test(U.nodeName)&&U.textContent.length==0)return;ke&&$();for(var we=0;we=9&&i.hasSelection&&(i.hasSelection=null),a.poll()}),Fe(u,"paste",function(m){Lt(l,m)||rv(m,l)||(l.state.pasteIncoming=+new Date,a.fastPoll())});function p(m){if(!Lt(l,m)){if(l.somethingSelected())Ka({lineWise:!1,text:l.getSelections()});else if(l.options.lineWiseCopyCut){var w=ov(l);Ka({lineWise:!0,text:w.text}),m.type=="cut"?l.setSelections(w.ranges,null,F):(a.prevInput="",u.value=w.text.join(` -`),je(u))}else return;m.type=="cut"&&(l.state.cutIncoming=+new Date)}}Fe(u,"cut",p),Fe(u,"copy",p),Fe(n.scroller,"paste",function(m){if(!(jr(n,m)||Lt(l,m))){if(!u.dispatchEvent){l.state.pasteIncoming=+new Date,a.focus();return}var w=new Event("paste");w.clipboardData=m.clipboardData,u.dispatchEvent(w)}}),Fe(n.lineSpace,"selectstart",function(m){jr(n,m)||tn(m)}),Fe(u,"compositionstart",function(){var m=l.getCursor("from");a.composing&&a.composing.range.clear(),a.composing={start:m,range:l.markText(m,l.getCursor("to"),{className:"CodeMirror-composing"})}}),Fe(u,"compositionend",function(){a.composing&&(a.poll(),a.composing.range.clear(),a.composing=null)})},Nt.prototype.createField=function(n){this.wrapper=sv(),this.textarea=this.wrapper.firstChild;var i=this.cm.options;Pf(this.textarea,i.spellcheck,i.autocorrect,i.autocapitalize)},Nt.prototype.screenReaderLabelChanged=function(n){n?this.textarea.setAttribute("aria-label",n):this.textarea.removeAttribute("aria-label")},Nt.prototype.prepareSelection=function(){var n=this.cm,i=n.display,a=n.doc,l=Zp(n);if(n.options.moveInputWithCursor){var u=hr(n,a.sel.primary().head,"div"),p=i.wrapper.getBoundingClientRect(),m=i.lineDiv.getBoundingClientRect();l.teTop=Math.max(0,Math.min(i.wrapper.clientHeight-10,u.top+m.top-p.top)),l.teLeft=Math.max(0,Math.min(i.wrapper.clientWidth-10,u.left+m.left-p.left))}return l},Nt.prototype.showSelection=function(n){var i=this.cm,a=i.display;I(a.cursorDiv,n.cursors),I(a.selectionDiv,n.selection),n.teTop!=null&&(this.wrapper.style.top=n.teTop+"px",this.wrapper.style.left=n.teLeft+"px")},Nt.prototype.reset=function(n){if(!(this.contextMenuPending||this.composing&&n)){var i=this.cm;if(this.resetting=!0,i.somethingSelected()){this.prevInput="";var a=i.getSelection();this.textarea.value=a,i.state.focused&&je(this.textarea),h&&g>=9&&(this.hasSelection=a)}else n||(this.prevInput=this.textarea.value="",h&&g>=9&&(this.hasSelection=null));this.resetting=!1}},Nt.prototype.getField=function(){return this.textarea},Nt.prototype.supportsTouch=function(){return!1},Nt.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!A||ye(Ze(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},Nt.prototype.blur=function(){this.textarea.blur()},Nt.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Nt.prototype.receivedFocus=function(){this.slowPoll()},Nt.prototype.slowPoll=function(){var n=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){n.poll(),n.cm.state.focused&&n.slowPoll()})},Nt.prototype.fastPoll=function(){var n=!1,i=this;i.pollingFast=!0;function a(){var l=i.poll();!l&&!n?(n=!0,i.polling.set(60,a)):(i.pollingFast=!1,i.slowPoll())}i.polling.set(20,a)},Nt.prototype.poll=function(){var n=this,i=this.cm,a=this.textarea,l=this.prevInput;if(this.contextMenuPending||this.resetting||!i.state.focused||vi(a)&&!l&&!this.composing||i.isReadOnly()||i.options.disableInput||i.state.keySeq)return!1;var u=a.value;if(u==l&&!i.somethingSelected())return!1;if(h&&g>=9&&this.hasSelection===u||H&&/[\uf700-\uf7ff]/.test(u))return i.display.input.reset(),!1;if(i.doc.sel==i.display.selForContextMenu){var p=u.charCodeAt(0);if(p==8203&&!l&&(l="​"),p==8666)return this.reset(),this.cm.execCommand("undo")}for(var m=0,w=Math.min(l.length,u.length);m1e3||u.indexOf(` -`)>-1?a.value=n.prevInput="":n.prevInput=u,n.composing&&(n.composing.range.clear(),n.composing.range=i.markText(n.composing.start,i.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Nt.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Nt.prototype.onKeyPress=function(){h&&g>=9&&(this.hasSelection=null),this.fastPoll()},Nt.prototype.onContextMenu=function(n){var i=this,a=i.cm,l=a.display,u=i.textarea;i.contextMenuPending&&i.contextMenuPending();var p=so(a,n),m=l.scroller.scrollTop;if(!p||T)return;var w=a.options.resetSelectionOnContextMenu;w&&a.doc.sel.contains(p)==-1&&Wt(a,nn)(a.doc,xi(p),F);var _=u.style.cssText,S=i.wrapper.style.cssText,$=i.wrapper.offsetParent.getBoundingClientRect();i.wrapper.style.cssText="position: static",u.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(n.clientY-$.top-5)+"px; left: "+(n.clientX-$.left-5)+`px; - z-index: 1000; background: `+(h?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var D;v&&(D=u.ownerDocument.defaultView.scrollY),l.input.focus(),v&&u.ownerDocument.defaultView.scrollTo(null,D),l.input.reset(),a.somethingSelected()||(u.value=i.prevInput=" "),i.contextMenuPending=U,l.selForContextMenu=a.doc.sel,clearTimeout(l.detectingSelectAll);function G(){if(u.selectionStart!=null){var ce=a.somethingSelected(),ve="​"+(ce?u.value:"");u.value="⇚",u.value=ve,i.prevInput=ce?"":"​",u.selectionStart=1,u.selectionEnd=ve.length,l.selForContextMenu=a.doc.sel}}function U(){if(i.contextMenuPending==U&&(i.contextMenuPending=!1,i.wrapper.style.cssText=S,u.style.cssText=_,h&&g<9&&l.scrollbars.setScrollTop(l.scroller.scrollTop=m),u.selectionStart!=null)){(!h||h&&g<9)&&G();var ce=0,ve=function(){l.selForContextMenu==a.doc.sel&&u.selectionStart==0&&u.selectionEnd>0&&i.prevInput=="​"?Wt(a,Eg)(a):ce++<10?l.detectingSelectAll=setTimeout(ve,500):(l.selForContextMenu=null,l.input.reset())};l.detectingSelectAll=setTimeout(ve,200)}}if(h&&g>=9&&G(),j){pi(n);var ee=function(){en(window,"mouseup",ee),setTimeout(U,20)};Fe(window,"mouseup",ee)}else setTimeout(U,50)},Nt.prototype.readOnlyChanged=function(n){n||this.reset(),this.textarea.disabled=n=="nocursor",this.textarea.readOnly=!!n},Nt.prototype.setUneditable=function(){},Nt.prototype.needsContentAttribute=!1;function z_(n,i){if(i=i?ae(i):{},i.value=n.value,!i.tabindex&&n.tabIndex&&(i.tabindex=n.tabIndex),!i.placeholder&&n.placeholder&&(i.placeholder=n.placeholder),i.autofocus==null){var a=ye(Ze(n));i.autofocus=a==n||n.getAttribute("autofocus")!=null&&a==document.body}function l(){n.value=w.getValue()}var u;if(n.form&&(Fe(n.form,"submit",l),!i.leaveSubmitMethodAlone)){var p=n.form;u=p.submit;try{var m=p.submit=function(){l(),p.submit=u,p.submit(),p.submit=m}}catch{}}i.finishInit=function(_){_.save=l,_.getTextArea=function(){return n},_.toTextArea=function(){_.toTextArea=isNaN,l(),n.parentNode.removeChild(_.getWrapperElement()),n.style.display="",n.form&&(en(n.form,"submit",l),!i.leaveSubmitMethodAlone&&typeof n.form.submit=="function"&&(n.form.submit=u))}},n.style.display="none";var w=kt(function(_){return n.parentNode.insertBefore(_,n.nextSibling)},i);return w}function I_(n){n.off=en,n.on=Fe,n.wheelEventPixels=Vx,n.Doc=vn,n.splitLines=Xn,n.countColumn=de,n.findColumn=le,n.isWordChar=Ue,n.Pass=P,n.signal=Et,n.Line=Bo,n.changeEnd=_i,n.scrollbarModel=rg,n.Pos=Q,n.cmpPos=_e,n.modes=Do,n.mimeModes=ur,n.resolveMode=zo,n.getMode=Io,n.modeExtensions=mi,n.extendMode=Fo,n.copyState=kr,n.startState=Ho,n.innerMode=zs,n.commands=ll,n.keyMap=Kr,n.keyName=Wg,n.isModifierKey=qg,n.lookupKey=ts,n.normalizeKeyMap=h_,n.StringStream=At,n.SharedTextMarker=il,n.TextMarker=ki,n.LineWidget=rl,n.e_preventDefault=tn,n.e_stopPropagation=Po,n.e_stop=pi,n.addClass=Ne,n.contains=ie,n.rmClass=K,n.keyNames=Ci}A_(kt),O_(kt);var F_="iter insert remove copy getEditor constructor".split(" ");for(var Ya in vn.prototype)vn.prototype.hasOwnProperty(Ya)&&Te(F_,Ya)<0&&(kt.prototype[Ya]=function(n){return function(){return n.apply(this.doc,arguments)}}(vn.prototype[Ya]));return lr(vn),kt.inputStyles={textarea:Nt,contenteditable:mt},kt.defineMode=function(n){!kt.defaults.mode&&n!="null"&&(kt.defaults.mode=n),fr.apply(this,arguments)},kt.defineMIME=ro,kt.defineMode("null",function(){return{token:function(n){return n.skipToEnd()}}}),kt.defineMIME("text/plain","null"),kt.defineExtension=function(n,i){kt.prototype[n]=i},kt.defineDocExtension=function(n,i){vn.prototype[n]=i},kt.fromTextArea=z_,I_(kt),kt.version="5.65.17",kt})})(Yw);var Ps=Yw.exports;const dfe=Vb(Ps);var hfe={exports:{}};(function(e,t){(function(r){r(Ps)})(function(r){r.defineMode("javascript",function(o,s){var c=o.indentUnit,f=s.statementIndent,d=s.jsonld,h=s.json||d,g=s.trackScope!==!1,v=s.typescript,y=s.wordCharacters||/[\w$\xa1-\uffff]/,b=function(){function C(qt){return{type:qt,style:"keyword"}}var R=C("keyword a"),se=C("keyword b"),ge=C("keyword c"),Q=C("keyword d"),_e=C("operator"),dt={type:"atom",style:"atom"};return{if:C("if"),while:R,with:R,else:se,do:se,try:se,finally:se,return:Q,break:Q,continue:Q,new:C("new"),delete:ge,void:ge,throw:ge,debugger:C("debugger"),var:C("var"),const:C("var"),let:C("var"),function:C("function"),catch:C("catch"),for:C("for"),switch:C("switch"),case:C("case"),default:C("default"),in:_e,typeof:_e,instanceof:_e,true:dt,false:dt,null:dt,undefined:dt,NaN:dt,Infinity:dt,this:C("this"),class:C("class"),super:C("atom"),yield:ge,export:C("export"),import:C("import"),extends:ge,await:ge}}(),x=/[+\-*&%=<>!?|~^@]/,T=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function E(C){for(var R=!1,se,ge=!1;(se=C.next())!=null;){if(!R){if(se=="/"&&!ge)return;se=="["?ge=!0:ge&&se=="]"&&(ge=!1)}R=!R&&se=="\\"}}var M,N;function L(C,R,se){return M=C,N=se,R}function O(C,R){var se=C.next();if(se=='"'||se=="'")return R.tokenize=A(se),R.tokenize(C,R);if(se=="."&&C.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return L("number","number");if(se=="."&&C.match(".."))return L("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(se))return L(se);if(se=="="&&C.eat(">"))return L("=>","operator");if(se=="0"&&C.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return L("number","number");if(/\d/.test(se))return C.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),L("number","number");if(se=="/")return C.eat("*")?(R.tokenize=H,H(C,R)):C.eat("/")?(C.skipToEnd(),L("comment","comment")):Hn(C,R,1)?(E(C),C.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),L("regexp","string-2")):(C.eat("="),L("operator","operator",C.current()));if(se=="`")return R.tokenize=z,z(C,R);if(se=="#"&&C.peek()=="!")return C.skipToEnd(),L("meta","meta");if(se=="#"&&C.eatWhile(y))return L("variable","property");if(se=="<"&&C.match("!--")||se=="-"&&C.match("->")&&!/\S/.test(C.string.slice(0,C.start)))return C.skipToEnd(),L("comment","comment");if(x.test(se))return(se!=">"||!R.lexical||R.lexical.type!=">")&&(C.eat("=")?(se=="!"||se=="=")&&C.eat("="):/[<>*+\-|&?]/.test(se)&&(C.eat(se),se==">"&&C.eat(se))),se=="?"&&C.eat(".")?L("."):L("operator","operator",C.current());if(y.test(se)){C.eatWhile(y);var ge=C.current();if(R.lastType!="."){if(b.propertyIsEnumerable(ge)){var Q=b[ge];return L(Q.type,Q.style,ge)}if(ge=="async"&&C.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return L("async","keyword",ge)}return L("variable","variable",ge)}}function A(C){return function(R,se){var ge=!1,Q;if(d&&R.peek()=="@"&&R.match(T))return se.tokenize=O,L("jsonld-keyword","meta");for(;(Q=R.next())!=null&&!(Q==C&&!ge);)ge=!ge&&Q=="\\";return ge||(se.tokenize=O),L("string","string")}}function H(C,R){for(var se=!1,ge;ge=C.next();){if(ge=="/"&&se){R.tokenize=O;break}se=ge=="*"}return L("comment","comment")}function z(C,R){for(var se=!1,ge;(ge=C.next())!=null;){if(!se&&(ge=="`"||ge=="$"&&C.eat("{"))){R.tokenize=O;break}se=!se&&ge=="\\"}return L("quasi","string-2",C.current())}var J="([{}])";function re(C,R){R.fatArrowAt&&(R.fatArrowAt=null);var se=C.string.indexOf("=>",C.start);if(!(se<0)){if(v){var ge=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(C.string.slice(C.start,se));ge&&(se=ge.index)}for(var Q=0,_e=!1,dt=se-1;dt>=0;--dt){var qt=C.string.charAt(dt),pn=J.indexOf(qt);if(pn>=0&&pn<3){if(!Q){++dt;break}if(--Q==0){qt=="("&&(_e=!0);break}}else if(pn>=3&&pn<6)++Q;else if(y.test(qt))_e=!0;else if(/["'\/`]/.test(qt))for(;;--dt){if(dt==0)return;var qo=C.string.charAt(dt-1);if(qo==qt&&C.string.charAt(dt-2)!="\\"){dt--;break}}else if(_e&&!Q){++dt;break}}_e&&!Q&&(R.fatArrowAt=dt)}}var te={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function j(C,R,se,ge,Q,_e){this.indented=C,this.column=R,this.type=se,this.prev=Q,this.info=_e,ge!=null&&(this.align=ge)}function ne(C,R){if(!g)return!1;for(var se=C.localVars;se;se=se.next)if(se.name==R)return!0;for(var ge=C.context;ge;ge=ge.prev)for(var se=ge.vars;se;se=se.next)if(se.name==R)return!0}function K(C,R,se,ge,Q){var _e=C.cc;for(V.state=C,V.stream=Q,V.marked=null,V.cc=_e,V.style=R,C.lexical.hasOwnProperty("align")||(C.lexical.align=!0);;){var dt=_e.length?_e.pop():h?Te:de;if(dt(se,ge)){for(;_e.length&&_e[_e.length-1].lex;)_e.pop()();return V.marked?V.marked:se=="variable"&&ne(C,ge)?"variable-2":R}}}var V={state:null,column:null,marked:null,cc:null};function I(){for(var C=arguments.length-1;C>=0;C--)V.cc.push(arguments[C])}function k(){return I.apply(null,arguments),!0}function B(C,R){for(var se=R;se;se=se.next)if(se.name==C)return!0;return!1}function W(C){var R=V.state;if(V.marked="def",!!g){if(R.context){if(R.lexical.info=="var"&&R.context&&R.context.block){var se=ie(C,R.context);if(se!=null){R.context=se;return}}else if(!B(C,R.localVars)){R.localVars=new We(C,R.localVars);return}}s.globalVars&&!B(C,R.globalVars)&&(R.globalVars=new We(C,R.globalVars))}}function ie(C,R){if(R)if(R.block){var se=ie(C,R.prev);return se?se==R.prev?R:new Ne(se,R.vars,!0):null}else return B(C,R.vars)?R:new Ne(R.prev,new We(C,R.vars),!1);else return null}function ye(C){return C=="public"||C=="private"||C=="protected"||C=="abstract"||C=="readonly"}function Ne(C,R,se){this.prev=C,this.vars=R,this.block=se}function We(C,R){this.name=C,this.next=R}var je=new We("this",new We("arguments",null));function it(){V.state.context=new Ne(V.state.context,V.state.localVars,!1),V.state.localVars=je}function rt(){V.state.context=new Ne(V.state.context,V.state.localVars,!0),V.state.localVars=null}it.lex=rt.lex=!0;function Ze(){V.state.localVars=V.state.context.vars,V.state.context=V.state.context.prev}Ze.lex=!0;function Ee(C,R){var se=function(){var ge=V.state,Q=ge.indented;if(ge.lexical.type=="stat")Q=ge.lexical.indented;else for(var _e=ge.lexical;_e&&_e.type==")"&&_e.align;_e=_e.prev)Q=_e.indented;ge.lexical=new j(Q,V.stream.column(),C,null,ge.lexical,R)};return se.lex=!0,se}function X(){var C=V.state;C.lexical.prev&&(C.lexical.type==")"&&(C.indented=C.lexical.indented),C.lexical=C.lexical.prev)}X.lex=!0;function ae(C){function R(se){return se==C?k():C==";"||se=="}"||se==")"||se=="]"?I():k(R)}return R}function de(C,R){return C=="var"?k(Ee("vardef",R),Po,ae(";"),X):C=="keyword a"?k(Ee("form"),P,de,X):C=="keyword b"?k(Ee("form"),de,X):C=="keyword d"?V.stream.match(/^\s*$/,!1)?k():k(Ee("stat"),Z,ae(";"),X):C=="debugger"?k(ae(";")):C=="{"?k(Ee("}"),rt,Jt,X,Ze):C==";"?k():C=="if"?(V.state.lexical.info=="else"&&V.state.cc[V.state.cc.length-1]==X&&V.state.cc.pop()(),k(Ee("form"),P,de,X,Ro)):C=="function"?k(Xn):C=="for"?k(Ee("form"),rt,ba,de,Ze,X):C=="class"||v&&R=="interface"?(V.marked="keyword",k(Ee("form",C=="class"?C:R),Do,X)):C=="variable"?v&&R=="declare"?(V.marked="keyword",k(de)):v&&(R=="module"||R=="enum"||R=="type")&&V.stream.match(/^\s*\w/,!1)?(V.marked="keyword",R=="enum"?k(Pe):R=="type"?k(wa,ae("operator"),Ve,ae(";")):k(Ee("form"),hn,ae("{"),Ee("}"),Jt,X,X)):v&&R=="namespace"?(V.marked="keyword",k(Ee("form"),Te,de,X)):v&&R=="abstract"?(V.marked="keyword",k(de)):k(Ee("stat"),Re):C=="switch"?k(Ee("form"),P,ae("{"),Ee("}","switch"),rt,Jt,X,X,Ze):C=="case"?k(Te,ae(":")):C=="default"?k(ae(":")):C=="catch"?k(Ee("form"),it,$e,de,X,Ze):C=="export"?k(Ee("stat"),zo,X):C=="import"?k(Ee("stat"),mi,X):C=="async"?k(de):R=="@"?k(Te,de):I(Ee("stat"),Te,ae(";"),X)}function $e(C){if(C=="(")return k(cr,ae(")"))}function Te(C,R){return F(C,R,!1)}function Ye(C,R){return F(C,R,!0)}function P(C){return C!="("?I():k(Ee(")"),Z,ae(")"),X)}function F(C,R,se){if(V.state.fatArrowAt==V.stream.start){var ge=se?xe:fe;if(C=="(")return k(it,Ee(")"),nt(cr,")"),X,ae("=>"),ge,Ze);if(C=="variable")return I(it,hn,ae("=>"),ge,Ze)}var Q=se?le:ue;return te.hasOwnProperty(C)?k(Q):C=="function"?k(Xn,Q):C=="class"||v&&R=="interface"?(V.marked="keyword",k(Ee("form"),Wu,X)):C=="keyword c"||C=="async"?k(se?Ye:Te):C=="("?k(Ee(")"),Z,ae(")"),X,Q):C=="operator"||C=="spread"?k(se?Ye:Te):C=="["?k(Ee("]"),At,X,Q):C=="{"?It(Ge,"}",null,Q):C=="quasi"?I(he,Q):C=="new"?k(pe(se)):k()}function Z(C){return C.match(/[;\}\)\],]/)?I():I(Te)}function ue(C,R){return C==","?k(Z):le(C,R,!1)}function le(C,R,se){var ge=se==!1?ue:le,Q=se==!1?Te:Ye;if(C=="=>")return k(it,se?xe:fe,Ze);if(C=="operator")return/\+\+|--/.test(R)||v&&R=="!"?k(ge):v&&R=="<"&&V.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?k(Ee(">"),nt(Ve,">"),X,ge):R=="?"?k(Te,ae(":"),Q):k(Q);if(C=="quasi")return I(he,ge);if(C!=";"){if(C=="(")return It(Ye,")","call",ge);if(C==".")return k(Ue,ge);if(C=="[")return k(Ee("]"),Z,ae("]"),X,ge);if(v&&R=="as")return V.marked="keyword",k(Ve,ge);if(C=="regexp")return V.state.lastType=V.marked="operator",V.stream.backUp(V.stream.pos-V.stream.start-1),k(Q)}}function he(C,R){return C!="quasi"?I():R.slice(R.length-2)!="${"?k(he):k(Z,Se)}function Se(C){if(C=="}")return V.marked="string-2",V.state.tokenize=z,k(he)}function fe(C){return re(V.stream,V.state),I(C=="{"?de:Te)}function xe(C){return re(V.stream,V.state),I(C=="{"?de:Ye)}function pe(C){return function(R){return R=="."?k(C?ze:Ae):R=="variable"&&v?k(Ln,C?le:ue):I(C?Ye:Te)}}function Ae(C,R){if(R=="target")return V.marked="keyword",k(ue)}function ze(C,R){if(R=="target")return V.marked="keyword",k(le)}function Re(C){return C==":"?k(X,de):I(ue,ae(";"),X)}function Ue(C){if(C=="variable")return V.marked="property",k()}function Ge(C,R){if(C=="async")return V.marked="property",k(Ge);if(C=="variable"||V.style=="keyword"){if(V.marked="property",R=="get"||R=="set")return k(vt);var se;return v&&V.state.fatArrowAt==V.stream.start&&(se=V.stream.match(/^\s*:\s*/,!1))&&(V.state.fatArrowAt=V.stream.pos+se[0].length),k(tt)}else{if(C=="number"||C=="string")return V.marked=d?"property":V.style+" property",k(tt);if(C=="jsonld-keyword")return k(tt);if(v&&ye(R))return V.marked="keyword",k(Ge);if(C=="[")return k(Te,or,ae("]"),tt);if(C=="spread")return k(Ye,tt);if(R=="*")return V.marked="keyword",k(Ge);if(C==":")return I(tt)}}function vt(C){return C!="variable"?I(tt):(V.marked="property",k(Xn))}function tt(C){if(C==":")return k(Ye);if(C=="(")return I(Xn)}function nt(C,R,se){function ge(Q,_e){if(se?se.indexOf(Q)>-1:Q==","){var dt=V.state.lexical;return dt.info=="call"&&(dt.pos=(dt.pos||0)+1),k(function(qt,pn){return qt==R||pn==R?I():I(C)},ge)}return Q==R||_e==R?k():se&&se.indexOf(";")>-1?I(C):k(ae(R))}return function(Q,_e){return Q==R||_e==R?k():I(C,ge)}}function It(C,R,se){for(var ge=3;ge"),Ve);if(C=="quasi")return I(en,Kn)}function no(C){if(C=="=>")return k(Ve)}function Fe(C){return C.match(/[\}\)\]]/)?k():C==","||C==";"?k(Fe):I(Br,Fe)}function Br(C,R){if(C=="variable"||V.style=="keyword")return V.marked="property",k(Br);if(R=="?"||C=="number"||C=="string")return k(Br);if(C==":")return k(Ve);if(C=="[")return k(ae("variable"),Fn,ae("]"),Br);if(C=="(")return I(vi,Br);if(!C.match(/[;\}\)\],]/))return k()}function en(C,R){return C!="quasi"?I():R.slice(R.length-2)!="${"?k(en):k(Ve,Et)}function Et(C){if(C=="}")return V.marked="string-2",V.state.tokenize=z,k(en)}function Lt(C,R){return C=="variable"&&V.stream.match(/^\s*[?:]/,!1)||R=="?"?k(Lt):C==":"?k(Ve):C=="spread"?k(Lt):I(Ve)}function Kn(C,R){if(R=="<")return k(Ee(">"),nt(Ve,">"),X,Kn);if(R=="|"||C=="."||R=="&")return k(Ve);if(C=="[")return k(Ve,ae("]"),Kn);if(R=="extends"||R=="implements")return V.marked="keyword",k(Ve);if(R=="?")return k(Ve,ae(":"),Ve)}function Ln(C,R){if(R=="<")return k(Ee(">"),nt(Ve,">"),X,Kn)}function lr(){return I(Ve,tn)}function tn(C,R){if(R=="=")return k(Ve)}function Po(C,R){return R=="enum"?(V.marked="keyword",k(Pe)):I(hn,or,ar,Bu)}function hn(C,R){if(v&&ye(R))return V.marked="keyword",k(hn);if(C=="variable")return W(R),k();if(C=="spread")return k(hn);if(C=="[")return It(Rs,"]");if(C=="{")return It(pi,"}")}function pi(C,R){return C=="variable"&&!V.stream.match(/^\s*:/,!1)?(W(R),k(ar)):(C=="variable"&&(V.marked="property"),C=="spread"?k(hn):C=="}"?I():C=="["?k(Te,ae("]"),ae(":"),pi):k(ae(":"),hn,ar))}function Rs(){return I(hn,ar)}function ar(C,R){if(R=="=")return k(Ye)}function Bu(C){if(C==",")return k(Po)}function Ro(C,R){if(C=="keyword b"&&R=="else")return k(Ee("form","else"),de,X)}function ba(C,R){if(R=="await")return k(ba);if(C=="(")return k(Ee(")"),Ds,X)}function Ds(C){return C=="var"?k(Po,gi):C=="variable"?k(gi):I(gi)}function gi(C,R){return C==")"?k():C==";"?k(gi):R=="in"||R=="of"?(V.marked="keyword",k(Te,gi)):I(Te,gi)}function Xn(C,R){if(R=="*")return V.marked="keyword",k(Xn);if(C=="variable")return W(R),k(Xn);if(C=="(")return k(it,Ee(")"),nt(cr,")"),X,sr,de,Ze);if(v&&R=="<")return k(Ee(">"),nt(lr,">"),X,Xn)}function vi(C,R){if(R=="*")return V.marked="keyword",k(vi);if(C=="variable")return W(R),k(vi);if(C=="(")return k(it,Ee(")"),nt(cr,")"),X,sr,Ze);if(v&&R=="<")return k(Ee(">"),nt(lr,">"),X,vi)}function wa(C,R){if(C=="keyword"||C=="variable")return V.marked="type",k(wa);if(R=="<")return k(Ee(">"),nt(lr,">"),X)}function cr(C,R){return R=="@"&&k(Te,cr),C=="spread"?k(cr):v&&ye(R)?(V.marked="keyword",k(cr)):v&&C=="this"?k(or,ar):I(hn,or,ar)}function Wu(C,R){return C=="variable"?Do(C,R):ur(C,R)}function Do(C,R){if(C=="variable")return W(R),k(ur)}function ur(C,R){if(R=="<")return k(Ee(">"),nt(lr,">"),X,ur);if(R=="extends"||R=="implements"||v&&C==",")return R=="implements"&&(V.marked="keyword"),k(v?Ve:Te,ur);if(C=="{")return k(Ee("}"),fr,X)}function fr(C,R){if(C=="async"||C=="variable"&&(R=="static"||R=="get"||R=="set"||v&&ye(R))&&V.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return V.marked="keyword",k(fr);if(C=="variable"||V.style=="keyword")return V.marked="property",k(ro,fr);if(C=="number"||C=="string")return k(ro,fr);if(C=="[")return k(Te,or,ae("]"),ro,fr);if(R=="*")return V.marked="keyword",k(fr);if(v&&C=="(")return I(vi,fr);if(C==";"||C==",")return k(fr);if(C=="}")return k();if(R=="@")return k(Te,fr)}function ro(C,R){if(R=="!"||R=="?")return k(ro);if(C==":")return k(Ve,ar);if(R=="=")return k(Ye);var se=V.state.lexical.prev,ge=se&&se.info=="interface";return I(ge?vi:Xn)}function zo(C,R){return R=="*"?(V.marked="keyword",k(Ho,ae(";"))):R=="default"?(V.marked="keyword",k(Te,ae(";"))):C=="{"?k(nt(Io,"}"),Ho,ae(";")):I(de)}function Io(C,R){if(R=="as")return V.marked="keyword",k(ae("variable"));if(C=="variable")return I(Ye,Io)}function mi(C){return C=="string"?k():C=="("?I(Te):C=="."?I(ue):I(Fo,kr,Ho)}function Fo(C,R){return C=="{"?It(Fo,"}"):(C=="variable"&&W(R),R=="*"&&(V.marked="keyword"),k(zs))}function kr(C){if(C==",")return k(Fo,kr)}function zs(C,R){if(R=="as")return V.marked="keyword",k(Fo)}function Ho(C,R){if(R=="from")return V.marked="keyword",k(Te)}function At(C){return C=="]"?k():I(nt(Ye,"]"))}function Pe(){return I(Ee("form"),hn,ae("{"),Ee("}"),nt(Wr,"}"),X,X)}function Wr(){return I(hn,ar)}function Is(C,R){return C.lastType=="operator"||C.lastType==","||x.test(R.charAt(0))||/[,.]/.test(R.charAt(0))}function Hn(C,R,se){return R.tokenize==O&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(R.lastType)||R.lastType=="quasi"&&/\{\s*$/.test(C.string.slice(0,C.pos-(se||0)))}return{startState:function(C){var R={tokenize:O,lastType:"sof",cc:[],lexical:new j((C||0)-c,0,"block",!1),localVars:s.localVars,context:s.localVars&&new Ne(null,null,!1),indented:C||0};return s.globalVars&&typeof s.globalVars=="object"&&(R.globalVars=s.globalVars),R},token:function(C,R){if(C.sol()&&(R.lexical.hasOwnProperty("align")||(R.lexical.align=!1),R.indented=C.indentation(),re(C,R)),R.tokenize!=H&&C.eatSpace())return null;var se=R.tokenize(C,R);return M=="comment"?se:(R.lastType=M=="operator"&&(N=="++"||N=="--")?"incdec":M,K(R,se,M,N,C))},indent:function(C,R){if(C.tokenize==H||C.tokenize==z)return r.Pass;if(C.tokenize!=O)return 0;var se=R&&R.charAt(0),ge=C.lexical,Q;if(!/^\s*else\b/.test(R))for(var _e=C.cc.length-1;_e>=0;--_e){var dt=C.cc[_e];if(dt==X)ge=ge.prev;else if(dt!=Ro&&dt!=Ze)break}for(;(ge.type=="stat"||ge.type=="form")&&(se=="}"||(Q=C.cc[C.cc.length-1])&&(Q==ue||Q==le)&&!/^[,\.=+\-*:?[\(]/.test(R));)ge=ge.prev;f&&ge.type==")"&&ge.prev.type=="stat"&&(ge=ge.prev);var qt=ge.type,pn=se==qt;return qt=="vardef"?ge.indented+(C.lastType=="operator"||C.lastType==","?ge.info.length+1:0):qt=="form"&&se=="{"?ge.indented:qt=="form"?ge.indented+c:qt=="stat"?ge.indented+(Is(C,R)?f||c:0):ge.info=="switch"&&!pn&&s.doubleIndentSwitch!=!1?ge.indented+(/^(?:case|default)\b/.test(R)?c:2*c):ge.align?ge.column+(pn?0:1):ge.indented+(pn?0:c)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:h?null:"/*",blockCommentEnd:h?null:"*/",blockCommentContinue:h?null:" * ",lineComment:h?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:h?"json":"javascript",jsonldMode:d,jsonMode:h,expressionAllowed:Hn,skipExpression:function(C){K(C,"atom","atom","true",new r.StringStream("",2,null))}}}),r.registerHelper("wordChars","javascript",/[\w$]/),r.defineMIME("text/javascript","javascript"),r.defineMIME("text/ecmascript","javascript"),r.defineMIME("application/javascript","javascript"),r.defineMIME("application/x-javascript","javascript"),r.defineMIME("application/ecmascript","javascript"),r.defineMIME("application/json",{name:"javascript",json:!0}),r.defineMIME("application/x-json",{name:"javascript",json:!0}),r.defineMIME("application/manifest+json",{name:"javascript",json:!0}),r.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),r.defineMIME("text/typescript",{name:"javascript",typescript:!0}),r.defineMIME("application/typescript",{name:"javascript",typescript:!0})})})();var pfe=hfe.exports,gfe={exports:{}};(function(e,t){(function(r){r(Ps)})(function(r){var o={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},s={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};r.defineMode("xml",function(c,f){var d=c.indentUnit,h={},g=f.htmlMode?o:s;for(var v in g)h[v]=g[v];for(var v in f)h[v]=f[v];var y,b;function x(k,B){function W(Ne){return B.tokenize=Ne,Ne(k,B)}var ie=k.next();if(ie=="<")return k.eat("!")?k.eat("[")?k.match("CDATA[")?W(M("atom","]]>")):null:k.match("--")?W(M("comment","-->")):k.match("DOCTYPE",!0,!0)?(k.eatWhile(/[\w\._\-]/),W(N(1))):null:k.eat("?")?(k.eatWhile(/[\w\._\-]/),B.tokenize=M("meta","?>"),"meta"):(y=k.eat("/")?"closeTag":"openTag",B.tokenize=T,"tag bracket");if(ie=="&"){var ye;return k.eat("#")?k.eat("x")?ye=k.eatWhile(/[a-fA-F\d]/)&&k.eat(";"):ye=k.eatWhile(/[\d]/)&&k.eat(";"):ye=k.eatWhile(/[\w\.\-:]/)&&k.eat(";"),ye?"atom":"error"}else return k.eatWhile(/[^&<]/),null}x.isInText=!0;function T(k,B){var W=k.next();if(W==">"||W=="/"&&k.eat(">"))return B.tokenize=x,y=W==">"?"endTag":"selfcloseTag","tag bracket";if(W=="=")return y="equals",null;if(W=="<"){B.tokenize=x,B.state=z,B.tagName=B.tagStart=null;var ie=B.tokenize(k,B);return ie?ie+" tag error":"tag error"}else return/[\'\"]/.test(W)?(B.tokenize=E(W),B.stringStartCol=k.column(),B.tokenize(k,B)):(k.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function E(k){var B=function(W,ie){for(;!W.eol();)if(W.next()==k){ie.tokenize=T;break}return"string"};return B.isInAttribute=!0,B}function M(k,B){return function(W,ie){for(;!W.eol();){if(W.match(B)){ie.tokenize=x;break}W.next()}return k}}function N(k){return function(B,W){for(var ie;(ie=B.next())!=null;){if(ie=="<")return W.tokenize=N(k+1),W.tokenize(B,W);if(ie==">")if(k==1){W.tokenize=x;break}else return W.tokenize=N(k-1),W.tokenize(B,W)}return"meta"}}function L(k){return k&&k.toLowerCase()}function O(k,B,W){this.prev=k.context,this.tagName=B||"",this.indent=k.indented,this.startOfLine=W,(h.doNotIndent.hasOwnProperty(B)||k.context&&k.context.noIndent)&&(this.noIndent=!0)}function A(k){k.context&&(k.context=k.context.prev)}function H(k,B){for(var W;;){if(!k.context||(W=k.context.tagName,!h.contextGrabbers.hasOwnProperty(L(W))||!h.contextGrabbers[L(W)].hasOwnProperty(L(B))))return;A(k)}}function z(k,B,W){return k=="openTag"?(W.tagStart=B.column(),J):k=="closeTag"?re:z}function J(k,B,W){return k=="word"?(W.tagName=B.current(),b="tag",ne):h.allowMissingTagName&&k=="endTag"?(b="tag bracket",ne(k,B,W)):(b="error",J)}function re(k,B,W){if(k=="word"){var ie=B.current();return W.context&&W.context.tagName!=ie&&h.implicitlyClosed.hasOwnProperty(L(W.context.tagName))&&A(W),W.context&&W.context.tagName==ie||h.matchClosing===!1?(b="tag",te):(b="tag error",j)}else return h.allowMissingTagName&&k=="endTag"?(b="tag bracket",te(k,B,W)):(b="error",j)}function te(k,B,W){return k!="endTag"?(b="error",te):(A(W),z)}function j(k,B,W){return b="error",te(k,B,W)}function ne(k,B,W){if(k=="word")return b="attribute",K;if(k=="endTag"||k=="selfcloseTag"){var ie=W.tagName,ye=W.tagStart;return W.tagName=W.tagStart=null,k=="selfcloseTag"||h.autoSelfClosers.hasOwnProperty(L(ie))?H(W,ie):(H(W,ie),W.context=new O(W,ie,ye==W.indented)),z}return b="error",ne}function K(k,B,W){return k=="equals"?V:(h.allowMissing||(b="error"),ne(k,B,W))}function V(k,B,W){return k=="string"?I:k=="word"&&h.allowUnquoted?(b="string",ne):(b="error",ne(k,B,W))}function I(k,B,W){return k=="string"?I:ne(k,B,W)}return{startState:function(k){var B={tokenize:x,state:z,indented:k||0,tagName:null,tagStart:null,context:null};return k!=null&&(B.baseIndent=k),B},token:function(k,B){if(!B.tagName&&k.sol()&&(B.indented=k.indentation()),k.eatSpace())return null;y=null;var W=B.tokenize(k,B);return(W||y)&&W!="comment"&&(b=null,B.state=B.state(y||W,k,B),b&&(W=b=="error"?W+" error":b)),W},indent:function(k,B,W){var ie=k.context;if(k.tokenize.isInAttribute)return k.tagStart==k.indented?k.stringStartCol+1:k.indented+d;if(ie&&ie.noIndent)return r.Pass;if(k.tokenize!=T&&k.tokenize!=x)return W?W.match(/^(\s*)/)[0].length:0;if(k.tagName)return h.multilineTagIndentPastTag!==!1?k.tagStart+k.tagName.length+2:k.tagStart+d*(h.multilineTagIndentFactor||1);if(h.alignCDATA&&/$/,blockCommentStart:"",configuration:h.htmlMode?"html":"xml",helperType:h.htmlMode?"html":"xml",skipAttribute:function(k){k.state==V&&(k.state=ne)},xmlCurrentTag:function(k){return k.tagName?{name:k.tagName,close:k.type=="closeTag"}:null},xmlCurrentContext:function(k){for(var B=[],W=k.context;W;W=W.prev)B.push(W.tagName);return B.reverse()}}}),r.defineMIME("text/xml","xml"),r.defineMIME("application/xml","xml"),r.mimeModes.hasOwnProperty("text/html")||r.defineMIME("text/html",{name:"xml",htmlMode:!0})})})();var vfe=gfe.exports;(function(e,t){(function(r){r(Ps,vfe,pfe)})(function(r){function o(c,f,d,h){this.state=c,this.mode=f,this.depth=d,this.prev=h}function s(c){return new o(r.copyState(c.mode,c.state),c.mode,c.depth,c.prev&&s(c.prev))}r.defineMode("jsx",function(c,f){var d=r.getMode(c,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1,allowMissingTagName:!0}),h=r.getMode(c,f&&f.base||"javascript");function g(x){var T=x.tagName;x.tagName=null;var E=d.indent(x,"","");return x.tagName=T,E}function v(x,T){return T.context.mode==d?y(x,T,T.context):b(x,T,T.context)}function y(x,T,E){if(E.depth==2)return x.match(/^.*?\*\//)?E.depth=1:x.skipToEnd(),"comment";if(x.peek()=="{"){d.skipAttribute(E.state);var M=g(E.state),N=E.state.context;if(N&&x.match(/^[^>]*>\s*$/,!1)){for(;N.prev&&!N.startOfLine;)N=N.prev;N.startOfLine?M-=c.indentUnit:E.prev.state.lexical&&(M=E.prev.state.lexical.indented)}else E.depth==1&&(M+=c.indentUnit);return T.context=new o(r.startState(h,M),h,0,T.context),null}if(E.depth==1){if(x.peek()=="<")return d.skipAttribute(E.state),T.context=new o(r.startState(d,g(E.state)),d,0,T.context),null;if(x.match("//"))return x.skipToEnd(),"comment";if(x.match("/*"))return E.depth=2,v(x,T)}var L=d.token(x,E.state),O=x.current(),A;return/\btag\b/.test(L)?/>$/.test(O)?E.state.context?E.depth=0:T.context=T.context.prev:/^-1&&x.backUp(O.length-A),L}function b(x,T,E){if(x.peek()=="<"&&!x.match(/^<([^<>]|<[^>]*>)+,\s*>/,!1)&&h.expressionAllowed(x,E.state))return T.context=new o(r.startState(d,h.indent(E.state,"","")),d,0,T.context),h.skipExpression(E.state),null;var M=h.token(x,E.state);if(!M&&E.depth!=null){var N=x.current();N=="{"?E.depth++:N=="}"&&--E.depth==0&&(T.context=T.context.prev)}return M}return{startState:function(){return{context:new o(r.startState(h),h)}},copyState:function(x){return{context:s(x.context)}},token:v,indent:function(x,T,E){return x.context.mode.indent(x.context.state,T,E)},innerMode:function(x){return x.context}}},"xml","javascript"),r.defineMIME("text/jsx","jsx"),r.defineMIME("text/typescript-jsx",{name:"jsx",base:{name:"javascript",typescript:!0}})})})();(function(e,t){(function(r){r(Ps)})(function(r){r.defineOption("placeholder","",function(g,v,y){var b=y&&y!=r.Init;if(v&&!b)g.on("blur",f),g.on("change",d),g.on("swapDoc",d),r.on(g.getInputField(),"compositionupdate",g.state.placeholderCompose=function(){c(g)}),d(g);else if(!v&&b){g.off("blur",f),g.off("change",d),g.off("swapDoc",d),r.off(g.getInputField(),"compositionupdate",g.state.placeholderCompose),o(g);var x=g.getWrapperElement();x.className=x.className.replace(" CodeMirror-empty","")}v&&!g.hasFocus()&&f(g)});function o(g){g.state.placeholder&&(g.state.placeholder.parentNode.removeChild(g.state.placeholder),g.state.placeholder=null)}function s(g){o(g);var v=g.state.placeholder=document.createElement("pre");v.style.cssText="height: 0; overflow: visible",v.style.direction=g.getOption("direction"),v.className="CodeMirror-placeholder CodeMirror-line-like";var y=g.getOption("placeholder");typeof y=="string"&&(y=document.createTextNode(y)),v.appendChild(y),g.display.lineSpace.insertBefore(v,g.display.lineSpace.firstChild)}function c(g){setTimeout(function(){var v=!1;if(g.lineCount()==1){var y=g.getInputField();v=y.nodeName=="TEXTAREA"?!g.getLine(0).length:!/[^\u200b]/.test(y.querySelector(".CodeMirror-line").textContent)}v?s(g):o(g)},20)}function f(g){h(g)&&s(g)}function d(g){var v=g.getWrapperElement(),y=h(g);v.className=v.className.replace(" CodeMirror-empty","")+(y?" CodeMirror-empty":""),y?s(g):o(g)}function h(g){return g.lineCount()===1&&g.getLine(0)===""}})})();(function(e,t){(function(r){r(Ps)})(function(r){function o(f,d,h){this.orientation=d,this.scroll=h,this.screen=this.total=this.size=1,this.pos=0,this.node=document.createElement("div"),this.node.className=f+"-"+d,this.inner=this.node.appendChild(document.createElement("div"));var g=this;r.on(this.inner,"mousedown",function(y){if(y.which!=1)return;r.e_preventDefault(y);var b=g.orientation=="horizontal"?"pageX":"pageY",x=y[b],T=g.pos;function E(){r.off(document,"mousemove",M),r.off(document,"mouseup",E)}function M(N){if(N.which!=1)return E();g.moveTo(T+(N[b]-x)*(g.total/g.size))}r.on(document,"mousemove",M),r.on(document,"mouseup",E)}),r.on(this.node,"click",function(y){r.e_preventDefault(y);var b=g.inner.getBoundingClientRect(),x;g.orientation=="horizontal"?x=y.clientXb.right?1:0:x=y.clientYb.bottom?1:0,g.moveTo(g.pos+x*g.screen)});function v(y){var b=r.wheelEventPixels(y)[g.orientation=="horizontal"?"x":"y"],x=g.pos;g.moveTo(g.pos+b),g.pos!=x&&r.e_preventDefault(y)}r.on(this.node,"mousewheel",v),r.on(this.node,"DOMMouseScroll",v)}o.prototype.setPos=function(f,d){return f<0&&(f=0),f>this.total-this.screen&&(f=this.total-this.screen),!d&&f==this.pos?!1:(this.pos=f,this.inner.style[this.orientation=="horizontal"?"left":"top"]=f*(this.size/this.total)+"px",!0)},o.prototype.moveTo=function(f){this.setPos(f)&&this.scroll(f,this.orientation)};var s=10;o.prototype.update=function(f,d,h){var g=this.screen!=d||this.total!=f||this.size!=h;g&&(this.screen=d,this.total=f,this.size=h);var v=this.screen*(this.size/this.total);vf.clientWidth+1,v=f.scrollHeight>f.clientHeight+1;return this.vert.node.style.display=v?"block":"none",this.horiz.node.style.display=g?"block":"none",v&&(this.vert.update(f.scrollHeight,f.clientHeight,f.viewHeight-(g?h:0)),this.vert.node.style.bottom=g?h+"px":"0"),g&&(this.horiz.update(f.scrollWidth,f.clientWidth,f.viewWidth-(v?h:0)-f.barLeft),this.horiz.node.style.right=v?h+"px":"0",this.horiz.node.style.left=f.barLeft+"px"),{right:v?h:0,bottom:g?h:0}},c.prototype.setScrollTop=function(f){this.vert.setPos(f)},c.prototype.setScrollLeft=function(f){this.horiz.setPos(f)},c.prototype.clear=function(){var f=this.horiz.node.parentNode;f.removeChild(this.horiz.node),f.removeChild(this.vert.node)},r.scrollbarModel.simple=function(f,d){return new c("CodeMirror-simplescroll",f,d)},r.scrollbarModel.overlay=function(f,d){return new c("CodeMirror-overlayscroll",f,d)}})})();const Zn=Fr();function mfe(e,t,r={}){const o=dfe.fromTextArea(e.value,{theme:"vars",...r,scrollbarStyle:"simple"});let s=!1;return o.on("change",()=>{if(s){s=!1;return}t.value=o.getValue()}),Ht(t,c=>{if(c!==o.getValue()){s=!0;const f=o.listSelections();o.replaceRange(c,o.posFromIndex(0),o.posFromIndex(Number.POSITIVE_INFINITY)),o.setSelections(f)}},{immediate:!0}),bu(()=>{Zn.value=void 0}),vh(o)}async function yfe(e){var t;Gw(e,((t=e.location)==null?void 0:t.line)??0)}const bfe={relative:"","font-mono":"","text-sm":"",class:"codemirror-scrolls"},Zw=ft({__name:"CodeMirrorContainer",props:Ic({mode:{},readOnly:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:Ic(["save"],["update:modelValue"]),setup(e,{emit:t}){const r=t,o=Th(e,"modelValue"),s=JS(),c={js:"javascript",mjs:"javascript",cjs:"javascript",ts:{name:"javascript",typescript:!0},mts:{name:"javascript",typescript:!0},cts:{name:"javascript",typescript:!0},jsx:{name:"javascript",jsx:!0},tsx:{name:"javascript",typescript:!0,jsx:!0}},f=Be();return Os(async()=>{const d=mfe(f,o,{...s,mode:c[e.mode||""]||e.mode,readOnly:e.readOnly?!0:void 0,extraKeys:{"Cmd-S":function(h){r("save",h.getValue())},"Ctrl-S":function(h){r("save",h.getValue())}}});d.setSize("100%","100%"),d.clearHistory(),Zn.value=d,setTimeout(()=>Zn.value.refresh(),100)}),(d,h)=>(oe(),me("div",bfe,[Y("textarea",{ref_key:"el",ref:f},null,512)]))}}),wfe=ft({__name:"ViewEditor",props:{file:{}},emits:["draft"],setup(e,{emit:t}){const r=e,o=t,s=Be(""),c=Fr(void 0),f=Be(!1),d=Be(!0);Ht(()=>r.file,async()=>{var A;d.value=!0;try{if(!r.file||!((A=r.file)!=null&&A.filepath)){s.value="",c.value=s.value,f.value=!1;return}s.value=await yt.rpc.readTestFile(r.file.filepath)||"",c.value=s.value,f.value=!1}finally{ln(()=>d.value=!1)}},{immediate:!0}),Ht(()=>[d.value,r.file,Rd.value],([A,H,z])=>{A||(z!=null?ln(()=>{var re;const J={line:z??0,ch:0};(re=Zn.value)==null||re.scrollIntoView(J,100),ln(()=>{var te,j;(te=Zn.value)==null||te.focus(),(j=Zn.value)==null||j.setCursor(J)})}):ln(()=>{var J;(J=Zn.value)==null||J.focus()}))},{flush:"post"});const h=Me(()=>{var A,H;return((H=(A=r.file)==null?void 0:A.filepath)==null?void 0:H.split(/\./g).pop())||"js"}),g=Be(),v=Me(()=>{var A;return(A=g.value)==null?void 0:A.cm}),y=Me(()=>{var A;return((A=r.file)==null?void 0:A.tasks.filter(H=>{var z;return((z=H.result)==null?void 0:z.state)==="fail"}))||[]}),b=[],x=[],T=[],E=Be(!1);function M(){T.forEach(([A,H,z])=>{A.removeEventListener("click",H),z()}),T.length=0}Lw(g,()=>{var A;(A=Zn.value)==null||A.refresh()});function N(){f.value=c.value!==Zn.value.getValue()}Ht(f,A=>{o("draft",A)},{immediate:!0});function L(A){const H=((A==null?void 0:A.stacks)||[]).filter(ne=>{var K;return ne.file&&ne.file===((K=r.file)==null?void 0:K.filepath)}),z=H==null?void 0:H[0];if(!z)return;const J=document.createElement("div");J.className="op80 flex gap-x-2 items-center";const re=document.createElement("pre");re.className="c-red-600 dark:c-red-400",re.textContent=`${" ".repeat(z.column)}^ ${(A==null?void 0:A.nameStr)||A.name}: ${(A==null?void 0:A.message)||""}`,J.appendChild(re);const te=document.createElement("span");te.className="i-carbon-launch c-red-600 dark:c-red-400 hover:cursor-pointer min-w-1em min-h-1em",te.tabIndex=0,te.ariaLabel="Open in Editor",Mb(te,{content:"Open in Editor",placement:"bottom"},!1);const j=async()=>{await pw(z.file,z.line,z.column)};J.appendChild(te),T.push([te,j,()=>Dh(te)]),x.push(Zn.value.addLineClass(z.line-1,"wrap","bg-red-500/10")),b.push(Zn.value.addLineWidget(z.line-1,J))}Ht([v,y],([A])=>{if(!A){M();return}setTimeout(()=>{M(),b.forEach(H=>H.clear()),x.forEach(H=>{var z;return(z=Zn.value)==null?void 0:z.removeLineClass(H,"wrap")}),b.length=0,x.length=0,A.on("changes",N),y.value.forEach(H=>{var z,J;(J=(z=H.result)==null?void 0:z.errors)==null||J.forEach(L)}),E.value||A.clearHistory()},100)},{flush:"post"});async function O(A){E.value=!0,await yt.rpc.saveTestFile(r.file.filepath,A),c.value=A,f.value=!1}return(A,H)=>{const z=Zw;return oe(),ot(z,ii({ref_key:"editor",ref:g,modelValue:q(s),"onUpdate:modelValue":H[0]||(H[0]=J=>Ot(s)?s.value=J:null),"h-full":""},{lineNumbers:!0,readOnly:q(Pr)},{mode:q(h),"data-testid":"code-mirror",onSave:O}),null,16,["modelValue","mode"])}}}),xfe={"w-350":"","max-w-screen":"","h-full":"",flex:"","flex-col":""},_fe={"p-4":"",relative:""},Sfe=Y("p",null,"Module Info",-1),kfe={op50:"","font-mono":"","text-sm":""},Cfe={key:0,"p-5":""},Tfe={grid:"~ cols-2 rows-[min-content_auto]","overflow-hidden":"","flex-auto":""},Efe=Y("div",{p:"x3 y-1","bg-overlay":"",border:"base b t r"}," Source ",-1),Lfe=Y("div",{p:"x3 y-1","bg-overlay":"",border:"base b t"}," Transformed ",-1),Afe={key:0},Mfe={p:"x3 y-1","bg-overlay":"",border:"base b t"},Nfe=ft({__name:"ModuleTransformResultView",props:{id:{},projectName:{}},emits:["close"],setup(e,{emit:t}){const r=e,o=t,s=ace(()=>yt.rpc.getTransformResult(r.projectName,r.id,!!No)),c=Me(()=>{var g;return((g=r.id)==null?void 0:g.split(/\./g).pop())||"js"}),f=Me(()=>{var g,v;return((v=(g=s.value)==null?void 0:g.source)==null?void 0:v.trim())||""}),d=Me(()=>{var g,v;return((v=(g=s.value)==null?void 0:g.code)==null?void 0:v.replace(/\/\/# sourceMappingURL=.*\n/,"").trim())||""}),h=Me(()=>{var g,v,y,b;return{mappings:((v=(g=s.value)==null?void 0:g.map)==null?void 0:v.mappings)??"",version:(b=(y=s.value)==null?void 0:y.map)==null?void 0:b.version}});return _w("Escape",()=>{o("close")}),(g,v)=>{const y=hi,b=Zw;return oe(),me("div",xfe,[Y("div",_fe,[Sfe,Y("p",kfe,qe(g.id),1),Oe(y,{icon:"i-carbon-close",absolute:"","top-5px":"","right-5px":"","text-2xl":"",onClick:v[0]||(v[0]=x=>o("close"))})]),q(s)?(oe(),me(ut,{key:1},[Y("div",Tfe,[Efe,Lfe,Oe(b,ii({"h-full":"","model-value":q(f),"read-only":""},{lineNumbers:!0},{mode:q(c)}),null,16,["model-value","mode"]),Oe(b,ii({"h-full":"","model-value":q(d),"read-only":""},{lineNumbers:!0},{mode:q(c)}),null,16,["model-value","mode"])]),q(h).mappings!==""?(oe(),me("div",Afe,[Y("div",Mfe," Source map (v"+qe(q(h).version)+") ",1),Oe(b,ii({"model-value":q(h).mappings,"read-only":""},{lineNumbers:!0},{mode:q(c)}),null,16,["model-value","mode"])])):et("",!0)],64)):(oe(),me("div",Cfe," No transform result found for this module. "))])}}});function $fe(e,t){let r;return(...o)=>{r!==void 0&&clearTimeout(r),r=setTimeout(()=>e(...o),t)}}var Ud="http://www.w3.org/1999/xhtml";const l0={svg:"http://www.w3.org/2000/svg",xhtml:Ud,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Iu(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),l0.hasOwnProperty(t)?{space:l0[t],local:e}:e}function Ofe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Ud&&t.documentElement.namespaceURI===Ud?t.createElement(e):t.createElementNS(r,e)}}function Pfe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Jw(e){var t=Iu(e);return(t.local?Pfe:Ofe)(t)}function Rfe(){}function Yh(e){return e==null?Rfe:function(){return this.querySelector(e)}}function Dfe(e){typeof e!="function"&&(e=Yh(e));for(var t=this._groups,r=t.length,o=new Array(r),s=0;s=O&&(O=L+1);!(H=M[O])&&++O=0;)(f=o[s])&&(c&&f.compareDocumentPosition(c)^4&&c.parentNode.insertBefore(f,c),c=f);return this}function lde(e){e||(e=ade);function t(y,b){return y&&b?e(y.__data__,b.__data__):!y-!b}for(var r=this._groups,o=r.length,s=new Array(o),c=0;ct?1:e>=t?0:NaN}function cde(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ude(){return Array.from(this)}function fde(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?_de:typeof t=="function"?kde:Sde)(e,t,r??"")):Ns(this.node(),e)}function Ns(e,t){return e.style.getPropertyValue(t)||r1(e).getComputedStyle(e,null).getPropertyValue(t)}function Tde(e){return function(){delete this[e]}}function Ede(e,t){return function(){this[e]=t}}function Lde(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function Ade(e,t){return arguments.length>1?this.each((t==null?Tde:typeof t=="function"?Lde:Ede)(e,t)):this.node()[e]}function i1(e){return e.trim().split(/^|\s+/)}function Zh(e){return e.classList||new o1(e)}function o1(e){this._node=e,this._names=i1(e.getAttribute("class")||"")}o1.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function s1(e,t){for(var r=Zh(e),o=-1,s=t.length;++o=0&&(r=t.slice(o+1),t=t.slice(0,o)),{type:t,name:r}})}function rhe(e){return function(){var t=this.__on;if(t){for(var r=0,o=-1,s=t.length,c;r{}};function ma(){for(var e=0,t=arguments.length,r={},o;e=0&&(o=r.slice(s+1),r=r.slice(0,s)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:o}})}Lc.prototype=ma.prototype={constructor:Lc,on:function(e,t){var r=this._,o=hhe(e+"",r),s,c=-1,f=o.length;if(arguments.length<2){for(;++c0)for(var r=new Array(s),o=0,s,c;o()=>e;function Vd(e,{sourceEvent:t,subject:r,target:o,identifier:s,active:c,x:f,y:d,dx:h,dy:g,dispatch:v}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:c,enumerable:!0,configurable:!0},x:{value:f,enumerable:!0,configurable:!0},y:{value:d,enumerable:!0,configurable:!0},dx:{value:h,enumerable:!0,configurable:!0},dy:{value:g,enumerable:!0,configurable:!0},_:{value:v}})}Vd.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function vhe(e){return!e.ctrlKey&&!e.button}function mhe(){return this.parentNode}function yhe(e,t){return t??{x:e.x,y:e.y}}function bhe(){return navigator.maxTouchPoints||"ontouchstart"in this}function whe(){var e=vhe,t=mhe,r=yhe,o=bhe,s={},c=ma("start","drag","end"),f=0,d,h,g,v,y=0;function b(A){A.on("mousedown.drag",x).filter(o).on("touchstart.drag",M).on("touchmove.drag",N,ghe).on("touchend.drag touchcancel.drag",L).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(A,H){if(!(v||!e.call(this,A,H))){var z=O(this,t.call(this,A,H),A,H,"mouse");z&&(Pn(A.view).on("mousemove.drag",T,Ql).on("mouseup.drag",E,Ql),u1(A.view),id(A),g=!1,d=A.clientX,h=A.clientY,z("start",A))}}function T(A){if(bs(A),!g){var H=A.clientX-d,z=A.clientY-h;g=H*H+z*z>y}s.mouse("drag",A)}function E(A){Pn(A.view).on("mousemove.drag mouseup.drag",null),f1(A.view,g),bs(A),s.mouse("end",A)}function M(A,H){if(e.call(this,A,H)){var z=A.changedTouches,J=t.call(this,A,H),re=z.length,te,j;for(te=0;te>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?dc(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?dc(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=_he.exec(e))?new Dn(t[1],t[2],t[3],1):(t=She.exec(e))?new Dn(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=khe.exec(e))?dc(t[1],t[2],t[3],t[4]):(t=Che.exec(e))?dc(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=The.exec(e))?g0(t[1],t[2]/100,t[3]/100,1):(t=Ehe.exec(e))?g0(t[1],t[2]/100,t[3]/100,t[4]):c0.hasOwnProperty(e)?d0(c0[e]):e==="transparent"?new Dn(NaN,NaN,NaN,0):null}function d0(e){return new Dn(e>>16&255,e>>8&255,e&255,1)}function dc(e,t,r,o){return o<=0&&(e=t=r=NaN),new Dn(e,t,r,o)}function Mhe(e){return e instanceof ya||(e=na(e)),e?(e=e.rgb(),new Dn(e.r,e.g,e.b,e.opacity)):new Dn}function jd(e,t,r,o){return arguments.length===1?Mhe(e):new Dn(e,t,r,o??1)}function Dn(e,t,r,o){this.r=+e,this.g=+t,this.b=+r,this.opacity=+o}Jh(Dn,jd,d1(ya,{brighter(e){return e=e==null?iu:Math.pow(iu,e),new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ea:Math.pow(ea,e),new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dn(Eo(this.r),Eo(this.g),Eo(this.b),ou(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:h0,formatHex:h0,formatHex8:Nhe,formatRgb:p0,toString:p0}));function h0(){return`#${ko(this.r)}${ko(this.g)}${ko(this.b)}`}function Nhe(){return`#${ko(this.r)}${ko(this.g)}${ko(this.b)}${ko((isNaN(this.opacity)?1:this.opacity)*255)}`}function p0(){const e=ou(this.opacity);return`${e===1?"rgb(":"rgba("}${Eo(this.r)}, ${Eo(this.g)}, ${Eo(this.b)}${e===1?")":`, ${e})`}`}function ou(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Eo(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ko(e){return e=Eo(e),(e<16?"0":"")+e.toString(16)}function g0(e,t,r,o){return o<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new yr(e,t,r,o)}function h1(e){if(e instanceof yr)return new yr(e.h,e.s,e.l,e.opacity);if(e instanceof ya||(e=na(e)),!e)return new yr;if(e instanceof yr)return e;e=e.rgb();var t=e.r/255,r=e.g/255,o=e.b/255,s=Math.min(t,r,o),c=Math.max(t,r,o),f=NaN,d=c-s,h=(c+s)/2;return d?(t===c?f=(r-o)/d+(r0&&h<1?0:f,new yr(f,d,h,e.opacity)}function $he(e,t,r,o){return arguments.length===1?h1(e):new yr(e,t,r,o??1)}function yr(e,t,r,o){this.h=+e,this.s=+t,this.l=+r,this.opacity=+o}Jh(yr,$he,d1(ya,{brighter(e){return e=e==null?iu:Math.pow(iu,e),new yr(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ea:Math.pow(ea,e),new yr(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,o=r+(r<.5?r:1-r)*t,s=2*r-o;return new Dn(od(e>=240?e-240:e+120,s,o),od(e,s,o),od(e<120?e+240:e-120,s,o),this.opacity)},clamp(){return new yr(v0(this.h),hc(this.s),hc(this.l),ou(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ou(this.opacity);return`${e===1?"hsl(":"hsla("}${v0(this.h)}, ${hc(this.s)*100}%, ${hc(this.l)*100}%${e===1?")":`, ${e})`}`}}));function v0(e){return e=(e||0)%360,e<0?e+360:e}function hc(e){return Math.max(0,Math.min(1,e||0))}function od(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const p1=e=>()=>e;function Ohe(e,t){return function(r){return e+r*t}}function Phe(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(o){return Math.pow(e+o*t,r)}}function Rhe(e){return(e=+e)==1?g1:function(t,r){return r-t?Phe(t,r,e):p1(isNaN(t)?r:t)}}function g1(e,t){var r=t-e;return r?Ohe(e,r):p1(isNaN(e)?t:e)}const m0=function e(t){var r=Rhe(t);function o(s,c){var f=r((s=jd(s)).r,(c=jd(c)).r),d=r(s.g,c.g),h=r(s.b,c.b),g=g1(s.opacity,c.opacity);return function(v){return s.r=f(v),s.g=d(v),s.b=h(v),s.opacity=g(v),s+""}}return o.gamma=e,o}(1);function Fi(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var Gd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sd=new RegExp(Gd.source,"g");function Dhe(e){return function(){return e}}function zhe(e){return function(t){return e(t)+""}}function Ihe(e,t){var r=Gd.lastIndex=sd.lastIndex=0,o,s,c,f=-1,d=[],h=[];for(e=e+"",t=t+"";(o=Gd.exec(e))&&(s=sd.exec(t));)(c=s.index)>r&&(c=t.slice(r,c),d[f]?d[f]+=c:d[++f]=c),(o=o[0])===(s=s[0])?d[f]?d[f]+=s:d[++f]=s:(d[++f]=null,h.push({i:f,x:Fi(o,s)})),r=sd.lastIndex;return r180?v+=360:v-g>180&&(g+=360),b.push({i:y.push(s(y)+"rotate(",null,o)-2,x:Fi(g,v)})):v&&y.push(s(y)+"rotate("+v+o)}function d(g,v,y,b){g!==v?b.push({i:y.push(s(y)+"skewX(",null,o)-2,x:Fi(g,v)}):v&&y.push(s(y)+"skewX("+v+o)}function h(g,v,y,b,x,T){if(g!==y||v!==b){var E=x.push(s(x)+"scale(",null,",",null,")");T.push({i:E-4,x:Fi(g,y)},{i:E-2,x:Fi(v,b)})}else(y!==1||b!==1)&&x.push(s(x)+"scale("+y+","+b+")")}return function(g,v){var y=[],b=[];return g=e(g),v=e(v),c(g.translateX,g.translateY,v.translateX,v.translateY,y,b),f(g.rotate,v.rotate,y,b),d(g.skewX,v.skewX,y,b),h(g.scaleX,g.scaleY,v.scaleX,v.scaleY,y,b),g=v=null,function(x){for(var T=-1,E=b.length,M;++T=0&&e._call.call(void 0,t),e=e._next;--$s}function w0(){$o=(lu=ra.now())+Fu,$s=wl=0;try{Khe()}finally{$s=0,Yhe(),$o=0}}function Xhe(){var e=ra.now(),t=e-lu;t>y1&&(Fu-=t,lu=e)}function Yhe(){for(var e,t=su,r,o=1/0;t;)t._call?(o>t._time&&(o=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:su=r);xl=e,Xd(o)}function Xd(e){if(!$s){wl&&(wl=clearTimeout(wl));var t=e-$o;t>24?(e<1/0&&(wl=setTimeout(w0,e-ra.now()-Fu)),vl&&(vl=clearInterval(vl))):(vl||(lu=ra.now(),vl=setInterval(Xhe,y1)),$s=1,b1(w0))}}function x0(e,t,r){var o=new au;return t=t==null?0:+t,o.restart(s=>{o.stop(),e(s+t)},t,r),o}var Zhe=ma("start","end","cancel","interrupt"),Jhe=[],w1=0,_0=1,Yd=2,Ac=3,S0=4,Zd=5,Mc=6;function Hu(e,t,r,o,s,c){var f=e.__transition;if(!f)e.__transition={};else if(r in f)return;Qhe(e,r,{name:t,index:o,group:s,on:Zhe,tween:Jhe,time:c.time,delay:c.delay,duration:c.duration,ease:c.ease,timer:null,state:w1})}function tp(e,t){var r=Sr(e,t);if(r.state>w1)throw new Error("too late; already scheduled");return r}function qr(e,t){var r=Sr(e,t);if(r.state>Ac)throw new Error("too late; already running");return r}function Sr(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function Qhe(e,t,r){var o=e.__transition,s;o[t]=r,r.timer=ep(c,0,r.time);function c(g){r.state=_0,r.timer.restart(f,r.delay,r.time),r.delay<=g&&f(g-r.delay)}function f(g){var v,y,b,x;if(r.state!==_0)return h();for(v in o)if(x=o[v],x.name===r.name){if(x.state===Ac)return x0(f);x.state===S0?(x.state=Mc,x.timer.stop(),x.on.call("interrupt",e,e.__data__,x.index,x.group),delete o[v]):+vYd&&o.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function Ape(e,t,r){var o,s,c=Lpe(t)?tp:qr;return function(){var f=c(this,e),d=f.on;d!==o&&(s=(o=d).copy()).on(t,r),f.on=s}}function Mpe(e,t){var r=this._id;return arguments.length<2?Sr(this.node(),r).on.on(e):this.each(Ape(r,e,t))}function Npe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function $pe(){return this.on("end.remove",Npe(this._id))}function Ope(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Yh(e));for(var o=this._groups,s=o.length,c=new Array(s),f=0;f()=>e;function ige(e,{sourceEvent:t,target:r,transform:o,dispatch:s}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:s}})}function ti(e,t,r){this.k=e,this.x=t,this.y=r}ti.prototype={constructor:ti,scale:function(e){return e===1?this:new ti(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ti(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var rp=new ti(1,0,0);ti.prototype;function ld(e){e.stopImmediatePropagation()}function ml(e){e.preventDefault(),e.stopImmediatePropagation()}function oge(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function sge(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function k0(){return this.__zoom||rp}function lge(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function age(){return navigator.maxTouchPoints||"ontouchstart"in this}function cge(e,t,r){var o=e.invertX(t[0][0])-r[0][0],s=e.invertX(t[1][0])-r[1][0],c=e.invertY(t[0][1])-r[0][1],f=e.invertY(t[1][1])-r[1][1];return e.translate(s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s),f>c?(c+f)/2:Math.min(0,c)||Math.max(0,f))}function uge(){var e=oge,t=sge,r=cge,o=lge,s=age,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],d=250,h=jhe,g=ma("start","zoom","end"),v,y,b,x=500,T=150,E=0,M=10;function N(I){I.property("__zoom",k0).on("wheel.zoom",re,{passive:!1}).on("mousedown.zoom",te).on("dblclick.zoom",j).filter(s).on("touchstart.zoom",ne).on("touchmove.zoom",K).on("touchend.zoom touchcancel.zoom",V).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}N.transform=function(I,k,B,W){var ie=I.selection?I.selection():I;ie.property("__zoom",k0),I!==ie?H(I,k,B,W):ie.interrupt().each(function(){z(this,arguments).event(W).start().zoom(null,typeof k=="function"?k.apply(this,arguments):k).end()})},N.scaleBy=function(I,k,B,W){N.scaleTo(I,function(){var ie=this.__zoom.k,ye=typeof k=="function"?k.apply(this,arguments):k;return ie*ye},B,W)},N.scaleTo=function(I,k,B,W){N.transform(I,function(){var ie=t.apply(this,arguments),ye=this.__zoom,Ne=B==null?A(ie):typeof B=="function"?B.apply(this,arguments):B,We=ye.invert(Ne),je=typeof k=="function"?k.apply(this,arguments):k;return r(O(L(ye,je),Ne,We),ie,f)},B,W)},N.translateBy=function(I,k,B,W){N.transform(I,function(){return r(this.__zoom.translate(typeof k=="function"?k.apply(this,arguments):k,typeof B=="function"?B.apply(this,arguments):B),t.apply(this,arguments),f)},null,W)},N.translateTo=function(I,k,B,W,ie){N.transform(I,function(){var ye=t.apply(this,arguments),Ne=this.__zoom,We=W==null?A(ye):typeof W=="function"?W.apply(this,arguments):W;return r(rp.translate(We[0],We[1]).scale(Ne.k).translate(typeof k=="function"?-k.apply(this,arguments):-k,typeof B=="function"?-B.apply(this,arguments):-B),ye,f)},W,ie)};function L(I,k){return k=Math.max(c[0],Math.min(c[1],k)),k===I.k?I:new ti(k,I.x,I.y)}function O(I,k,B){var W=k[0]-B[0]*I.k,ie=k[1]-B[1]*I.k;return W===I.x&&ie===I.y?I:new ti(I.k,W,ie)}function A(I){return[(+I[0][0]+ +I[1][0])/2,(+I[0][1]+ +I[1][1])/2]}function H(I,k,B,W){I.on("start.zoom",function(){z(this,arguments).event(W).start()}).on("interrupt.zoom end.zoom",function(){z(this,arguments).event(W).end()}).tween("zoom",function(){var ie=this,ye=arguments,Ne=z(ie,ye).event(W),We=t.apply(ie,ye),je=B==null?A(We):typeof B=="function"?B.apply(ie,ye):B,it=Math.max(We[1][0]-We[0][0],We[1][1]-We[0][1]),rt=ie.__zoom,Ze=typeof k=="function"?k.apply(ie,ye):k,Ee=h(rt.invert(je).concat(it/rt.k),Ze.invert(je).concat(it/Ze.k));return function(X){if(X===1)X=Ze;else{var ae=Ee(X),de=it/ae[2];X=new ti(de,je[0]-ae[0]*de,je[1]-ae[1]*de)}Ne.zoom(null,X)}})}function z(I,k,B){return!B&&I.__zooming||new J(I,k)}function J(I,k){this.that=I,this.args=k,this.active=0,this.sourceEvent=null,this.extent=t.apply(I,k),this.taps=0}J.prototype={event:function(I){return I&&(this.sourceEvent=I),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(I,k){return this.mouse&&I!=="mouse"&&(this.mouse[1]=k.invert(this.mouse[0])),this.touch0&&I!=="touch"&&(this.touch0[1]=k.invert(this.touch0[0])),this.touch1&&I!=="touch"&&(this.touch1[1]=k.invert(this.touch1[0])),this.that.__zoom=k,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(I){var k=Pn(this.that).datum();g.call(I,this.that,new ige(I,{sourceEvent:this.sourceEvent,target:N,type:I,transform:this.that.__zoom,dispatch:g}),k)}};function re(I,...k){if(!e.apply(this,arguments))return;var B=z(this,k).event(I),W=this.__zoom,ie=Math.max(c[0],Math.min(c[1],W.k*Math.pow(2,o.apply(this,arguments)))),ye=ei(I);if(B.wheel)(B.mouse[0][0]!==ye[0]||B.mouse[0][1]!==ye[1])&&(B.mouse[1]=W.invert(B.mouse[0]=ye)),clearTimeout(B.wheel);else{if(W.k===ie)return;B.mouse=[ye,W.invert(ye)],Nc(this),B.start()}ml(I),B.wheel=setTimeout(Ne,T),B.zoom("mouse",r(O(L(W,ie),B.mouse[0],B.mouse[1]),B.extent,f));function Ne(){B.wheel=null,B.end()}}function te(I,...k){if(b||!e.apply(this,arguments))return;var B=I.currentTarget,W=z(this,k,!0).event(I),ie=Pn(I.view).on("mousemove.zoom",je,!0).on("mouseup.zoom",it,!0),ye=ei(I,B),Ne=I.clientX,We=I.clientY;u1(I.view),ld(I),W.mouse=[ye,this.__zoom.invert(ye)],Nc(this),W.start();function je(rt){if(ml(rt),!W.moved){var Ze=rt.clientX-Ne,Ee=rt.clientY-We;W.moved=Ze*Ze+Ee*Ee>E}W.event(rt).zoom("mouse",r(O(W.that.__zoom,W.mouse[0]=ei(rt,B),W.mouse[1]),W.extent,f))}function it(rt){ie.on("mousemove.zoom mouseup.zoom",null),f1(rt.view,W.moved),ml(rt),W.event(rt).end()}}function j(I,...k){if(e.apply(this,arguments)){var B=this.__zoom,W=ei(I.changedTouches?I.changedTouches[0]:I,this),ie=B.invert(W),ye=B.k*(I.shiftKey?.5:2),Ne=r(O(L(B,ye),W,ie),t.apply(this,k),f);ml(I),d>0?Pn(this).transition().duration(d).call(H,Ne,W,I):Pn(this).call(N.transform,Ne,W,I)}}function ne(I,...k){if(e.apply(this,arguments)){var B=I.touches,W=B.length,ie=z(this,k,I.changedTouches.length===W).event(I),ye,Ne,We,je;for(ld(I),Ne=0;Ne=(y=(d+g)/2))?d=y:g=y,(M=r>=(b=(h+v)/2))?h=b:v=b,s=c,!(c=c[N=M<<1|E]))return s[N]=f,e;if(x=+e._x.call(null,c.data),T=+e._y.call(null,c.data),t===x&&r===T)return f.next=c,s?s[N]=f:e._root=f,e;do s=s?s[N]=new Array(4):e._root=new Array(4),(E=t>=(y=(d+g)/2))?d=y:g=y,(M=r>=(b=(h+v)/2))?h=b:v=b;while((N=M<<1|E)===(L=(T>=b)<<1|x>=y));return s[L]=c,s[N]=f,e}function dge(e){var t,r,o=e.length,s,c,f=new Array(o),d=new Array(o),h=1/0,g=1/0,v=-1/0,y=-1/0;for(r=0;rv&&(v=s),cy&&(y=c));if(h>v||g>y)return this;for(this.cover(h,g).cover(v,y),r=0;re||e>=s||o>t||t>=c;)switch(g=(tv||(d=T.y0)>y||(h=T.x1)=N)<<1|e>=M)&&(T=b[b.length-1],b[b.length-1]=b[b.length-1-E],b[b.length-1-E]=T)}else{var L=e-+this._x.call(null,x.data),O=t-+this._y.call(null,x.data),A=L*L+O*O;if(A=(b=(f+h)/2))?f=b:h=b,(E=y>=(x=(d+g)/2))?d=x:g=x,t=r,!(r=r[M=E<<1|T]))return this;if(!r.length)break;(t[M+1&3]||t[M+2&3]||t[M+3&3])&&(o=t,N=M)}for(;r.data!==e;)if(s=r,!(r=r.next))return this;return(c=r.next)&&delete r.next,s?(c?s.next=c:delete s.next,this):t?(c?t[M]=c:delete t[M],(r=t[0]||t[1]||t[2]||t[3])&&r===(t[3]||t[2]||t[1]||t[0])&&!r.length&&(o?o[N]=r:this._root=r),this):(this._root=c,this)}function yge(e){for(var t=0,r=e.length;tb.index){var ne=x-re.x-re.vx,K=T-re.y-re.vy,V=ne*ne+K*K;Vx+j||zT+j||Jg.r&&(g.r=g[v].r)}function h(){if(t){var g,v=t.length,y;for(r=new Array(v),g=0;g[t(H,z,f),H])),A;for(M=0,d=new Array(N);M(e=($ge*e+Oge)%E0)/E0}function Rge(e){return e.x}function Dge(e){return e.y}var zge=10,Ige=Math.PI*(3-Math.sqrt(5));function Fge(e){var t,r=1,o=.001,s=1-Math.pow(o,1/300),c=0,f=.6,d=new Map,h=ep(y),g=ma("tick","end"),v=Pge();e==null&&(e=[]);function y(){b(),g.call("tick",t),r1?(M==null?d.delete(E):d.set(E,T(M)),t):d.get(E)},find:function(E,M,N){var L=0,O=e.length,A,H,z,J,re;for(N==null?N=1/0:N*=N,L=0;L1?(g.on(E,M),t):g.on(E)}}}function Hge(){var e,t,r,o,s=Cn(-30),c,f=1,d=1/0,h=.81;function g(x){var T,E=e.length,M=ip(e,Rge,Dge).visitAfter(y);for(o=x,T=0;T=d)return;(x.data!==t||x.next)&&(N===0&&(N=Bi(r),A+=N*N),L===0&&(L=Bi(r),A+=L*L),At in e?Wge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Dt=(e,t,r)=>Uge(e,typeof t!="symbol"?t+"":t,r);function Vge(){return{drag:{end:0,start:.1},filter:{link:1,type:.1,unlinked:{include:.1,exclude:.1}},focus:{acquire:()=>.1,release:()=>.1},initialize:1,labels:{links:{hide:0,show:0},nodes:{hide:0,show:0}},resize:.5}}function L0(e){if(typeof e=="object"&&e!==null){if(typeof Object.getPrototypeOf=="function"){const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}return Object.prototype.toString.call(e)==="[object Object]"}return!1}function Wi(...e){return e.reduce((t,r)=>{if(Array.isArray(r))throw new TypeError("Arguments provided to deepmerge must be objects, not arrays.");return Object.keys(r).forEach(o=>{["__proto__","constructor","prototype"].includes(o)||(Array.isArray(t[o])&&Array.isArray(r[o])?t[o]=Wi.options.mergeArrays?Array.from(new Set(t[o].concat(r[o]))):r[o]:L0(t[o])&&L0(r[o])?t[o]=Wi(t[o],r[o]):t[o]=r[o])}),t},{})}const C1={mergeArrays:!0};Wi.options=C1;Wi.withOptions=(e,...t)=>{Wi.options={mergeArrays:!0,...e};const r=Wi(...t);return Wi.options=C1,r};function jge(){return{centering:{enabled:!0,strength:.1},charge:{enabled:!0,strength:-1},collision:{enabled:!0,strength:1,radiusMultiplier:2},link:{enabled:!0,strength:1,length:128}}}function Gge(){return{includeUnlinked:!0,linkFilter:()=>!0,nodeTypeFilter:void 0,showLinkLabels:!0,showNodeLabels:!0}}function T1(e){e.preventDefault(),e.stopPropagation()}function E1(e){return typeof e=="number"}function Qi(e,t){return E1(e.nodeRadius)?e.nodeRadius:e.nodeRadius(t)}function Kge(e){return`${e.source.id}-${e.target.id}`}function L1(e){return`link-arrow-${e}`.replace(/[()]/g,"~")}function Xge(e){return`url(#${L1(e.color)})`}function Yge(e){return{size:e,padding:(t,r)=>Qi(r,t)+2*e,ref:[e/2,e/2],path:[[0,0],[0,e],[e,e/2]],viewBox:[0,0,e,e].join(",")}}const A1={Arrow:e=>Yge(e)},Zge=(e,t,r)=>[t/2,r/2],M1=(e,t,r)=>[A0(0,t),A0(0,r)];function A0(e,t){return Math.random()*(t-e)+e}function Jge(e){const t=Object.fromEntries(e.nodes.map(r=>[r.id,[r.x,r.y]]));return(r,o,s)=>{const[c,f]=t[r.id]??[];return!c||!f?M1(r,o,s):[c,f]}}const Jd={Centered:Zge,Randomized:M1,Stable:Jge};function Qge(){return{autoResize:!1,callbacks:{},hooks:{},initial:Gge(),nodeRadius:16,marker:A1.Arrow(4),modifiers:{},positionInitializer:Jd.Centered,simulation:{alphas:Vge(),forces:jge()},zoom:{initial:1,min:.1,max:2}}}function eve(e={}){return Wi.withOptions({mergeArrays:!1},Qge(),e)}function tve({applyZoom:e,container:t,onDoubleClick:r,onPointerMoved:o,onPointerUp:s,offset:[c,f],scale:d,zoom:h}){const g=t.classed("graph",!0).append("svg").attr("height","100%").attr("width","100%").call(h).on("contextmenu",v=>T1(v)).on("dblclick",v=>r==null?void 0:r(v)).on("dblclick.zoom",null).on("pointermove",v=>o==null?void 0:o(v)).on("pointerup",v=>s==null?void 0:s(v)).style("cursor","grab");return e&&g.call(h.transform,rp.translate(c,f).scale(d)),g.append("g")}function nve({canvas:e,scale:t,xOffset:r,yOffset:o}){e==null||e.attr("transform",`translate(${r},${o})scale(${t})`)}function rve({config:e,onDragStart:t,onDragEnd:r}){var o,s;const c=whe().filter(f=>f.type==="mousedown"?f.button===0:f.type==="touchstart"?f.touches.length===1:!1).on("start",(f,d)=>{f.active===0&&t(f,d),Pn(f.sourceEvent.target).classed("grabbed",!0),d.fx=d.x,d.fy=d.y}).on("drag",(f,d)=>{d.fx=f.x,d.fy=f.y}).on("end",(f,d)=>{f.active===0&&r(f,d),Pn(f.sourceEvent.target).classed("grabbed",!1),d.fx=void 0,d.fy=void 0});return(s=(o=e.modifiers).drag)==null||s.call(o,c),c}function ive({graph:e,filter:t,focusedNode:r,includeUnlinked:o,linkFilter:s}){const c=e.links.filter(h=>t.includes(h.source.type)&&t.includes(h.target.type)&&s(h)),f=h=>c.find(g=>g.source.id===h.id||g.target.id===h.id)!==void 0,d=e.nodes.filter(h=>t.includes(h.type)&&(o||f(h)));return r===void 0||!t.includes(r.type)?{nodes:d,links:c}:ove({nodes:d,links:c},r)}function ove(e,t){const r=[...sve(e,t),...lve(e,t)],o=r.flatMap(s=>[s.source,s.target]);return{nodes:[...new Set([...o,t])],links:[...new Set(r)]}}function sve(e,t){return N1(e,t,(r,o)=>r.target.id===o.id)}function lve(e,t){return N1(e,t,(r,o)=>r.source.id===o.id)}function N1(e,t,r){const o=new Set(e.links),s=new Set([t]),c=[];for(;o.size>0;){const f=[...o].filter(d=>[...s].some(h=>r(d,h)));if(f.length===0)return c;f.forEach(d=>{s.add(d.source),s.add(d.target),c.push(d),o.delete(d)})}return c}function Qd(e){return e.x??0}function eh(e){return e.y??0}function sp({source:e,target:t}){const r=new _n(Qd(e),eh(e)),o=new _n(Qd(t),eh(t)),s=o.subtract(r),c=s.length(),f=s.normalize(),d=f.multiply(-1);return{s:r,t:o,dist:c,norm:f,endNorm:d}}function $1({center:e,node:t}){const r=new _n(Qd(t),eh(t));let o=e;return r.x===o.x&&r.y===o.y&&(o=o.add(new _n(0,1))),{n:r,c:o}}function O1({config:e,source:t,target:r}){const{s:o,t:s,norm:c}=sp({config:e,source:t,target:r}),f=o.add(c.multiply(Qi(e,t)-1)),d=s.subtract(c.multiply(e.marker.padding(r,e)));return{start:f,end:d}}function ave(e){const{start:t,end:r}=O1(e);return`M${t.x},${t.y} - L${r.x},${r.y}`}function cve(e){const{start:t,end:r}=O1(e),o=r.subtract(t).multiply(.5),s=t.add(o);return`translate(${s.x-8},${s.y-4})`}function uve({config:e,source:t,target:r}){const{s:o,t:s,dist:c,norm:f,endNorm:d}=sp({config:e,source:t,target:r}),h=10,g=f.rotateByDegrees(-h).multiply(Qi(e,t)-1).add(o),v=d.rotateByDegrees(h).multiply(Qi(e,r)).add(s).add(d.rotateByDegrees(h).multiply(2*e.marker.size)),y=1.2*c;return`M${g.x},${g.y} - A${y},${y},0,0,1,${v.x},${v.y}`}function fve({center:e,config:t,node:r}){const{n:o,c:s}=$1({center:e,config:t,node:r}),c=Qi(t,r),f=o.subtract(s),d=f.multiply(1/f.length()),h=40,g=d.rotateByDegrees(h).multiply(c-1).add(o),v=d.rotateByDegrees(-h).multiply(c).add(o).add(d.rotateByDegrees(-h).multiply(2*t.marker.size));return`M${g.x},${g.y} - A${c},${c},0,1,0,${v.x},${v.y}`}function dve({config:e,source:t,target:r}){const{t:o,dist:s,endNorm:c}=sp({config:e,source:t,target:r}),f=c.rotateByDegrees(10).multiply(.5*s).add(o);return`translate(${f.x},${f.y})`}function hve({center:e,config:t,node:r}){const{n:o,c:s}=$1({center:e,config:t,node:r}),c=o.subtract(s),f=c.multiply(1/c.length()).multiply(3*Qi(t,r)+8).add(o);return`translate(${f.x},${f.y})`}const xs={line:{labelTransform:cve,path:ave},arc:{labelTransform:dve,path:uve},reflexive:{labelTransform:hve,path:fve}};function pve(e){return e.append("g").classed("links",!0).selectAll("path")}function gve({config:e,graph:t,selection:r,showLabels:o}){const s=r==null?void 0:r.data(t.links,c=>Kge(c)).join(c=>{var f,d,h,g;const v=c.append("g"),y=v.append("path").classed("link",!0).style("marker-end",x=>Xge(x)).style("stroke",x=>x.color);(d=(f=e.modifiers).link)==null||d.call(f,y);const b=v.append("text").classed("link__label",!0).style("fill",x=>x.label?x.label.color:null).style("font-size",x=>x.label?x.label.fontSize:null).text(x=>x.label?x.label.text:null);return(g=(h=e.modifiers).linkLabel)==null||g.call(h,b),v});return s==null||s.select(".link__label").attr("opacity",c=>c.label&&o?1:0),s}function vve(e){mve(e),yve(e)}function mve({center:e,config:t,graph:r,selection:o}){o==null||o.selectAll("path").attr("d",s=>s.source.x===void 0||s.source.y===void 0||s.target.x===void 0||s.target.y===void 0?"":s.source.id===s.target.id?xs.reflexive.path({config:t,node:s.source,center:e}):P1(r,s.source,s.target)?xs.arc.path({config:t,source:s.source,target:s.target}):xs.line.path({config:t,source:s.source,target:s.target}))}function yve({config:e,center:t,graph:r,selection:o}){o==null||o.select(".link__label").attr("transform",s=>s.source.x===void 0||s.source.y===void 0||s.target.x===void 0||s.target.y===void 0?"translate(0, 0)":s.source.id===s.target.id?xs.reflexive.labelTransform({config:e,node:s.source,center:t}):P1(r,s.source,s.target)?xs.arc.labelTransform({config:e,source:s.source,target:s.target}):xs.line.labelTransform({config:e,source:s.source,target:s.target}))}function P1(e,t,r){return t.id!==r.id&&e.links.some(o=>o.target.id===t.id&&o.source.id===r.id)&&e.links.some(o=>o.target.id===r.id&&o.source.id===t.id)}function bve(e){return e.append("defs").selectAll("marker")}function wve({config:e,graph:t,selection:r}){return r==null?void 0:r.data(xve(t),o=>o).join(o=>{const s=o.append("marker").attr("id",c=>L1(c)).attr("markerHeight",4*e.marker.size).attr("markerWidth",4*e.marker.size).attr("markerUnits","userSpaceOnUse").attr("orient","auto").attr("refX",e.marker.ref[0]).attr("refY",e.marker.ref[1]).attr("viewBox",e.marker.viewBox).style("fill",c=>c);return s.append("path").attr("d",_ve(e.marker.path)),s})}function xve(e){return[...new Set(e.links.map(t=>t.color))]}function _ve(e){const[t,...r]=e;if(!t)return"M0,0";const[o,s]=t;return r.reduce((c,[f,d])=>`${c}L${f},${d}`,`M${o},${s}`)}function Sve(e){return e.append("g").classed("nodes",!0).selectAll("circle")}function kve({config:e,drag:t,graph:r,onNodeContext:o,onNodeSelected:s,selection:c,showLabels:f}){const d=c==null?void 0:c.data(r.nodes,h=>h.id).join(h=>{var g,v,y,b;const x=h.append("g");t!==void 0&&x.call(t);const T=x.append("circle").classed("node",!0).attr("r",M=>Qi(e,M)).on("contextmenu",(M,N)=>{T1(M),o(N)}).on("pointerdown",(M,N)=>Tve(M,N,s??o)).style("fill",M=>M.color);(v=(g=e.modifiers).node)==null||v.call(g,T);const E=x.append("text").classed("node__label",!0).attr("dy","0.33em").style("fill",M=>M.label?M.label.color:null).style("font-size",M=>M.label?M.label.fontSize:null).style("stroke","none").text(M=>M.label?M.label.text:null);return(b=(y=e.modifiers).nodeLabel)==null||b.call(y,E),x});return d==null||d.select(".node").classed("focused",h=>h.isFocused),d==null||d.select(".node__label").attr("opacity",f?1:0),d}const Cve=500;function Tve(e,t,r){if(e.button!==void 0&&e.button!==0)return;const o=t.lastInteractionTimestamp,s=Date.now();if(o===void 0||s-o>Cve){t.lastInteractionTimestamp=s;return}t.lastInteractionTimestamp=void 0,r(t)}function Eve(e){e==null||e.attr("transform",t=>`translate(${t.x??0},${t.y??0})`)}function Lve({center:e,config:t,graph:r,onTick:o}){var s,c;const f=Fge(r.nodes),d=t.simulation.forces.centering;if(d&&d.enabled){const y=d.strength;f.force("x",qge(()=>e().x).strength(y)).force("y",Bge(()=>e().y).strength(y))}const h=t.simulation.forces.charge;h&&h.enabled&&f.force("charge",Hge().strength(h.strength));const g=t.simulation.forces.collision;g&&g.enabled&&f.force("collision",Age().radius(y=>g.radiusMultiplier*Qi(t,y)));const v=t.simulation.forces.link;return v&&v.enabled&&f.force("link",Nge(r.links).id(y=>y.id).distance(t.simulation.forces.link.length).strength(v.strength)),f.on("tick",()=>o()),(c=(s=t.modifiers).simulation)==null||c.call(s,f),f}function Ave({canvasContainer:e,config:t,min:r,max:o,onZoom:s}){var c,f;const d=uge().scaleExtent([r,o]).filter(h=>{var g;return h.button===0||((g=h.touches)==null?void 0:g.length)>=2}).on("start",()=>e().classed("grabbed",!0)).on("zoom",h=>s(h)).on("end",()=>e().classed("grabbed",!1));return(f=(c=t.modifiers).zoom)==null||f.call(c,d),d}class Mve{constructor(t,r,o){if(Dt(this,"nodeTypes"),Dt(this,"_nodeTypeFilter"),Dt(this,"_includeUnlinked",!0),Dt(this,"_linkFilter",()=>!0),Dt(this,"_showLinkLabels",!0),Dt(this,"_showNodeLabels",!0),Dt(this,"filteredGraph"),Dt(this,"width",0),Dt(this,"height",0),Dt(this,"simulation"),Dt(this,"canvas"),Dt(this,"linkSelection"),Dt(this,"nodeSelection"),Dt(this,"markerSelection"),Dt(this,"zoom"),Dt(this,"drag"),Dt(this,"xOffset",0),Dt(this,"yOffset",0),Dt(this,"scale"),Dt(this,"focusedNode"),Dt(this,"resizeObserver"),this.container=t,this.graph=r,this.config=o,this.scale=o.zoom.initial,this.resetView(),this.graph.nodes.forEach(s=>{const[c,f]=o.positionInitializer(s,this.effectiveWidth,this.effectiveHeight);s.x=s.x??c,s.y=s.y??f}),this.nodeTypes=[...new Set(r.nodes.map(s=>s.type))],this._nodeTypeFilter=[...this.nodeTypes],o.initial){const{includeUnlinked:s,nodeTypeFilter:c,linkFilter:f,showLinkLabels:d,showNodeLabels:h}=o.initial;this._includeUnlinked=s??this._includeUnlinked,this._showLinkLabels=d??this._showLinkLabels,this._showNodeLabels=h??this._showNodeLabels,this._nodeTypeFilter=c??this._nodeTypeFilter,this._linkFilter=f??this._linkFilter}this.filterGraph(void 0),this.initGraph(),this.restart(o.simulation.alphas.initialize),o.autoResize&&(this.resizeObserver=new ResizeObserver($fe(()=>this.resize())),this.resizeObserver.observe(this.container))}get nodeTypeFilter(){return this._nodeTypeFilter}get includeUnlinked(){return this._includeUnlinked}set includeUnlinked(t){this._includeUnlinked=t,this.filterGraph(this.focusedNode);const{include:r,exclude:o}=this.config.simulation.alphas.filter.unlinked,s=t?r:o;this.restart(s)}set linkFilter(t){this._linkFilter=t,this.filterGraph(this.focusedNode),this.restart(this.config.simulation.alphas.filter.link)}get linkFilter(){return this._linkFilter}get showNodeLabels(){return this._showNodeLabels}set showNodeLabels(t){this._showNodeLabels=t;const{hide:r,show:o}=this.config.simulation.alphas.labels.nodes,s=t?o:r;this.restart(s)}get showLinkLabels(){return this._showLinkLabels}set showLinkLabels(t){this._showLinkLabels=t;const{hide:r,show:o}=this.config.simulation.alphas.labels.links,s=t?o:r;this.restart(s)}get effectiveWidth(){return this.width/this.scale}get effectiveHeight(){return this.height/this.scale}get effectiveCenter(){return _n.of([this.width,this.height]).divide(2).subtract(_n.of([this.xOffset,this.yOffset])).divide(this.scale)}resize(){const t=this.width,r=this.height,o=this.container.getBoundingClientRect().width,s=this.container.getBoundingClientRect().height,c=t.toFixed()!==o.toFixed(),f=r.toFixed()!==s.toFixed();if(!c&&!f)return;this.width=this.container.getBoundingClientRect().width,this.height=this.container.getBoundingClientRect().height;const d=this.config.simulation.alphas.resize;this.restart(E1(d)?d:d({oldWidth:t,oldHeight:r,newWidth:o,newHeight:s}))}restart(t){var r;this.markerSelection=wve({config:this.config,graph:this.filteredGraph,selection:this.markerSelection}),this.linkSelection=gve({config:this.config,graph:this.filteredGraph,selection:this.linkSelection,showLabels:this._showLinkLabels}),this.nodeSelection=kve({config:this.config,drag:this.drag,graph:this.filteredGraph,onNodeContext:o=>this.toggleNodeFocus(o),onNodeSelected:this.config.callbacks.nodeClicked,selection:this.nodeSelection,showLabels:this._showNodeLabels}),(r=this.simulation)==null||r.stop(),this.simulation=Lve({center:()=>this.effectiveCenter,config:this.config,graph:this.filteredGraph,onTick:()=>this.onTick()}).alpha(t).restart()}filterNodesByType(t,r){t?this._nodeTypeFilter.push(r):this._nodeTypeFilter=this._nodeTypeFilter.filter(o=>o!==r),this.filterGraph(this.focusedNode),this.restart(this.config.simulation.alphas.filter.type)}shutdown(){var t,r;this.focusedNode!==void 0&&(this.focusedNode.isFocused=!1,this.focusedNode=void 0),(t=this.resizeObserver)==null||t.unobserve(this.container),(r=this.simulation)==null||r.stop()}initGraph(){this.zoom=Ave({config:this.config,canvasContainer:()=>Pn(this.container).select("svg"),min:this.config.zoom.min,max:this.config.zoom.max,onZoom:t=>this.onZoom(t)}),this.canvas=tve({applyZoom:this.scale!==1,container:Pn(this.container),offset:[this.xOffset,this.yOffset],scale:this.scale,zoom:this.zoom}),this.applyZoom(),this.linkSelection=pve(this.canvas),this.nodeSelection=Sve(this.canvas),this.markerSelection=bve(this.canvas),this.drag=rve({config:this.config,onDragStart:()=>{var t;return(t=this.simulation)==null?void 0:t.alphaTarget(this.config.simulation.alphas.drag.start).restart()},onDragEnd:()=>{var t;return(t=this.simulation)==null?void 0:t.alphaTarget(this.config.simulation.alphas.drag.end).restart()}})}onTick(){Eve(this.nodeSelection),vve({config:this.config,center:this.effectiveCenter,graph:this.filteredGraph,selection:this.linkSelection})}resetView(){var t;(t=this.simulation)==null||t.stop(),Pn(this.container).selectChildren().remove(),this.zoom=void 0,this.canvas=void 0,this.linkSelection=void 0,this.nodeSelection=void 0,this.markerSelection=void 0,this.simulation=void 0,this.width=this.container.getBoundingClientRect().width,this.height=this.container.getBoundingClientRect().height}onZoom(t){var r,o,s;this.xOffset=t.transform.x,this.yOffset=t.transform.y,this.scale=t.transform.k,this.applyZoom(),(o=(r=this.config.hooks).afterZoom)==null||o.call(r,this.scale,this.xOffset,this.yOffset),(s=this.simulation)==null||s.restart()}applyZoom(){nve({canvas:this.canvas,scale:this.scale,xOffset:this.xOffset,yOffset:this.yOffset})}toggleNodeFocus(t){t.isFocused?(this.filterGraph(void 0),this.restart(this.config.simulation.alphas.focus.release(t))):this.focusNode(t)}focusNode(t){this.filterGraph(t),this.restart(this.config.simulation.alphas.focus.acquire(t))}filterGraph(t){this.focusedNode!==void 0&&(this.focusedNode.isFocused=!1,this.focusedNode=void 0),t!==void 0&&this._nodeTypeFilter.includes(t.type)&&(t.isFocused=!0,this.focusedNode=t),this.filteredGraph=ive({graph:this.graph,filter:this._nodeTypeFilter,focusedNode:this.focusedNode,includeUnlinked:this._includeUnlinked,linkFilter:this._linkFilter})}}function M0({nodes:e,links:t}){return{nodes:e??[],links:t??[]}}function Nve(e){return{...e}}function R1(e){return{...e,isFocused:!1,lastInteractionTimestamp:void 0}}const $ve={"h-full":"","min-h-75":"","flex-1":"",overflow:"hidden"},Ove={flex:"","items-center":"","gap-4":"","px-3":"","py-2":""},Pve=["id","checked","onChange"],Rve=["for"],Dve=Y("div",{"flex-auto":""},null,-1),zve=ft({__name:"ViewModuleGraph",props:{graph:{},projectName:{}},setup(e){const t=e,{graph:r}=LS(t),o=Be(),s=Be(!1),c=Be(),f=Be();Ch(()=>{s.value===!1&&setTimeout(()=>c.value=void 0,300)},{flush:"post"}),Os(()=>{g()}),bu(()=>{var y;(y=f.value)==null||y.shutdown()}),Ht(r,g);function d(y,b){var x;(x=f.value)==null||x.filterNodesByType(b,y)}function h(y){c.value=y,s.value=!0}function g(){var y;(y=f.value)==null||y.shutdown(),!(!r.value||!o.value)&&(f.value=new Mve(o.value,r.value,eve({nodeRadius:10,autoResize:!0,simulation:{alphas:{initialize:1,resize:({newHeight:b,newWidth:x})=>b===0&&x===0?0:.25},forces:{collision:{radiusMultiplier:10},link:{length:240}}},marker:A1.Arrow(2),modifiers:{node:v},positionInitializer:r.value.nodes.length>1?Jd.Randomized:Jd.Centered,zoom:{min:.5,max:2}})))}function v(y){if(Pr)return;const b=M=>M.button===0;let x=0,T=0,E=0;y.on("pointerdown",(M,N)=>{N.type!=="external"&&(!N.x||!N.y||!b(M)||(x=N.x,T=N.y,E=Date.now()))}).on("pointerup",(M,N)=>{if(N.type==="external"||!N.x||!N.y||!b(M)||Date.now()-E>500)return;const L=N.x-x,O=N.y-T;L**2+O**2<100&&h(N.id)})}return(y,b)=>{var N;const x=hi,T=Nfe,E=Xw,M=Hr("tooltip");return oe(),me("div",$ve,[Y("div",null,[Y("div",Ove,[(oe(!0),me(ut,null,si((N=q(f))==null?void 0:N.nodeTypes.sort(),L=>{var O;return oe(),me("div",{key:L,flex:"~ gap-1","items-center":"","select-none":""},[Y("input",{id:`type-${L}`,type:"checkbox",checked:(O=q(f))==null?void 0:O.nodeTypeFilter.includes(L),onChange:A=>d(L,A.target.checked)},null,40,Pve),Y("label",{"font-light":"","text-sm":"","ws-nowrap":"","overflow-hidden":"",capitalize:"",truncate:"",for:`type-${L}`,"border-b-2":"",style:Zt({"border-color":`var(--color-node-${L})`})},qe(L)+" Modules",13,Rve)])}),128)),Dve,Y("div",null,[_t(Oe(x,{icon:"i-carbon-reset",onClick:g},null,512),[[M,"Reset",void 0,{bottom:!0}]])])])]),Y("div",{ref_key:"el",ref:o},null,512),Oe(E,{modelValue:q(s),"onUpdate:modelValue":b[1]||(b[1]=L=>Ot(s)?s.value=L:null),direction:"right"},{default:st(()=>[q(c)?(oe(),ot(zy,{key:0},{default:st(()=>[Oe(T,{id:q(c),"project-name":y.projectName,onClose:b[0]||(b[0]=L=>s.value=!1)},null,8,["id","project-name"])]),_:1})):et("",!0)]),_:1},8,["modelValue"])])}}}),Ive={key:0,"text-green-500":"","flex-shrink-0":"","i-carbon:checkmark":""},Fve={key:1,"text-red-500":"","flex-shrink-0":"","i-carbon:compare":""},Hve={key:2,"text-red-500":"","flex-shrink-0":"","i-carbon:close":""},qve={key:3,"text-gray-500":"","flex-shrink-0":"","i-carbon:document-blank":""},Bve={key:4,"text-gray-500":"","flex-shrink-0":"","i-carbon:redo":"","rotate-90":""},Wve={key:5,"text-yellow-500":"","flex-shrink-0":"","i-carbon:circle-dash":"","animate-spin":""},D1=ft({__name:"StatusIcon",props:{state:{},mode:{},failedSnapshot:{type:Boolean}},setup(e){return(t,r)=>{const o=Hr("tooltip");return t.state==="pass"?(oe(),me("div",Ive)):t.failedSnapshot?_t((oe(),me("div",Fve,null,512)),[[o,"Contains failed snapshot",void 0,{right:!0}]]):t.state==="fail"?(oe(),me("div",Hve)):t.mode==="todo"?_t((oe(),me("div",qve,null,512)),[[o,"Todo",void 0,{right:!0}]]):t.mode==="skip"||t.state==="skip"?_t((oe(),me("div",Bve,null,512)),[[o,"Skipped",void 0,{right:!0}]]):(oe(),me("div",Wve))}}});function Uve(e){const t=new Map,r=new Map,o=[];for(;;){let s=0;if(e.forEach((c,f)=>{var v;const{splits:d,finished:h}=c;if(h){s++;const{raw:y,candidate:b}=c;t.set(y,b);return}if(d.length===0){c.finished=!0;return}const g=d[0];r.has(g)?(c.candidate+=c.candidate===""?g:`/${g}`,(v=r.get(g))==null||v.push(f),d.shift()):(r.set(g,[f]),o.push(f))}),o.forEach(c=>{const f=e[c],d=f.splits.shift();f.candidate+=f.candidate===""?d:`/${d}`}),r.forEach(c=>{if(c.length===1){const f=c[0];e[f].finished=!0}}),r.clear(),o.length=0,s===e.length)break}return t}function Vve(e){let t=e;t.includes("/node_modules/")&&(t=e.split(/\/node_modules\//g).pop());const r=t.split(/\//g);return{raw:t,splits:r,candidate:"",finished:!1,id:e}}function jve(e){const t=e.map(o=>Vve(o)),r=Uve(t);return t.map(({raw:o,id:s})=>R1({color:"var(--color-node-external)",label:{color:"var(--color-node-external)",fontSize:"0.875rem",text:r.get(o)??""},isFocused:!1,id:s,type:"external"}))}function Gve(e,t){return R1({color:t?"var(--color-node-root)":"var(--color-node-inline)",label:{color:t?"var(--color-node-root)":"var(--color-node-inline)",fontSize:"0.875rem",text:e.split(/\//g).pop()},isFocused:!1,id:e,type:"inline"})}function Kve(e,t){if(!e)return M0({});const r=jve(e.externalized),o=e.inlined.map(d=>Gve(d,d===t))??[],s=[...r,...o],c=Object.fromEntries(s.map(d=>[d.id,d])),f=Object.entries(e.graph).flatMap(([d,h])=>h.map(g=>{const v=c[d],y=c[g];if(!(v===void 0||y===void 0))return Nve({source:v,target:y,color:"var(--color-link)",label:!1})}).filter(g=>g!==void 0));return M0({nodes:s,links:f})}const Xve={key:0,flex:"","flex-col":"","h-full":"","max-h-full":"","overflow-hidden":"","data-testid":"file-detail"},Yve={p:"2","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},Zve={"flex-1":"","font-light":"","op-50":"","ws-nowrap":"",truncate:"","text-sm":""},Jve={class:"flex text-lg"},Qve={flex:"~","items-center":"","bg-header":"",border:"b-2 base","text-sm":"","h-41px":""},eme=Y("span",{class:"block w-1.4em h-1.4em i-carbon:report"},null,-1),tme={key:0,class:"block w-1.4em h-1.4em i-carbon:circle-dash animate-spin animate-2s"},nme={key:1,class:"block w-1.4em h-1.4em i-carbon:chart-relationship"},rme=Y("span",{class:"block w-1.4em h-1.4em i-carbon:code"},null,-1),ime=Y("span",{class:"block w-1.4em h-1.4em i-carbon:terminal-3270"},null,-1),ome={flex:"","flex-col":"","flex-1":"",overflow:"hidden"},sme=["flex-1"],lme=ft({__name:"FileDetails",setup(e){const t=Be({nodes:[],links:[]}),r=Be(!1),o=Be(!1),s=Be(!1),c=Be(void 0),f=Me(()=>{const x=Xt.value;if(!(!x||!x.filepath))return{filepath:x.filepath,projectName:x.file.projectName||""}}),d=Me(()=>Xt.value&&Fh(Xt.value));function h(){var T;const x=(T=Xt.value)==null?void 0:T.filepath;x&&fetch(`/__open-in-editor?file=${encodeURIComponent(x)}`)}function g(x){x==="graph"&&(o.value=!0),Bn.value=x}const v=Me(()=>{var x;return((x=jw.value)==null?void 0:x.reduce((T,{size:E})=>T+E,0))??0});function y(x){r.value=x}async function b(){var x;if(!(s.value||((x=f.value)==null?void 0:x.filepath)===c.value)){s.value=!0,await ln();try{const T=f.value;if(!T)return;(!c.value||T.filepath!==c.value||!t.value.nodes.length&&!t.value.links.length)&&(t.value=Kve(await yt.rpc.getModuleGraph(T.projectName,T.filepath,!!No),T.filepath),c.value=T.filepath),g("graph")}finally{await new Promise(T=>setTimeout(T,100)),s.value=!1}}}return xw(()=>[f.value,Bn.value],([,x])=>{x==="graph"&&b()},{debounce:100,immediate:!0}),(x,T)=>{var z,J,re,te,j,ne;const E=D1,M=hi,N=zve,L=wfe,O=ffe,A=ife,H=Hr("tooltip");return q(Xt)?(oe(),me("div",Xve,[Y("div",null,[Y("div",Yve,[Oe(E,{state:(z=q(Xt).result)==null?void 0:z.state,mode:q(Xt).mode,"failed-snapshot":q(d)},null,8,["state","mode","failed-snapshot"]),(J=q(Xt))!=null&&J.file.projectName?(oe(),me("div",{key:0,"font-light":"","op-50":"","text-sm":"",style:Zt({color:q(Iw)((re=q(Xt))==null?void 0:re.file.projectName)})}," ["+qe(((te=q(Xt))==null?void 0:te.file.projectName)||"")+"] ",5)):et("",!0),Y("div",Zve,qe((j=q(Xt))==null?void 0:j.name),1),Y("div",Jve,[q(Pr)?et("",!0):_t((oe(),ot(M,{key:0,title:"Open in editor",icon:"i-carbon-launch",disabled:!((ne=q(Xt))!=null&&ne.filepath),onClick:h},null,8,["disabled"])),[[H,"Open in editor",void 0,{bottom:!0}]])])]),Y("div",Qve,[Y("button",{"tab-button":"",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==null}]),"data-testid":"btn-report",onClick:T[0]||(T[0]=K=>g(null))},[eme,gt(" Report ")],2),Y("button",{"tab-button":"","data-testid":"btn-graph",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==="graph"}]),onClick:T[1]||(T[1]=K=>g("graph"))},[q(s)?(oe(),me("span",tme)):(oe(),me("span",nme)),gt(" Module Graph ")],2),Y("button",{"tab-button":"","data-testid":"btn-code",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==="editor"}]),onClick:T[2]||(T[2]=K=>g("editor"))},[rme,gt(" "+qe(q(r)?"* ":"")+"Code ",1)],2),Y("button",{"tab-button":"","data-testid":"btn-console",class:lt(["flex items-center gap-2",{"tab-button-active":q(Bn)==="console",op20:q(Bn)!=="console"&&q(v)===0}]),onClick:T[3]||(T[3]=K=>g("console"))},[ime,gt(" Console ("+qe(q(v))+") ",1)],2)])]),Y("div",ome,[q(o)?(oe(),me("div",{key:0,"flex-1":q(Bn)==="graph"&&""},[_t(Oe(N,{graph:q(t),"data-testid":"graph","project-name":q(Xt).file.projectName||""},null,8,["graph","project-name"]),[[bl,q(Bn)==="graph"&&!q(s)]])],8,sme)):et("",!0),q(Bn)==="editor"?(oe(),ot(L,{key:q(Xt).filepath,file:q(Xt),"data-testid":"editor",onDraft:y},null,8,["file"])):q(Bn)==="console"?(oe(),ot(O,{key:2,file:q(Xt),"data-testid":"console"},null,8,["file"])):q(Bn)?et("",!0):(oe(),ot(A,{key:3,file:q(Xt),"data-testid":"report"},null,8,["file"]))])])):et("",!0)}}}),ame={h:"full",flex:"~ col"},cme=Y("div",{p:"3","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},[Y("div",{class:"i-carbon:folder-details-reference"}),Y("span",{"pl-1":"","font-bold":"","text-sm":"","flex-auto":"","ws-nowrap":"","overflow-hidden":"",truncate:""},"Coverage")],-1),ume={"flex-auto":"","py-1":"","bg-white":""},fme=["src"],dme=ft({__name:"Coverage",props:{src:{}},setup(e){return(t,r)=>(oe(),me("div",ame,[cme,Y("div",ume,[Y("iframe",{id:"vitest-ui-coverage",src:t.src},null,8,fme)])]))}}),hme={bg:"red500/10","p-1":"","mb-1":"","mt-2":"",rounded:""},pme={"font-bold":""},gme={key:0,class:"scrolls",text:"xs","font-mono":"","mx-1":"","my-2":"","pb-2":"","overflow-auto":""},vme=["font-bold"],mme={text:"red500/70"},yme=Y("br",null,null,-1),bme={key:1,text:"sm","mb-2":""},wme={"font-bold":""},xme={key:2,text:"sm","mb-2":""},_me={"font-bold":""},Sme=Y("br",null,null,-1),kme=Y("ul",null,[Y("li",null," The error was thrown, while Vitest was running this test. "),Y("li",null," If the error occurred after the test had been completed, this was the last documented test before it was thrown. ")],-1),Cme={key:3,text:"sm","font-thin":""},Tme=Y("br",null,null,-1),Eme=Y("ul",null,[Y("li",null," Cancel timeouts using clearTimeout and clearInterval. "),Y("li",null," Wait for promises to resolve using the await keyword. ")],-1),Lme=ft({__name:"ErrorEntry",props:{error:{}},setup(e){return(t,r)=>{var o;return oe(),me(ut,null,[Y("h4",hme,[Y("span",pme,[gt(qe(t.error.name||t.error.nameStr||"Unknown Error"),1),t.error.message?(oe(),me(ut,{key:0},[gt(":")],64)):et("",!0)]),gt(" "+qe(t.error.message),1)]),(o=t.error.stacks)!=null&&o.length?(oe(),me("p",gme,[(oe(!0),me(ut,null,si(t.error.stacks,(s,c)=>(oe(),me("span",{key:c,"whitespace-pre":"","font-bold":c===0?"":null},[gt("❯ "+qe(s.method)+" "+qe(s.file)+":",1),Y("span",mme,qe(s.line)+":"+qe(s.column),1),yme],8,vme))),128))])):et("",!0),t.error.VITEST_TEST_PATH?(oe(),me("p",bme,[gt(" This error originated in "),Y("span",wme,qe(t.error.VITEST_TEST_PATH),1),gt(" test file. It doesn't mean the error was thrown inside the file itself, but while it was running. ")])):et("",!0),t.error.VITEST_TEST_NAME?(oe(),me("p",xme,[gt(" The latest test that might've caused the error is "),Y("span",_me,qe(t.error.VITEST_TEST_NAME),1),gt(". It might mean one of the following:"),Sme,kme])):et("",!0),t.error.VITEST_AFTER_ENV_TEARDOWN?(oe(),me("p",Cme,[gt(" This error was caught after test environment was torn down. Make sure to cancel any running tasks before test finishes:"),Tme,Eme])):et("",!0)],64)}}}),En=e=>(la("data-v-0178ddee"),e=e(),aa(),e),Ame={"data-testid":"test-files-entry",grid:"~ cols-[min-content_1fr_min-content]","items-center":"",gap:"x-2 y-3",p:"x4",relative:"","font-light":"","w-80":"",op80:""},Mme=En(()=>Y("div",{"i-carbon-document":""},null,-1)),Nme=En(()=>Y("div",null,"Files",-1)),$me={class:"number","data-testid":"num-files"},Ome=En(()=>Y("div",{"i-carbon-checkmark":""},null,-1)),Pme=En(()=>Y("div",null,"Pass",-1)),Rme={class:"number"},Dme=En(()=>Y("div",{"i-carbon-close":""},null,-1)),zme=En(()=>Y("div",null," Fail ",-1)),Ime={class:"number","text-red5":""},Fme=En(()=>Y("div",{"i-carbon-compare":""},null,-1)),Hme=En(()=>Y("div",null," Snapshot Fail ",-1)),qme={class:"number","text-red5":""},Bme=En(()=>Y("div",{"i-carbon-checkmark-outline-error":""},null,-1)),Wme=En(()=>Y("div",null," Errors ",-1)),Ume={class:"number","text-red5":""},Vme=En(()=>Y("div",{"i-carbon-timer":""},null,-1)),jme=En(()=>Y("div",null,"Time",-1)),Gme={class:"number","data-testid":"run-time"},Kme={key:0,bg:"red500/10",text:"red500",p:"x3 y2","max-w-xl":"","m-2":"",rounded:""},Xme=En(()=>Y("h3",{"text-center":"","mb-2":""}," Unhandled Errors ",-1)),Yme={text:"sm","font-thin":"","mb-2":"","data-testid":"unhandled-errors"},Zme=En(()=>Y("br",null,null,-1)),Jme={"data-testid":"unhandled-errors-details",class:"scrolls unhandled-errors",text:"sm","font-thin":"","pe-2.5":"","open:max-h-52":"","overflow-auto":""},Qme=En(()=>Y("summary",{"font-bold":"","cursor-pointer":""}," Errors ",-1)),e0e=ft({__name:"TestFilesEntry",setup(e){return(t,r)=>{const o=Lme;return oe(),me(ut,null,[Y("div",Ame,[Mme,Nme,Y("div",$me,qe(q(Ce).summary.files),1),q(Ce).summary.filesSuccess?(oe(),me(ut,{key:0},[Ome,Pme,Y("div",Rme,qe(q(Ce).summary.filesSuccess),1)],64)):et("",!0),q(Ce).summary.filesFailed?(oe(),me(ut,{key:1},[Dme,zme,Y("div",Ime,qe(q(Ce).summary.filesFailed),1)],64)):et("",!0),q(Ce).summary.filesSnapshotFailed?(oe(),me(ut,{key:2},[Fme,Hme,Y("div",qme,qe(q(Ce).summary.filesSnapshotFailed),1)],64)):et("",!0),q(Ii).length?(oe(),me(ut,{key:3},[Bme,Wme,Y("div",Ume,qe(q(Ii).length),1)],64)):et("",!0),Vme,jme,Y("div",Gme,qe(q(Ce).summary.time),1)]),q(Ii).length?(oe(),me("div",Kme,[Xme,Y("p",Yme,[gt(" Vitest caught "+qe(q(Ii).length)+" error"+qe(q(Ii).length>1?"s":"")+" during the test run.",1),Zme,gt(" This might cause false positive tests. Resolve unhandled errors to make sure your tests are not affected. ")]),Y("details",Jme,[Qme,(oe(!0),me(ut,null,si(q(Ii),(s,c)=>(oe(),ot(o,{key:c,error:s},null,8,["error"]))),128))])])):et("",!0)],64)}}}),t0e=di(e0e,[["__scopeId","data-v-0178ddee"]]),n0e={"p-2":"","text-center":"",flex:""},r0e={"text-4xl":"","min-w-2em":""},i0e={"text-md":""},o0e=ft({__name:"DashboardEntry",setup(e){return(t,r)=>(oe(),me("div",n0e,[Y("div",null,[Y("div",r0e,[dn(t.$slots,"body")]),Y("div",i0e,[dn(t.$slots,"header")])])]))}}),s0e={flex:"~ wrap","justify-evenly":"","gap-2":"",p:"x-4",relative:""},l0e=ft({__name:"TestsEntry",setup(e){return(t,r)=>{const o=o0e;return oe(),me("div",s0e,[Oe(o,{"text-green5":"","data-testid":"pass-entry"},{header:st(()=>[gt(" Pass ")]),body:st(()=>[gt(qe(q(Ce).summary.testsSuccess),1)]),_:1}),Oe(o,{class:lt({"text-red5":q(Ce).summary.testsFailed,op50:!q(Ce).summary.testsFailed}),"data-testid":"fail-entry"},{header:st(()=>[gt(" Fail ")]),body:st(()=>[gt(qe(q(Ce).summary.testsFailed),1)]),_:1},8,["class"]),q(Ce).summary.testsSkipped?(oe(),ot(o,{key:0,op50:"","data-testid":"skipped-entry"},{header:st(()=>[gt(" Skip ")]),body:st(()=>[gt(qe(q(Ce).summary.testsSkipped),1)]),_:1})):et("",!0),q(Ce).summary.testsTodo?(oe(),ot(o,{key:1,op50:"","data-testid":"todo-entry"},{header:st(()=>[gt(" Todo ")]),body:st(()=>[gt(qe(q(Ce).summary.testsTodo),1)]),_:1})):et("",!0),Oe(o,{tail:!0,"data-testid":"total-entry"},{header:st(()=>[gt(" Total ")]),body:st(()=>[gt(qe(q(Ce).summary.totalTests),1)]),_:1})])}}}),a0e={},c0e={"gap-0":"",flex:"~ col gap-4","h-full":"","justify-center":"","items-center":""},u0e={"aria-labelledby":"tests",m:"y-4 x-2"};function f0e(e,t){const r=l0e,o=t0e;return oe(),me("div",c0e,[Y("section",u0e,[Oe(r)]),Oe(o)])}const d0e=di(a0e,[["render",f0e]]),h0e={},p0e={h:"full",flex:"~ col"},g0e=Y("div",{p:"3","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},[Y("div",{class:"i-carbon-dashboard"}),Y("span",{"pl-1":"","font-bold":"","text-sm":"","flex-auto":"","ws-nowrap":"","overflow-hidden":"",truncate:""},"Dashboard")],-1),v0e={class:"scrolls","flex-auto":"","py-1":""};function m0e(e,t){const r=d0e;return oe(),me("div",p0e,[g0e,Y("div",v0e,[Oe(r)])])}const y0e=di(h0e,[["render",m0e]]),b0e=["open"],w0e=Y("div",{"flex-1":"","h-1px":"",border:"base b",op80:""},null,-1),x0e=Y("div",{"flex-1":"","h-1px":"",border:"base b",op80:""},null,-1),_0e=ft({__name:"DetailsPanel",props:{color:{}},setup(e){const t=Be(!0);return(r,o)=>(oe(),me("div",{open:q(t),class:"details-panel","data-testid":"details-panel",onToggle:o[0]||(o[0]=s=>t.value=s.target.open)},[Y("div",{p:"y1","text-sm":"","bg-base":"","items-center":"","z-5":"","gap-2":"",class:lt(r.color),"w-full":"",flex:"","select-none":"",sticky:"",top:"-1"},[w0e,dn(r.$slots,"summary",{open:q(t)}),x0e],2),dn(r.$slots,"default")],40,b0e))}}),S0e={type:"button",dark:"op75",bg:"gray-200 dark:#111",hover:"op100","rounded-1":"","p-0.5":""},k0e={__name:"IconAction",props:{icon:String},setup(e){return(t,r)=>(oe(),me("button",S0e,[Y("span",{block:"",class:lt([e.icon,"dark:op85 hover:op100"]),op65:""},null,2)]))}},lp=e=>(la("data-v-96b36737"),e=e(),aa(),e),C0e=["aria-label","data-current"],T0e={key:1,"w-4":""},E0e={key:2,class:"i-logos:typescript-icon","flex-shrink-0":"","mr-2":""},L0e=["text"],A0e={"text-sm":"",truncate:"","font-light":""},M0e=["innerHTML"],N0e={key:0,text:"xs",op20:"",style:{"white-space":"nowrap"}},$0e={"gap-1":"","justify-end":"","flex-grow-1":"","pl-1":"",class:"test-actions"},O0e={key:0,class:"op100 gap-1 p-y-1",grid:"~ items-center cols-[1.5em_1fr]"},P0e=lp(()=>Y("div",{class:"i-carbon:information-square w-1.5em h-1.5em"},null,-1)),R0e=lp(()=>Y("span",{class:"text-[#add467]"},"includeTaskLocation",-1)),D0e=lp(()=>Y("div",{style:{"grid-column":"2"}}," Clicking this button the code tab will position the cursor at first line in the source code since the UI doesn't have the information available. ",-1)),z0e={key:1},I0e=ft({__name:"ExplorerItem",props:{taskId:{},name:{},indent:{},typecheck:{type:Boolean},duration:{},state:{},current:{type:Boolean},type:{},opened:{type:Boolean},expandable:{type:Boolean},search:{},projectName:{},projectNameColor:{},disableTaskLocation:{type:Boolean},onItemClick:{type:Function}},setup(e){const t=Me(()=>yt.state.idMap.get(e.taskId)),r=Me(()=>{if(Pr)return!1;const T=t.value;return T&&Fh(T)});function o(){e.expandable&&(e.opened?Ce.collapseNode(e.taskId):Ce.expandNode(e.taskId))}async function s(T){var E;(E=e.onItemClick)==null||E.call(e,T),fs.value&&(tu.value=!0,await ln()),await Kh([T.file])}function c(T){return yt.rpc.updateSnapshot(T.file)}const f=Me(()=>e.indent<=0?[]:Array.from({length:e.indent},(T,E)=>`${e.taskId}-${E}`)),d=Me(()=>{const T=f.value,E=[];return(e.type==="file"||e.type==="suite")&&E.push("min-content"),E.push("min-content"),e.type==="suite"&&e.typecheck&&E.push("min-content"),E.push("minmax(0, 1fr)"),E.push("min-content"),`grid-template-columns: ${T.map(()=>"1rem").join(" ")} ${E.join(" ")};`}),h=Me(()=>Dw(e.name)),g=Me(()=>{const T=Wce.value,E=h.value;return T?E.replace(T,M=>`${M}`):E}),v=Me(()=>e.type!=="file"&&e.disableTaskLocation),y=Me(()=>e.type==="file"?"Open test details":e.type==="suite"?"View Suite Source Code":"View Test Source Code"),b=Me(()=>v.value?"color-red5 dark:color-#f43f5e":null);function x(){var E;const T=t.value;e.type==="file"?(E=e.onItemClick)==null||E.call(e,T):yfe(T)}return(T,E)=>{const M=D1,N=k0e,L=hi,O=Hr("tooltip");return q(t)?(oe(),me("div",{key:0,"items-center":"",p:"x-2 y-1",grid:"~ rows-1 items-center gap-x-2","w-full":"","h-28px":"","border-rounded":"",hover:"bg-active","cursor-pointer":"",class:"item-wrapper",style:Zt(q(d)),"aria-label":T.name,"data-current":T.current,onClick:E[2]||(E[2]=A=>o())},[T.indent>0?(oe(!0),me(ut,{key:0},si(q(f),A=>(oe(),me("div",{key:A,border:"solid gray-500 dark:gray-400",class:"vertical-line","h-28px":"","inline-flex":"","mx-2":"",op20:""}))),128)):et("",!0),T.type==="file"||T.type==="suite"?(oe(),me("div",T0e,[Y("div",{class:lt(T.opened?"i-carbon:chevron-down":"i-carbon:chevron-right op20"),op20:""},null,2)])):et("",!0),Oe(M,{state:T.state,mode:q(t).mode,"failed-snapshot":q(r),"w-4":""},null,8,["state","mode","failed-snapshot"]),T.type==="suite"&&T.typecheck?(oe(),me("div",E0e)):et("",!0),Y("div",{flex:"","items-end":"","gap-2":"",text:T.state==="fail"?"red-500":"","overflow-hidden":""},[Y("span",A0e,[T.type==="file"&&T.projectName?(oe(),me("span",{key:0,style:Zt({color:T.projectNameColor})}," ["+qe(T.projectName)+"] ",5)):et("",!0),Y("span",{innerHTML:q(g)},null,8,M0e)]),typeof T.duration=="number"?(oe(),me("span",N0e,qe(T.duration>0?T.duration:"< 1")+"ms ",1)):et("",!0)],8,L0e),Y("div",$0e,[!q(Pr)&&q(r)?_t((oe(),ot(N,{key:0,"data-testid":"btn-fix-snapshot",title:"Fix failed snapshot(s)",icon:"i-carbon:result-old",onClick:E[0]||(E[0]=_c(A=>c(q(t)),["prevent","stop"]))},null,512)),[[O,"Fix failed snapshot(s)",void 0,{bottom:!0}]]):et("",!0),Oe(q(Rb),{placement:"bottom",class:lt(["w-1.4em h-1.4em op100 rounded flex",q(b)])},{popper:st(()=>[q(v)?(oe(),me("div",O0e,[P0e,Y("div",null,[gt(qe(q(y))+": this feature is not available, you have disabled ",1),R0e,gt(" in your configuration file.")]),D0e])):(oe(),me("div",z0e,qe(q(y)),1))]),default:st(()=>[Oe(L,{"data-testid":"btn-open-details",icon:"i-carbon:intrusion-prevention",onClick:_c(x,["prevent","stop"])})]),_:1},8,["class"]),q(Pr)?et("",!0):_t((oe(),ot(L,{key:1,"data-testid":"btn-run-test",title:"Run current test",icon:"i-carbon:play-filled-alt","text-green5":"",disabled:T.type!=="file",onClick:E[1]||(E[1]=_c(A=>s(q(t)),["prevent","stop"]))},null,8,["disabled"])),[[O,"Run current test",void 0,{bottom:!0}]])])],12,C0e)):et("",!0)}}}),F0e=di(I0e,[["__scopeId","data-v-96b36737"]]),H0e={"flex-1":"","ms-2":"","select-none":""},q0e=ft({__name:"FilterStatus",props:Ic({label:{}},{modelValue:{type:[Boolean,null]},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Th(e,"modelValue");return(r,o)=>(oe(),me("label",ii({class:"font-light text-sm checkbox flex items-center cursor-pointer py-1 text-sm w-full gap-y-1 mb-1px"},r.$attrs,{onClick:o[1]||(o[1]=_c(s=>t.value=!t.value,["prevent"]))}),[Y("span",{class:lt([t.value?"i-carbon:checkbox-checked-filled":"i-carbon:checkbox"]),"text-lg":"","aria-hidden":"true"},null,2),_t(Y("input",{"onUpdate:modelValue":o[0]||(o[0]=s=>t.value=s),type:"checkbox","sr-only":""},null,512),[[mC,t.value]]),Y("span",H0e,qe(r.label),1)],16))}});function B0e(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var r=e.indexOf("Trident/");if(r>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var s=e.indexOf("Edge/");return s>0?parseInt(e.substring(s+5,e.indexOf(".",s)),10):-1}let $c;function th(){th.init||(th.init=!0,$c=B0e()!==-1)}var qu={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){th(),ln(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",$c&&this.$el.appendChild(e),e.data="about:blank",$c||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!$c&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const W0e=dy();la("data-v-b329ee4c");const U0e={class:"resize-observer",tabindex:"-1"};aa();const V0e=W0e((e,t,r,o,s,c)=>(oe(),ot("div",U0e)));qu.render=V0e;qu.__scopeId="data-v-b329ee4c";qu.__file="src/components/ResizeObserver.vue";function Oc(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Oc=function(t){return typeof t}:Oc=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Oc(e)}function j0e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function G0e(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,o=new Array(t);r2&&arguments[2]!==void 0?arguments[2]:{},o,s,c,f=function(h){for(var g=arguments.length,v=new Array(g>1?g-1:0),y=1;y1){var g=d.find(function(y){return y.isIntersecting});g&&(h=g)}if(s.callback){var v=h.isIntersecting&&h.intersectionRatio>=s.threshold;if(v===s.oldResult)return;s.oldResult=v,s.callback(v,h)}},this.options.intersection),ln(function(){s.observer&&s.observer.observe(s.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),e}();function I1(e,t,r){var o=t.value;if(o)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var s=new tye(e,o,r);e._vue_visibilityState=s}}function nye(e,t,r){var o=t.value,s=t.oldValue;if(!z1(o,s)){var c=e._vue_visibilityState;if(!o){F1(e);return}c?c.createObserver(o,r):I1(e,{value:o},r)}}function F1(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var rye={beforeMount:I1,updated:nye,unmounted:F1},iye={itemsLimit:1e3},oye=/(auto|scroll)/;function H1(e,t){return e.parentNode===null?t:H1(e.parentNode,t.concat([e]))}var ad=function(t,r){return getComputedStyle(t,null).getPropertyValue(r)},sye=function(t){return ad(t,"overflow")+ad(t,"overflow-y")+ad(t,"overflow-x")},lye=function(t){return oye.test(sye(t))};function $0(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=H1(e.parentNode,[]),r=0;r{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const e=this.$_lastUpdateScrollPosition;typeof e=="number"&&this.$nextTick(()=>{this.scrollToPosition(e)})},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,r,o,s){const c=vh({id:fye++,index:t,used:!0,key:o,type:s}),f=ph({item:r,position:0,nr:c});return e.push(f),f},unuseView(e,t=!1){const r=this.$_unusedViews,o=e.nr.type;let s=r.get(o);s||(s=[],r.set(o,s)),s.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const t=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:r}=this.updateVisibleItems(!1,!0);r||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});t(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&t()},this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||t.boundingClientRect.width!==0||t.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const r=this.itemSize,o=this.gridItems||1,s=this.itemSecondarySize||r,c=this.$_computedMinItemSize,f=this.typeField,d=this.simpleArray?null:this.keyField,h=this.items,g=h.length,v=this.sizes,y=this.$_views,b=this.$_unusedViews,x=this.pool,T=this.itemIndexByKey;let E,M,N,L,O;if(!g)E=M=L=O=N=0;else if(this.$_prerender)E=L=0,M=O=Math.min(this.prerender,h.length),N=null;else{const j=this.getScroll();if(t){let V=j.start-this.$_lastUpdateScrollPosition;if(V<0&&(V=-V),r===null&&Vj.start&&(k=B),B=~~((I+k)/2);while(B!==W);for(B<0&&(B=0),E=B,N=v[g-1].accumulator,M=B;Mg&&(M=g)),L=E;Lg&&(M=g),L<0&&(L=0),O>g&&(O=g),N=Math.ceil(g/o)*r}}M-E>iye.itemsLimit&&this.itemsLimitError(),this.totalSize=N;let A;const H=E<=this.$_endIndex&&M>=this.$_startIndex;if(H)for(let j=0,ne=x.length;j=M)&&this.unuseView(A));const z=H?null:new Map;let J,re,te;for(let j=E;j=K.length)&&(A=this.addView(x,j,J,ne,re),this.unuseView(A,!0),K=b.get(re)),A=K[te],z.set(re,te+1)),y.delete(A.nr.key),A.nr.used=!0,A.nr.index=j,A.nr.key=ne,A.nr.type=re,y.set(ne,A),V=!0;else if(!A.nr.used&&(A.nr.used=!0,V=!0,K)){const I=K.indexOf(A);I!==-1&&K.splice(I,1)}A.item=J,V&&(j===h.length-1&&this.$emit("scroll-end"),j===0&&this.$emit("scroll-start")),r===null?(A.position=v[j-1].accumulator,A.offset=0):(A.position=Math.floor(j/o)*r,A.offset=j%o*s)}return this.$_startIndex=E,this.$_endIndex=M,this.emitUpdate&&this.$emit("update",E,M,L,O),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:H}},getListenerTarget(){let e=$0(this.$el);return window.document&&(e===window.document.documentElement||e===window.document.body)&&(e=window),e},getScroll(){const{$el:e,direction:t}=this,r=t==="vertical";let o;if(this.pageMode){const s=e.getBoundingClientRect(),c=r?s.height:s.width;let f=-(r?s.top:s.left),d=r?window.innerHeight:window.innerWidth;f<0&&(d+=f,f=0),f+d>c&&(d=c-f),o={start:f,end:f+d}}else r?o={start:e.scrollTop,end:e.scrollTop+e.clientHeight}:o={start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return o},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,ih?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const r=this.gridItems||1;this.itemSize===null?t=e>0?this.sizes[e-1].accumulator:0:t=Math.floor(e/r)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let r,o,s;if(this.pageMode){const c=$0(this.$el),f=c.tagName==="HTML"?0:c[t.scroll],d=c.getBoundingClientRect(),g=this.$el.getBoundingClientRect()[t.start]-d[t.start];r=c,o=t.scroll,s=e+f+g}else r=this.$el,o=t.scroll,s=e;r[o]=s},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((e,t)=>e.nr.index-t.nr.index)}}};const dye={key:0,ref:"before",class:"vue-recycle-scroller__slot"},hye={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function pye(e,t,r,o,s,c){const f=Ao("ResizeObserver"),d=Hr("observe-visibility");return _t((oe(),me("div",{class:lt(["vue-recycle-scroller",{ready:s.ready,"page-mode":r.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...h)=>c.handleScroll&&c.handleScroll(...h))},[e.$slots.before?(oe(),me("div",dye,[dn(e.$slots,"before")],512)):et("v-if",!0),(oe(),ot(wv(r.listTag),{ref:"wrapper",style:Zt({[e.direction==="vertical"?"minHeight":"minWidth"]:s.totalSize+"px"}),class:lt(["vue-recycle-scroller__item-wrapper",r.listClass])},{default:st(()=>[(oe(!0),me(ut,null,si(s.pool,h=>(oe(),ot(wv(r.itemTag),ii({key:h.nr.id,style:s.ready?{transform:`translate${e.direction==="vertical"?"Y":"X"}(${h.position}px) translate${e.direction==="vertical"?"X":"Y"}(${h.offset}px)`,width:r.gridItems?`${e.direction==="vertical"&&r.itemSecondarySize||r.itemSize}px`:void 0,height:r.gridItems?`${e.direction==="horizontal"&&r.itemSecondarySize||r.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[r.itemClass,{hover:!r.skipHover&&s.hoverKey===h.nr.key}]]},YS(r.skipHover?{}:{mouseenter:()=>{s.hoverKey=h.nr.key},mouseleave:()=>{s.hoverKey=null}})),{default:st(()=>[dn(e.$slots,"default",{item:h.item,index:h.nr.index,active:h.nr.used})]),_:2},1040,["style","class"]))),128)),dn(e.$slots,"empty")]),_:3},8,["style","class"])),e.$slots.after?(oe(),me("div",hye,[dn(e.$slots,"after")],512)):et("v-if",!0),Oe(f,{onNotify:c.handleResize},null,8,["onNotify"])],34)),[[d,c.handleVisibilityChange]])}ap.render=pye;ap.__file="src/components/RecycleScroller.vue";function gye(e){const t=Me(()=>Fd.value?!1:!Qe.onlyTests),r=Me(()=>On.value===""),o=Be(On.value);xw(On,h=>{o.value=(h==null?void 0:h.trim())??""},{debounce:256});function s(h){var g;On.value="",h&&((g=e.value)==null||g.focus())}function c(h){var g;Qe.failed=!1,Qe.success=!1,Qe.skipped=!1,Qe.onlyTests=!1,h&&((g=e.value)==null||g.focus())}function f(){c(!1),s(!0)}function d(h,g,v,y,b){As.value&&(on.value.search=(h==null?void 0:h.trim())??"",on.value.failed=g,on.value.success=v,on.value.skipped=y,on.value.onlyTests=b)}return Ht(()=>[o.value,Qe.failed,Qe.success,Qe.skipped,Qe.onlyTests],([h,g,v,y,b])=>{d(h,g,v,y,b),Ce.filterNodes()},{flush:"post"}),Ht(()=>_r.value.length,h=>{h&&(on.value.expandAll=void 0)},{flush:"post"}),{initialized:As,filter:Qe,search:On,disableFilter:t,isFiltered:zw,isFilteredByStatus:Fd,disableClearSearch:r,clearAll:f,clearSearch:s,clearFilter:c,filteredFiles:Ru,testsTotal:Uce,uiEntries:In}}const vye={p:"2","h-10":"",flex:"~ gap-2","items-center":"","bg-header":"",border:"b base"},mye={p:"l3 y2 r2",flex:"~ gap-2","items-center":"","bg-header":"",border:"b-2 base"},yye=Y("div",{class:"i-carbon:search","flex-shrink-0":""},null,-1),bye=["op"],wye=Y("div",{"aria-hidden":"true",class:"i-carbon:filter"},null,-1),xye=Y("div",{"flex-grow-1":"","text-sm":""}," Filter ",-1),_ye={grid:"~ items-center gap-x-1 cols-[auto_min-content_auto] rows-[min-content_min-content]"},Sye={"text-red5":""},kye=Y("span",null,"/",-1),Cye={"text-yellow5":""},Tye={"text-green5":""},Eye=Y("span",null,"/",-1),Lye={class:"text-purple5:50"},Aye={key:0,flex:"~ col","items-center":"",p:"x4 y4","font-light":""},Mye=Y("div",{op30:""}," No matched test ",-1),Nye=["disabled"],$ye=["disabled"],Oye={key:1,flex:"~ col","items-center":"",p:"x4 y4","font-light":""},Pye=Y("div",{class:"i-carbon:circle-dash animate-spin"},null,-1),Rye=Y("div",{op30:""}," Loading... ",-1),Dye=[Pye,Rye],zye=ft({inheritAttrs:!1,__name:"Explorer",props:{onItemClick:{type:Function}},emits:["item-click","run"],setup(e,{emit:t}){const r=t,o=Me(()=>zu.value.includeTaskLocation),s=Be(),{initialized:c,filter:f,search:d,disableFilter:h,isFiltered:g,isFilteredByStatus:v,disableClearSearch:y,clearAll:b,clearSearch:x,clearFilter:T,filteredFiles:E,testsTotal:M,uiEntries:N}=gye(s),L=Be("grid-cols-2"),O=Be("grid-col-span-2"),A=Be();return Lw(A,H=>{const{width:z}=H[0].contentRect;z<420?(L.value="grid-cols-2",O.value="grid-col-span-2"):(L.value="grid-cols-4",O.value="grid-col-span-4")}),(H,z)=>{const J=hi,re=q0e,te=F0e,j=_0e,ne=Hr("tooltip");return oe(),me("div",{ref_key:"testExplorerRef",ref:A,h:"full",flex:"~ col"},[Y("div",null,[Y("div",vye,[dn(H.$slots,"header",{filteredFiles:q(g)||q(v)?q(E):void 0})]),Y("div",mye,[yye,_t(Y("input",{ref_key:"searchBox",ref:s,"onUpdate:modelValue":z[0]||(z[0]=K=>Ot(d)?d.value=K:null),placeholder:"Search...",outline:"none",bg:"transparent",font:"light",text:"sm","flex-1":"","pl-1":"",op:q(d).length?"100":"50",onKeydown:[z[1]||(z[1]=kd(K=>q(x)(!1),["esc"])),z[2]||(z[2]=kd(K=>r("run",q(g)||q(v)?q(E):void 0),["enter"]))]},null,40,bye),[[vC,q(d)]]),_t(Oe(J,{disabled:q(y),title:"Clear search",icon:"i-carbon:filter-remove",onClickPassive:z[3]||(z[3]=K=>q(x)(!0))},null,8,["disabled"]),[[ne,"Clear search",void 0,{bottom:!0}]])]),Y("div",{p:"l3 y2 r2","items-center":"","bg-header":"",border:"b-2 base",grid:"~ items-center gap-x-2 rows-[auto_auto]",class:lt(q(L))},[Y("div",{class:lt(q(O)),flex:"~ gap-2 items-center"},[wye,xye,_t(Oe(J,{disabled:q(h),title:"Clear search",icon:"i-carbon:filter-remove",onClickPassive:z[4]||(z[4]=K=>q(T)(!1))},null,8,["disabled"]),[[ne,"Clear Filter",void 0,{bottom:!0}]])],2),Oe(re,{modelValue:q(f).failed,"onUpdate:modelValue":z[5]||(z[5]=K=>q(f).failed=K),label:"Fail"},null,8,["modelValue"]),Oe(re,{modelValue:q(f).success,"onUpdate:modelValue":z[6]||(z[6]=K=>q(f).success=K),label:"Pass"},null,8,["modelValue"]),Oe(re,{modelValue:q(f).skipped,"onUpdate:modelValue":z[7]||(z[7]=K=>q(f).skipped=K),label:"Skip"},null,8,["modelValue"]),Oe(re,{modelValue:q(f).onlyTests,"onUpdate:modelValue":z[8]||(z[8]=K=>q(f).onlyTests=K),label:"Only Tests"},null,8,["modelValue"])],2)]),Y("div",{class:"scrolls","flex-auto":"","py-1":"",onScrollPassive:z[12]||(z[12]=(...K)=>q(Am)&&q(Am)(...K))},[Oe(j,null,XS({default:st(()=>[(q(g)||q(v))&&q(N).length===0?(oe(),me(ut,{key:0},[q(c)?(oe(),me("div",Aye,[Mye,Y("button",{type:"button","font-light":"","text-sm":"",border:"~ gray-400/50 rounded",p:"x2 y0.5",m:"t2",op:"50",class:lt(q(y)?null:"hover:op100"),disabled:q(y),onClickPassive:z[9]||(z[9]=K=>q(x)(!0))}," Clear Search ",42,Nye),Y("button",{type:"button","font-light":"","text-sm":"",border:"~ gray-400/50 rounded",p:"x2 y0.5",m:"t2",op:"50",class:lt(q(h)?null:"hover:op100"),disabled:q(h),onClickPassive:z[10]||(z[10]=K=>q(T)(!0))}," Clear Filter ",42,$ye),Y("button",{type:"button","font-light":"",op:"50 hover:100","text-sm":"",border:"~ gray-400/50 rounded",p:"x2 y0.5",m:"t2",onClickPassive:z[11]||(z[11]=(...K)=>q(b)&&q(b)(...K))}," Clear All ",32)])):(oe(),me("div",Oye,Dye))],64)):(oe(),ot(q(ap),{key:1,"page-mode":"","key-field":"id","item-size":28,items:q(N),buffer:100},{default:st(({item:K})=>[Oe(te,{class:lt(["h-28px m-0 p-0",q(Zi)===K.id?"bg-active":""]),"task-id":K.id,expandable:K.expandable,type:K.type,current:q(Zi)===K.id,indent:K.indent,name:K.name,typecheck:K.typecheck===!0,"project-name":K.projectName??"","project-name-color":K.projectNameColor??"",state:K.state,duration:K.duration,opened:K.expanded,"disable-task-location":!q(o),"on-item-click":H.onItemClick},null,8,["task-id","expandable","type","current","indent","name","typecheck","project-name","project-name-color","state","duration","opened","disable-task-location","class","on-item-click"])]),_:1},8,["items"]))]),_:2},[q(c)?{name:"summary",fn:st(()=>[Y("div",_ye,[Y("span",Sye," FAIL ("+qe(q(M).failed)+") ",1),kye,Y("span",Cye," RUNNING ("+qe(q(M).running)+") ",1),Y("span",Tye," PASS ("+qe(q(M).success)+") ",1),Eye,Y("span",Lye," SKIP ("+qe(q(f).onlyTests?q(M).skipped:"--")+") ",1)])]),key:"0"}:void 0]),1024)],32)],512)}}}),Iye=""+new URL("../favicon.svg",import.meta.url).href,Fye=Y("img",{"w-6":"","h-6":"",src:Iye,alt:"Vitest logo"},null,-1),Hye=Y("span",{"font-light":"","text-sm":"","flex-1":""},"Vitest",-1),qye={class:"flex text-lg"},Bye=Y("div",{class:"i-carbon:folder-off ma"},null,-1),Wye=Y("div",{class:"op100 gap-1 p-y-1",grid:"~ items-center cols-[1.5em_1fr]"},[Y("div",{class:"i-carbon:information-square w-1.5em h-1.5em"}),Y("div",null,"Coverage enabled but missing html reporter."),Y("div",{style:{"grid-column":"2"}}," Add html reporter to your configuration to see coverage here. ")],-1),Uye=ft({__name:"Navigation",setup(e){function t(){return yt.rpc.updateSnapshot()}const r=Me(()=>ga.value?"light":"dark");async function o(f){fs.value&&(tu.value=!0,await ln(),Ji.value&&(nu(!0),await ln())),f!=null&&f.length?await Kh(f):await wue()}function s(){Ce.collapseAllNodes()}function c(){Ce.expandAllNodes()}return(f,d)=>{const h=hi,g=zye,v=Hr("tooltip");return oe(),ot(g,{border:"r base","on-item-click":q(Gw),nested:!0,onRun:o},{header:st(({filteredFiles:y})=>[Fye,Hye,Y("div",qye,[_t(Oe(h,{title:"Collapse tests",disabled:!q(As),"data-testid":"collapse-all",icon:"i-carbon:collapse-all",onClick:d[0]||(d[0]=b=>s())},null,8,["disabled"]),[[bl,!q(n0)],[v,"Collapse tests",void 0,{bottom:!0}]]),_t(Oe(h,{disabled:!q(As),title:"Expand tests","data-testid":"expand-all",icon:"i-carbon:expand-all",onClick:d[1]||(d[1]=b=>c())},null,8,["disabled"]),[[bl,q(n0)],[v,"Expand tests",void 0,{bottom:!0}]]),_t(Oe(h,{title:"Show dashboard",class:"!animate-100ms","animate-count-1":"",icon:"i-carbon:dashboard",onClick:d[2]||(d[2]=b=>q(nu)(!0))},null,512),[[bl,q(Wd)&&!q(fs)||!q(ys)],[v,"Dashboard",void 0,{bottom:!0}]]),q(Wd)&&!q(fs)?(oe(),ot(q(Rb),{key:0,title:"Coverage enabled but missing html reporter",class:"w-1.4em h-1.4em op100 rounded flex color-red5 dark:color-#f43f5e cursor-help"},{popper:st(()=>[Wye]),default:st(()=>[Bye]),_:1})):et("",!0),q(fs)?_t((oe(),ot(h,{key:1,disabled:q(tu),title:"Show coverage",class:"!animate-100ms","animate-count-1":"",icon:"i-carbon:folder-details-reference",onClick:d[3]||(d[3]=b=>q(Eue)())},null,8,["disabled"])),[[bl,!q(Ji)],[v,"Coverage",void 0,{bottom:!0}]]):et("",!0),q(Ce).summary.failedSnapshot&&!q(Pr)?_t((oe(),ot(h,{key:2,icon:"i-carbon:result-old",disabled:!q(Ce).summary.failedSnapshotEnabled,onClick:d[4]||(d[4]=b=>q(Ce).summary.failedSnapshotEnabled&&t())},null,8,["disabled"])),[[v,"Update all failed snapshot(s)",void 0,{bottom:!0}]]):et("",!0),q(Pr)?et("",!0):_t((oe(),ot(h,{key:3,disabled:(y==null?void 0:y.length)===0,icon:"i-carbon:play",onClick:b=>o(y)},null,8,["disabled","onClick"])),[[v,y?y.length===0?"No test to run (clear filter)":"Rerun filtered":"Rerun all",void 0,{bottom:!0}]]),_t(Oe(h,{icon:"dark:i-carbon-moon i-carbon:sun",onClick:d[5]||(d[5]=b=>q(jue)())},null,512),[[v,`Toggle to ${q(r)} mode`,void 0,{bottom:!0}]])])]),_:1},8,["on-item-click"])}}}),Vye={"h-3px":"",relative:"","overflow-hidden":"",class:"px-0","w-screen":""},jye=ft({__name:"ProgressBar",setup(e){const{width:t}=bce(),r=Me(()=>Ce.summary.files===0?"!bg-gray-4 !dark:bg-gray-7 in-progress":qce.value?null:"in-progress"),o=Me(()=>{const d=Ce.summary.files;return d>0?t.value*Ce.summary.filesSuccess/d:0}),s=Me(()=>{const d=Ce.summary.files;return d>0?t.value*Ce.summary.filesFailed/d:0}),c=Me(()=>Ce.summary.files-Ce.summary.filesFailed-Ce.summary.filesSuccess),f=Me(()=>{const d=Ce.summary.files;return d>0?t.value*c.value/d:0});return(d,h)=>(oe(),me("div",{absolute:"","t-0":"","l-0":"","r-0":"","z-index-1031":"","pointer-events-none":"","p-0":"","h-3px":"",grid:"~ auto-cols-max","justify-items-center":"","w-screen":"",class:lt(q(r))},[Y("div",Vye,[Y("div",{absolute:"","l-0":"","t-0":"","bg-red5":"","h-3px":"",class:lt(q(r)),style:Zt(`width: ${q(s)}px;`)},"   ",6),Y("div",{absolute:"","l-0":"","t-0":"","bg-green5":"","h-3px":"",class:lt(q(r)),style:Zt(`left: ${q(s)}px; width: ${q(o)}px;`)},"   ",6),Y("div",{absolute:"","l-0":"","t-0":"","bg-yellow5":"","h-3px":"",class:lt(q(r)),style:Zt(`left: ${q(o)+q(s)}px; width: ${q(f)}px;`)},"   ",6)])],2))}}),Gye=di(jye,[["__scopeId","data-v-38451300"]]),O0={name:"splitpanes",emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:()=>({container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}),computed:{panesCount(){return this.panes.length},indexedPanes(){return this.panes.reduce((e,t)=>(e[t.id]=t)&&e,{})}},methods:{updatePaneComponents(){this.panes.forEach(e=>{e.update&&e.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[e.id].size}%`})})},bindEvents(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown(e,t){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=t},onMouseMove(e){this.touch.mouseDown&&(e.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(e)),this.$emit("resize",this.panes.map(t=>({min:t.min,max:t.max,size:t.size}))))},onMouseUp(){this.touch.dragging&&this.$emit("resized",this.panes.map(e=>({min:e.min,max:e.max,size:e.size}))),this.touch.mouseDown=!1,setTimeout(()=>{this.touch.dragging=!1,this.unbindEvents()},100)},onSplitterClick(e,t){"ontouchstart"in window&&(e.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===t?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(e,t),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=t,this.splitterTaps.timeoutId=setTimeout(()=>{this.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[t])},onSplitterDblClick(e,t){let r=0;this.panes=this.panes.map((o,s)=>(o.size=s===t?o.max:o.min,s!==t&&(r+=o.min),o)),this.panes[t].size-=r,this.$emit("pane-maximize",this.panes[t]),this.$emit("resized",this.panes.map(o=>({min:o.min,max:o.max,size:o.size})))},onPaneClick(e,t){this.$emit("pane-click",this.indexedPanes[t])},getCurrentMouseDrag(e){const t=this.container.getBoundingClientRect(),{clientX:r,clientY:o}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:r-t.left,y:o-t.top}},getCurrentDragPercentage(e){e=e[this.horizontal?"y":"x"];const t=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(e=t-e),e*100/t},calculatePanesSize(e){const t=this.touch.activeSplitter;let r={prevPanesSize:this.sumPrevPanesSize(t),nextPanesSize:this.sumNextPanesSize(t),prevReachedMinPanes:0,nextReachedMinPanes:0};const o=0+(this.pushOtherPanes?0:r.prevPanesSize),s=100-(this.pushOtherPanes?0:r.nextPanesSize),c=Math.max(Math.min(this.getCurrentDragPercentage(e),s),o);let f=[t,t+1],d=this.panes[f[0]]||null,h=this.panes[f[1]]||null;const g=d.max<100&&c>=d.max+r.prevPanesSize,v=h.max<100&&c<=100-(h.max+this.sumNextPanesSize(t+1));if(g||v){g?(d.size=d.max,h.size=Math.max(100-d.max-r.prevPanesSize-r.nextPanesSize,0)):(d.size=Math.max(100-h.max-r.prevPanesSize-this.sumNextPanesSize(t+1),0),h.size=h.max);return}if(this.pushOtherPanes){const y=this.doPushOtherPanes(r,c);if(!y)return;({sums:r,panesToResize:f}=y),d=this.panes[f[0]]||null,h=this.panes[f[1]]||null}d!==null&&(d.size=Math.min(Math.max(c-r.prevPanesSize-r.prevReachedMinPanes,d.min),d.max)),h!==null&&(h.size=Math.min(Math.max(100-c-r.nextPanesSize-r.nextReachedMinPanes,h.min),h.max))},doPushOtherPanes(e,t){const r=this.touch.activeSplitter,o=[r,r+1];return t{c>o[0]&&c<=r&&(s.size=s.min,e.prevReachedMinPanes+=s.min)}),e.prevPanesSize=this.sumPrevPanesSize(o[0]),o[0]===void 0)?(e.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach((s,c)=>{c>0&&c<=r&&(s.size=s.min,e.prevReachedMinPanes+=s.min)}),this.panes[o[1]].size=100-e.prevReachedMinPanes-this.panes[0].min-e.prevPanesSize-e.nextPanesSize,null):t>100-e.nextPanesSize-this.panes[o[1]].min&&(o[1]=this.findNextExpandedPane(r).index,e.nextReachedMinPanes=0,o[1]>r+1&&this.panes.forEach((s,c)=>{c>r&&c{c=r+1&&(s.size=s.min,e.nextReachedMinPanes+=s.min)}),this.panes[o[0]].size=100-e.prevPanesSize-e.nextReachedMinPanes-this.panes[this.panesCount-1].min-e.nextPanesSize,null):{sums:e,panesToResize:o}},sumPrevPanesSize(e){return this.panes.reduce((t,r,o)=>t+(ot+(o>e+1?r.size:0),0)},findPrevExpandedPane(e){return[...this.panes].reverse().find(t=>t.indext.min)||{}},findNextExpandedPane(e){return this.panes.find(t=>t.index>e+1&&t.size>t.min)||{}},checkSplitpanesNodes(){Array.from(this.container.children).forEach(e=>{const t=e.classList.contains("splitpanes__pane"),r=e.classList.contains("splitpanes__splitter");!t&&!r&&(e.parentNode.removeChild(e),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))})},addSplitter(e,t,r=!1){const o=e-1,s=document.createElement("div");s.classList.add("splitpanes__splitter"),r||(s.onmousedown=c=>this.onMouseDown(c,o),typeof window<"u"&&"ontouchstart"in window&&(s.ontouchstart=c=>this.onMouseDown(c,o)),s.onclick=c=>this.onSplitterClick(c,o+1)),this.dblClickSplitter&&(s.ondblclick=c=>this.onSplitterDblClick(c,o+1)),t.parentNode.insertBefore(s,t)},removeSplitter(e){e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.parentNode.removeChild(e)},redoSplitters(){const e=Array.from(this.container.children);e.forEach(r=>{r.className.includes("splitpanes__splitter")&&this.removeSplitter(r)});let t=0;e.forEach(r=>{r.className.includes("splitpanes__pane")&&(!t&&this.firstSplitter?this.addSplitter(t,r,!0):t&&this.addSplitter(t,r),t++)})},requestUpdate({target:e,...t}){const r=this.indexedPanes[e._.uid];Object.entries(t).forEach(([o,s])=>r[o]=s)},onPaneAdd(e){let t=-1;Array.from(e.$el.parentNode.children).some(s=>(s.className.includes("splitpanes__pane")&&t++,s===e.$el));const r=parseFloat(e.minSize),o=parseFloat(e.maxSize);this.panes.splice(t,0,{id:e._.uid,index:t,min:isNaN(r)?0:r,max:isNaN(o)?100:o,size:e.size===null?null:parseFloat(e.size),givenSize:e.size,update:e.update}),this.panes.forEach((s,c)=>s.index=c),this.ready&&this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({addedPane:this.panes[t]}),this.$emit("pane-add",{index:t,panes:this.panes.map(s=>({min:s.min,max:s.max,size:s.size}))})})},onPaneRemove(e){const t=this.panes.findIndex(o=>o.id===e._.uid),r=this.panes.splice(t,1)[0];this.panes.forEach((o,s)=>o.index=s),this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({removedPane:{...r,index:t}}),this.$emit("pane-remove",{removed:r,panes:this.panes.map(o=>({min:o.min,max:o.max,size:o.size}))})})},resetPaneSizes(e={}){!e.addedPane&&!e.removedPane?this.initialPanesSizing():this.panes.some(t=>t.givenSize!==null||t.min||t.max<100)?this.equalizeAfterAddOrRemove(e):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(t=>({min:t.min,max:t.max,size:t.size})))},equalize(){const e=100/this.panesCount;let t=0;const r=[],o=[];this.panes.forEach(s=>{s.size=Math.max(Math.min(e,s.max),s.min),t-=s.size,s.size>=s.max&&r.push(s.id),s.size<=s.min&&o.push(s.id)}),t>.1&&this.readjustSizes(t,r,o)},initialPanesSizing(){let e=100;const t=[],r=[];let o=0;this.panes.forEach(c=>{e-=c.size,c.size!==null&&o++,c.size>=c.max&&t.push(c.id),c.size<=c.min&&r.push(c.id)});let s=100;e>.1&&(this.panes.forEach(c=>{c.size===null&&(c.size=Math.max(Math.min(e/(this.panesCount-o),c.max),c.min)),s-=c.size}),s>.1&&this.readjustSizes(e,t,r))},equalizeAfterAddOrRemove({addedPane:e,removedPane:t}={}){let r=100/this.panesCount,o=0;const s=[],c=[];e&&e.givenSize!==null&&(r=(100-e.givenSize)/(this.panesCount-1)),this.panes.forEach(f=>{o-=f.size,f.size>=f.max&&s.push(f.id),f.size<=f.min&&c.push(f.id)}),!(Math.abs(o)<.1)&&(this.panes.forEach(f=>{e&&e.givenSize!==null&&e.id===f.id||(f.size=Math.max(Math.min(r,f.max),f.min)),o-=f.size,f.size>=f.max&&s.push(f.id),f.size<=f.min&&c.push(f.id)}),o>.1&&this.readjustSizes(o,s,c))},readjustSizes(e,t,r){let o;e>0?o=e/(this.panesCount-t.length):o=e/(this.panesCount-r.length),this.panes.forEach((s,c)=>{if(e>0&&!t.includes(s.id)){const f=Math.max(Math.min(s.size+o,s.max),s.min),d=f-s.size;e-=d,s.size=f}else if(!r.includes(s.id)){const f=Math.max(Math.min(s.size+o,s.max),s.min),d=f-s.size;e-=d,s.size=f}s.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[s.id].size}%`})}),Math.abs(e)>.1&&this.$nextTick(()=>{this.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler(){this.updatePaneComponents()}},horizontal(){this.updatePaneComponents()},firstSplitter(){this.redoSplitters()},dblClickSplitter(e){[...this.container.querySelectorAll(".splitpanes__splitter")].forEach((t,r)=>{t.ondblclick=e?o=>this.onSplitterDblClick(o,r):void 0})}},beforeUnmount(){this.ready=!1},mounted(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render(){return fa("div",{ref:"container",class:["splitpanes",`splitpanes--${this.horizontal?"horizontal":"vertical"}`,{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default())}},Kye=(e,t)=>{const r=e.__vccOpts||e;for(const[o,s]of t)r[o]=s;return r},Xye={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:()=>({style:{}}),mounted(){this.onPaneAdd(this)},beforeUnmount(){this.onPaneRemove(this)},methods:{update(e){this.style=e}},computed:{sizeNumber(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber(){return parseFloat(this.minSize)},maxSizeNumber(){return parseFloat(this.maxSize)}},watch:{sizeNumber(e){this.requestUpdate({target:this,size:e})},minSizeNumber(e){this.requestUpdate({target:this,min:e})},maxSizeNumber(e){this.requestUpdate({target:this,max:e})}}};function Yye(e,t,r,o,s,c){return oe(),me("div",{class:"splitpanes__pane",onClick:t[0]||(t[0]=f=>c.onPaneClick(f,e._.uid)),style:Zt(e.style)},[dn(e.$slots,"default")],4)}const vc=Kye(Xye,[["render",Yye]]),Zye={"h-screen":"","w-screen":"",overflow:"hidden"},Jye=ft({__name:"index",setup(e){const t=Tue(),r=Pu("vitest-ui_splitpanes-mainSizes",[33,67],{initOnMounted:!0}),o=e0(f=>{f.forEach((d,h)=>{r.value[h]=d.size})},0),s=e0(f=>{f.forEach((d,h)=>{Ec.value[h]=d.size}),rd(!1)},0);function c(){const f=window.innerWidth,d=Math.min(f/3,300);r.value[0]=100*d/f,r.value[1]=100-r.value[0]}return(f,d)=>{const h=Gye,g=Uye,v=y0e,y=dme,b=lme,x=Pue,T=kue;return oe(),me(ut,null,[Oe(h),Y("div",Zye,[Oe(q(O0),{class:"pt-4px",onResized:q(o),onResize:d[2]||(d[2]=E=>q(rd)(!0)),onReady:c},{default:st(()=>[Oe(q(vc),{size:q(r)[0]},{default:st(()=>[Oe(g)]),_:1},8,["size"]),Oe(q(vc),{size:q(r)[1]},{default:st(()=>[q(No)?(oe(),ot(q(O0),{id:"details-splitpanes",key:"browser-detail",onResize:d[1]||(d[1]=E=>q(rd)(!0)),onResized:q(s)},{default:st(()=>[Oe(q(vc),{size:q(Ec)[0],"min-size":"10"},{default:st(()=>[d[0]||(Hc(-1),(d[0]=Oe(x)).cacheIndex=0,Hc(1),d[0])]),_:1},8,["size"]),Oe(q(vc),{size:q(Ec)[1],"min-size":"5"},{default:st(()=>[q(t)?(oe(),ot(v,{key:"summary"})):q(Ji)?(oe(),ot(y,{key:"coverage",src:q(s0)},null,8,["src"])):(oe(),ot(b,{key:"details"}))]),_:1},8,["size"])]),_:1},8,["onResized"])):(oe(),ot(Ah,{key:"ui-detail"},{default:st(()=>[q(t)?(oe(),ot(v,{key:"summary"})):q(Ji)?(oe(),ot(y,{key:"coverage",src:q(s0)},null,8,["src"])):(oe(),ot(b,{key:"details"}))]),_:1}))]),_:1},8,["size"])]),_:1},8,["onResized"])]),Oe(T)],64)}}}),Qye=[{name:"index",path:"/",component:Jye,props:!0}],ebe={tooltip:ME};Db.options.instantMove=!0;Db.options.distance=10;function tbe(){return $T({history:sT(),routes:Qye})}const nbe=[tbe],cp=Xy(LC);nbe.forEach(e=>{cp.use(e())});Object.entries(ebe).forEach(([e,t])=>{cp.directive(e,t)});cp.mount("#app"); diff --git a/html/assets/index-C0SwoDYm.css b/html/assets/index-C0SwoDYm.css deleted file mode 100644 index 4b72c75..0000000 --- a/html/assets/index-C0SwoDYm.css +++ /dev/null @@ -1 +0,0 @@ -.scrolls[data-v-93900314]{place-items:center}.task-error[data-v-9dd6eaea]{--cm-ttc-c-thumb: #ccc}html.dark .task-error[data-v-9dd6eaea]{--cm-ttc-c-thumb: #444}.task-error[data-v-8f3dbcaa]{--cm-ttc-c-thumb: #ccc}html.dark .task-error[data-v-8f3dbcaa]{--cm-ttc-c-thumb: #444}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:6;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler,.CodeMirror-overlayscroll .CodeMirror-gutter-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}:root{--color-link-label: var(--color-text);--color-link: #ddd;--color-node-external: #c0ad79;--color-node-inline: #8bc4a0;--color-node-root: #6e9aa5;--color-node-label: var(--color-text);--color-node-stroke: var(--color-text)}html.dark{--color-text: #fff;--color-link: #333;--color-node-external: #857a40;--color-node-inline: #468b60;--color-node-root: #467d8b}.graph{height:calc(100% - 39px)!important}.graph .node{stroke-width:2px;stroke-opacity:.5}.graph .link{stroke-width:2px}.graph .node:hover:not(.focused){filter:none!important}.graph .node__label{transform:translateY(20px);font-weight:100;filter:brightness(.5)}html.dark .graph .node__label{filter:brightness(1.2)}#vitest-ui-coverage{width:100%;height:calc(100vh - 42px);border:none}.number[data-v-0178ddee]{font-weight:400;text-align:right}.unhandled-errors[data-v-0178ddee]{--cm-ttc-c-thumb: #ccc}html.dark .unhandled-errors[data-v-0178ddee]{--cm-ttc-c-thumb: #444}.details-panel{-webkit-user-select:none;user-select:none;width:100%}.vertical-line[data-v-96b36737]:first-of-type{border-left-width:2px}.vertical-line+.vertical-line[data-v-96b36737]{border-right-width:1px}.test-actions[data-v-96b36737]{display:none}.item-wrapper:hover .test-actions[data-v-96b36737]{display:flex}.checkbox:focus-within{outline:none;margin-bottom:0!important;border-bottom-width:1px}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.in-progress[data-v-38451300]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px;animation:in-progress-stripes-38451300 2s linear infinite}@keyframes in-progress-stripes-38451300{0%{background-position:40px 0}to{background-position:0 0}}.graph,.graph>svg{display:block}.graph{height:100%;touch-action:none;width:100%}.graph *{-webkit-touch-callout:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.link{fill:none;stroke-width:4px}.node{--color-stroke: var(--color-node-stroke, rgba(0, 0, 0, .5));cursor:pointer;stroke:none;stroke-width:2px;transition:filter .25s ease,stroke .25s ease,stroke-dasharray .25s ease}.node:hover:not(.focused){filter:brightness(80%);stroke:var(--color-stroke);stroke-dasharray:4px}.node.focused{stroke:var(--color-stroke)}.link__label,.node__label{pointer-events:none;text-anchor:middle}.grabbed{cursor:grabbing!important}.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}:root{--cm-scheme: light;--cm-foreground: #6e6e6e;--cm-background: #f4f4f4;--cm-comment: #a8a8a8;--cm-string: #555555;--cm-literal: #333333;--cm-keyword: #000000;--cm-function: #4f4f4f;--cm-deleted: #333333;--cm-class: #333333;--cm-builtin: #757575;--cm-property: #333333;--cm-namespace: #4f4f4f;--cm-punctuation: #ababab;--cm-decorator: var(--cm-class);--cm-operator: var(--cm-punctuation);--cm-number: var(--cm-literal);--cm-boolean: var(--cm-literal);--cm-variable: var(--cm-literal);--cm-constant: var(--cm-literal);--cm-symbol: var(--cm-literal);--cm-interpolation: var(--cm-literal);--cm-selector: var(--cm-keyword);--cm-keyword-control: var(--cm-keyword);--cm-regex: var(--cm-string);--cm-json-property: var(--cm-property);--cm-inline-background: var(--cm-background);--cm-comment-style: italic;--cm-url-decoration: underline;--cm-line-number: #a5a5a5;--cm-line-number-gutter: #333333;--cm-line-highlight-background: #eeeeee;--cm-selection-background: #aaaaaa;--cm-marker-color: var(--cm-foreground);--cm-marker-opacity: .4;--cm-marker-font-size: .8em;--cm-font-size: 1em;--cm-line-height: 1.5em;--cm-font-family: monospace;--cm-inline-font-size: var(--cm-font-size);--cm-block-font-size: var(--cm-font-size);--cm-tab-size: 2;--cm-block-padding-x: 1em;--cm-block-padding-y: 1em;--cm-block-margin-x: 0;--cm-block-margin-y: .5em;--cm-block-radius: .3em;--cm-inline-padding-x: .3em;--cm-inline-padding-y: .1em;--cm-inline-radius: .3em}.cm-s-vars.CodeMirror{background-color:var(--cm-background);color:var(--cm-foreground)}.cm-s-vars .CodeMirror-gutters{background:var(--cm-line-number-gutter);color:var(--cm-line-number);border:none}.cm-s-vars .CodeMirror-guttermarker,.cm-s-vars .CodeMirror-guttermarker-subtle,.cm-s-vars .CodeMirror-linenumber{color:var(--cm-line-number)}.cm-s-vars div.CodeMirror-selected,.cm-s-vars.CodeMirror-focused div.CodeMirror-selected{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::selection,.cm-s-vars .CodeMirror-line>span::selection,.cm-s-vars .CodeMirror-line>span>span::selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::-moz-selection,.cm-s-vars .CodeMirror-line>span::-moz-selection,.cm-s-vars .CodeMirror-line>span>span::-moz-selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-activeline-background{background:var(--cm-line-highlight-background)}.cm-s-vars .cm-keyword{color:var(--cm-keyword)}.cm-s-vars .cm-variable,.cm-s-vars .cm-variable-2,.cm-s-vars .cm-variable-3,.cm-s-vars .cm-type{color:var(--cm-variable)}.cm-s-vars .cm-builtin{color:var(--cm-builtin)}.cm-s-vars .cm-atom{color:var(--cm-literal)}.cm-s-vars .cm-number{color:var(--cm-number)}.cm-s-vars .cm-def{color:var(--cm-decorator)}.cm-s-vars .cm-string,.cm-s-vars .cm-string-2{color:var(--cm-string)}.cm-s-vars .cm-comment{color:var(--cm-comment)}.cm-s-vars .cm-tag{color:var(--cm-builtin)}.cm-s-vars .cm-meta{color:var(--cm-namespace)}.cm-s-vars .cm-attribute,.cm-s-vars .cm-property{color:var(--cm-property)}.cm-s-vars .cm-qualifier{color:var(--cm-keyword)}.cm-s-vars .cm-error{color:var(--prism-deleted)}.cm-s-vars .cm-operator,.cm-s-vars .cm-bracket{color:var(--cm-punctuation)}.cm-s-vars .CodeMirror-matchingbracket{text-decoration:underline}.cm-s-vars .CodeMirror-cursor{border-left:1px solid currentColor}html,body{height:100%;font-family:Readex Pro,sans-serif;scroll-behavior:smooth}:root{--color-text-light: #000;--color-text-dark: #ddd;--color-text: var(--color-text-light);--background-color: #e4e4e4}html.dark{--color-text: var(--color-text-dark);--background-color: #141414;color:var(--color-text);background-color:var(--background-color);color-scheme:dark}.CodeMirror{height:100%!important;width:100%!important;font-family:inherit}.cm-s-vars .cm-tag{color:var(--cm-keyword)}:root{--cm-foreground: #393a3480;--cm-background: transparent;--cm-comment: #a0ada0;--cm-string: #b56959;--cm-literal: #2f8a89;--cm-number: #296aa3;--cm-keyword: #1c6b48;--cm-function: #6c7834;--cm-boolean: #1c6b48;--cm-constant: #a65e2b;--cm-deleted: #a14f55;--cm-class: #2993a3;--cm-builtin: #ab5959;--cm-property: #b58451;--cm-namespace: #b05a78;--cm-punctuation: #8e8f8b;--cm-decorator: #bd8f8f;--cm-regex: #ab5e3f;--cm-json-property: #698c96;--cm-line-number-gutter: #f8f8f8;--cm-ttc-c-thumb: #eee;--cm-ttc-c-track: white}html.dark{--cm-scheme: dark;--cm-foreground: #d4cfbf80;--cm-background: transparent;--cm-comment: #758575;--cm-string: #d48372;--cm-literal: #429988;--cm-keyword: #4d9375;--cm-boolean: #1c6b48;--cm-number: #6394bf;--cm-variable: #c2b36e;--cm-function: #a1b567;--cm-deleted: #a14f55;--cm-class: #54b1bf;--cm-builtin: #e0a569;--cm-property: #dd8e6e;--cm-namespace: #db889a;--cm-punctuation: #858585;--cm-decorator: #bd8f8f;--cm-regex: #ab5e3f;--cm-json-property: #6b8b9e;--cm-line-number: #888888;--cm-line-number-gutter: #161616;--cm-line-highlight-background: #444444;--cm-selection-background: #44444450;--cm-ttc-c-thumb: #222;--cm-ttc-c-track: #111}.splitpanes__pane{background-color:unset!important}.splitpanes__splitter{position:relative;background-color:#7d7d7d1a;z-index:10}.splitpanes__splitter:before{content:"";position:absolute;left:0;top:0;transition:opacity .4s;background-color:#7d7d7d1a;opacity:0;z-index:1}.splitpanes__splitter:hover:before{opacity:1}.splitpanes--vertical>.splitpanes__splitter:before{left:0;right:-10px;height:100%}.splitpanes--horizontal>.splitpanes__splitter:before{top:0;bottom:-10px;width:100%}.splitpanes.loading .splitpanes__pane{transition:none!important;height:100%}.CodeMirror-scroll{scrollbar-width:none}.CodeMirror-scroll::-webkit-scrollbar,.codemirror-scrolls::-webkit-scrollbar{display:none}.codemirror-scrolls{overflow:auto!important;scrollbar-width:thin;scrollbar-color:var(--cm-ttc-c-thumb) var(--cm-ttc-c-track)}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{background-color:var(--cm-ttc-c-track)!important;border:none!important}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{background-color:var(--cm-ttc-c-thumb)!important;border:none!important}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:var(--cm-ttc-c-track)!important}.CodeMirror{overflow:unset!important}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar{display:none!important}.CodeMirror-scroll{margin-bottom:unset!important;margin-right:unset!important;padding-bottom:unset!important}.scrolls::-webkit-scrollbar{width:8px;height:8px}.scrolls{overflow:auto!important;scrollbar-width:thin;scrollbar-color:var(--cm-ttc-c-thumb) var(--cm-ttc-c-track)}.scrolls::-webkit-scrollbar-track{background:var(--cm-ttc-c-track)}.scrolls::-webkit-scrollbar-thumb{background-color:var(--cm-ttc-c-thumb);border:2px solid var(--cm-ttc-c-thumb)}.scrolls::-webkit-scrollbar-thumb,.scrolls-rounded::-webkit-scrollbar-track{border-radius:3px}.scrolls::-webkit-scrollbar-corner{background-color:var(--cm-ttc-c-track)}.v-popper__popper .v-popper__inner{font-size:12px;padding:4px 6px;border-radius:4px;background-color:var(--background-color);color:var(--color-text)}.v-popper__popper .v-popper__arrow-outer{border-color:var(--background-color)}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:#000c;color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.dark .dark\:i-carbon-moon{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M13.503 5.414a15.076 15.076 0 0 0 11.593 18.194a11.1 11.1 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1 1 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.07 13.07 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-checkmark,.i-carbon\:checkmark,[i-carbon-checkmark=""],[i-carbon\:checkmark=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-checkmark-outline-error,[i-carbon-checkmark-outline-error=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M14 24a10 10 0 1 1 10-10h2a12 12 0 1 0-12 12Z'/%3E%3Cpath fill='currentColor' d='M12 15.59L9.41 13L8 14.41l4 4l7-7L17.59 10zM30 24a6 6 0 1 0-6 6a6.007 6.007 0 0 0 6-6m-2 0a3.95 3.95 0 0 1-.567 2.019l-5.452-5.452A3.95 3.95 0 0 1 24 20a4.005 4.005 0 0 1 4 4m-8 0a3.95 3.95 0 0 1 .567-2.019l5.452 5.452A3.95 3.95 0 0 1 24 28a4.005 4.005 0 0 1-4-4'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-close,.i-carbon\:close,[i-carbon-close=""],[i-carbon\:close=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17.414 16L24 9.414L22.586 8L16 14.586L9.414 8L8 9.414L14.586 16L8 22.586L9.414 24L16 17.414L22.586 24L24 22.586z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-compare,.i-carbon\:compare,[i-carbon-compare=""],[i-carbon\:compare=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 6H18V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h10v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2M4 15h6.17l-2.58 2.59L9 19l5-5l-5-5l-1.41 1.41L10.17 13H4V4h12v20H4Zm12 13v-2a2 2 0 0 0 2-2V8h10v9h-6.17l2.58-2.59L23 13l-5 5l5 5l1.41-1.41L21.83 19H28v9Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-content-delivery-network{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='21' cy='21' r='2' fill='currentColor'/%3E%3Ccircle cx='7' cy='7' r='2' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M27 31a4 4 0 1 1 4-4a4.01 4.01 0 0 1-4 4m0-6a2 2 0 1 0 2 2a2.006 2.006 0 0 0-2-2'/%3E%3Cpath fill='currentColor' d='M30 16A14.04 14.04 0 0 0 16 2a13.04 13.04 0 0 0-6.8 1.8l1.1 1.7a24 24 0 0 1 2.4-1A25.1 25.1 0 0 0 10 15H4a11.15 11.15 0 0 1 1.4-4.7L3.9 9A13.84 13.84 0 0 0 2 16a14 14 0 0 0 14 14a13.4 13.4 0 0 0 5.2-1l-.6-1.9a11.44 11.44 0 0 1-5.2.9A21.07 21.07 0 0 1 12 17h17.9a3.4 3.4 0 0 0 .1-1M12.8 27.6a13 13 0 0 1-5.3-3.1A12.5 12.5 0 0 1 4 17h6a25 25 0 0 0 2.8 10.6M12 15a21.45 21.45 0 0 1 3.3-11h1.4A21.45 21.45 0 0 1 20 15Zm10 0a23.3 23.3 0 0 0-2.8-10.6A12.09 12.09 0 0 1 27.9 15Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-dashboard,.i-carbon\:dashboard{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M24 21h2v5h-2zm-4-5h2v10h-2zm-9 10a5.006 5.006 0 0 1-5-5h2a3 3 0 1 0 3-3v-2a5 5 0 0 1 0 10'/%3E%3Cpath fill='currentColor' d='M28 2H4a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h24a2.003 2.003 0 0 0 2-2V4a2 2 0 0 0-2-2m0 9H14V4h14ZM12 4v7H4V4ZM4 28V13h24l.002 15Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-document,[i-carbon-document=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7M18 4.4l5.6 5.6H18zM24 28H8V4h8v6c0 1.1.9 2 2 2h6z'/%3E%3Cpath fill='currentColor' d='M10 22h12v2H10zm0-6h12v2H10z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-launch{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 28H6a2.003 2.003 0 0 1-2-2V6a2.003 2.003 0 0 1 2-2h10v2H6v20h20V16h2v10a2.003 2.003 0 0 1-2 2'/%3E%3Cpath fill='currentColor' d='M20 2v2h6.586L18 12.586L19.414 14L28 5.414V12h2V2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-reset{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 28A12 12 0 1 0 6 16v6.2l-3.6-3.6L1 20l6 6l6-6l-1.4-1.4L8 22.2V16a10 10 0 1 1 10 10Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-timer,[i-carbon-timer=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 11h2v9h-2zm-2-9h6v2h-6z'/%3E%3Cpath fill='currentColor' d='m28 9l-1.42-1.41l-2.25 2.25a10.94 10.94 0 1 0 1.18 1.65ZM16 26a9 9 0 1 1 9-9a9 9 0 0 1-9 9'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon-wifi-off{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='16' cy='25' r='2' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M30 3.414L28.586 2L2 28.586L3.414 30l10.682-10.682a5.94 5.94 0 0 1 6.01 1.32l1.414-1.414a7.97 7.97 0 0 0-5.125-2.204l3.388-3.388a12 12 0 0 1 4.564 2.765l1.413-1.414a14 14 0 0 0-4.426-2.903l2.997-2.997a18 18 0 0 1 4.254 3.075L30 10.743v-.002a20 20 0 0 0-4.19-3.138zm-15.32 9.664l2.042-2.042C16.48 11.023 16.243 11 16 11a13.95 13.95 0 0 0-9.771 3.993l1.414 1.413a11.97 11.97 0 0 1 7.037-3.328M16 7a18 18 0 0 1 4.232.525l1.643-1.642A19.95 19.95 0 0 0 2 10.74v.023l1.404 1.404A17.92 17.92 0 0 1 16 7'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:chart-relationship{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 6a3.996 3.996 0 0 0-3.858 3H17.93A7.996 7.996 0 1 0 9 17.93v4.212a4 4 0 1 0 2 0v-4.211a7.95 7.95 0 0 0 3.898-1.62l3.669 3.67A3.95 3.95 0 0 0 18 22a4 4 0 1 0 4-4a3.95 3.95 0 0 0-2.019.567l-3.67-3.67A7.95 7.95 0 0 0 17.932 11h4.211A3.993 3.993 0 1 0 26 6M12 26a2 2 0 1 1-2-2a2 2 0 0 1 2 2m-2-10a6 6 0 1 1 6-6a6.007 6.007 0 0 1-6 6m14 6a2 2 0 1 1-2-2a2 2 0 0 1 2 2m2-10a2 2 0 1 1 2-2a2 2 0 0 1-2 2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:checkbox{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M6 26V6h20v20Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:checkbox-checked-filled{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M14 21.5l-5-4.957L10.59 15L14 18.346L21.409 11L23 12.577Z'/%3E%3Cpath fill='none' d='m14 21.5l-5-4.957L10.59 15L14 18.346L21.409 11L23 12.577Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:chevron-down{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 22L6 12l1.4-1.4l8.6 8.6l8.6-8.6L26 12z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:chevron-right{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M22 16L12 26l-1.4-1.4l8.6-8.6l-8.6-8.6L12 6z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:circle-dash,[i-carbon\:circle-dash=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7.7 4.7a14.7 14.7 0 0 0-3 3.1L6.3 9a13.3 13.3 0 0 1 2.6-2.7zm-3.1 7.6l-1.9-.6A12.5 12.5 0 0 0 2 16h2a11.5 11.5 0 0 1 .6-3.7m-1.9 8.1a14.4 14.4 0 0 0 2 3.9l1.6-1.2a12.9 12.9 0 0 1-1.7-3.3zm5.1 6.9a14.4 14.4 0 0 0 3.9 2l.6-1.9A12.9 12.9 0 0 1 9 25.7zm3.9-24.6l.6 1.9A11.5 11.5 0 0 1 16 4V2a12.5 12.5 0 0 0-4.3.7m12.5 24.6a15.2 15.2 0 0 0 3.1-3.1L25.7 23a11.5 11.5 0 0 1-2.7 2.7zm3.2-7.6l1.9.6A15.5 15.5 0 0 0 30 16h-2a11.5 11.5 0 0 1-.6 3.7m1.8-8.1a14.4 14.4 0 0 0-2-3.9l-1.6 1.2a12.9 12.9 0 0 1 1.7 3.3zm-5.1-7a14.4 14.4 0 0 0-3.9-2l-.6 1.9a12.9 12.9 0 0 1 3.3 1.7zm-3.8 24.7l-.6-1.9a11.5 11.5 0 0 1-3.7.6v2a21.4 21.4 0 0 0 4.3-.7'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:code{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m31 16l-7 7l-1.41-1.41L28.17 16l-5.58-5.59L24 9zM1 16l7-7l1.41 1.41L3.83 16l5.58 5.59L8 23zm11.42 9.484L17.64 6l1.932.517L14.352 26z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:collapse-all{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M30 15h-2V7H13V5h15a2 2 0 0 1 2 2Z'/%3E%3Cpath fill='currentColor' d='M25 20h-2v-8H8v-2h15a2 2 0 0 1 2 2Z'/%3E%3Cpath fill='currentColor' d='M18 27H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2M4 17v8h14.001L18 17Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:document-blank,[i-carbon\:document-blank=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m25.7 9.3l-7-7A.9.9 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h16a2.006 2.006 0 0 0 2-2V10a.9.9 0 0 0-.3-.7M18 4.4l5.6 5.6H18ZM24 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:expand-all{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10h14a2.003 2.003 0 0 0 2-2V4a2.003 2.003 0 0 0-2-2H12a2.003 2.003 0 0 0-2 2v1H6V2H4v23a2.003 2.003 0 0 0 2 2h4v1a2.003 2.003 0 0 0 2 2h14a2.003 2.003 0 0 0 2-2v-4a2.003 2.003 0 0 0-2-2H12a2.003 2.003 0 0 0-2 2v1H6v-8h4v1a2.003 2.003 0 0 0 2 2h14a2.003 2.003 0 0 0 2-2v-4a2.003 2.003 0 0 0-2-2H12a2.003 2.003 0 0 0-2 2v1H6V7h4v1a2.003 2.003 0 0 0 2 2m0-6h14l.001 4H12Zm0 20h14l.001 4H12Zm0-10h14l.001 4H12Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:filter{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 28h-4a2 2 0 0 1-2-2v-7.59L4.59 11A2 2 0 0 1 4 9.59V6a2 2 0 0 1 2-2h20a2 2 0 0 1 2 2v3.59a2 2 0 0 1-.59 1.41L20 18.41V26a2 2 0 0 1-2 2M6 6v3.59l8 8V26h4v-8.41l8-8V6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:filter-remove{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M30 11.414L28.586 10L24 14.586L19.414 10L18 11.414L22.586 16L18 20.585L19.415 22L24 17.414L28.587 22L30 20.587L25.414 16z'/%3E%3Cpath fill='currentColor' d='M4 4a2 2 0 0 0-2 2v3.17a2 2 0 0 0 .586 1.415L10 18v8a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-2h-2v2h-4v-8.83l-.586-.585L4 9.171V6h20v2h2V6a2 2 0 0 0-2-2Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:fit-to-screen{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M22 16h2V8h-8v2h6zM8 24h8v-2h-6v-6H8z'/%3E%3Cpath fill='currentColor' d='M26 28H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h20a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2M6 6v20h20.001L26 6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:folder-details-reference{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 28h7v2h-7zm0-4h14v2H16zm0-4h14v2H16zM4 20v2h4.586L2 28.586L3.414 30L10 23.414V28h2v-8zM28 8H16l-3.414-3.414A2 2 0 0 0 11.172 4H4a2 2 0 0 0-2 2v12h2V6h7.172l3.414 3.414l.586.586H28v8h2v-8a2 2 0 0 0-2-2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:folder-off{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 8h-2.586L30 3.414L28.586 2L2 28.586L3.414 30l2-2H28a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2m0 18H7.414l16-16H28zM4 6h7.172l3.414 3.414l.586.586H18V8h-2l-3.414-3.414A2 2 0 0 0 11.172 4H4a2 2 0 0 0-2 2v18h2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:image{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 14a3 3 0 1 0-3-3a3 3 0 0 0 3 3m0-4a1 1 0 1 1-1 1a1 1 0 0 1 1-1'/%3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 22H6v-6l5-5l5.59 5.59a2 2 0 0 0 2.82 0L21 19l5 5Zm0-4.83l-3.59-3.59a2 2 0 0 0-2.82 0L18 19.17l-5.59-5.59a2 2 0 0 0-2.82 0L6 17.17V6h20Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:image-reference{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M4 20v2h4.586L2 28.586L3.414 30L10 23.414V28h2v-8zm15-6a3 3 0 1 0-3-3a3 3 0 0 0 3 3m0-4a1 1 0 1 1-1 1a1 1 0 0 1 1-1'/%3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v10h2V6h20v15.17l-3.59-3.59a2 2 0 0 0-2.82 0L18 19.17L11.83 13l-1.414 1.416L14 18l2.59 2.59a2 2 0 0 0 2.82 0L21 19l5 5v2H16v2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:information-square{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17 22v-8h-4v2h2v6h-3v2h8v-2zM16 8a1.5 1.5 0 1 0 1.5 1.5A1.5 1.5 0 0 0 16 8'/%3E%3Cpath fill='currentColor' d='M26 28H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h20a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2M6 6v20h20V6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:intrusion-prevention{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Ccircle cx='22' cy='23.887' r='2' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M29.777 23.479A8.64 8.64 0 0 0 22 18a8.64 8.64 0 0 0-7.777 5.479L14 24l.223.522A8.64 8.64 0 0 0 22 30a8.64 8.64 0 0 0 7.777-5.478L30 24zM22 28a4 4 0 1 1 4-4a4.005 4.005 0 0 1-4 4m3-18H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h21a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2M4 4v4h21V4zm8 24H4v-4h8v-2H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h8z'/%3E%3Cpath fill='currentColor' d='M28 12H7a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5v-2H7v-4h21v2h2v-2a2 2 0 0 0-2-2'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:mobile{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M22 4H10a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h12a2.003 2.003 0 0 0 2-2V6a2 2 0 0 0-2-2m0 2v2H10V6ZM10 28V10h12v18Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:mobile-add{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28 24h-4v-4h-2v4h-4v2h4v4h2v-4h4z'/%3E%3Cpath fill='currentColor' d='M10 28V10h12v7h2V6a2 2 0 0 0-2-2H10a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h6v-2Zm0-22h12v2H10Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:play{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28M8 6.69v18.62L24.925 16Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:play-filled-alt{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:redo,[i-carbon\:redo=""]{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:renew{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10H6.78A11 11 0 0 1 27 16h2A13 13 0 0 0 6 7.68V4H4v8h8zm8 12h5.22A11 11 0 0 1 5 16H3a13 13 0 0 0 23 8.32V28h2v-8h-8z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:report{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 18h8v2h-8zm0-5h12v2H10zm0 10h5v2h-5z'/%3E%3Cpath fill='currentColor' d='M25 5h-3V4a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v1H7a2 2 0 0 0-2 2v21a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2M12 4h8v4h-8Zm13 24H7V7h3v3h12V7h3Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:result-old{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 13h2v2h-2zm4 0h8v2h-8zm-4 5h2v2h-2zm0 5h2v2h-2z'/%3E%3Cpath fill='currentColor' d='M7 28V7h3v3h12V7h3v8h2V7a2 2 0 0 0-2-2h-3V4a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v1H7a2 2 0 0 0-2 2v21a2 2 0 0 0 2 2h9v-2Zm5-24h8v4h-8Z'/%3E%3Cpath fill='currentColor' d='M18 19v2.413A6.996 6.996 0 1 1 24 32v-2a5 5 0 1 0-4.576-7H22v2h-6v-6Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:search{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:sun{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6M5.394 6.813L6.81 5.399l3.505 3.506L8.9 10.319zM2 15.005h5v2H2zm3.394 10.193L8.9 21.692l1.414 1.414l-3.505 3.506zM15 25.005h2v5h-2zm6.687-1.9l1.414-1.414l3.506 3.506l-1.414 1.414zm3.313-8.1h5v2h-5zm-3.313-6.101l3.506-3.506l1.414 1.414l-3.506 3.506zM15 2.005h2v5h-2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:tablet{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 24v2h-6v-2z'/%3E%3Cpath fill='currentColor' d='M25 30H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h18a2 2 0 0 1 2 2v24a2.003 2.003 0 0 1-2 2M7 4v24h18V4Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-carbon\:terminal-3270{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 21h6v2h-6z'/%3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 2v4H6V6ZM6 26V12h20v14Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.i-logos\:typescript-icon{background:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='%233178C6' d='M20 0h216c11.046 0 20 8.954 20 20v216c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20V20C0 8.954 8.954 0 20 0'/%3E%3Cpath fill='%23FFF' d='M150.518 200.475v27.62q6.738 3.453 15.938 5.179T185.849 235q9.934 0 18.874-1.899t15.678-6.257q6.738-4.359 10.669-11.394q3.93-7.033 3.93-17.391q0-7.51-2.246-13.163a30.8 30.8 0 0 0-6.479-10.055q-4.232-4.402-10.149-7.898t-13.347-6.602q-5.442-2.245-9.761-4.359t-7.342-4.316q-3.024-2.2-4.665-4.661t-1.641-5.567q0-2.848 1.468-5.135q1.469-2.288 4.147-3.927t6.565-2.547q3.887-.906 8.638-.906q3.456 0 7.299.518q3.844.517 7.732 1.597a54 54 0 0 1 7.558 2.719a41.7 41.7 0 0 1 6.781 3.797v-25.807q-6.306-2.417-13.778-3.582T198.633 107q-9.847 0-18.658 2.115q-8.811 2.114-15.506 6.602q-6.694 4.49-10.582 11.437Q150 134.102 150 143.769q0 12.342 7.127 21.06t21.638 14.759a292 292 0 0 1 10.625 4.575q4.924 2.244 8.509 4.66t5.658 5.265t2.073 6.474a9.9 9.9 0 0 1-1.296 4.963q-1.295 2.287-3.93 3.97t-6.565 2.632t-9.2.95q-8.983 0-17.794-3.151t-16.327-9.451m-46.036-68.733H140V109H41v22.742h35.345V233h28.137z'/%3E%3C/svg%3E") no-repeat;background-size:100% 100%;background-color:transparent;width:1em;height:1em}.container{width:100%}.tab-button,[tab-button=""]{height:100%;padding-left:1rem;padding-right:1rem;font-weight:300;opacity:.5}.border-base,[border~=base]{border-color:#6b72801a}.bg-active{background-color:#6b728014}.bg-base,[bg-base=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark .bg-base,.dark [bg-base=""]{--un-bg-opacity:1;background-color:rgb(17 17 17 / var(--un-bg-opacity))}.bg-header,[bg-header=""]{background-color:#6b72800d}.bg-overlay,[bg-overlay=""],[bg~=overlay]{background-color:#eeeeee80}.dark .bg-overlay,.dark [bg-overlay=""],.dark [bg~=overlay]{background-color:#22222280}.dark .highlight{--un-bg-opacity:1;background-color:rgb(50 50 56 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(234 179 6 / var(--un-text-opacity))}.highlight{--un-bg-opacity:1;background-color:rgb(234 179 6 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(50 50 56 / var(--un-text-opacity))}.tab-button-active{background-color:#6b72801a;opacity:1}[hover~=bg-active]:hover{background-color:#6b728014}.tab-button:hover,[tab-button=""]:hover{opacity:.8}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only,[sr-only=""]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none,[pointer-events-none=""]{pointer-events:none}.absolute,[absolute=""]{position:absolute}.fixed,[fixed=""]{position:fixed}.relative,[relative=""]{position:relative}.sticky,[sticky=""]{position:sticky}.inset-0,[inset-0=""]{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.right-0,[right~="0"]{right:0}.right-5px,[right-5px=""]{right:5px}.top-0{top:0}.top-5px,[top-5px=""]{top:5px}[top~="-1"]{top:-.25rem}.z-10,[z-10=""]{z-index:10}.z-40{z-index:40}.z-5,[z-5=""]{z-index:5}.grid,[grid~="~"]{display:grid}.grid-col-span-2{grid-column:span 2/span 2}.grid-col-span-4,[grid-col-span-4=""],[grid-col-span-4~="~"]{grid-column:span 4/span 4}[grid-col-span-4~="placeholder:"]::placeholder{grid-column:span 4/span 4}.auto-cols-max,[grid~=auto-cols-max]{grid-auto-columns:max-content}.cols-\[1\.5em_1fr\],[grid~="cols-[1.5em_1fr]"]{grid-template-columns:1.5em 1fr}.cols-\[auto_min-content_auto\],[grid~="cols-[auto_min-content_auto]"]{grid-template-columns:auto min-content auto}.cols-\[min-content_1fr_min-content\],[grid~="cols-[min-content_1fr_min-content]"]{grid-template-columns:min-content 1fr min-content}.rows-\[auto_auto\],[grid~="rows-[auto_auto]"]{grid-template-rows:auto auto}.rows-\[min-content_auto\],[grid~="rows-[min-content_auto]"]{grid-template-rows:min-content auto}.rows-\[min-content_min-content\],[grid~="rows-[min-content_min-content]"]{grid-template-rows:min-content min-content}.rows-\[min-content\],[grid~="rows-[min-content]"]{grid-template-rows:min-content}.cols-1,[grid~=cols-1]{grid-template-columns:repeat(1,minmax(0,1fr))}.cols-2,.grid-cols-2,[grid~=cols-2]{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.rows-1,[grid~=rows-1]{grid-template-rows:repeat(1,minmax(0,1fr))}.m-0{margin:0}.m-2,[m-2=""]{margin:.5rem}.ma,[ma=""]{margin:auto}.mx-1,[mx-1=""]{margin-left:.25rem;margin-right:.25rem}.mx-2,[m~=x-2],[mx-2=""]{margin-left:.5rem;margin-right:.5rem}.my-0,[my-0=""]{margin-top:0;margin-bottom:0}.my-2,[my-2=""]{margin-top:.5rem;margin-bottom:.5rem}[m~=y-4]{margin-top:1rem;margin-bottom:1rem}.\!mb-none{margin-bottom:0!important}.mb-1,[mb-1=""]{margin-bottom:.25rem}.mb-1px{margin-bottom:1px}.mb-2,[mb-2=""]{margin-bottom:.5rem}.mr-2,[mr-2=""]{margin-right:.5rem}.ms,[ms=""]{margin-inline-start:1rem}.ms-2,[ms-2=""]{margin-inline-start:.5rem}.mt-2,[m~=t2],[mt-2=""]{margin-top:.5rem}.inline,[inline=""]{display:inline}.block,[block=""]{display:block}.hidden{display:none}.h-1\.4em,[h-1\.4em=""]{height:1.4em}.h-1\.5em{height:1.5em}.h-10,[h-10=""]{height:2.5rem}.h-1px,[h-1px=""]{height:1px}.h-28px,[h-28px=""]{height:28px}.h-3px,[h-3px=""]{height:3px}.h-41px,[h-41px=""]{height:41px}.h-6,[h-6=""]{height:1.5rem}.h-full,[h-full=""],[h~=full]{height:100%}.h-screen,[h-screen=""]{height:100vh}.h3{height:.75rem}.h4{height:1rem}.max-h-full,[max-h-full=""]{max-height:100%}.max-w-screen,[max-w-screen=""]{max-width:100vw}.max-w-xl,[max-w-xl=""]{max-width:36rem}.min-h-1em{min-height:1em}.min-h-75,[min-h-75=""]{min-height:18.75rem}.min-w-1em{min-width:1em}.min-w-2em,[min-w-2em=""]{min-width:2em}.w-1\.4em,[w-1\.4em=""]{width:1.4em}.w-1\.5em{width:1.5em}.w-2px,[w-2px=""]{width:2px}.w-350,[w-350=""]{width:87.5rem}.w-4,[w-4=""]{width:1rem}.w-6,[w-6=""]{width:1.5rem}.w-80,[w-80=""]{width:20rem}.w-full,[w-full=""]{width:100%}.w-screen,[w-screen=""]{width:100vw}.open\:max-h-52[open],[open\:max-h-52=""][open]{max-height:13rem}.flex,[flex=""],[flex~="~"]{display:flex}.inline-flex,[inline-flex=""]{display:inline-flex}.flex-1,[flex-1=""]{flex:1 1 0%}.flex-auto,[flex-auto=""]{flex:1 1 auto}.flex-shrink-0,[flex-shrink-0=""]{flex-shrink:0}.flex-grow-1,[flex-grow-1=""]{flex-grow:1}.flex-col,[flex-col=""],[flex~=col]{flex-direction:column}[flex~=wrap]{flex-wrap:wrap}.origin-center,[origin-center=""]{transform-origin:center}.translate-x-3,[translate-x-3=""]{--un-translate-x:.75rem;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-0,[rotate-0=""]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-90,[rotate-90=""]{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:90deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin,[animate-spin=""]{animation:spin 1s linear infinite}.animate-reverse{animation-direction:reverse}.animate-count-1,[animate-count-1=""]{animation-iteration-count:1}.cursor-help{cursor:help}.cursor-pointer,[cursor-pointer=""],.hover\:cursor-pointer:hover{cursor:pointer}.select-none,[select-none=""]{-webkit-user-select:none;user-select:none}.resize{resize:both}.items-end,[items-end=""]{align-items:flex-end}.items-center,[flex~=items-center],[grid~=items-center],[items-center=""]{align-items:center}[items-center~="disabled:"]:disabled{align-items:center}.justify-end,[justify-end=""]{justify-content:flex-end}.justify-center,[justify-center=""]{justify-content:center}.justify-evenly,[justify-evenly=""]{justify-content:space-evenly}.justify-items-center,[justify-items-center=""]{justify-items:center}.gap-0,[gap-0=""]{gap:0}.gap-1,[flex~=gap-1],[gap-1=""]{gap:.25rem}.gap-2,[flex~=gap-2],[gap-2=""]{gap:.5rem}.gap-4,[flex~=gap-4],[gap-4=""]{gap:1rem}.gap-x-1,[grid~=gap-x-1]{column-gap:.25rem}.gap-x-2,[gap-x-2=""],[gap~=x-2],[grid~=gap-x-2]{column-gap:.5rem}.gap-y-1{row-gap:.25rem}[gap~=y-3]{row-gap:.75rem}.overflow-auto,[overflow-auto=""]{overflow:auto}.overflow-hidden,[overflow-hidden=""],[overflow~=hidden]{overflow:hidden}.truncate,[truncate=""]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre,[whitespace-pre=""]{white-space:pre}.ws-nowrap,[ws-nowrap=""]{white-space:nowrap}.b,.border,[border~="~"]{border-width:1px}.b-2,[b-2=""]{border-width:2px}.border-b,.border-b-1,[border~=b]{border-bottom-width:1px}.border-b-2,[border-b-2=""],[border~=b-2]{border-bottom-width:2px}.border-l,[border~=l]{border-left-width:1px}.border-l-2px{border-left-width:2px}.border-r,.border-r-1px,[border~=r]{border-right-width:1px}.border-t,[border~=t]{border-top-width:1px}.dark [border~="dark:gray-400"]{--un-border-opacity:1;border-color:rgb(156 163 175 / var(--un-border-opacity))}[border~="gray-400/50"]{border-color:#9ca3af80}[border~=gray-500]{--un-border-opacity:1;border-color:rgb(107 114 128 / var(--un-border-opacity))}[border~=red-500]{--un-border-opacity:1;border-color:rgb(239 68 68 / var(--un-border-opacity))}.border-rounded,.rounded,.rounded-1,[border-rounded=""],[border~=rounded],[rounded-1=""],[rounded=""]{border-radius:.25rem}.rounded-lg,[rounded-lg=""]{border-radius:.5rem}[border~=dotted]{border-style:dotted}[border~=solid]{border-style:solid}.\!bg-gray-4{--un-bg-opacity:1 !important;background-color:rgb(156 163 175 / var(--un-bg-opacity))!important}.bg-current,[bg-current=""]{background-color:currentColor}.bg-gray-500\:35{background-color:#6b728059}.bg-green5,[bg-green5=""]{--un-bg-opacity:1;background-color:rgb(34 197 94 / var(--un-bg-opacity))}.bg-red-500\/10,[bg~="red-500/10"],[bg~="red500/10"]{background-color:#ef44441a}.bg-red5,[bg-red5=""]{--un-bg-opacity:1;background-color:rgb(239 68 68 / var(--un-bg-opacity))}.bg-white,[bg-white=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.bg-yellow5,[bg-yellow5=""]{--un-bg-opacity:1;background-color:rgb(234 179 8 / var(--un-bg-opacity))}.dark .\!dark\:bg-gray-7{--un-bg-opacity:1 !important;background-color:rgb(55 65 81 / var(--un-bg-opacity))!important}.dark [bg~="dark:#111"]{--un-bg-opacity:1;background-color:rgb(17 17 17 / var(--un-bg-opacity))}[bg~=gray-200]{--un-bg-opacity:1;background-color:rgb(229 231 235 / var(--un-bg-opacity))}[bg~="green-500/10"]{background-color:#22c55e1a}[bg~=transparent]{background-color:transparent}.p-0,[p-0=""]{padding:0}.p-0\.5,[p-0\.5=""]{padding:.125rem}.p-1,[p-1=""]{padding:.25rem}.p-2,.p2,[p-2=""],[p~="2"],[p2=""]{padding:.5rem}.p-4,[p-4=""]{padding:1rem}.p-5,[p-5=""]{padding:1.25rem}.p6,[p6=""]{padding:1.5rem}[p~="3"]{padding:.75rem}.p-y-1,.py-1,[p~=y-1],[p~=y1],[py-1=""]{padding-top:.25rem;padding-bottom:.25rem}.px,[p~=x-4],[p~=x4]{padding-left:1rem;padding-right:1rem}.px-0{padding-left:0;padding-right:0}.px-3,[p~=x3],[px-3=""]{padding-left:.75rem;padding-right:.75rem}.py,[p~=y4]{padding-top:1rem;padding-bottom:1rem}.py-2,[p~=y2],[py-2=""]{padding-top:.5rem;padding-bottom:.5rem}[p~=x-2],[p~=x2]{padding-left:.5rem;padding-right:.5rem}[p~="y0.5"]{padding-top:.125rem;padding-bottom:.125rem}.pb-2,[pb-2=""]{padding-bottom:.5rem}.pe-2\.5,[pe-2\.5=""]{padding-inline-end:.625rem}.pl-1,[pl-1=""]{padding-left:.25rem}.pt{padding-top:1rem}.pt-4px{padding-top:4px}[p~=l3]{padding-left:.75rem}[p~=r2]{padding-right:.5rem}.text-center,[text-center=""],[text~=center]{text-align:center}.indent,[indent=""]{text-indent:1.5rem}.text-2xl,[text-2xl=""]{font-size:1.5rem;line-height:2rem}.text-4xl,[text-4xl=""]{font-size:2.25rem;line-height:2.5rem}.text-lg,[text-lg=""]{font-size:1.125rem;line-height:1.75rem}.text-sm,[text-sm=""],[text~=sm]{font-size:.875rem;line-height:1.25rem}.text-xs,[text-xs=""],[text~=xs]{font-size:.75rem;line-height:1rem}[text~="5xl"]{font-size:3rem;line-height:1}.dark .dark\:text-red-300{--un-text-opacity:1;color:rgb(252 165 165 / var(--un-text-opacity))}.text-\[\#add467\]{--un-text-opacity:1;color:rgb(173 212 103 / var(--un-text-opacity))}.text-gray-500,[text-gray-500=""]{--un-text-opacity:1;color:rgb(107 114 128 / var(--un-text-opacity))}.text-green-500,.text-green5,[text-green-500=""],[text-green5=""],[text~=green-500]{--un-text-opacity:1;color:rgb(34 197 94 / var(--un-text-opacity))}.text-purple5\:50{color:#a855f780}.color-red5,.text-red-500,.text-red5,[text-red-500=""],[text-red5=""],[text~=red-500],[text~=red500]{--un-text-opacity:1;color:rgb(239 68 68 / var(--un-text-opacity))}.c-red-600,.text-red-600{--un-text-opacity:1;color:rgb(220 38 38 / var(--un-text-opacity))}.text-yellow-500,.text-yellow5,[text-yellow-500=""],[text-yellow5=""]{--un-text-opacity:1;color:rgb(234 179 8 / var(--un-text-opacity))}[text~="red500/70"]{color:#ef4444b3}.dark .dark\:c-red-400{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity))}.dark .dark\:color-\#f43f5e{--un-text-opacity:1;color:rgb(244 63 94 / var(--un-text-opacity))}.font-bold,[font-bold=""]{font-weight:700}.font-light,[font-light=""],[font~=light]{font-weight:300}.font-thin,[font-thin=""]{font-weight:100}.font-mono,[font-mono=""]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.capitalize,[capitalize=""]{text-transform:capitalize}.tab,[tab=""]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.\!op-100{opacity:1!important}.dark .dark\:op85{opacity:.85}.dark [dark~=op75],.op75{opacity:.75}.op-50,.op50,.opacity-50,[op-50=""],[op~="50"],[op50=""]{opacity:.5}.op100,[op~="100"],[op100=""]{opacity:1}.op20,[op20=""]{opacity:.2}.op30,[op30=""]{opacity:.3}.op65,[op65=""]{opacity:.65}.op70,[opacity~="70"]{opacity:.7}.op80,[op80=""]{opacity:.8}.opacity-0{opacity:0}[opacity~="10"]{opacity:.1}[hover\:op100~="default:"]:hover:default{opacity:1}.hover\:op100:hover,[hover\:op100~="~"]:hover,[hover~=op100]:hover,[op~="hover:100"]:hover{opacity:1}[hover\:op100~="disabled:"]:hover:disabled{opacity:1}.outline{outline-style:solid}[outline~=none]{outline:2px solid transparent;outline-offset:2px}.backdrop-blur-sm,[backdrop-blur-sm=""]{--un-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.backdrop-saturate-0,[backdrop-saturate-0=""]{--un-backdrop-saturate:saturate(0);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.filter,[filter=""]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)} diff --git a/html/bg.png b/html/bg.png deleted file mode 100644 index 718b0677a886476fd57d9e23cc299dabbc1389f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190939 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

r5mj5{Vqw ziKCU$l-z{7=z|x?;JI{;OVyNUzhDJx%?jhK!g>eszMq#T(@N&L>P2k!0zV~a7RXb^ ziwvD8QEy7SUcA2a*X{AgI|(oR{f$`RF1Bbm>z%o{!^OJtJEnW(2{K&V0F=(p4Bogs zE`R+D?4C@U6+iY$o~0b4=0)`-9<6c32HvIhHlAyhGAkChVwoM0IXep)Kx4*t+~xbZ z12rR8%U<}uv- zLLA5OIT7+u$DT{sFBp+JzC9$>mSpb+y4m{Y&AsVSur}4TMsg1peR)P2wRLYd$o<_` z)cYEFciScwnWDJjl&az?5^dI{FxeVNFc$;D8gL=SVu4~oKEh-jJ-b-sEJORB;zMV9 zCmfn=h+0NLnyfKLyfsSzpp>t(5{z06Q51*JqK?ycMEoEM&93trR2->D1t~Ix@pU-s zTMj?8b3984-LbNHokvKW{03uTU#Z1gf8WlR5R}pN@+orhgK%;90$^>3i+{I2gX2KH zh$8)!g}&EY^j`XwHc$KS0@!O!`f)s@WH@QcgIX2mSq)=dGg6en8Ha*&sEj@nVIJ;^ z5QN=lQg-}MHgZo}k7U{8N|Cx4;^l#1cT}dzS^xg`gqp3?yXlh=7#T|gH0$Py1I#DP zXLJc?o6_E@U#H)`bzjIb!!c1_!>4UVvba;mZ6t)Vl5rQ7 zW5a?-(s$-#)i6B}%=-;fzi6Y(FUYKB?<&kM4UXDnGdeEX{BCSa-omCymJrev+F(+E z^^cYsWSl)WqwBUz)=HFVOQNAeHCIwA**zV72HtIkFo>q=YAz?fKjP#1t+L)0I$15b zBK}kQozr%W+}XWxccwnNt^Vc>7ZanJG~DvSHD_;g2V&{nMjCOAai^L3vrmsPz*AVT3OVwKi(gkmW_Po zbw}hTb(N3nkH27g)A9@l326T$-%M({>B`rm&<$A;S0Ss(r_e0-sTtjImntcXt9auE zzXe(g&4Vq^>{+?LM*Bza4G{`kZxfw?~fh=^u>Pa-2ff6JI*W)170T17`DH*F1gaOw;F; z=vuq_IlqxfVl?wRtknHspkN(`KBaZ=Y%mUOrF97U;ALjBW;Ua1@jq01mx3}C2nu$T zLl`$;R9TaBl51^5*t%eL&<&&odQO5ZL&s`i%@e*{iB7M7**(E#x4Y$lVii7ixe>(t z-ey+at~+hF%S=696%Hi}!iR3Oqy*HOKW)`rsXES!lf6IS?5N?MGG$0P)H@cF^eET{r37TX=9l*J)$4 zTmmcqfxQ@uj*!$hLuBO|3O;P~+YF!JOa!TurGddKo;#`J8p&9YBZz4N;qi;DQd#Qx z`sN4!*13EL;Ds`>`_@WNCwy___>21jcwOQa4j6{Fw<`gB%+a%MEN+^Sq?nrIca_DnjxX8rb0OG*p>wcvX0ZDGewWa1=+O2;Ap-DN?d%BypBzS zoVKuK@v$F`*c*EfEO*jT)k&?ivFU?ekcv?w{lQVh@E^EbqMs0H z`2KF^KcK8P$%s2SQ3+2MB*pBo!&SaSz*XL!{0s9=6WoS7?B24!>5i9?y_nm?axywB zi0)tMKy`$qbr_&@it;_qw0WvchlRxqztrjqn>vM(FD{jSC(7MK1xM3laY+|i-f!w* zbjU=V+TbBoPs4yHN4gnXFW22^d`FTSa?L2@&M?MK%@kOum)E?eY;8n2<*V++!wd(K z{MCX~aa|v}Lm*&^)EF}v-MBy!E-uU&9ssc*BNf4uJR`DI_uu}i-NXqf0lq75SArfwW6NZCw&_Z z=CkB&{~Hc&CH%lARLne$@riqtc}JWVDYj__H;?RsVx<8u?Ir&CXR=+d5?=ceD^L&9 zT+u$JUZ=_YFGS1Jk0zz6*5CIc$D3`f)nHY!;D1l?|NsC0Rtg}tpFh=@u{(4hoGM);9Jo!?6Pea=*xN3EWh z0qi9lbsaQpY?QAcUpAHrEv2DA|IUvnjT~OG7R1{#TysMi$u@i7d`GdX^(h6$q3v zvbQ3&;XAiI$;|I$eU$rLV%2G4WFzzoYght1BO}7FkSGCwRwUa4H{6QC%B3o_45>^~k&T z3q^9hq9^UUyZ%TqL7yd{fS(1>McW#S0R- z+b-@sg^CHg8!hR5j(5GC0+uva$C*kw7c9Ha7EC&<43Pv-X2wfY%g?qI?B3%ux1_~g zEMr|lo5*c6@D>;x2}_%JywH=7b=+?y`Tac!Yz)Tp8$H3h{LjcL^SiN+{FUs$gQ`g^ zzvyPq9Ibwg@A;4=LQ>Fk__@wXs80P;umJ&C?Dr4thj)n#g;(wn%Kgl~uxz(?6;+y4 z*Ir1X!X~nrT>8xj+%lG6L2(dHP5(lIq}>SbX)Z8yGQyZYmu$Bb9ONbNRmrcHY6jzsPi zSfJhmY8pF(ADYalUHzCPl8w*bZS`Bh^LFJkt<3_)8*1QMEVH|;gquTEZ_m*vaN;L_ z;(Be;gXF{>vU?{-W6v^{Bx;PwT*-B@=pGGY>t4STNBA?M{&~@U>aLxTKw1qpj;d>S zp-B}Ic3%8AZtA7>B{+uKwAWW)#Md0qSI$>YtMDceJj#E+DKGHJ>?z0DJ@n?Giv7SR zp_Y`subJt8^sC)eeJ8Bj{}yIY0mtHpzlVLd`1zlzgi~QMh>r=2-j~e*_&bF?+~TId z31sKjAx{NP6(D5;!*+`fyLN!+n`(L2^Xy1h{<5`g<{RsWA|!1yI|?_v2viR6OA31- zde=bNChN1uOJp}{0^!u~s`icg(j%`+xhk?L)Ba(Yc%yTd`;YIm<(2d*XD*J$7keD4 zxZ*YeqAX=ztzsr(}pSH<4s(KjbyXYg4ILQo5n?+ZjQ&Gvq z#kR{7=minZCp|$7;r<;ApZA zcgwL-i$JBog9})9RqfQ0yyz)Qqw?syZ+Fk^)GD@LJ#|>>bFb#VT4JR$_mlrZ)g8-G z*KTmvFt20J)6)iJl;Z=o_6>5Tuw!!pIKbH!SX?}-O-t@AQKjB&^aG0ObrpPpKunfyhy{7(L2sfQ?IsYUivF_+}P z+p^}T8Zww43Q^l0Kf_Szz&|aXD;9F^bhWYpsP#x3ivLef%?8npUh*lX0oW?8!A*b) zAh24gI)$iN6LE@)U@DA?xWsLgG=P;}THK9W1w0~Vy`A^w41Jw;FA8C||NmHipRSV@AZglAzADzg(ROX=Rm9ph1yUS|+hXJ#dO6`7|B7U{E zQrvuxS?bCY)X&1qk9z>JN->s53z||!i8;!8n(Z|!0598?efPJp=yCKl-8S$G*IX*{ zQa;td*y}e=uUqstq+Q$`t$$w68pv=IBk^S@VKV0`1_9In=xNxo2p1&I_;W0e-m4dgHJfO7@^vrXfd4 z(fCv6ANfFd-klJXZ_(~OPtv{rPjX!mY z6{)`oAHt0aZw-JP=>APo zg*ah&%JM(ys@k7wxFP~4q9{Qs24vevatkTKXb3X<5jm;P6>IfbFA&J#mQ4uD_fk5H za{zM&`zFUlbIWcYzAG);oc7kM)Rj+ywiaHo_Q59WWO}RA;26q1RJB|~XvpnLb;s)3eJq(>* z@O39?-ovNIWomN8+Xk@Ot7P7^vuMBaL9TZ03(wsQKHnMs-|JFi<^Cy)5KI(^8aDmZ zLDc*H`(_{JV{4nB^5{vV;l79=6#DaGXn#1gN94_jRgEV6s#o#pgc38A75<#}^09qpTHH|7Q_3x9=ysW%HKM zJD!@CMIUzqk-0<~=07bAv$HXQ&2c(qQujd4NkS-D1Oa78#`OsdjZPl5ZT+AHu%t1L z{rCQtj*Y721C4Dj{?9iqIky98UzQh=3q}&S=Erm$)e_dnZk(OG)a&HT`j*5%lll_r zic>gaX=g0U%fKc3I8jF}tA&KHk)_~jsX-%&+Lu>x~F;=b~^mmD1j zFPV&9vZ*|LD>gs)|59?w*P4yIl!smr3Rolp*A7#Sl+z2 zc3D?K#J#xMW~B!~5kkpVSs8|k1O$0DSWRLQWM)sr)T?vN6Za(oTYkC{y~{xcW0A6U zs$QZp-tj)hhn=swy~#wbPwat9hvr&c!kHTGxmso>9%l`?Gj{Juf|=Ih;OEONTa6ib zxAgnV#SP*_Z^4!+t7l$C&&|*OB!}t175jmavguRR1j5v((E!4AELShyvFqS*6mYYnA;rbT@+*JHz-L zQNPiIVS;x*YNucG!D%vS6HdYFu?0y(6Wd1a<;;$SgNe^UwQN&L&)VHl%crX0i1Mti zXOrJvL@sMBO_YJQHI2~uSvkJ&jGqpMGTt^uOpQNX<(op>>SU)Ljr>QX?( zWLK`wI;2*g+r8?l0GYVW7hi$Q#uAzLz<6`pOtbz{!F9zW7}ahgrVJgC$%q7F9pT*3 zdYT$(KgS9=`JsLn>Xp7$`c}_=l|XZe-g|QoiBnWvMN zx4h0eC*P*p1mt0hlaYw7aC9ejPN{!AK#u>E!($PlLb5_#k!v=+#*H%Lz_qZzp=wros=5n%0iSUd8>$Hub`cAS@iMevQAG zlNwBexm}@zm*TA8?b}SLAZFwm(iSa2;YHJvpR}Z+j(Ys#W2jVot$gm4M7c^=qZg-r zWt`I_E@bLQ9%&{_$#JP4e08w0;+-gCiHWh{nVO*ckyu>aqmP_4rgVLK_A&_$;YXU) z7hNS*r9B4)wy7ZLb32=cg_C(fN1irrIFg|G1#ZnI0PKhPv zdq?O&SjbD9csTM)!_}nrS=J4)U#xp#d8j9U>tZZ4%3NSHOg%E9A-5qil(#<=+hdUZ zgfKC?S2y%eK1>B6yn!?8TZo33w~5P7=P^W>X-VXwtK%9kGosvNB(NyJ6w}B4DnyEb zOnQSPbm-;^vS@uU12j^a4-r>k^3)mryvvd%*%N=gEIwNftJEfVvZPoH#XMVfCY5#F z&56shJm~S{&B@eJMfVtg2MC$b(GS<>Mhy(yoZmQ%@F>P|xm5DK1NqXw>Dw{wO5N0E zuNv#z(V}=UF~MiaKCI>%yx){7E*=Y}3L0?=_f#lkPi>zC?T7vGMsyva_))nB1IJYc zqLdHzGkMDlB3wsMQmOoW1%fUy+FzNGDse-Uu)G&1Smfn~q!0?*rd+^u@zzvY=$0cp zAvxkzbg7Ht$!i4*;V6byPfpxsu|hhyb9|HL_OB`1BQC7ylzAt5Xmj;0^0kqM zTy9w<9(^X<280t&5OD%$a&rP7YUuu<{#KBlk>Vxrj0Q^lATv|ID5S)EBgFG+z{AGjF23hsc*O zS)v1?69*Bm8(ry%ON)aikXJ6P6Q;Xiwn(GZKiqwcF)WRQCfgxP76~ZP9}>>xz%j%U zwA-`qvi_LW4bf!wCd`^8U;9?w>OA3}wWNu_L3_ve*}a1irV$S@QlMs-c^T9Ufi%M_ zel1zOi~PhWJVmu!hHEmnY-BsHcZa`JNF77G^@jR8CQrDZ+SJCvt;Av6Q~FmkgW$95 z?58FN>b+E_97NUQE((kvp>nDDedTo$7~(zf#EQxHbY;L6u%%r31zD3{WlIVPASis(Bc+T~Qnkoa|YUcKGgH2U3T zaAvVtaZ{%+-A1U#sIt4?Sj_{G8p+#pyDk5-LJ#_oyNE4YHwOgxwj*+bPZela9VW3zz`PT+-Z9}5| zi85*mT$Oz4T=(s$ed);4b~%YKhf&kGSk)V9CF=btZJ>0-t6|jgE)(Jn{62oTxxvZ! zaNS45#mTyeHtpx!^tqbP1xe7b%l<#c+KwKEFc zxgc64p&XOv#?tEPfY5@Dv~`e?h!1({tJ`FoND$<+sSs3v!mp2YYsfXa3u|_noR6)I zf`1-(xQZz2<0EG!a!Kf&i zp?;1@T#~!}&ALRUfYpiXx{~)0rNXvo-`WDT^JF{s|MTFcU!GL)K^Ur=Et7&p2>K^C zy6tf|mBjP);d`pOkeC@id8zk({@k^UyG7yc}ubhp3E$Wce4Fre6mFKiL* z)qR}Mj3mprO!_O_FFa|bwH}Cl7s}R+Bn5pt)h9p)x!>P~L}Puombv4&he4~(iEPJz zTeeAx8bg^vHR6~)H)EBRgB(EfdL;0#GSF%63KgY??@H@q&H0=brb zll};_SF7&+QBf+qJOL;qlE~IQ?FvXfkt7I#H0*(Djm-9}>rDGi4eB^8=Y21SRoH@K zp9=OL-9QJ@G;C)AQ{smGco=ukcH`LWWm7glC3pN6A_L;H7<(UpO9>$!8726kx>yN+ zvw-%|vEoQ*@0UqeknEjFS9o3m3c9a)4fFMS4fk`Fo)kCZoZS+(_91foC*F$uz&E6 znteQBx5=}D`k-2XMEm7DB-tmg4q{Pm9&^Iy{*aVuYzo2n+0a~*UCdFV#K4b<8jJsgD4mr~$b9a(QkqzuHh z`CkMZu&i_sNL_s5`ZjAz(DiNmnQWJG zHzts|(cqrH61jRy={Zih-w}2`!MIK5S<=P$%Ytf~L*d<{2)xj)hYTg$NiU`JTn2bM z!>OUvIx}1^^0bRCO_5UvxWr2xO&Ad@r!@$dCpCDSU0Tkxv#?-qC;tPdYP$KXu4<15 zeA_f}!gsshg?ZWRx)E6B#J62YgXrgb2ZIRMe?x@dBZ(eL$*-U%w$x^YS2vJX`&emQ z4WR-lLBSH?Je4zX+T`wH|LKZ}y9wCa6D#yCHyenuC)5;Mr7QNSl}*j3YKrbJ{r4Kr zZLY7r4M&Ji9|)XgXGh;@AQYfW0lq{84gtdH-`>6BHLVts%Fw zv+?`#g*Q7`Impoa+KXGHv#-2gs+0hwjE_)Gk(WY-h~(eKk1X{sdyG5|s7f58x`6*X z2KkWpq>w8_NvwiRrsl=zWnOHF+UuBj_2LQ7ut0_Najvpio|xH#CVr?BY7IrK|LMpU zpn(}TN>Nq%!rkb&Zx0LP8=616S+M+-aOz#Z4-j|e5;MChG1PsG0L!7*9CK%9AU6ug zLcB^e3ZCFF)fa-D(QK7Uc?okZy~1D1!}|*Y5I|&<&ix<{22Aga_Z!eO+&wCh+wq|# zY3W1p@~vNnSs&}4rRt<7r%UO5M~0JW66MG;t50rH=iq_$>z_nbDmN4vf0tDvcYpJN zKP+q}YU`fUg`ev!m~PlXdq8-89B@K&#rFm`@IC)19o|pUfu%iTZMi0rPj%|)Sok8^ zq$u!X2E{{XWuBLd(mylzlyvj%tX-8XXIzAC$z zfU9DXj$RP}ev_HAfe<;m8GVsJm8jE||J!v*)lsWr?Dw@;ckFQaSE+c^W%cT#wR|z3SW7k}q$9#q@D=joJjXUQ-oHmO1-E(!GL#P_hm07D~Ujj&i+IaoNN77Z*A?c_FNyTe1C~=Xyt0n1ZR;9n|trjCZo9YXP zfV!lWUMP>%z6z@jl9@8`H8L>~)Fe@T#okWx=mahoHJ+P|X?!u{yVm8Cj}nfS9uOS< zN4n6(kH7lpafXfxkkBve3az)gdNhEII^YsXn{f6O^`#3SJNU1au&x{FGEQ2DC^P4w zs4Bnlcu1PsIW0lIoAVTb@&qAkS-cd|p!rZx35mKJn==Q!J%Mu$KPkq#olic|u zfIxch-Xr}!ADLs})kD~-cunZ&OVlgsWKLs@=IbR6CLco-5iub^YV`?Nb>&k*{?)I6 z!qnevUx*y#=F`nigEs+u8ZuyT_5atLBauPpvGX^l-uHhR7c#m+E+KO=CQ`<1G1%nP zy`=;Xw7=Bg$#VBsQhM{N@@tk_FI;JVNETlOPS4*c;skO4`5RJ3Jj!{341F~&5M&km&ujjCf0w0eu(w}n{t9QJRL?t6wKn&uJw)S> zeu4c&3BRaW8!Pax$j5e_oriGN)yJ?gPj{tUVrNa+#BVlDJfxRqWK6L5K~DY6>tr&_ zetv&H)tKtYepc$J6`5hsFPKQ8Pwi{&HQy1H2PbiNyUVG={SZh23?HDn@Rw5@R50JF zehOA-7dnST$oK#A-`S)a-I^I;K5PIMhGKEJxL`tA1TS+@c=jsYUg z2Vw|CkqC$kR$;cjYJ4=d)cW^}o%;z$URip^I|qjOt&#fDH-zEdF!vi$qTBx|kx}?H z)gSA#b0DACgj9U3InoHmFA;FEmIJ9P6=!%oc)5eE+r_$WR<~e&E%fL}mj`KgJ%&AX z3_X0F$8wfzM>>E(!6H-!Uxe%?pDnG8Mh3kzW^vlC0qr(>jYtjgJkz+E>@&2#oPg{j z)=BXT39sp8d7W-QduA`bmU0|fBX*xg24XQzVUFX#?wx|y4@{L_Nf^>gqo68g2vWa- zVb=&7E@Nq?BCVw|LHbD%Fo9CcaC7J{Q4x-XKuyTVNBuX+v$ zmZ*K}bvZ1CiWG>;B{JEGve@I8-(VIfOR2(pm@IJ>-u77Xwx}xCm{?{Wd)l(K6afx< zZjRm>wI~DOq$=?qzj4OPMLS>VjVxkyhA>X2?fd{iXV!T5=wIW^ghi6kJg*zl{3c<* zEB`ZsUGb60J>2QI8cnX9w0FY?+smqu*fGY-i(k97R7cCKxwf9i3LmN?3bai+jFraferpSjIP6BF5%GnM<_l zr(@YC*95oCAKn&~dp`PdH^jFlE-!_Ny=os`TJ)L8e1c`nJ0_aj;lxS!y5Mx30>lpi zwK&iisA69)e2vRshR+@-4b=r>Y9EWNn1$O3a=m)UFQP(8s*2@rrSu+D(Ie`E$B?X_ zyqgsqFt32O^c^5u3hvoRyCm+U;Uug{oH9SwUVz^`epXv{^8H9kZ+?$( zF3=#S+Yc+_2#v{OviZl3BjDHlFIxO((86s_oPN9IZor2$JZxQpF3h=FV8tQVG zrv4jqB`D*8ECn7Gwo*~G+uf_A9H)Pq4RuhElA8*r)H40Spi@}8ukKSN<;k_AkRs%S z*U(=V&+buqCyxaKnxc`@qgsBf6u$63oGdUOzMF>m)JQ!jX95{KO^3GjO(+7}sb2YA z>ft7z5*Um?ROjQbRSLlWr#tV6x_lNZZ-09iwlm>_sk7@C^ar+oF3j{I`8#tFEVO30 zdhOvXN6f!|cjZIK0$9+&ujBHGeFFd7Ov|XMxFLv^0 ziUX0o%nFHLsI<&Qiu9@A+U)lz?gZ6xc%#9m`STHdl=VJvqj^1+@O{#ngLJZUqX7_a z%e;Iga|G^6nEGDqdUM;J>HovsTZTp1wQa)#qLfHUgOq@RfYOqJAks*Kbi)iFAfU8} zbVx~qQi61MNO#B3O2+_FL&LWQuj_v9@7vz(-M-(?{JAcfbJjXm9p_rdv9EpKT2;Ho zpz$=J)JnZyY&Bf<25D(Kl63jyU`7b-JL`x^Z#gD68 z16|KhUI1NM^{if6tqtt6&A>%=0N;M?qT@b|CuntbP?{{~2crZCuifaxqx*$bPjxyx zEGo8ao!@)B9|Z385S*tLJhd7+PW8zCMYRC!Nb@Qb^lbY4UE8By0ux=Kc)>D4PgjwF zu`{+yX=j%+k+ZOtQ2ZO>>2a!f7AOJT?HYYv$uC`nnG7#hn&ucbcN;(!4Bx%ECaR)y zJrpF)uqlga!_Pm=zh6_marS=C{i+=~(@@LV$lem*QeG7YF3P=kQ-4enCfvVOZzkdF zSi>pSV4C4H5{ijmr``G&D79>nC;pd(&n4|>%>uRqw5oIoAozcR^D@Tv>^wJx|6q&F z>%EMf%&_dgX5R`qe&6)bPM)Xa{qC3$;DM__>1Dls|F*$q=Gbw&&EUy6&)OmX)j^O} z>E57!B{y47-hAReau(NHl-np;mW1SRKac)TzT)6K)A%rsk}=G&awjJFa$56h%kL{8 zhoOu7^zC`Jx$+)g#7anlYW4p7U))u1F)F=MqA?DB?v#g%%Q>?xbJP6Nd4cgp#VVd&0h)NE?r>0;eUi^#^n?5i8@)iFD zQ=ot>9r6MT0xoCzT_p1g80A7hY46fe6NQ>mTrQ0B0%j$dBewx3#Xa^9Xvu^?{j;xIU`>p@W-cwe&HXR-55&zq5#5?^4GR3sA?dTTV#Z*n8 zNoyp4F}+!|@SP|MwddNc@ zZOH0v6NOoywC0qsuNvS^lG~%rqrb_Lf2>O1()Fl;ZVh$hGZ`y=8e9~%VhNe%#kmc~ zMCq=+RW$2OLbBG5Kua|HOk2aS;d4L))$uGTsz%CJ#7iTtcBiMm*0wn=)L`w{Vi0RI z2!QgA98yv*^eYFwx2hE|+x;j%0W_O=^U*CwP6pQFTF={j8WhkCB5IQR1{jW_xvzli z+6<&`j%79fuK`7A7zbL}<1SJVI3}^gQ(yrsQ&Hu6=Id)N&UX?+K)n1l zZXMUQ6QA5Im56v0`O`FIb+1J3y$GWLn&U~cc*e_$+cJsRi)F#0{rUBD*;4XN{bolf z8CF0%g*Ob=F3#f)<20XDQk|p$YobyJ5)j56Wif-W<^xoq95ueLEoB@9tQ*K_cqDEgySlA*j1@t_& zu4(On6sn(y$&v)nkxb;0Hn#0iUKV<-ObtSfpbhN38fSm`>G0sr^m?Q~&Gf}hK%Mu2 z-*c4F8SN3DHdFf;BOfbVuSZKYDm(kv_|9Lz(_gxK5TyeU#PltFyxQ)5$JJCXvh3)c zeBWEJ#>!z?&6_bjsW!8G{P)j|zgMEz$1!4hR%;n1n2yJ{Y#W3u?9N{Tc^SWsxqf*R z#a$`VLa(5?KtH1B2*5elyQs12*>4;yfKawp(@Nh>rw2qulfEs&Y(ym2G&kA05!r8c z%e?@Be8Ee#Ur3L`fH0iAdFVevxz~P&x=&xv!A<+O=45r;&losPab?;Fz$hgS3f(&U zd#%Qy*QGaGKQ^O)&Jih+4zFzKlt0vypiodx z=JBFXF>AbmpQ5lIjC@f<$$!f<-6eie*zHn5Cy%h-t^*-AX&7KWr305xje*2XMIukK zdBmspq_v$6V%&CwBpZY@B(V;57}J|Kz6n&;7&}RvPK=e8$8mN;dx1$BOBIs}FTI5d(!_ zd+#VN@>kjyFg?CT@6BO&^?P_yh|Q;)BnSs1Rp)L1&gBn*_5{k-7dOGh&i|enzA~s> z`ZO-K$D`Gcu;BVb0H65F{C39#yonzHz0?7MVp@O@17rlY&C^_O9`OhKWxhixW@dl= zKhK26AT(z4Ef;~jtSd&y@PS`kgPfeJ5aB`_wv3*J8w}vW8VkB}6}D~9XKqPE`@e9d zTMPe)r~-5o03`hjLIm2%#2nmh1trh-|I<6DNLRAMYAEl+&U}(vD&GJx+%>V8ebC$& zw7!4o>+o9Xujdme4cPi0@EzEeFeiblKpC2olN#-!Za4l@>^_+;Wt1*aTZlY1iaQP= z0NTP*g>&|~f$GGzdPKg_tf9~c2)k&r2|En>x39xW&qgfxXD2pD;&tbp3SB~qUz;8M0Dz^x?Qxz1Z;h#Z*@9+g zvCbQtiUfQyfCc;FAMUvG+aO%_m%#1+G9qtKlDJ5CKW2>Z=4hPF(M{)$I;XRUGqS0q z-x7%>1pkaWuw;&#Ei#Tx<-=AvB>ko(l{^0mh};+=O0&j0x{(D-+o0a7Z* zKitvFXS4BQJ&ULJs=n8Ln#|-QGZWWGw6lnv(E7@uMrRi~yhZ9Vep@ONrRopoP}`() zr}4Sj(IPEC#-Y@(5Ej$d6iZz6DzO}dy1VK-G&7d_Ef^ZP0Rky*XT_^vL*{>1?@*{`u_nqRTnc)-*!KdfAI-(1ubEG z$FX6u`@c34y?zJ&1NsR|+TVweEftMA(^7t(X9c)qxvrdL?~errNQWEz7C$Y{gyLVp zwV%lB>0LoLk(Jky-ot=~BHi)F7he8L6u-C?x#JH3g+tcL!9RT)$-VheVf6&g{NcjJ zjhF4J6SD?qqc>9RSsL?xN6pV*A_ybe@0aXGU9CnrSz+xy&=0IMi&OKY+WYdf;@dLm z5@Wcd3BT7K@_X(u0XlMxEqQj}?ZAb+!DqiWcPOjltc0zr!;i9NSJ={;yXz=L2Ub^ER6x zHHR3z+g?--Uf)7Z^DCz~uN)W2ENIAGQLvls0Oh)JuLhfptJYhvBaymdMzUZo#{NWSZTZZ^v=JZUwnTf27{#^e1u;OtN2smu#- z%$}AXzdTpa3jIvdWIV>$#1SUx~2LbG?LbHwKtnf;4H)SHhJdYG&#FTE1mq`EKu()H>a+x)VLS@ z_V|vA!DsLJzTfXE*a4&mBscdK-Ql~f_H%V#Cdmndz=elUd{O2J6u@XA7hyXNPbAOf za@__TKM5IPLiPo_-dhx#USIb0W4il04^U*lt%WC zGH>O{@%JkOi+03jBmA5+NiPDeO@G-f0mg<^KmogeSppO%_z6p%Vs1Ub-AcE;F^-DF zJ})f?1P_j_S|gGu9aFG&u69Rr7ZQOQmO*dA_b!@f-Y-U}6&CJTh4B?wT z4&t5{Krs|-4#6#TOd8{@svQLYGV;bd1Zbhgs{AKF#<0NMmg!G z9&20><>b6S?%du8z+=uQG_Ilf=N2qegeK1yQupaht}r*AT6JK+yh{3~)^jFr!~1ug z2PLb*n#icalR&im<22V=(qraG_TXC`Olzx^Ur_dcg}D&ym7r4OXY}p9fT|i5^Nqvl z2>0(Jfug_-m}c#_oAtFXB;s!Vc@7(-&i?}X{N3lo)!Xfj*;$7|iTMVGd9T0@5_CLR zcUg&Gj}7p|uR3)ABIVVaSE0w!#R;!X3|j5=g|`<3)-catWa;aO27v!mj!4MnTD zZFBZ-R@hU4{$-S6r)v@b;|w(-&l=7;=>9@)km-p2?H9k~P>>&(d@xEO504u9BLpRC zYLj$PMSI{krR#)iMB4P+lt_474F#D9cQCPopX6DoJ+>Le(nOoZDvy-PKnoNL0a}rA* zHY;Yu`Nh?k4iJ;sK-GO1RZcz>8aC+@b`~IJ2H(BD#fBVj#&u;5Nx4v2m_HbVCu0I4 zFYUx*HYBD|A-foeYx_?h=g!~JCD6xnf6oMFTBw!DG%l3yK(B?Q707>DYA0~;Q-CA` z{%WCj(fF-!UUk%;-=Oro*TY)?$f*oP5A^15zTqzt*;8uOt!vo#du3#aCf7#B;1uI0=lgj?n%)q2MP^arl*N-~B+QW^F`#d}4QC9}y z=lAlxY}^RQBHVwmv4CVj@P4Hk7R{2inOQCS?YR;uE+x1#K;3$Ip1MIn$HbsWDnDgmP!e~PO>r53d3Sy?) zt2rznEqNM1|X| z3M$VfqEAd1=&hHuGRuwNy>^1*)p_Zb0o}dDU$8^F;saCefxO>l#Ge z+1rU^>2XPVDtK;WOJfd-{itP(A_8PkhumNLnaqz1869k(5L^NY1LFIDy!u)uH14Jo zN;NA<5as-UawwRr_8T*A%}ROybI}FtF}Z2LabQf}%wnWy@jJ+c3XahL;sG0kY$tS; z*O1mwk(cKDW-MS{>rPIUwb)v=uOt-vEPVa}wf+Iu7w8EQ3K0LbYGD6(%L$c$dO`_o zxCd-Np*`Z5oWOLFc;bZW2r^Y^;Fa&HcA$7KcK?0hf^#J0EP&?BcoeG5y>KTFb4pmJ&1r!3e#S4M*|isz>XDlxb!37rEh&# zHC-74&N6X()CjN9!JSVC@y^ZX06b%F8(RI-{xbWV+H`ni`xg$SrBA;&NMIj--nuLX zoEl$0(@+$B0t?fDfDFL>(Cq2?SgW|F@Y0&o_dXSMS{?N?N%bA0-Ua|UOJ53j5MSyB zgy2Z1k@wRUe%m|(d>G?9QU6}Hq6BHVgUM>wG;qhhM_mdqYNYA{88Bz2YxPr2KzF04 z?$erm8*Up$=JC@Eg~S26F?l_z=3q(10#f|hU%WuS7KIb4Ncv3Uk@VV8?$S_V{zAm% z)XuBItW7~t_8Nqv2f*Zv?}|b4tm77}xQi8yYNWm6Q+C@pp*_7QYbSu-xV0w`o}aWf zK6xP%CLz?@8%JF|Vg zT%1sS@xcnL(8p$eu(18T|Dbb#;-Ejte%OOWw=vXBdZLFEM?N4|&9eCq^_I54NpK2o zYHTP8Z&Zi;jIVtV3Ziswe`$$&g>UJNY|X>XRUCZ(=C@x3=M$pHHXHulpHjZ>TFiT& z<8ClcsuMqmB!#KGK&4$n56Lj=WfmpAW&imH$WzsHTJQcJizlvn=C01$on}rhuWA+f zNtm38Jjuv9LquM(leIQ)WBL&~E zoncb(uJhr0&3Xf;4P|KaHw_nOra(jvk;lZP{7~6A8Cm~D2`6u?^yfZ-0Rw$;J~Zdc zJuHxqUHxxp+TdzuU{+)Zv?Tra)1J5h%aSXU6>rPu_c=*^f>&q3kGz9jPU`#ph?aGs@&ZM$<_|OypB7HQP2}{4Pqq9@Jvm9snRQ1K z-n@b~OXXt^)O)!(JPb1HI`^#23g0WM|1B?Tx>EwJf3qpXC0*yr7P3FA+c2c9W@ENl zF-@-dqY`;BpY?r&z>uuR%NDTNSo*(@xi6y`U)Oybs0F(@C+)8sxWv&HI@~E{pQn30 zt!HRHQ&X1`?BuNN153_c#V+be7kigRym?bqZL#3}jTDYOi3mmVf!+z

876&HI81 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 diff --git a/html/favicon.svg b/html/favicon.svg deleted file mode 100644 index fd9daaf..0000000 --- a/html/favicon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/html/html.meta.json.gz b/html/html.meta.json.gz deleted file mode 100644 index 7cdf9f2a5487e9df44319dc464c0ccc55c8b968f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9320 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 Wjpjykqi@pa&Hn-rBpYF&OaTC98)P^D diff --git a/html/index.html b/html/index.html deleted file mode 100644 index 2a1eb42..0000000 --- a/html/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - Vitest - - - - - - - - - -

- - diff --git a/vitest.config.ts b/vitest.config.ts index 06bc5a9..bdb503c 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ include: ["src/**/*.test.{ts,js}"], // https://github.com/sapphi-red/vitest-github-actions-reporter - reporters: process.env.GITHUB_ACTIONS ? ["default", new GithubActionsReporter()] : ["default", "html"], + reporters: process.env.GITHUB_ACTIONS ? ["default", new GithubActionsReporter()] : ["default"], // https://vitest.dev/guide/coverage.html coverage: {